plm前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1122 lines
37 KiB

2 years ago
  1. <template>
  2. <div class="mod-config">
  3. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
  4. <el-form-item :label="'属性模板编码'">
  5. <el-input v-model="searchData.codeNo" style="width: 120px"></el-input>
  6. </el-form-item>
  7. <el-form-item :label="'属性模板名称'">
  8. <el-input v-model="searchData.codeDesc" style="width: 120px"></el-input>
  9. </el-form-item>
  10. <el-form-item :label="'在用'">
  11. <el-select filterable v-model="searchData.active" style="width: 130px">
  12. <el-option label="全部" value=""></el-option>
  13. <el-option label="是" value="Y"></el-option>
  14. <el-option label="否" value="N"></el-option>
  15. </el-select>
  16. </el-form-item>
  17. <el-form-item :label="' '">
  18. <el-button @click="getDataList()">查询</el-button>
  19. <el-button type="primary" @click="addModal()">新增</el-button>
  20. <download-excel
  21. :fields="fields()"
  22. :data="exportData"
  23. type="xls"
  24. :name="exportName"
  25. :header="exportHeader"
  26. :footer="exportFooter"
  27. :fetch="createExportData"
  28. :before-generate="startDownload"
  29. :before-finish="finishDownload"
  30. worksheet="导出信息"
  31. class="el-button el-button--primary el-button--medium">
  32. {{ "导出" }}
  33. </download-excel>
  34. </el-form-item>
  35. </el-form>
  36. <el-table
  37. :height="height"
  38. :data="dataList"
  39. border
  40. v-loading="dataListLoading"
  41. style="width: 100%;">
  42. <el-table-column
  43. v-for="(item,index) in columnList" :key="index"
  44. :sortable="item.columnSortable"
  45. :prop="item.columnProp"
  46. :header-align="item.headerAlign"
  47. :show-overflow-tooltip="item.showOverflowTooltip"
  48. :align="item.align"
  49. :fixed="item.fixed==''?false:item.fixed"
  50. :min-width="item.columnWidth"
  51. :label="item.columnLabel">
  52. <template slot-scope="scope">
  53. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  54. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  55. </template>
  56. </el-table-column>
  57. <el-table-column
  58. fixed="right"
  59. header-align="center"
  60. align="center"
  61. width="160"
  62. label="操作">
  63. <template slot-scope="scope">
  64. <a type="text" size="small" @click="updateModal(scope.row)">修改</a>
  65. <a type="text" size="small" @click="detailModal(scope.row)">属性项目</a>
  66. <a type="text" size="small" @click="deletePropertiesModel(scope.row)">删除</a>
  67. </template>
  68. </el-table-column>
  69. </el-table>
  70. <el-pagination
  71. @size-change="sizeChangeHandle"
  72. @current-change="currentChangeHandle"
  73. :current-page="pageIndex"
  74. :page-sizes="[20, 50, 100, 200, 500]"
  75. :page-size="pageSize"
  76. :total="totalPage"
  77. layout="total, sizes, prev, pager, next, jumper">
  78. </el-pagination>
  79. <el-dialog title="属性模板" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="430px">
  80. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  81. <el-form-item label="属性模板编码:" prop="codeNo" :rules="rules.codeNoType">
  82. <el-input v-model="modalData.codeNo" :disabled="modalDisableFlag" style="width: 120px"></el-input>
  83. </el-form-item>
  84. <el-form-item label="属性模板名称:" prop="codeDesc" :rules="rules.codeDescType">
  85. <el-input v-model="modalData.codeDesc" style="width: 120px"></el-input>
  86. </el-form-item>
  87. <el-form-item label="是否在用:" prop="active" :rules="rules.activeType">
  88. <el-select filterable v-model="modalData.active" style="width: 120px">
  89. <el-option label="是" value="Y"></el-option>
  90. <el-option label="否" value="N"></el-option>
  91. </el-select>
  92. </el-form-item>
  93. </el-form>
  94. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  95. <el-button type="primary" @click="saveData()">保存</el-button>
  96. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  97. </el-footer>
  98. </el-dialog>
  99. <el-dialog title="属性项目清单" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="830px">
  100. <el-form :inline="true" label-position="top" @keyup.enter.native="getDataList()">
  101. <el-form-item :label="'属性模板编码'">
  102. <el-input v-model="detailData.codeNo" readonly style="width: 120px"></el-input>
  103. </el-form-item>
  104. <el-form-item :label="'属性模板名称'">
  105. <el-input v-model="detailData.codeDesc" readonly style="width: 120px"></el-input>
  106. </el-form-item>
  107. <el-form-item :label="' '">
  108. <!-- <el-button type="primary" @click="addDetailModal()">新增</el-button>-->
  109. <el-button type="primary" @click="addFastModal()">新增</el-button>
  110. </el-form-item>
  111. </el-form>
  112. <el-table
  113. :height="300"
  114. :data="detailList"
  115. border
  116. v-loading="dataListLoading"
  117. style="width: 100%;">
  118. <el-table-column
  119. v-for="(item,index) in columnDetailList" :key="index"
  120. :sortable="item.columnSortable"
  121. :prop="item.columnProp"
  122. :header-align="item.headerAlign"
  123. :show-overflow-tooltip="item.showOverflowTooltip"
  124. :align="item.align"
  125. :fixed="item.fixed==''?false:item.fixed"
  126. :min-width="item.columnWidth"
  127. :label="item.columnLabel">
  128. <template slot-scope="scope">
  129. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  130. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  131. </template>
  132. </el-table-column>
  133. <el-table-column
  134. fixed="right"
  135. header-align="center"
  136. align="center"
  137. width="130"
  138. label="操作">
  139. <template slot-scope="scope">
  140. <a type="text" size="small" v-if="scope.row.valueChooseFlag === 'Y'" @click="chooseModal(scope.row)">可选值</a>
  141. <a type="text" size="small" @click="deleteModalDetails(scope.row)">删除项目</a>
  142. </template>
  143. </el-table-column>
  144. </el-table>
  145. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  146. <el-button type="primary" @click="detailModelFlag = false">关闭</el-button>
  147. </el-footer>
  148. </el-dialog>
  149. <!-- <el-dialog title="添加项目" :close-on-click-modal="false" v-drag :visible.sync="addDetailModalFlag" width="300px">-->
  150. <!-- <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">-->
  151. <!-- <el-form-item >-->
  152. <!-- <span slot="label" style="" @click="getBaseList(1024)"><a herf="#">属性项目编码</a></span>-->
  153. <!-- <el-input v-model="detailData.itemNo" @blur="itemNoBlur" style="width: 120px"></el-input>-->
  154. <!-- </el-form-item>-->
  155. <!-- <el-form-item label="属性项目名称:">-->
  156. <!-- <el-input v-model="detailData.itemDesc" disabled style="width: 120px"></el-input>-->
  157. <!-- </el-form-item>-->
  158. <!-- </el-form>-->
  159. <!-- <el-footer style="height:40px;margin-top: 10px;text-align:center">-->
  160. <!-- <el-button type="primary" @click="saveModalDetails()">保存</el-button>-->
  161. <!-- <el-button type="primary" @click="addDetailModalFlag = false">关闭</el-button>-->
  162. <!-- </el-footer>-->
  163. <!-- </el-dialog>-->
  164. <el-dialog title="新增" @close="refreshDetailList" :close-on-click-modal="false" v-drag :visible.sync="fastAddFlag" width="1200px">
  165. <div style="font-size: 12px">
  166. <!-- 属性模板编码<el-input v-model="detailData.codeNo" readonly style="width: 120px"></el-input>-->
  167. <!-- 属性模板名称<el-input v-model="detailData.codeDesc" readonly style="width: 120px"></el-input>-->
  168. <el-form :inline="true" label-position="top" :model="detailData">
  169. <el-form-item :label="'项目编码'">
  170. <el-input v-model="detailData.itemNo" style="width: 120px"></el-input>
  171. </el-form-item>
  172. <el-form-item :label="'项目名称'">
  173. <el-input v-model="detailData.itemDesc" style="width: 120px"></el-input>
  174. </el-form-item>
  175. <el-form-item :label="' '">
  176. <el-button type="primary" @click="queryTemplateItem()">查询</el-button>
  177. </el-form-item>
  178. </el-form>
  179. </div>
  180. <el-container style="margin-top: 0px;">
  181. <el-main style="width: 450px;padding: 1px">
  182. <span style="font-size: 12px" >可选项目</span>
  183. <el-table
  184. height="400px"
  185. :data="itemList1"
  186. border
  187. ref="itemTable1"
  188. @row-click="itemClickRow1"
  189. @selection-change="selectionItem1"
  190. highlight-current-row
  191. v-loading="dataListLoading"
  192. style="width: 100%">
  193. <el-table-column
  194. type="selection"
  195. header-align="center"
  196. align="center"
  197. :selectable="selectFlag"
  198. width="50">
  199. </el-table-column>
  200. <el-table-column
  201. prop="itemNo"
  202. header-align="center"
  203. align="center"
  204. min-width="80"
  205. label="项目编码">
  206. </el-table-column>
  207. <el-table-column
  208. prop="itemDesc"
  209. header-align="center"
  210. align="center"
  211. min-width="200"
  212. label="项目名称">
  213. </el-table-column>
  214. <el-table-column
  215. prop="itemRemark"
  216. header-align="center"
  217. align="center"
  218. min-width="200"
  219. label="方法说明">
  220. </el-table-column>
  221. </el-table>
  222. </el-main>
  223. <el-main style="width: 10px;padding: 1px">
  224. <div style="margin-top: 200px;margin-left: 18px">
  225. <el-button type="primary" @click="addItem()">添加>></el-button>
  226. </div>
  227. <div style="margin-top: 15px;margin-left: 18px">
  228. <el-button type="primary" @click="deleteItem()">删除<<</el-button>
  229. </div>
  230. </el-main>
  231. <el-main style="width: 450px;padding: 1px">
  232. <span style="font-size: 12px" >已有项目</span>
  233. <el-table
  234. height="400px"
  235. :data="itemList2"
  236. border
  237. ref="itemTable2"
  238. @row-click="itemClickRow2"
  239. @selection-change="selectionItem2"
  240. highlight-current-row
  241. v-loading="dataListLoading"
  242. style="width: 100%">
  243. <el-table-column
  244. type="selection"
  245. header-align="center"
  246. align="center"
  247. :selectable="selectFlag"
  248. width="50">
  249. </el-table-column>
  250. <el-table-column
  251. prop="itemNo"
  252. header-align="center"
  253. align="center"
  254. min-width="80"
  255. label="项目编码">
  256. </el-table-column>
  257. <el-table-column
  258. prop="itemDesc"
  259. header-align="center"
  260. align="center"
  261. min-width="200"
  262. label="项目名称">
  263. </el-table-column>
  264. <el-table-column
  265. prop="itemRemark"
  266. header-align="center"
  267. align="center"
  268. min-width="200"
  269. label="方法说明">
  270. </el-table-column>
  271. </el-table>
  272. </el-main>
  273. </el-container>
  274. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  275. <el-button type="primary" @click="fastAddFlag = false">关闭</el-button>
  276. </el-footer>
  277. </el-dialog>
  278. <el-dialog title="可选值" :close-on-click-modal="false" v-drag :visible.sync="chooseModalFlag" width="350px">
  279. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  280. <el-form-item label="属性项目名称:">
  281. <el-input v-model="chooseModalData.itemDesc" disabled style="width: 120px"></el-input>
  282. </el-form-item>
  283. <el-form-item :label="'检测值类型'">
  284. <el-select filterable v-model="chooseModalData.valueTypeDb" disabled style="width: 120px">
  285. <el-option label="文本" value="T"></el-option>
  286. <el-option label="数字" value="N"></el-option>
  287. </el-select>
  288. </el-form-item>
  289. </el-form>
  290. <el-table
  291. :height="300"
  292. :data="chooseTableData"
  293. border
  294. style="width: 100%">
  295. <el-table-column
  296. prop="availableValue"
  297. header-align="center"
  298. align="left"
  299. min-width="200"
  300. label="属性值">
  301. </el-table-column>
  302. </el-table>
  303. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  304. <el-button type="primary" @click="chooseModalFlag = false">关闭</el-button>
  305. </el-footer>
  306. </el-dialog>
  307. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  308. </div>
  309. </template>
  310. <script>
  311. import {
  312. propertiesModelSearch,
  313. propertiesModelSave,
  314. propertiesModelEdit,
  315. propertiesModelDelete,
  316. searchItemAvailable,
  317. searchModalDetails,
  318. saveModalDetails,
  319. deleteModalDetails, // 多选删除
  320. propertiesItemSearch,
  321. getItemLists,
  322. deleteModalDetail, // 单删
  323. } from "@/api/base/properties.js"
  324. import Chooselist from '@/views/modules/common/Chooselist'
  325. export default {
  326. components: {
  327. Chooselist
  328. },
  329. watch: {
  330. searchData: {
  331. deep: true,
  332. handler: function (newV, oldV) {
  333. this.searchData.codeNo = this.searchData.codeNo.toUpperCase()
  334. }
  335. },
  336. itemData: {
  337. deep: true,
  338. handler: function (newV, oldV) {
  339. this.itemData.itemNo = this.itemData.itemNo.toUpperCase()
  340. }
  341. },
  342. modalData: {
  343. deep: true,
  344. handler: function (newV, oldV) {
  345. this.modalData.codeNo = this.modalData.codeNo.toUpperCase()
  346. }
  347. },
  348. detailData: {
  349. deep: true,
  350. handler: function (newV, oldV) {
  351. this.detailData.codeNo = this.detailData.codeNo.toUpperCase()
  352. this.detailData.itemNo = this.detailData.itemNo.toUpperCase()
  353. }
  354. }
  355. },
  356. data () {
  357. return {
  358. // 导出 start
  359. exportData: [],
  360. exportName: "属性模板" + this.dayjs().format('YYYYMMDDHHmmss'),
  361. exportHeader: ["属性模板"],
  362. exportFooter: [],
  363. exportList:[],
  364. // 导出 end
  365. tagNo:'',
  366. searchData: {
  367. codeNo: '',
  368. codeDesc: '',
  369. active:'Y',
  370. functionType:'A',
  371. page: 1,
  372. limit: 10,
  373. },
  374. height: 200,
  375. pageIndex: 1,
  376. pageSize: 50,
  377. totalPage: 0,
  378. // addDetailModalFlag:false,
  379. modalFlag:false,
  380. modalDisableFlag:false,
  381. modalData:{
  382. flag:'',
  383. codeNo:'',
  384. codeDesc:'',
  385. active:'',
  386. functionType:'A',
  387. userId:this.$store.state.user.name,
  388. createdBy: this.$store.state.user.name,
  389. updateBy: this.$store.state.user.name,
  390. },
  391. detailData:{
  392. codeNo:'',
  393. codeDesc:'',
  394. functionType:'A',
  395. itemNo:'',
  396. itemDesc:'',
  397. itemType:'A',
  398. userId:this.$store.state.user.name
  399. },
  400. columnList: [
  401. {
  402. userId: this.$store.state.user.name,
  403. functionId: 100002002,
  404. serialNumber: '100002002TableActive',
  405. tableId: "100002002Table",
  406. tableName: "属性模板表",
  407. columnProp: 'codeNo',
  408. headerAlign: "center",
  409. align: "center",
  410. columnLabel: '属性模板编码',
  411. columnHidden: false,
  412. columnImage: false,
  413. columnSortable: false,
  414. sortLv: 0,
  415. status: true,
  416. fixed: '',
  417. },
  418. {
  419. userId: this.$store.state.user.name,
  420. functionId: 100002002,
  421. serialNumber: '100002002TableActive',
  422. tableId: "100002002Table",
  423. tableName: "属性模板表",
  424. columnProp: 'codeDesc',
  425. headerAlign: "center",
  426. align: "center",
  427. columnLabel: '属性模板名称',
  428. columnHidden: false,
  429. columnImage: false,
  430. columnSortable: false,
  431. sortLv: 0,
  432. status: true,
  433. fixed: '',
  434. },
  435. {
  436. userId: this.$store.state.user.name,
  437. functionId: 100002002,
  438. serialNumber: '100002002TableActive',
  439. tableId: "100002002Table",
  440. tableName: "属性模板表",
  441. columnProp: 'active',
  442. headerAlign: "center",
  443. align: "center",
  444. columnLabel: '在用',
  445. columnHidden: false,
  446. columnImage: false,
  447. columnSortable: false,
  448. sortLv: 0,
  449. status: true,
  450. fixed: '',
  451. },
  452. {
  453. userId: this.$store.state.user.name,
  454. functionId: 100002002,
  455. serialNumber: '100002002TableActive',
  456. tableId: "100002002Table",
  457. tableName: "属性模板表",
  458. columnProp: 'createdDate',
  459. headerAlign: "center",
  460. align: "center",
  461. columnLabel: '创建时间',
  462. columnHidden: false,
  463. columnImage: false,
  464. columnSortable: false,
  465. sortLv: 0,
  466. status: true,
  467. fixed: '',
  468. },
  469. {
  470. userId: this.$store.state.user.name,
  471. functionId: 100002002,
  472. serialNumber: '100002002TableActive',
  473. tableId: "100002002Table",
  474. tableName: "属性模板表",
  475. columnProp: 'createdBy',
  476. headerAlign: "center",
  477. align: "center",
  478. columnLabel: '创建人',
  479. columnHidden: false,
  480. columnImage: false,
  481. columnSortable: false,
  482. sortLv: 0,
  483. status: true,
  484. fixed: '',
  485. },
  486. {
  487. userId: this.$store.state.user.name,
  488. functionId: 100002002,
  489. serialNumber: '100002002TableActive',
  490. tableId: "100002002Table",
  491. tableName: "属性模板表",
  492. columnProp: 'updateDate',
  493. headerAlign: "center",
  494. align: "center",
  495. columnLabel: '更新时间',
  496. columnHidden: false,
  497. columnImage: false,
  498. columnSortable: false,
  499. sortLv: 0,
  500. status: true,
  501. fixed: '',
  502. },
  503. {
  504. userId: this.$store.state.user.name,
  505. functionId: 100002002,
  506. serialNumber: '100002002TableActive',
  507. tableId: "100002002Table",
  508. tableName: "属性模板表",
  509. columnProp: 'updateBy',
  510. headerAlign: "center",
  511. align: "center",
  512. columnLabel: '更新人',
  513. columnHidden: false,
  514. columnImage: false,
  515. columnSortable: false,
  516. sortLv: 0,
  517. status: true,
  518. fixed: '',
  519. },
  520. ],
  521. detailModelFlag:false,
  522. detailList: [],
  523. chooseTableData:[],
  524. dataListLoading: false,
  525. dataListSelections: [],
  526. // modalDisableFlag:false,
  527. chooseModalFlag:false,
  528. itemFlag:'text',
  529. itemData:{
  530. itemNo:'',
  531. valueNo:'',
  532. availableValue:'',
  533. itemType:'A',
  534. createdBy: this.$store.state.user.name
  535. },
  536. dataList:[],
  537. departmentList:[],
  538. // 展示列集
  539. columnDetailList: [
  540. {
  541. userId: this.$store.state.user.name,
  542. functionId: 100002002,
  543. serialNumber: '100002002Table2PropertiesItemID',
  544. tableId: "100002002Table2",
  545. tableName: "属性项目表",
  546. columnProp: 'itemNo',
  547. headerAlign: "center",
  548. align: "center",
  549. columnLabel: '属性项目编码',
  550. columnHidden: false,
  551. columnImage: false,
  552. columnSortable: false,
  553. sortLv: 0,
  554. status: true,
  555. fixed: '',
  556. },
  557. {
  558. userId: this.$store.state.user.name,
  559. functionId: 100002002,
  560. serialNumber: '100002002Table2PropertiesItemDesc',
  561. tableId: "100002002Table2",
  562. tableName: "属性项目表",
  563. columnProp: 'itemDesc',
  564. headerAlign: "center",
  565. align: "center",
  566. columnLabel: '属性项目名称',
  567. columnHidden: false,
  568. columnImage: false,
  569. columnSortable: false,
  570. sortLv: 0,
  571. status: true,
  572. fixed: '',
  573. },
  574. {
  575. userId: this.$store.state.user.name,
  576. functionId: 100002002,
  577. serialNumber: '100002002Table2PropertiesItemRemark',
  578. tableId: "100002002Table2",
  579. tableName: "属性项目表",
  580. columnProp: 'itemRemark',
  581. headerAlign: "center",
  582. align: "center",
  583. columnLabel: '属性方法说明',
  584. columnHidden: false,
  585. columnImage: false,
  586. columnSortable: false,
  587. sortLv: 0,
  588. status: true,
  589. fixed: '',
  590. },
  591. {
  592. userId: this.$store.state.user.name,
  593. functionId: 100002002,
  594. serialNumber: '100002002Table2ValueType',
  595. tableId: "100002002Table2",
  596. tableName: "属性项目表",
  597. columnProp: 'valueType',
  598. headerAlign: "center",
  599. align: "center",
  600. columnLabel: '检测值类型',
  601. columnHidden: false,
  602. columnImage: false,
  603. columnSortable: false,
  604. sortLv: 0,
  605. status: true,
  606. fixed: '',
  607. },
  608. {
  609. userId: this.$store.state.user.name,
  610. functionId: 100002002,
  611. serialNumber: '100002002Table2DefaultValue',
  612. tableId: "100002002Table2",
  613. tableName: "属性项目表",
  614. columnProp: 'defaultValue',
  615. headerAlign: "center",
  616. align: "center",
  617. columnLabel: '参照值',
  618. columnHidden: false,
  619. columnImage: false,
  620. columnSortable: false,
  621. sortLv: 0,
  622. status: true,
  623. fixed: '',
  624. },
  625. {
  626. userId: this.$store.state.user.name,
  627. functionId: 100002002,
  628. serialNumber: '100002002Table2MaxValue',
  629. tableId: "100002002Table2",
  630. tableName: "属性项目表",
  631. columnProp: 'maxValue',
  632. headerAlign: "center",
  633. align: "center",
  634. columnLabel: '最大值',
  635. columnHidden: false,
  636. columnImage: false,
  637. columnSortable: false,
  638. sortLv: 0,
  639. status: true,
  640. fixed: '',
  641. },
  642. {
  643. userId: this.$store.state.user.name,
  644. functionId: 100002002,
  645. serialNumber: '100002002Table2MinValue',
  646. tableId: "100002002Table2",
  647. tableName: "属性项目表",
  648. columnProp: 'minValue',
  649. headerAlign: "center",
  650. align: "center",
  651. columnLabel: '最小值',
  652. columnHidden: false,
  653. columnImage: false,
  654. columnSortable: false,
  655. sortLv: 0,
  656. status: true,
  657. fixed: '',
  658. },
  659. {
  660. userId: this.$store.state.user.name,
  661. functionId: 100002002,
  662. serialNumber: '100002002TableValueChooseFlag',
  663. tableId: "100002002Table",
  664. tableName: "common",
  665. columnProp: 'valueChooseFlag',
  666. headerAlign: "center",
  667. align: "center",
  668. columnLabel: '是否值可选',
  669. columnHidden: false,
  670. columnImage: false,
  671. columnSortable: false,
  672. sortLv: 0,
  673. status: true,
  674. fixed: '',
  675. },
  676. ],
  677. levelList:[],
  678. chooseModalData:{
  679. itemNo: '',
  680. itemDesc: '',
  681. itemType:'A',
  682. valueTypeDb:'',
  683. },
  684. //---------快速添加----------
  685. fastAddFlag:false,
  686. itemList1:[],
  687. itemList2:[],
  688. itemListRow1:{},
  689. itemListRow2:{},
  690. itemSelections1: [],
  691. itemSelections2: [],
  692. rules:{
  693. codeNoType:[
  694. {
  695. required: true,
  696. message: ' ',
  697. trigger: 'change'
  698. }
  699. ],
  700. codeDescType:[
  701. {
  702. required: true,
  703. message: ' ',
  704. trigger: 'change'
  705. }
  706. ],
  707. activeType:[
  708. {
  709. required: true,
  710. message: ' ',
  711. trigger: 'change'
  712. }
  713. ],
  714. }
  715. }
  716. },
  717. mounted () {
  718. this.$nextTick(() => {
  719. this.height = window.innerHeight - 210
  720. })
  721. },
  722. created () {
  723. this.getDataList();
  724. },
  725. methods: {
  726. // 获取基础数据列表S
  727. getBaseList (val,type) {
  728. this.tagNo = val
  729. this.$nextTick(() => {
  730. let strVal = ''
  731. if (val === 1024) {
  732. strVal = this.detailData.itemNo
  733. }
  734. this.$refs.baseList.init(val, strVal)
  735. })
  736. },
  737. /* 列表方法的回调 */
  738. getBaseData (val) {
  739. if (this.tagNo === 1024) {
  740. this.detailData.itemNo = val.ItemNo
  741. this.detailData.itemDesc = val.ItemDesc
  742. }
  743. },
  744. //导出excel
  745. async createExportData() {
  746. this.searchData.limit = -1
  747. this.searchData.page = 1
  748. await propertiesModelSearch(this.searchData).then(({data}) => {
  749. this.exportList= data.page.list;
  750. })
  751. return this.exportList;
  752. },
  753. startDownload() {
  754. },
  755. finishDownload() {
  756. },
  757. fields() {
  758. let json = "{"
  759. this.columnList.forEach((item, index) => {
  760. if (index == this.columnList.length - 1) {
  761. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  762. } else {
  763. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  764. }
  765. })
  766. json += "}"
  767. let s = eval("(" + json + ")")
  768. return s
  769. },
  770. // 导出 end
  771. // 获取数据列表
  772. getDataList () {
  773. this.searchData.limit = this.pageSize
  774. this.searchData.page = this.pageIndex
  775. propertiesModelSearch(this.searchData).then(({data}) => {
  776. if (data.code == 0) {
  777. this.dataList = data.page.list
  778. this.pageIndex = data.page.currPage
  779. this.pageSize = data.page.pageSize
  780. this.totalPage = data.page.totalCount
  781. }
  782. this.dataListLoading = false
  783. })
  784. },
  785. // 每页数
  786. sizeChangeHandle (val) {
  787. this.pageSize = val
  788. this.pageIndex = 1
  789. this.getDataList()
  790. },
  791. // 当前页
  792. currentChangeHandle (val) {
  793. this.pageIndex = val
  794. this.getDataList()
  795. },
  796. addModal(){
  797. this.modalData={
  798. flag:'1',
  799. codeNo:'',
  800. codeDesc:'',
  801. active:'Y',
  802. functionType:'A',
  803. userId:this.$store.state.user.name,
  804. createdBy: this.$store.state.user.name,
  805. updateBy: this.$store.state.user.name,
  806. };
  807. this.modalDisableFlag=false;
  808. this.modalFlag=true;
  809. },
  810. updateModal(row){
  811. this.modalData={
  812. flag:'2',
  813. codeNo:row.codeNo,
  814. codeDesc:row.codeDesc,
  815. active:row.active,
  816. functionType:'A',
  817. userId:this.$store.state.user.name,
  818. updateBy: this.$store.state.user.name,
  819. };
  820. this.modalDisableFlag=true;
  821. this.modalFlag=true;
  822. },
  823. // 删除
  824. deletePropertiesModel (row) {
  825. this.$confirm(`是否删除这个属性模板?`, '提示', {
  826. confirmButtonText: '确定',
  827. cancelButtonText: '取消',
  828. type: 'warning'
  829. }).then(() => {
  830. propertiesModelDelete(row).then(({data}) => {
  831. if (data && data.code === 0) {
  832. this.getDataList()
  833. this.$message({
  834. message: '操作成功',
  835. type: 'success',
  836. duration: 1500,
  837. onClose: () => {
  838. }
  839. })
  840. } else {
  841. this.$alert(data.msg, '错误', {
  842. confirmButtonText: '确定'
  843. })
  844. }
  845. })
  846. }).catch(() => {
  847. })
  848. },
  849. saveData(){
  850. if (this.modalData.codeNo == '' || this.modalData.codeNo == null) {
  851. this.$alert('请输入属性模板编码!', '错误', {
  852. confirmButtonText: '确定'
  853. })
  854. return false
  855. }
  856. if (this.modalData.codeDesc == '' || this.modalData.codeDesc == null) {
  857. this.$alert('请输入属性模板名称!', '错误', {
  858. confirmButtonText: '确定'
  859. })
  860. return false
  861. }
  862. if (this.modalData.active == '' || this.modalData.active == null) {
  863. this.$alert('选择是否在用!', '错误', {
  864. confirmButtonText: '确定'
  865. })
  866. return false
  867. }
  868. if(this.modalData.flag=='1'){
  869. propertiesModelSave(this.modalData).then(({data}) => {
  870. if (data && data.code === 0) {
  871. this.getDataList()
  872. this.modalFlag=false
  873. this.$message({
  874. message: '操作成功',
  875. type: 'success',
  876. duration: 1500,
  877. onClose: () => {
  878. }
  879. })
  880. } else {
  881. this.$alert(data.msg, '错误', {
  882. confirmButtonText: '确定'
  883. })
  884. }
  885. })
  886. }else {
  887. propertiesModelEdit(this.modalData).then(({data}) => {
  888. if (data && data.code === 0) {
  889. this.getDataList()
  890. this.modalFlag=false
  891. this.$message({
  892. message: '操作成功',
  893. type: 'success',
  894. duration: 1500,
  895. onClose: () => {
  896. }
  897. })
  898. } else {
  899. this.$alert(data.msg, '错误', {
  900. confirmButtonText: '确定'
  901. })
  902. }
  903. })
  904. }
  905. },
  906. //打开项目清单
  907. detailModal(row){
  908. this.detailData.codeNo = row.codeNo
  909. this.detailData.codeDesc = row.codeDesc
  910. searchModalDetails(this.detailData).then(({data}) => {
  911. this.detailList = data.rows
  912. })
  913. this.detailModelFlag = true;
  914. },
  915. // addDetailModal(){
  916. // this.detailData.itemNo = '';
  917. // this.detailData.itemDesc = '';
  918. // this.addDetailModalFlag = true;
  919. // },
  920. //保存项目明细
  921. // saveModalDetails(){
  922. // if(this.detailData.itemNo==""||this.detailData.itemNo==null){
  923. // this.$alert('请选择属性项目编码!', '错误', {
  924. // confirmButtonText: '确定'
  925. // })
  926. // return false
  927. // }
  928. // saveModalDetails(this.detailData).then(({data}) => {
  929. // if (data && data.code == 0) {
  930. // searchModalDetails(this.detailData).then(({data}) => {
  931. // this.detailList = data.rows
  932. // })
  933. // this.addDetailModalFlag=false;
  934. // this.$message({
  935. // message: '操作成功',
  936. // type: 'success',
  937. // duration: 1500,
  938. // onClose: () => {
  939. // }
  940. // })
  941. // } else {
  942. // this.$alert(data.msg, '错误', {
  943. // confirmButtonText: '确定'
  944. // })
  945. // }
  946. // })
  947. // },
  948. itemNoBlur(){
  949. let inData={
  950. itemType:'A',
  951. itemNo:this.detailData.itemNo
  952. }
  953. propertiesItemSearch(inData).then(({data}) => {
  954. if(data.rows.length>0){
  955. this.detailData.itemDesc=data.rows[0].itemDesc
  956. }else {
  957. this.detailData.itemDesc=''
  958. }
  959. })
  960. },
  961. deleteModalDetails(row){
  962. this.$confirm(`是否删除这个属性项目?`, '提示', {
  963. confirmButtonText: '确定',
  964. cancelButtonText: '取消',
  965. type: 'warning'
  966. }).then(() => {
  967. deleteModalDetail(row).then(({data}) => {
  968. if (data && data.code === 0) {
  969. searchModalDetails(this.detailData).then(({data}) => {
  970. this.detailList = data.rows
  971. })
  972. this.$message({
  973. message: '操作成功',
  974. type: 'success',
  975. duration: 1500,
  976. onClose: () => {
  977. }
  978. })
  979. } else {
  980. this.$alert(data.msg, '错误', {
  981. confirmButtonText: '确定'
  982. })
  983. }
  984. })
  985. }).catch(() => {
  986. })
  987. },
  988. chooseModal(row){
  989. this.chooseModalData.itemNo=row.itemNo;
  990. this.chooseModalData.itemDesc=row.itemDesc;
  991. this.chooseModalData.valueTypeDb=row.valueTypeDb;
  992. searchItemAvailable(this.chooseModalData).then(({data}) => {
  993. this.chooseTableData = data.rows
  994. })
  995. this.chooseModalFlag=true;
  996. },
  997. //---------快速添加----------
  998. queryTemplateItem(){
  999. getItemLists(this.detailData).then(({data}) => {
  1000. this.itemList1 = data.row1;
  1001. this.itemList2 = data.row2;
  1002. })
  1003. },
  1004. addFastModal(){
  1005. this.itemSelections1 = null
  1006. this.itemSelections2 = null
  1007. getItemLists(this.detailData).then(({data}) => {
  1008. this.itemList1 = data.row1;
  1009. this.itemList2 = data.row2;
  1010. })
  1011. this.fastAddFlag = true;
  1012. },
  1013. // 可选项目
  1014. itemClickRow1(row){
  1015. this.$refs.itemTable1.toggleRowSelection(row);
  1016. },
  1017. // 已有项目
  1018. itemClickRow2(row){
  1019. this.$refs.itemTable2.toggleRowSelection(row);
  1020. },
  1021. selectFlag(){
  1022. return true;
  1023. },
  1024. selectionItem1(val){
  1025. this.itemSelections1 = val
  1026. },
  1027. selectionItem2(val){
  1028. this.itemSelections2 = val
  1029. },
  1030. addItem(){
  1031. if(this.itemSelections1 == null || this.itemSelections1.length == 0){
  1032. this.$alert("请选择可选项目!", '提示', {
  1033. confirmButtonText: '确定'
  1034. })
  1035. return false;
  1036. }
  1037. let inData = {
  1038. codeNo: this.detailData.codeNo,
  1039. codeDesc: this.detailData.codeDesc,
  1040. functionType: this.detailData.functionType,
  1041. // itemNo: this.itemListRow1.itemNo,
  1042. // itemDesc: this.itemListRow1.itemDesc,
  1043. itemList: this.itemSelections1,
  1044. itemType: this.detailData.itemType,
  1045. userId: this.$store.state.user.name
  1046. }
  1047. saveModalDetails(inData).then(({data}) => {
  1048. if (data && data.code == 0) {
  1049. getItemLists(this.detailData).then(({data}) => {
  1050. this.itemList1 = data.row1;
  1051. this.itemList2 = data.row2;
  1052. })
  1053. this.itemSelections1 = []
  1054. } else {
  1055. this.$alert(data.msg, '错误', {
  1056. confirmButtonText: '确定'
  1057. })
  1058. }
  1059. })
  1060. },
  1061. deleteItem(){
  1062. if(this.itemSelections2 == null || this.itemSelections2.length == 0){
  1063. this.$alert("请选择已有项目!", '提示', {
  1064. confirmButtonText: '确定'
  1065. })
  1066. return false;
  1067. }
  1068. let inData = {
  1069. codeNo:this.detailData.codeNo,
  1070. codeDesc:this.detailData.codeDesc,
  1071. functionType:this.detailData.functionType,
  1072. // itemNo: this.itemListRow2.itemNo,
  1073. // itemDesc:this.itemListRow2.itemDesc,
  1074. itemList: this.itemSelections2,
  1075. itemType:this.detailData.itemType,
  1076. userId:this.$store.state.user.name
  1077. }
  1078. deleteModalDetails(inData).then(({data}) => {
  1079. if (data && data.code === 0) {
  1080. getItemLists(this.detailData).then(({data}) => {
  1081. this.itemList1 = data.row1;
  1082. this.itemList2 = data.row2;
  1083. })
  1084. this.itemSelections2 = []
  1085. } else {
  1086. this.$alert(data.msg, '错误', {
  1087. confirmButtonText: '确定'
  1088. })
  1089. }
  1090. })
  1091. },
  1092. refreshDetailList(){
  1093. searchModalDetails(this.detailData).then(({data}) => {
  1094. this.detailList = data.rows
  1095. })
  1096. },
  1097. }
  1098. }
  1099. </script>