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.

1312 lines
44 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
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
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
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
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
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" >
  4. <el-form-item :label="'计划编码'">
  5. <el-input v-model="searchData.planID" style="width: 120px"></el-input>
  6. </el-form-item>
  7. <el-form-item :label="'计划描述'">
  8. <el-input v-model="searchData.planDesc" style="width: 120px"></el-input>
  9. </el-form-item>
  10. <el-form-item :label="'设备编码'">
  11. <el-input v-model="searchData.objectID" style="width: 120px"></el-input>
  12. </el-form-item>
  13. <el-form-item :label="'计划开始日期:'">
  14. <el-date-picker
  15. style="width: 120px"
  16. v-model="searchData.startDate"
  17. type="date"
  18. value-format="yyyy-MM-dd"
  19. placeholder="选择日期">
  20. </el-date-picker>
  21. </el-form-item>
  22. <el-form-item style="margin-top: 23px;">
  23. <laber style="margin-left: -9px;font-size: 19px">&#10142</laber>
  24. </el-form-item>
  25. <el-form-item :label="' '">
  26. <el-date-picker
  27. style="width: 120px"
  28. v-model="searchData.endDate"
  29. type="date"
  30. value-format="yyyy-MM-dd"
  31. placeholder="选择日期">
  32. </el-date-picker>
  33. </el-form-item>
  34. <el-form-item :label="'状态'">
  35. <el-select filterable v-model="searchData.status" style="width: 120px">
  36. <el-option label="全部" value=""></el-option>
  37. <el-option label="已计划" value="已计划"></el-option>
  38. <el-option label="进行中" value="进行中"></el-option>
  39. <el-option label="已结束" value="已结束"></el-option>
  40. </el-select>
  41. </el-form-item>
  42. <el-form-item :label="' '">
  43. <el-button @click="getDataList()">查询</el-button>
  44. <el-button type="primary" @click="addModal()">新增计划</el-button>
  45. <!-- <el-button type="danger" @click="deletePlan()" :disabled="dataListSelections.length <= 0">批量删除</el-button>-->
  46. </el-form-item>
  47. </el-form>
  48. <el-table
  49. :height="height"
  50. :data="dataList"
  51. border
  52. v-loading="dataListLoading"
  53. style="width: 100%;">
  54. <!-- <el-table-column-->
  55. <!-- type="selection"-->
  56. <!-- header-align="center"-->
  57. <!-- align="center"-->
  58. <!-- width="50">-->
  59. <!-- </el-table-column>-->
  60. <el-table-column
  61. v-for="(item,index) in columnList" :key="index"
  62. :sortable="item.columnSortable"
  63. :prop="item.columnProp"
  64. :header-align="item.headerAlign"
  65. :show-overflow-tooltip="item.showOverflowTooltip"
  66. :align="item.align"
  67. :fixed="item.fixed==''?false:item.fixed"
  68. :min-width="item.columnWidth"
  69. :label="item.columnLabel">
  70. <template slot-scope="scope">
  71. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  72. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  73. style="width: 100px; height: 80px"/></span>
  74. </template>
  75. </el-table-column>
  76. <el-table-column
  77. fixed="right"
  78. header-align="center"
  79. align="center"
  80. width="160"
  81. label="操作">
  82. <template slot-scope="scope">
  83. <a type="text" size="small" v-if="scope.row.status=='已计划'" @click="createOrder(scope.row)">下达</a>
  84. <a type="text" size="small" @click="updateModal(scope.row)">修改</a>
  85. <a type="text" size="small" v-if="scope.row.status!='进行中'" @click="deletePlan(scope.row)">删除</a>
  86. <a type="text" size="small" @click="itemModal(scope.row)">计划项目</a>
  87. </template>
  88. </el-table-column>
  89. </el-table>
  90. <el-pagination
  91. @size-change="sizeChangeHandle"
  92. @current-change="currentChangeHandle"
  93. :current-page="pageIndex"
  94. :page-sizes="[20, 50, 100, 1000]"
  95. :page-size="pageSize"
  96. :total="totalPage"
  97. layout="total, sizes, prev, pager, next, jumper">
  98. </el-pagination>
  99. <el-dialog title="点检计划" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="570px">
  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="modalData.planID" disabled style="width: 120px"></el-input>
  103. </el-form-item>
  104. <el-form-item label="计划描述:">
  105. <el-input v-model="modalData.planDesc" style="width: 120px"></el-input>
  106. </el-form-item>
  107. <el-form-item >
  108. <span slot="label" style="" @click="getBaseList(200)"><a herf="#">设备编码</a></span>
  109. <el-input v-model="modalData.objectID" :disabled="modalDisableFlag" @blur="objectIDBlur" style="width: 120px"></el-input>
  110. </el-form-item>
  111. <el-form-item label="设备名称:">
  112. <el-input v-model="modalData.objectDesc" disabled style="width: 120px"></el-input>
  113. </el-form-item>
  114. </el-form>
  115. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 0px;">
  116. <el-form-item >
  117. <span slot="label" style="" @click="getBaseList(1031)"><a herf="#">点检模板</a></span>
  118. <el-input v-model="modalData.propertiesCode" @blur="modalCodeBlur" style="width: 120px"></el-input>
  119. </el-form-item>
  120. <el-form-item label="模板名称:">
  121. <el-input v-model="modalData.propertiesDesc" disabled style="width: 120px"></el-input>
  122. </el-form-item>
  123. <el-form-item label="计划开始日期:">
  124. <el-date-picker
  125. style="width: 120px"
  126. v-model="modalData.planStartDate"
  127. type="date"
  128. value-format="yyyy-MM-dd"
  129. placeholder="必选">
  130. </el-date-picker>
  131. </el-form-item>
  132. <el-form-item label="计划结束日期:">
  133. <el-date-picker
  134. style="width: 120px"
  135. v-model="modalData.planEndDate"
  136. type="date"
  137. value-format="yyyy-MM-dd"
  138. placeholder="可选">
  139. </el-date-picker>
  140. </el-form-item>
  141. </el-form>
  142. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 0px;">
  143. <el-form-item >
  144. <span slot="label" style="" @click="getBaseList(201)"><a herf="#">默认机修人员</a></span>
  145. <el-input v-model="modalData.operator" style="width: 120px"></el-input>
  146. </el-form-item>
  147. <el-form-item label="点检周期(天):">
  148. <el-input v-model="modalData.planPeriod" type="number" onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')" style="width: 120px"></el-input>
  149. </el-form-item>
  150. <el-form-item label="备注:">
  151. <el-input v-model="modalData.remark" style="width: 254px"></el-input>
  152. </el-form-item>
  153. </el-form>
  154. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  155. <el-button type="primary" @click="saveData()">保存</el-button>
  156. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  157. </el-footer>
  158. </el-dialog>
  159. <el-dialog title="点检项目清单" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="830px">
  160. <el-form :inline="true" label-position="top" @keyup.enter.native="getDataList()">
  161. <el-form-item :label="'点检模板编码'">
  162. <el-input v-model="detailData.codeNo" readonly style="width: 120px"></el-input>
  163. </el-form-item>
  164. <el-form-item :label="'点检模板名称'">
  165. <el-input v-model="detailData.codeDesc" readonly style="width: 120px"></el-input>
  166. </el-form-item>
  167. <el-form-item :label="' '">
  168. <!-- <el-button type="primary" @click="addDetailModal()">新增</el-button>-->
  169. </el-form-item>
  170. </el-form>
  171. <el-table
  172. :height="300"
  173. :data="detailList"
  174. border
  175. v-loading="dataListLoading"
  176. style="width: 100%;">
  177. <el-table-column
  178. v-for="(item,index) in columnDetailList" :key="index"
  179. :sortable="item.columnSortable"
  180. :prop="item.columnProp"
  181. :header-align="item.headerAlign"
  182. :show-overflow-tooltip="item.showOverflowTooltip"
  183. :align="item.align"
  184. :fixed="item.fixed==''?false:item.fixed"
  185. :min-width="item.columnWidth"
  186. :label="item.columnLabel">
  187. <template slot-scope="scope">
  188. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  189. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  190. style="width: 100px; height: 80px"/></span>
  191. </template>
  192. </el-table-column>
  193. <el-table-column
  194. fixed="right"
  195. header-align="center"
  196. align="center"
  197. width="130"
  198. label="操作">
  199. <template slot-scope="scope">
  200. <a type="text" size="small" v-if="scope.row.valueChooseFlag=='Y'" @click="chooseModal(scope.row)">可选值</a>
  201. <a type="text" size="small" @click="updateItemModal(scope.row)">编辑</a>
  202. </template>
  203. </el-table-column>
  204. </el-table>
  205. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  206. <el-button type="primary" @click="detailModelFlag = false">关闭</el-button>
  207. </el-footer>
  208. </el-dialog>
  209. <el-dialog title="点检项目" :close-on-click-modal="false" v-drag :visible.sync="itemModalFlag" width="430px">
  210. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  211. <el-form-item label="点检项目编码:">
  212. <el-input v-model="itemModalData.itemNo" :disabled="itemModalDisableFlag" style="width: 120px"></el-input>
  213. </el-form-item>
  214. <el-form-item label="点检项目名称:">
  215. <el-input v-model="itemModalData.itemDesc" disabled style="width: 120px"></el-input>
  216. </el-form-item>
  217. <el-form-item :label="'检测值类型'">
  218. <el-select filterable v-model="itemModalData.valueTypeDb" style="width: 120px">
  219. <el-option label="文本" value="T"></el-option>
  220. <el-option label="数字" value="N"></el-option>
  221. </el-select>
  222. </el-form-item>
  223. </el-form>
  224. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  225. <el-form-item label="点检方法说明:">
  226. <el-input v-model="itemModalData.itemRemark" style="width: 254px"></el-input>
  227. </el-form-item>
  228. <el-form-item :label="'是否值可选'">
  229. <el-select filterable v-model="itemModalData.valueChooseFlag" style="width: 120px">
  230. <el-option label="是" value="Y"></el-option>
  231. <el-option label="否" value="N"></el-option>
  232. </el-select>
  233. </el-form-item>
  234. </el-form>
  235. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  236. <el-form-item label="参照值:">
  237. <el-input v-model="itemModalData.defaultValue" style="width: 120px"></el-input>
  238. </el-form-item>
  239. <el-form-item label="最大值:">
  240. <el-input v-model="itemModalData.maxValue" type="number" style="width: 120px"></el-input>
  241. </el-form-item>
  242. <el-form-item label="最小值:">
  243. <el-input v-model="itemModalData.minValue" type="number" style="width: 120px"></el-input>
  244. </el-form-item>
  245. </el-form>
  246. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  247. <el-button type="primary" @click="itemSaveData()">保存</el-button>
  248. <el-button type="primary" @click="itemModalFlag = false">关闭</el-button>
  249. </el-footer>
  250. </el-dialog>
  251. <el-dialog title="可选值" :close-on-click-modal="false" v-drag :visible.sync="chooseModalFlag" width="430px">
  252. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  253. <el-form-item label="点检项目名称:">
  254. <el-input v-model="chooseModalData.itemDesc" disabled style="width: 120px"></el-input>
  255. </el-form-item>
  256. <el-form-item :label="'检测值类型'">
  257. <el-select filterable v-model="chooseModalData.valueTypeDb" disabled style="width: 120px">
  258. <el-option label="文本" value="T"></el-option>
  259. <el-option label="数字" value="N"></el-option>
  260. </el-select>
  261. </el-form-item>
  262. <el-form-item :label="' '">
  263. <el-button type="primary" @click="addChooseModal()">新增</el-button>
  264. </el-form-item>
  265. </el-form>
  266. <el-table
  267. :height="300"
  268. :data="chooseTableData"
  269. border
  270. style="width: 100%">
  271. <el-table-column
  272. prop="availableValue"
  273. header-align="center"
  274. align="left"
  275. min-width="200"
  276. label="属性值">
  277. </el-table-column>
  278. <el-table-column
  279. prop=""
  280. header-align="center"
  281. align="center"
  282. min-width="100"
  283. label="操作">
  284. <template slot-scope="scope">
  285. <a type="text" size="small" @click="updateChooseModal(scope.row)">修改</a>
  286. <a type="text" size="small" @click="deleteItemAvailable(scope.row)">删除</a>
  287. </template>
  288. </el-table-column>
  289. </el-table>
  290. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  291. <el-button type="primary" @click="chooseModalFlag = false">关闭</el-button>
  292. </el-footer>
  293. </el-dialog>
  294. <el-dialog title="可选值维护" :close-on-click-modal="false" v-drag :visible.sync="itemAddModalFlag" width="215px" >
  295. <el-form :inline="true" label-position="top" style="margin-left: 22px;margin-top: -5px;" @submit.native.prevent>
  296. <el-form-item :label="'可选值:'">
  297. <el-input v-model="itemData.availableValue" :type="itemFlag" style="width: 130px;"></el-input>
  298. </el-form-item>
  299. </el-form>
  300. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  301. <el-button type="primary" @click="saveItemAvailable()">保存</el-button>
  302. <el-button type="primary" @click="itemAddModalFlag = false">关闭</el-button>
  303. </el-footer>
  304. </el-dialog>
  305. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  306. </div>
  307. </template>
  308. <script>
  309. import {
  310. eamWorkPlanSearch,
  311. eamWorkPlanSave,
  312. eamWorkPlanEdit,
  313. eamWorkPlanDelete,
  314. searchPlanItems,
  315. updatePlanItems,
  316. searchPlanItemAvailable,
  317. savePlanItemAvailable,
  318. deletePlanItemAvailable,
  319. createEamWorkOrder,
  320. objectIDBlur,
  321. modalCodeBlur,
  322. } from "@/api/eam/eam.js"
  323. import Chooselist from '@/views/modules/common/Chooselist_eam'
  324. export default {
  325. components: {
  326. Chooselist
  327. },
  328. watch: {
  329. searchData: {
  330. deep: true,
  331. handler: function (newV, oldV) {
  332. this.searchData.planID = this.searchData.planID.toUpperCase()
  333. this.searchData.objectID = this.searchData.objectID.toUpperCase()
  334. }
  335. },
  336. modalData: {
  337. deep: true,
  338. handler: function (newV, oldV) {
  339. this.modalData.planID = this.modalData.planID.toUpperCase()
  340. this.modalData.objectID = this.modalData.objectID.toUpperCase()
  341. this.modalData.propertiesCode = this.modalData.propertiesCode.toUpperCase()
  342. this.modalData.operator = this.modalData.operator.toUpperCase()
  343. }
  344. },
  345. detailData: {
  346. deep: true,
  347. handler: function (newV, oldV) {
  348. this.modalData.planID = this.modalData.planID.toUpperCase()
  349. this.modalData.itemNo = this.modalData.itemNo.toUpperCase()
  350. this.modalData.codeNo = this.modalData.codeNo.toUpperCase()
  351. }
  352. }
  353. },
  354. data () {
  355. return {
  356. tagNo:'',
  357. searchData: {
  358. site: this.$store.state.user.site,
  359. planID: '',
  360. planDesc: '',
  361. objectID: '',
  362. status: '已计划',
  363. startDate: new Date(),
  364. endDate:'',
  365. functionType:'A',
  366. page: 1,
  367. limit: 10,
  368. },
  369. pageIndex: 1,
  370. pageSize: 100,
  371. totalPage: 0,
  372. height: 200,
  373. dataList: [],
  374. dataListLoading: false,
  375. dataListSelections: [],
  376. modalFlag:false,
  377. modalDisableFlag:false,
  378. modalData:{
  379. flag:'',
  380. functionType:'A',
  381. site: this.$store.state.user.site,
  382. planID:'',
  383. planDesc:'',
  384. objectID:'',
  385. propertiesCode:'',
  386. propertiesDesc:'',
  387. operator:'',
  388. planPeriod:'',
  389. status:'',
  390. planStartDate:'',
  391. planEndDate:'',
  392. userId:'',
  393. remark:'',
  394. },
  395. // 展示列集
  396. columnList: [
  397. {
  398. userId: this.$store.state.user.name,
  399. functionId: 101013,
  400. serialNumber: '101013TableSite',
  401. tableId: "101013Table",
  402. tableName: "点检计划表",
  403. columnProp: 'site',
  404. headerAlign: "center",
  405. align: "left",
  406. columnLabel: '工厂编码',
  407. columnHidden: false,
  408. columnImage: false,
  409. columnSortable: false,
  410. sortLv: 0,
  411. status: true,
  412. fixed: '',
  413. columnWidth: 80,
  414. },
  415. {
  416. userId: this.$store.state.user.name,
  417. functionId: 101013,
  418. serialNumber: '101013TablePlanID',
  419. tableId: "101013Table",
  420. tableName: "点检计划表",
  421. columnProp: 'planID',
  422. headerAlign: "center",
  423. align: "left",
  424. columnLabel: '计划编码',
  425. columnHidden: false,
  426. columnImage: false,
  427. columnSortable: false,
  428. sortLv: 0,
  429. status: true,
  430. fixed: '',
  431. columnWidth: 100,
  432. },
  433. {
  434. userId: this.$store.state.user.name,
  435. functionId: 101013,
  436. serialNumber: '101013TablePlanDesc',
  437. tableId: "101013Table",
  438. tableName: "点检计划表",
  439. columnProp: 'planDesc',
  440. headerAlign: "center",
  441. align: "left",
  442. columnLabel: '计划描述',
  443. columnHidden: false,
  444. columnImage: false,
  445. columnSortable: false,
  446. sortLv: 0,
  447. status: true,
  448. fixed: '',
  449. columnWidth: 140,
  450. },
  451. {
  452. userId: this.$store.state.user.name,
  453. functionId: 101013,
  454. serialNumber: '101013TableObjectID',
  455. tableId: "101013Table",
  456. tableName: "点检计划表",
  457. columnProp: 'objectID',
  458. headerAlign: "center",
  459. align: "left",
  460. columnLabel: '设备编码',
  461. columnHidden: false,
  462. columnImage: false,
  463. columnSortable: false,
  464. sortLv: 0,
  465. status: true,
  466. fixed: '',
  467. columnWidth: 100,
  468. },
  469. {
  470. userId: this.$store.state.user.name,
  471. functionId: 101013,
  472. serialNumber: '101013TablePropertiesCode',
  473. tableId: "101013Table",
  474. tableName: "点检计划表",
  475. columnProp: 'propertiesCode',
  476. headerAlign: "center",
  477. align: "left",
  478. columnLabel: '点检模板编码',
  479. columnHidden: false,
  480. columnImage: false,
  481. columnSortable: false,
  482. sortLv: 0,
  483. status: true,
  484. fixed: '',
  485. columnWidth: 100,
  486. },
  487. {
  488. userId: this.$store.state.user.name,
  489. functionId: 101013,
  490. serialNumber: '101013TableStatus',
  491. tableId: "101013Table",
  492. tableName: "点检计划表",
  493. columnProp: 'status',
  494. headerAlign: "center",
  495. align: "left",
  496. columnLabel: '状态',
  497. columnHidden: false,
  498. columnImage: false,
  499. columnSortable: false,
  500. sortLv: 0,
  501. status: true,
  502. fixed: '',
  503. columnWidth: 70,
  504. },
  505. {
  506. userId: this.$store.state.user.name,
  507. functionId: 101013,
  508. serialNumber: '101013TablePlanStartDate',
  509. tableId: "101013Table",
  510. tableName: "点检计划表",
  511. columnProp: 'planStartDate',
  512. headerAlign: "center",
  513. align: "left",
  514. columnLabel: '计划开始日期',
  515. columnHidden: false,
  516. columnImage: false,
  517. columnSortable: false,
  518. sortLv: 0,
  519. status: true,
  520. fixed: '',
  521. columnWidth: 140,
  522. },
  523. {
  524. userId: this.$store.state.user.name,
  525. functionId: 101013,
  526. serialNumber: '101013TablePlanEndDate',
  527. tableId: "101013Table",
  528. tableName: "点检计划表",
  529. columnProp: 'planEndDate',
  530. headerAlign: "center",
  531. align: "left",
  532. columnLabel: '计划结束日期',
  533. columnHidden: false,
  534. columnImage: false,
  535. columnSortable: false,
  536. sortLv: 0,
  537. status: true,
  538. fixed: '',
  539. columnWidth: 140,
  540. },
  541. {
  542. userId: this.$store.state.user.name,
  543. functionId: 101013,
  544. serialNumber: '101013TableNextWorkDate',
  545. tableId: "101013Table",
  546. tableName: "点检计划表",
  547. columnProp: 'nextWorkDate',
  548. headerAlign: "center",
  549. align: "left",
  550. columnLabel: '下次执行日期',
  551. columnHidden: false,
  552. columnImage: false,
  553. columnSortable: false,
  554. sortLv: 0,
  555. status: true,
  556. fixed: '',
  557. columnWidth: 140,
  558. },
  559. {
  560. userId: this.$store.state.user.name,
  561. functionId: 101013,
  562. serialNumber: '101013TablePlanPeriod',
  563. tableId: "101013Table",
  564. tableName: "点检计划表",
  565. columnProp: 'planPeriod',
  566. headerAlign: "center",
  567. align: "right",
  568. columnLabel: '点检周期',
  569. columnHidden: false,
  570. columnImage: false,
  571. columnSortable: false,
  572. sortLv: 0,
  573. status: true,
  574. fixed: '',
  575. columnWidth: 80,
  576. },
  577. {
  578. userId: this.$store.state.user.name,
  579. functionId: 101013,
  580. serialNumber: '101013TableCreatedDate',
  581. tableId: "101013Table",
  582. tableName: "点检计划表",
  583. columnProp: 'createdDate',
  584. headerAlign: "center",
  585. align: "left",
  586. columnLabel: '创建时间',
  587. columnHidden: false,
  588. columnImage: false,
  589. columnSortable: false,
  590. sortLv: 0,
  591. status: true,
  592. fixed: '',
  593. columnWidth: 140,
  594. },
  595. {
  596. userId: this.$store.state.user.name,
  597. functionId: 101013,
  598. serialNumber: '101013TableCreatedBy',
  599. tableId: "101013Table",
  600. tableName: "点检计划表",
  601. columnProp: 'createdBy',
  602. headerAlign: "center",
  603. align: "left",
  604. columnLabel: '创建人',
  605. columnHidden: false,
  606. columnImage: false,
  607. columnSortable: false,
  608. sortLv: 0,
  609. status: true,
  610. fixed: '',
  611. columnWidth: 80,
  612. },
  613. {
  614. userId: this.$store.state.user.name,
  615. functionId: 101013,
  616. serialNumber: '101013TableRemark',
  617. tableId: "101013Table",
  618. tableName: "点检计划表",
  619. columnProp: 'remark',
  620. headerAlign: "center",
  621. align: "left",
  622. columnLabel: '备注',
  623. columnHidden: false,
  624. columnImage: false,
  625. columnSortable: false,
  626. sortLv: 0,
  627. status: true,
  628. fixed: '',
  629. columnWidth: 150,
  630. },
  631. ],
  632. //项目清单
  633. addDetailModalFlag:false,
  634. detailData:{
  635. site:'',
  636. planID:'',
  637. codeNo:'',
  638. codeDesc:'',
  639. functionType:'A',
  640. itemNo:'',
  641. itemDesc:'',
  642. itemType:'A',
  643. userId:this.$store.state.user.name
  644. },
  645. detailModelFlag:false,
  646. detailList: [],
  647. columnDetailList: [
  648. {
  649. userId: this.$store.state.user.name,
  650. functionId: 101009,
  651. serialNumber: '101009Table2EamPropertiesItemID',
  652. tableId: "101009Table2",
  653. tableName: "点检项目表",
  654. columnProp: 'itemNo',
  655. headerAlign: "center",
  656. align: "left",
  657. columnLabel: '点检项目编码',
  658. columnHidden: false,
  659. columnImage: false,
  660. columnSortable: false,
  661. sortLv: 0,
  662. status: true,
  663. fixed: '',
  664. columnWidth: 90,
  665. },
  666. {
  667. userId: this.$store.state.user.name,
  668. functionId: 101009,
  669. serialNumber: '101009Table2EamPropertiesItemDesc',
  670. tableId: "101009Table2",
  671. tableName: "点检项目表",
  672. columnProp: 'itemDesc',
  673. headerAlign: "center",
  674. align: "left",
  675. columnLabel: '点检项目名称',
  676. columnHidden: false,
  677. columnImage: false,
  678. columnSortable: false,
  679. sortLv: 0,
  680. status: true,
  681. fixed: '',
  682. columnWidth: 90,
  683. },
  684. {
  685. userId: this.$store.state.user.name,
  686. functionId: 101009,
  687. serialNumber: '101009Table2EamPropertiesItemRemark',
  688. tableId: "101009Table2",
  689. tableName: "点检项目表",
  690. columnProp: 'itemRemark',
  691. headerAlign: "center",
  692. align: "left",
  693. columnLabel: '点检方法说明',
  694. columnHidden: false,
  695. columnImage: false,
  696. columnSortable: false,
  697. sortLv: 0,
  698. status: true,
  699. fixed: '',
  700. columnWidth: 120,
  701. },
  702. {
  703. userId: this.$store.state.user.name,
  704. functionId: 101009,
  705. serialNumber: '101009Table2ValueType',
  706. tableId: "101009Table2",
  707. tableName: "点检项目表",
  708. columnProp: 'valueType',
  709. headerAlign: "center",
  710. align: "left",
  711. columnLabel: '检测值类型',
  712. columnHidden: false,
  713. columnImage: false,
  714. columnSortable: false,
  715. sortLv: 0,
  716. status: true,
  717. fixed: '',
  718. columnWidth: 70,
  719. },
  720. {
  721. userId: this.$store.state.user.name,
  722. functionId: 101009,
  723. serialNumber: '101009Table2DefaultValue',
  724. tableId: "101009Table2",
  725. tableName: "点检项目表",
  726. columnProp: 'defaultValue',
  727. headerAlign: "center",
  728. align: "left",
  729. columnLabel: '参照值',
  730. columnHidden: false,
  731. columnImage: false,
  732. columnSortable: false,
  733. sortLv: 0,
  734. status: true,
  735. fixed: '',
  736. columnWidth: 70,
  737. },
  738. {
  739. userId: this.$store.state.user.name,
  740. functionId: 101009,
  741. serialNumber: '101009Table2MaxValue',
  742. tableId: "101009Table2",
  743. tableName: "点检项目表",
  744. columnProp: 'maxValue',
  745. headerAlign: "center",
  746. align: "left",
  747. columnLabel: '最大值',
  748. columnHidden: false,
  749. columnImage: false,
  750. columnSortable: false,
  751. sortLv: 0,
  752. status: true,
  753. fixed: '',
  754. columnWidth: 70,
  755. },
  756. {
  757. userId: this.$store.state.user.name,
  758. functionId: 101009,
  759. serialNumber: '101009Table2MinValue',
  760. tableId: "101009Table2",
  761. tableName: "点检项目表",
  762. columnProp: 'minValue',
  763. headerAlign: "center",
  764. align: "left",
  765. columnLabel: '最小值',
  766. columnHidden: false,
  767. columnImage: false,
  768. columnSortable: false,
  769. sortLv: 0,
  770. status: true,
  771. fixed: '',
  772. columnWidth: 70,
  773. },
  774. {
  775. userId: this.$store.state.user.name,
  776. functionId: 101009,
  777. serialNumber: '101009TableValueChooseFlag',
  778. tableId: "101009Table",
  779. tableName: "common",
  780. columnProp: 'valueChooseFlag',
  781. headerAlign: "center",
  782. align: "left",
  783. columnLabel: '是否值可选',
  784. columnHidden: false,
  785. columnImage: false,
  786. columnSortable: false,
  787. sortLv: 0,
  788. status: true,
  789. fixed: '',
  790. columnWidth: 70,
  791. },
  792. ],
  793. itemModalData:{
  794. site:'',
  795. planID:'',
  796. flag:'',
  797. itemNo:'',
  798. itemDesc:'',
  799. valueTypeDb:'',
  800. defaultValue:'',
  801. valueChooseFlag:'',
  802. createdBy:this.$store.state.user.name,
  803. maxValue:'',
  804. minValue:'',
  805. itemRemark:'',
  806. itemType:'A',
  807. },
  808. itemModalFlag:false,
  809. itemModalDisableFlag:false,
  810. itemFlag:'text',
  811. chooseModalFlag:false,
  812. chooseModalData:{
  813. site:'',
  814. planID:'',
  815. itemNo: '',
  816. itemDesc: '',
  817. itemType:'A',
  818. valueTypeDb:'',
  819. },
  820. chooseTableData:[],
  821. itemData:{
  822. site:'',
  823. planID:'',
  824. itemNo:'',
  825. valueNo:'',
  826. availableValue:'',
  827. itemType:'A',
  828. createdBy: this.$store.state.user.name
  829. },
  830. itemAddModalFlag:false,
  831. }
  832. },
  833. mounted () {
  834. this.$nextTick(() => {
  835. this.height = window.innerHeight - 210
  836. })
  837. },
  838. created () {
  839. this.getDataList()
  840. },
  841. methods: {
  842. // 获取基础数据列表S
  843. getBaseList (val,type) {
  844. this.tagNo = val
  845. this.$nextTick(() => {
  846. let strVal = ''
  847. if (val === 200 && this.modalDisableFlag!=true) {
  848. strVal = this.modalData.objectID
  849. this.$refs.baseList.init(val, strVal)
  850. }
  851. if (val === 1031) {
  852. strVal = this.modalData.propertiesCode
  853. this.$refs.baseList.init(val, strVal)
  854. }
  855. if (val === 201) {
  856. strVal = this.modalData.operator
  857. this.$refs.baseList.init(val, strVal)
  858. }
  859. })
  860. },
  861. /* 列表方法的回调 */
  862. getBaseData (val) {
  863. if (this.tagNo === 200) {
  864. this.modalData.objectID = val.ObjectID
  865. this.modalData.objectDesc = val.ObjectDesc
  866. }
  867. if (this.tagNo === 1031) {
  868. this.modalData.propertiesCode = val.Code_No
  869. this.modalData.propertiesDesc = val.Code_Desc
  870. }
  871. if (this.tagNo === 201) {
  872. this.modalData.operator = val.AdminID
  873. }
  874. },
  875. // 获取数据列表
  876. getDataList () {
  877. this.searchData.limit = this.pageSize
  878. this.searchData.page = this.pageIndex
  879. eamWorkPlanSearch(this.searchData).then(({data}) => {
  880. if (data.code == 0) {
  881. this.dataList = data.page.list
  882. this.pageIndex = data.page.currPage
  883. this.pageSize = data.page.pageSize
  884. this.totalPage = data.page.totalCount
  885. }
  886. this.dataListLoading = false
  887. })
  888. },
  889. // 每页数
  890. sizeChangeHandle (val) {
  891. this.pageSize = val
  892. this.pageIndex = 1
  893. this.getDataList()
  894. },
  895. // 当前页
  896. currentChangeHandle (val) {
  897. this.pageIndex = val
  898. this.getDataList()
  899. },
  900. // 多选
  901. selectionChangeHandle (val) {
  902. this.dataListSelections = val
  903. },
  904. addModal(){
  905. this.modalData={
  906. flag:'1',
  907. functionType:'A',
  908. site: this.$store.state.user.site,
  909. planID:'',
  910. planDesc:'',
  911. objectID:'',
  912. objectDesc:'',
  913. propertiesCode:'',
  914. propertiesDesc:'',
  915. operator:'',
  916. planPeriod:'',
  917. status:'',
  918. planStartDate:'',
  919. planEndDate:'',
  920. userId:this.$store.state.user.name,
  921. remark:'',
  922. };
  923. this.modalDisableFlag=false;
  924. this.modalFlag=true;
  925. },
  926. updateModal(row){
  927. this.modalData={
  928. flag:'2',
  929. functionType:'A',
  930. site:row.site,
  931. planID:row.planID,
  932. planDesc:row.planDesc,
  933. objectID:row.objectID,
  934. objectDesc:row.objectID,
  935. propertiesCode:row.propertiesCode,
  936. propertiesDesc:row.codeDesc,
  937. operator:row.operator,
  938. planPeriod:row.planPeriod,
  939. status:row.status,
  940. planStartDate:row.planStartDate,
  941. planEndDate:row.planEndDate,
  942. userId:this.$store.state.user.name,
  943. remark:row.remark,
  944. };
  945. this.modalDisableFlag=true;
  946. this.modalFlag=true;
  947. },
  948. deletePlan (row) {
  949. this.$confirm(`是否删除这个点检计划?`, '提示', {
  950. confirmButtonText: '确定',
  951. cancelButtonText: '取消',
  952. type: 'warning'
  953. }).then(() => {
  954. eamWorkPlanDelete(row).then(({data}) => {
  955. if (data && data.code ==0) {
  956. this.getDataList()
  957. this.$message({
  958. message: '操作成功',
  959. type: 'success',
  960. duration: 1500,
  961. onClose: () => {
  962. }
  963. })
  964. } else {
  965. this.$alert(data.msg, '错误', {
  966. confirmButtonText: '确定'
  967. })
  968. }
  969. })
  970. }).catch(() => {
  971. })
  972. },
  973. saveData(){
  974. if (this.modalData.planDesc == '' || this.modalData.planDesc == null) {
  975. this.$alert('请输入计划描述 !', '错误', {
  976. confirmButtonText: '确定'
  977. })
  978. return false
  979. }
  980. if (this.modalData.propertiesCode == '' || this.modalData.propertiesCode == null) {
  981. this.$alert('请选择点检模板!', '错误', {
  982. confirmButtonText: '确定'
  983. })
  984. return false
  985. }
  986. if (this.modalData.planPeriod == '' || this.modalData.planPeriod == null) {
  987. this.$alert('选择点检周期!', '错误', {
  988. confirmButtonText: '确定'
  989. })
  990. return false
  991. }
  992. if (this.modalData.planStartDate == '' || this.modalData.planStartDate == null) {
  993. this.$alert('请选择开始日期!', '错误', {
  994. confirmButtonText: '确定'
  995. })
  996. return false
  997. }
  998. if (this.modalData.planStartDate < this.dayjs().format("YYYY-MM-DD")) {
  999. this.$alert('计划开始日期不能小于今天!', '错误', {
  1000. confirmButtonText: '确定'
  1001. })
  1002. return
  1003. }
  1004. if(this.modalData.flag=='1'){
  1005. eamWorkPlanSave(this.modalData).then(({data}) => {
  1006. if (data && data.code === 0) {
  1007. this.getDataList()
  1008. this.modalFlag=false
  1009. this.$message({
  1010. message: '操作成功',
  1011. type: 'success',
  1012. duration: 1500,
  1013. onClose: () => {
  1014. }
  1015. })
  1016. } else {
  1017. this.$alert(data.msg, '错误', {
  1018. confirmButtonText: '确定'
  1019. })
  1020. }
  1021. })
  1022. }else {
  1023. eamWorkPlanEdit(this.modalData).then(({data}) => {
  1024. if (data && data.code === 0) {
  1025. this.getDataList()
  1026. this.modalFlag=false
  1027. this.$message({
  1028. message: '操作成功',
  1029. type: 'success',
  1030. duration: 1500,
  1031. onClose: () => {
  1032. }
  1033. })
  1034. } else {
  1035. this.$alert(data.msg, '错误', {
  1036. confirmButtonText: '确定'
  1037. })
  1038. }
  1039. })
  1040. }
  1041. },
  1042. //----------项目清单----------------start
  1043. //打开项目清单
  1044. itemModal(row){
  1045. this.detailData.site=row.site
  1046. this.detailData.planID=row.planID
  1047. this.detailData.codeNo=row.propertiesCode
  1048. this.detailData.codeDesc=row.codeDesc
  1049. searchPlanItems(this.detailData).then(({data}) => {
  1050. this.detailList = data.rows
  1051. })
  1052. this.detailModelFlag=true;
  1053. },
  1054. updateItemModal(row){
  1055. this.itemModalData={
  1056. flag:'2',
  1057. site:row.site,
  1058. planID:row.planID,
  1059. itemNo:row.itemNo,
  1060. itemDesc:row.itemDesc,
  1061. valueTypeDb:row.valueTypeDb,
  1062. defaultValue:row.defaultValue,
  1063. valueChooseFlag:row.valueChooseFlag,
  1064. createdBy:this.$store.state.user.name,
  1065. maxValue:row.maxValue,
  1066. minValue:row.minValue,
  1067. itemRemark:row.itemRemark,
  1068. itemType:'A',
  1069. };
  1070. this.itemModalDisableFlag=true;
  1071. this.itemModalFlag=true;
  1072. },
  1073. itemSaveData(){
  1074. if (this.itemModalData.itemNo == '' || this.itemModalData.itemNo == null) {
  1075. this.$alert('请输入点检项目编码!', '错误', {
  1076. confirmButtonText: '确定'
  1077. })
  1078. return false
  1079. }
  1080. if (this.itemModalData.itemDesc == '' || this.itemModalData.itemDesc == null) {
  1081. this.$alert('请输入点检项目名称!', '错误', {
  1082. confirmButtonText: '确定'
  1083. })
  1084. return false
  1085. }
  1086. if(this.itemModalData.flag=='1'){
  1087. // eamPropertiesItemSave(this.itemModalData).then(({data}) => {
  1088. // if (data && data.code == '0') {
  1089. // searchPlanItems(this.detailData).then(({data}) => {
  1090. // this.detailList = data.rows
  1091. // })
  1092. // this.itemModalFlag=false
  1093. // this.$message({
  1094. // message: '操作成功',
  1095. // type: 'success',
  1096. // duration: 1500,
  1097. // onClose: () => {
  1098. // }
  1099. // })
  1100. // } else {
  1101. // this.$alert(data.msg, '错误', {
  1102. // confirmButtonText: '确定'
  1103. // })
  1104. // }
  1105. // })
  1106. }else {
  1107. updatePlanItems(this.itemModalData).then(({data}) => {
  1108. if (data && data.code == '0') {
  1109. searchPlanItems(this.detailData).then(({data}) => {
  1110. this.detailList = data.rows
  1111. })
  1112. this.itemModalFlag=false
  1113. this.$message({
  1114. message: '操作成功',
  1115. type: 'success',
  1116. duration: 1500,
  1117. onClose: () => {
  1118. }
  1119. })
  1120. } else {
  1121. this.$alert(data.msg, '错误', {
  1122. confirmButtonText: '确定'
  1123. })
  1124. }
  1125. })
  1126. }
  1127. },
  1128. //----------项目清单----------------end
  1129. //----------项目可选值----------------start
  1130. chooseModal(row){
  1131. this.chooseModalData.site=row.site;
  1132. this.chooseModalData.planID=row.planID;
  1133. this.chooseModalData.itemNo=row.itemNo;
  1134. this.chooseModalData.itemDesc=row.itemDesc;
  1135. this.chooseModalData.valueTypeDb=row.valueTypeDb;
  1136. searchPlanItemAvailable(this.chooseModalData).then(({data}) => {
  1137. this.chooseTableData = data.rows
  1138. })
  1139. this.chooseModalFlag=true;
  1140. },
  1141. addChooseModal(){
  1142. this.itemFlag= this.chooseModalData.valueTypeDb=='T'?'text':'number';
  1143. this.itemData={
  1144. site:this.chooseModalData.site,
  1145. planID:this.chooseModalData.planID,
  1146. itemNo:this.chooseModalData.itemNo,
  1147. valueNo:0,
  1148. availableValue:'',
  1149. itemType:'A',
  1150. createdBy: this.$store.state.user.name
  1151. }
  1152. this.itemAddModalFlag=true;
  1153. },
  1154. updateChooseModal(row){
  1155. this.itemFlag= this.chooseModalData.valueTypeDb=='T'?'text':'number';
  1156. this.itemData={
  1157. site:this.chooseModalData.site,
  1158. planID:this.chooseModalData.planID,
  1159. itemNo:this.chooseModalData.itemNo,
  1160. valueNo:row.valueNo,
  1161. availableValue:row.availableValue,
  1162. itemType:'A',
  1163. createdBy: this.$store.state.user.name
  1164. }
  1165. this.itemAddModalFlag=true;
  1166. },
  1167. saveItemAvailable(){
  1168. if(this.itemData.availableValue==''||this.itemData.availableValue==null){
  1169. this.$alert("请输入可选值!",'错误', {
  1170. confirmButtonText: '确定'
  1171. })
  1172. return false;
  1173. }
  1174. savePlanItemAvailable(this.itemData).then(({data}) => {
  1175. if (data && data.code == 0) {
  1176. searchPlanItemAvailable(this.chooseModalData).then(({data}) => {
  1177. this.chooseTableData = data.rows
  1178. })
  1179. this.itemAddModalFlag=false
  1180. this.$message({
  1181. message: '操作成功',
  1182. type: 'success',
  1183. duration: 1500,
  1184. onClose: () => {
  1185. }
  1186. })
  1187. } else {
  1188. this.$alert(data.msg, '错误', {
  1189. confirmButtonText: '确定'
  1190. })
  1191. }
  1192. })
  1193. },
  1194. deleteItemAvailable(row){
  1195. this.$confirm(`是否删除这个可选值?`, '提示', {
  1196. confirmButtonText: '确定',
  1197. cancelButtonText: '取消',
  1198. type: 'warning'
  1199. }).then(() => {
  1200. deletePlanItemAvailable(row).then(({data}) => {
  1201. if (data && data.code === 0) {
  1202. searchPlanItemAvailable(this.chooseModalData).then(({data}) => {
  1203. this.chooseTableData = data.rows
  1204. })
  1205. this.$message({
  1206. message: '操作成功',
  1207. type: 'success',
  1208. duration: 1500,
  1209. onClose: () => {
  1210. }
  1211. })
  1212. } else {
  1213. this.$alert(data.msg, '错误', {
  1214. confirmButtonText: '确定'
  1215. })
  1216. }
  1217. })
  1218. }).catch(() => {
  1219. })
  1220. },
  1221. //----------项目可选值----------------end
  1222. createOrder(row){
  1223. if(row.planStartDate < this.dayjs().format("YYYY-MM-DD")){
  1224. this.$alert('计划开始日期小于今天!请修改开始日期', '错误', {
  1225. confirmButtonText: '确定'
  1226. })
  1227. return false
  1228. }
  1229. row.userId=this.$store.state.user.name
  1230. this.$confirm(`是创建日期为`+row.planStartDate+`的点检工单?`, '提示', {
  1231. confirmButtonText: '确定',
  1232. cancelButtonText: '取消',
  1233. type: 'warning'
  1234. }).then(() => {
  1235. createEamWorkOrder(row).then(({data}) => {
  1236. if (data && data.code ==0) {
  1237. this.getDataList()
  1238. this.$message({
  1239. message: '操作成功',
  1240. type: 'success',
  1241. duration: 1500,
  1242. onClose: () => {
  1243. }
  1244. })
  1245. } else {
  1246. this.$alert(data.msg, '错误', {
  1247. confirmButtonText: '确定'
  1248. })
  1249. }
  1250. })
  1251. }).catch(() => {
  1252. })
  1253. },
  1254. objectIDBlur(){
  1255. let inData={
  1256. site:this.$store.state.user.site,
  1257. objectID:this.modalData.objectID
  1258. }
  1259. objectIDBlur(inData).then(({data}) => {
  1260. if(data.rows.length>0){
  1261. this.modalData.objectDesc=data.rows[0].objectDesc
  1262. }else {
  1263. this.modalData.objectDesc=''
  1264. }
  1265. })
  1266. },
  1267. modalCodeBlur(){
  1268. let inData={
  1269. functionType:'A',
  1270. codeNo:this.modalData.propertiesCode
  1271. }
  1272. modalCodeBlur(inData).then(({data}) => {
  1273. if(data.rows.length>0){
  1274. this.modalData.propertiesDesc=data.rows[0].codeDesc
  1275. }else {
  1276. this.modalData.propertiesDesc=''
  1277. }
  1278. })
  1279. },
  1280. }
  1281. }
  1282. </script>
  1283. <style scoped>
  1284. </style>