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.

563 lines
19 KiB

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