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.

567 lines
18 KiB

3 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. <!-- <el-button type="danger" @click="deleteCode()" :disabled="dataListSelections.length <= 0">批量删除</el-button>-->
  21. </el-form-item>
  22. </el-form>
  23. <el-table
  24. :height="height"
  25. :data="dataList"
  26. border
  27. v-loading="dataListLoading"
  28. style="width: 100%;">
  29. <el-table-column
  30. v-for="(item,index) in columnList" :key="index"
  31. :sortable="item.columnSortable"
  32. :prop="item.columnProp"
  33. :header-align="item.headerAlign"
  34. :show-overflow-tooltip="item.showOverflowTooltip"
  35. :align="item.align"
  36. :fixed="item.fixed==''?false:item.fixed"
  37. :min-width="item.columnWidth"
  38. :label="item.columnLabel">
  39. <template slot-scope="scope">
  40. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  41. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  42. style="width: 100px; height: 80px"/></span>
  43. </template>
  44. </el-table-column>
  45. <el-table-column
  46. fixed="right"
  47. header-align="center"
  48. align="center"
  49. width="100"
  50. label="操作">
  51. <template slot-scope="scope">
  52. <a type="text" size="small" @click="updateModal(scope.row)">修改</a>
  53. <a type="text" size="small" @click="deletePropertiesModel(scope.row)">删除</a>
  54. </template>
  55. </el-table-column>
  56. </el-table>
  57. <el-pagination
  58. @size-change="sizeChangeHandle"
  59. @current-change="currentChangeHandle"
  60. :current-page="pageIndex"
  61. :page-sizes="[20, 50, 100, 1000]"
  62. :page-size="pageSize"
  63. :total="totalPage"
  64. layout="total, sizes, prev, pager, next, jumper">
  65. </el-pagination>
  66. <el-dialog title="点检模板" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="430px">
  67. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  68. <el-form-item label="点检模板编码:">
  69. <el-input v-model="modalData.codeNo" :disabled="modalDisableFlag" style="width: 120px"></el-input>
  70. </el-form-item>
  71. <el-form-item label="点检模板名称:">
  72. <el-input v-model="modalData.codeDesc" style="width: 120px"></el-input>
  73. </el-form-item>
  74. <el-form-item label="是否在用:">
  75. <el-select filterable v-model="modalData.active" style="width: 120px">
  76. <el-option label="是" value="Y"></el-option>
  77. <el-option label="否" value="N"></el-option>
  78. </el-select>
  79. </el-form-item>
  80. </el-form>
  81. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  82. <el-button type="primary" @click="saveData()">保存</el-button>
  83. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  84. </el-footer>
  85. </el-dialog>
  86. <el-dialog title="点检项目清单" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="430px">
  87. <el-table
  88. :height="300"
  89. :data="detailList"
  90. border
  91. v-loading="dataListLoading"
  92. style="width: 100%;">
  93. <el-table-column
  94. v-for="(item,index) in columnDetailList" :key="index"
  95. :sortable="item.columnSortable"
  96. :prop="item.columnProp"
  97. :header-align="item.headerAlign"
  98. :show-overflow-tooltip="item.showOverflowTooltip"
  99. :align="item.align"
  100. :fixed="item.fixed==''?false:item.fixed"
  101. :min-width="item.columnWidth"
  102. :label="item.columnLabel">
  103. <template slot-scope="scope">
  104. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  105. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  106. style="width: 100px; height: 80px"/></span>
  107. </template>
  108. </el-table-column>
  109. <el-table-column
  110. fixed="right"
  111. header-align="center"
  112. align="center"
  113. width="160"
  114. label="操作">
  115. <template slot-scope="scope">
  116. <a type="text" size="small" v-if="scope.row.valueChooseFlag=='Y'" @click="chooseModal(scope.row)">可选值</a>
  117. </template>
  118. </el-table-column>
  119. </el-table>
  120. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  121. <el-button type="primary" @click="detailModelFlag = false">关闭</el-button>
  122. </el-footer>
  123. </el-dialog>
  124. <el-dialog title="可选值" :close-on-click-modal="false" v-drag :visible.sync="chooseModalFlag" width="430px">
  125. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  126. <el-form-item label="点检项目名称:">
  127. <el-input v-model="chooseModalData.itemDesc" disabled style="width: 120px"></el-input>
  128. </el-form-item>
  129. <el-form-item :label="'检测值类型'">
  130. <el-select filterable v-model="chooseModalData.valueTypeDb" disabled style="width: 120px">
  131. <el-option label="文本" value="T"></el-option>
  132. <el-option label="数字" value="N"></el-option>
  133. </el-select>
  134. </el-form-item>
  135. </el-form>
  136. <el-table
  137. :height="300"
  138. :data="chooseTableData"
  139. border
  140. style="width: 100%">
  141. <el-table-column
  142. prop="availableValue"
  143. header-align="center"
  144. align="left"
  145. min-width="200"
  146. label="属性值">
  147. </el-table-column>
  148. </el-table>
  149. </el-dialog>
  150. </div>
  151. </template>
  152. <script>
  153. import {
  154. eamPropertiesModelSearch,
  155. eamPropertiesModelSave,
  156. eamPropertiesModelEdit,
  157. eamPropertiesModelDelete,
  158. searchItemAvailable,
  159. } from "@/api/eam/eam.js"
  160. export default {
  161. data () {
  162. return {
  163. searchData: {
  164. codeNo: '',
  165. codeDesc: '',
  166. active:'Y',
  167. functionType:'A',
  168. page: 1,
  169. limit: 10,
  170. },
  171. height: 200,
  172. pageIndex: 1,
  173. pageSize: 100,
  174. totalPage: 0,
  175. modalFlag:false,
  176. modalDisableFlag:false,
  177. modalData:{
  178. flag:'',
  179. codeNo:'',
  180. codeDesc:'',
  181. active:'',
  182. functionType:'A',
  183. userId:this.$store.state.user.name
  184. },
  185. columnList: [
  186. {
  187. userId: this.$store.state.user.name,
  188. functionId: 101009,
  189. serialNumber: '101009TableCodeNo',
  190. tableId: "101009Table",
  191. tableName: "点检模板表",
  192. columnProp: 'codeNo',
  193. headerAlign: "center",
  194. align: "left",
  195. columnLabel: '点检模板编码',
  196. columnHidden: false,
  197. columnImage: false,
  198. columnSortable: false,
  199. sortLv: 0,
  200. status: true,
  201. fixed: '',
  202. columnWidth: 120,
  203. },
  204. {
  205. userId: this.$store.state.user.name,
  206. functionId: 101009,
  207. serialNumber: '101009TableCodeDesc',
  208. tableId: "101009Table",
  209. tableName: "点检模板表",
  210. columnProp: 'codeDesc',
  211. headerAlign: "center",
  212. align: "left",
  213. columnLabel: '点检模板名称',
  214. columnHidden: false,
  215. columnImage: false,
  216. columnSortable: false,
  217. sortLv: 0,
  218. status: true,
  219. fixed: '',
  220. columnWidth: 140,
  221. },
  222. {
  223. userId: this.$store.state.user.name,
  224. functionId: 101009,
  225. serialNumber: '101009TableActive',
  226. tableId: "101009Table",
  227. tableName: "点检模板表",
  228. columnProp: 'active',
  229. headerAlign: "center",
  230. align: "left",
  231. columnLabel: '在用',
  232. columnHidden: false,
  233. columnImage: false,
  234. columnSortable: false,
  235. sortLv: 0,
  236. status: true,
  237. fixed: '',
  238. columnWidth: 40,
  239. },
  240. ],
  241. detailModelFlag:false,
  242. detailList: [],
  243. chooseTableData:[],
  244. dataListLoading: false,
  245. dataListSelections: [],
  246. // modalDisableFlag:false,
  247. chooseModalFlag:false,
  248. itemFlag:'text',
  249. itemData:{
  250. itemNo:'',
  251. valueNo:'',
  252. availableValue:'',
  253. itemType:'A',
  254. createdBy: this.$store.state.user.name
  255. },
  256. dataList:[],
  257. departmentList:[],
  258. // 展示列集
  259. columnDetailList: [
  260. {
  261. userId: this.$store.state.user.name,
  262. functionId: 101009,
  263. serialNumber: '101009Table2EamPropertiesItemID',
  264. tableId: "101009Table2",
  265. tableName: "点检项目表",
  266. columnProp: 'itemNo',
  267. headerAlign: "center",
  268. align: "left",
  269. columnLabel: '点检项目编码',
  270. columnHidden: false,
  271. columnImage: false,
  272. columnSortable: false,
  273. sortLv: 0,
  274. status: true,
  275. fixed: '',
  276. columnWidth: 100,
  277. },
  278. {
  279. userId: this.$store.state.user.name,
  280. functionId: 101009,
  281. serialNumber: '101009Table2EamPropertiesItemDesc',
  282. tableId: "101009Table2",
  283. tableName: "点检项目表",
  284. columnProp: 'itemDesc',
  285. headerAlign: "center",
  286. align: "left",
  287. columnLabel: '点检项目名称',
  288. columnHidden: false,
  289. columnImage: false,
  290. columnSortable: false,
  291. sortLv: 0,
  292. status: true,
  293. fixed: '',
  294. columnWidth: 140,
  295. },
  296. {
  297. userId: this.$store.state.user.name,
  298. functionId: 101009,
  299. serialNumber: '101009Table2EamPropertiesItemRemark',
  300. tableId: "101009Table2",
  301. tableName: "点检项目表",
  302. columnProp: 'itemRemark',
  303. headerAlign: "center",
  304. align: "left",
  305. columnLabel: '点检方法说明',
  306. columnHidden: false,
  307. columnImage: false,
  308. columnSortable: false,
  309. sortLv: 0,
  310. status: true,
  311. fixed: '',
  312. columnWidth: 140,
  313. },
  314. {
  315. userId: this.$store.state.user.name,
  316. functionId: 101009,
  317. serialNumber: '101009Table2ValueType',
  318. tableId: "101009Table2",
  319. tableName: "点检项目表",
  320. columnProp: 'valueType',
  321. headerAlign: "center",
  322. align: "left",
  323. columnLabel: '检测值类型',
  324. columnHidden: false,
  325. columnImage: false,
  326. columnSortable: false,
  327. sortLv: 0,
  328. status: true,
  329. fixed: '',
  330. columnWidth: 100,
  331. },
  332. {
  333. userId: this.$store.state.user.name,
  334. functionId: 101009,
  335. serialNumber: '101009Table2DefaultValue',
  336. tableId: "101009Table2",
  337. tableName: "点检项目表",
  338. columnProp: 'defaultValue',
  339. headerAlign: "center",
  340. align: "left",
  341. columnLabel: '参照值',
  342. columnHidden: false,
  343. columnImage: false,
  344. columnSortable: false,
  345. sortLv: 0,
  346. status: true,
  347. fixed: '',
  348. columnWidth: 100,
  349. },
  350. {
  351. userId: this.$store.state.user.name,
  352. functionId: 101009,
  353. serialNumber: '101009Table2MaxValue',
  354. tableId: "101009Table2",
  355. tableName: "点检项目表",
  356. columnProp: 'maxValue',
  357. headerAlign: "center",
  358. align: "left",
  359. columnLabel: '最大值',
  360. columnHidden: false,
  361. columnImage: false,
  362. columnSortable: false,
  363. sortLv: 0,
  364. status: true,
  365. fixed: '',
  366. columnWidth: 100,
  367. },
  368. {
  369. userId: this.$store.state.user.name,
  370. functionId: 101009,
  371. serialNumber: '101009Table2MinValue',
  372. tableId: "101009Table2",
  373. tableName: "点检项目表",
  374. columnProp: 'minValue',
  375. headerAlign: "center",
  376. align: "left",
  377. columnLabel: '最小值',
  378. columnHidden: false,
  379. columnImage: false,
  380. columnSortable: false,
  381. sortLv: 0,
  382. status: true,
  383. fixed: '',
  384. columnWidth: 100,
  385. },
  386. ],
  387. levelList:[],
  388. chooseModalData:{
  389. itemNo: '',
  390. itemDesc: '',
  391. itemType:'A',
  392. valueTypeDb:'',
  393. },
  394. }
  395. },
  396. mounted () {
  397. this.$nextTick(() => {
  398. this.height = window.innerHeight - 210
  399. })
  400. },
  401. created () {
  402. this.getDataList();
  403. },
  404. methods: {
  405. // 获取数据列表
  406. getDataList () {
  407. this.searchData.limit = this.pageSize
  408. this.searchData.page = this.pageIndex
  409. eamPropertiesModelSearch(this.searchData).then(({data}) => {
  410. if (data.code == 0) {
  411. this.dataList = data.page.list
  412. this.pageIndex = data.page.currPage
  413. this.pageSize = data.page.pageSize
  414. this.totalPage = data.page.totalCount
  415. }
  416. this.dataListLoading = false
  417. })
  418. },
  419. // 每页数
  420. sizeChangeHandle (val) {
  421. this.pageSize = val
  422. this.pageIndex = 1
  423. this.getDataList()
  424. },
  425. // 当前页
  426. currentChangeHandle (val) {
  427. this.pageIndex = val
  428. this.getDataList()
  429. },
  430. addModal(){
  431. this.modalData={
  432. flag:'1',
  433. codeNo:'',
  434. codeDesc:'',
  435. active:'Y',
  436. functionType:'A',
  437. userId:this.$store.state.user.name
  438. };
  439. this.modalDisableFlag=false;
  440. this.modalFlag=true;
  441. },
  442. updateModal(row){
  443. this.modalData={
  444. flag:'2',
  445. codeNo:row.codeNo,
  446. codeDesc:row.codeDesc,
  447. active:row.active,
  448. functionType:'A',
  449. userId:this.$store.state.user.name
  450. };
  451. this.modalDisableFlag=true;
  452. this.modalFlag=true;
  453. },
  454. // 删除
  455. deletePropertiesModel (row) {
  456. this.$confirm(`是否删除这个点检模板?`, '提示', {
  457. confirmButtonText: '确定',
  458. cancelButtonText: '取消',
  459. type: 'warning'
  460. }).then(() => {
  461. eamPropertiesModelDelete(row).then(({data}) => {
  462. if (data && data.code === 0) {
  463. this.getDataList()
  464. this.$message({
  465. message: '操作成功',
  466. type: 'success',
  467. duration: 1500,
  468. onClose: () => {
  469. }
  470. })
  471. } else {
  472. this.$alert(data.msg, '错误', {
  473. confirmButtonText: '确定'
  474. })
  475. }
  476. })
  477. }).catch(() => {
  478. })
  479. },
  480. saveData(){
  481. if (this.modalData.codeNo == '' || this.modalData.codeNo == null) {
  482. this.$alert('请输入点检模板编码!', '错误', {
  483. confirmButtonText: '确定'
  484. })
  485. return false
  486. }
  487. if (this.modalData.codeDesc == '' || this.modalData.codeDesc == null) {
  488. this.$alert('请输入点检模板名称!', '错误', {
  489. confirmButtonText: '确定'
  490. })
  491. return false
  492. }
  493. if (this.modalData.active == '' || this.modalData.active == null) {
  494. this.$alert('选择是否在用!', '错误', {
  495. confirmButtonText: '确定'
  496. })
  497. return false
  498. }
  499. if(this.modalData.flag=='1'){
  500. eamPropertiesModelSave(this.modalData).then(({data}) => {
  501. if (data && data.code === 0) {
  502. this.getDataList()
  503. this.modalFlag=false
  504. this.$message({
  505. message: '操作成功',
  506. type: 'success',
  507. duration: 1500,
  508. onClose: () => {
  509. }
  510. })
  511. } else {
  512. this.$alert(data.msg, '错误', {
  513. confirmButtonText: '确定'
  514. })
  515. }
  516. })
  517. }else {
  518. eamPropertiesModelEdit(this.modalData).then(({data}) => {
  519. if (data && data.code === 0) {
  520. this.getDataList()
  521. this.modalFlag=false
  522. this.$message({
  523. message: '操作成功',
  524. type: 'success',
  525. duration: 1500,
  526. onClose: () => {
  527. }
  528. })
  529. } else {
  530. this.$alert(data.msg, '错误', {
  531. confirmButtonText: '确定'
  532. })
  533. }
  534. })
  535. }
  536. },
  537. chooseModal(row){
  538. this.chooseModalData.itemNo=row.itemNo;
  539. this.chooseModalData.itemDesc=row.itemDesc;
  540. this.chooseModalData.valueTypeDb=row.valueTypeDb;
  541. searchItemAvailable(this.chooseModalData).then(({data}) => {
  542. this.chooseTableData = data.rows
  543. })
  544. this.chooseModalFlag=true;
  545. },
  546. }
  547. }
  548. </script>