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.

1697 lines
58 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
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. <div>
  4. <span @click="favoriteFunction()">
  5. <icon-svg :name="favorite?'xiangqufill':'xiangqu'" class="sl-svg"></icon-svg>
  6. </span>
  7. </div>
  8. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
  9. <el-form-item :label="'工单编码'">
  10. <el-input v-model="searchData.orderNo" clearable style="width: 120px"></el-input>
  11. </el-form-item>
  12. <el-form-item :label="'计划编码'">
  13. <el-input v-model="searchData.planID" clearable style="width: 120px"></el-input>
  14. </el-form-item>
  15. <el-form-item :label="'计划描述'">
  16. <el-input v-model="searchData.planDesc" clearable style="width: 120px"></el-input>
  17. </el-form-item>
  18. <el-form-item :label="'设备编码'">
  19. <el-input v-model="searchData.objectID" clearable style="width: 120px"></el-input>
  20. </el-form-item>
  21. <el-form-item :label="'计划执行人员'">
  22. <el-input v-model="searchData.planOperatorName" clearable style="width: 120px"></el-input>
  23. </el-form-item>
  24. <el-form-item :label="'计划执行日期'">
  25. <el-date-picker
  26. style="width: 120px"
  27. v-model="searchData.startDate"
  28. type="date"
  29. value-format="yyyy-MM-dd"
  30. placeholder="选择日期">
  31. </el-date-picker>
  32. </el-form-item>
  33. <el-form-item style="margin-top: 23px;">
  34. <laber style="margin-left: -9px;font-size: 19px">&#10142</laber>
  35. </el-form-item>
  36. <el-form-item :label="' '">
  37. <el-date-picker
  38. style="width: 120px"
  39. v-model="searchData.endDate"
  40. type="date"
  41. value-format="yyyy-MM-dd"
  42. placeholder="选择日期">
  43. </el-date-picker>
  44. </el-form-item>
  45. <el-form-item label=" ">
  46. <el-button @click="searchClick()">查询</el-button>
  47. <download-excel
  48. :fields="fields()"
  49. :data="exportData"
  50. type="xls"
  51. :name="exportName"
  52. :header="exportHeader"
  53. :footer="exportFooter"
  54. :fetch="createExportData"
  55. :before-generate="startDownload"
  56. :before-finish="finishDownload"
  57. worksheet="导出信息"
  58. class="el-button el-button--primary el-button--medium">
  59. {{ "导出" }}
  60. </download-excel>
  61. </el-form-item>
  62. </el-form>
  63. <el-table
  64. :height="height"
  65. :data="dataList"
  66. border
  67. v-loading="dataListLoading"
  68. style="width: 100%;">
  69. <el-table-column
  70. v-for="(item,index) in columnList" :key="index"
  71. :sortable="item.columnSortable"
  72. :prop="item.columnProp"
  73. :header-align="item.headerAlign"
  74. :show-overflow-tooltip="item.showOverflowTooltip"
  75. :align="item.align"
  76. :fixed="item.fixed==''?false:item.fixed"
  77. :min-width="item.columnWidth"
  78. :label="item.columnLabel">
  79. <template slot-scope="scope">
  80. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  81. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  82. </template>
  83. </el-table-column>
  84. <el-table-column
  85. prop=""
  86. header-align="center"
  87. align="center"
  88. min-width="100"
  89. fixed="right"
  90. label="操作">
  91. <template slot-scope="scope">
  92. <a type="text" size="small" v-if="scope.row.status=='未开工'" @click="reach(scope.row)">到达</a>
  93. <a type="text" size="small" v-if="scope.row.status=='已到达'" @click="reportModal(scope.row)">执行</a>
  94. </template>
  95. </el-table-column>
  96. </el-table>
  97. <el-pagination
  98. @size-change="sizeChangeHandle"
  99. @current-change="currentChangeHandle"
  100. :current-page="pageIndex"
  101. :page-sizes="[20, 50, 100, 200, 500]"
  102. :page-size="pageSize"
  103. :total="totalPage"
  104. layout="total, sizes, prev, pager, next, jumper">
  105. </el-pagination>
  106. <el-dialog title="执行维保工单" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="1274px">
  107. <el-form :inline="true" label-position="top" @keyup.enter.native="getDataList()">
  108. <!-- <el-form-item :label="'工厂编码'">-->
  109. <!-- <el-input v-model="saveData.site" disabled style="width: 120px"></el-input>-->
  110. <!-- </el-form-item>-->
  111. <el-form-item :label="'工单号'">
  112. <el-input v-model="saveData.orderNo" disabled style="width: 120px"></el-input>
  113. </el-form-item>
  114. <el-form-item :label="'计划执行人员'">
  115. <el-input v-model="saveData.planOperatorName" disabled style="width: 221px"></el-input>
  116. </el-form-item>
  117. <el-form-item >
  118. <span slot="label" style="" @click="getOperatorList()"><a>协同人员</a></span>
  119. <el-input v-model="saveData.operatorName" style="width: 221px"></el-input>
  120. </el-form-item>
  121. <el-form-item :label="'到达时间:'">
  122. <el-date-picker style="width: 165px" disabled v-model="saveData.reachDate" type="datetime" :editable="false" @focus='elDatePickerOnFocus'
  123. value-format='yyyy-MM-dd HH:mm:ss' format='yyyy-MM-dd HH:mm:ss' placeholder="到达时间">
  124. </el-date-picker>
  125. </el-form-item>
  126. <el-form-item :label="'维保结论'">
  127. <el-select v-model="saveData.checkResult" style="width: 100px" placeholder="请选择">
  128. <el-option label="合格" value="合格"></el-option>
  129. <el-option label="异常" value="异常"></el-option>
  130. </el-select>
  131. </el-form-item>
  132. <el-form-item v-if="this.saveData.checkResult === '异常'" :label="'异常原因'">
  133. <el-select v-model="saveData.disposalMeasures" style="width: 120px">
  134. <el-option label="缺少备件" value="缺少备件"></el-option>
  135. <el-option label="等待售后" value="等待售后"></el-option>
  136. <el-option label="远程协助" value="远程协助"></el-option>
  137. <el-option label="换班换人" value="换班换人"></el-option>
  138. </el-select>
  139. </el-form-item>
  140. <el-form-item :label="' '">
  141. <el-button type="primary" @click="refreshItem()">刷新项目</el-button>
  142. </el-form-item>
  143. </el-form>
  144. <el-form :inline="true" label-position="top" @keyup.enter.native="getDataList()">
  145. <el-form-item :label="'执行结果备注'">
  146. <el-input type="textarea" v-model="saveData.remark" :rows="3" resize='none' show-word-limit style="width: 1251px;height: 20px"></el-input>
  147. </el-form-item>
  148. </el-form>
  149. <el-tabs v-model="activeTable" style="margin-top: 50px; width: 100%; height: 100%;" type="border-card" @tab-click="tabClick" class="customer-tab">
  150. <el-tab-pane label="维保单" name="inspection_form">
  151. <div class="rq ">
  152. <el-table
  153. :height="400"
  154. :data="detailList"
  155. border
  156. v-loading="dataListLoading"
  157. @selection-change="selectionChangeHandle"
  158. style="width: 100%;">
  159. <el-table-column
  160. prop=""
  161. header-align="center"
  162. align="center"
  163. min-width="40"
  164. label="操作">
  165. <template slot-scope="scope">
  166. <el-button class="el-icon-upload" type="primary" @click="addUploadFileModal(scope.row)"></el-button>
  167. </template>
  168. </el-table-column>
  169. <el-table-column
  170. v-for="(item,index) in columnDetailList" :key="index"
  171. :sortable="item.columnSortable"
  172. :prop="item.columnProp"
  173. :header-align="item.headerAlign"
  174. :show-overflow-tooltip="item.showOverflowTooltip"
  175. :align="item.align"
  176. :fixed="item.fixed==''?false:item.fixed"
  177. :min-width="item.columnWidth"
  178. :label="item.columnLabel">
  179. <template slot-scope="scope">
  180. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  181. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  182. </template>
  183. </el-table-column>
  184. <el-table-column
  185. prop="imageFlag"
  186. header-align="center"
  187. align="center"
  188. min-width="70"
  189. label="图片必填">
  190. <template slot-scope="scope">
  191. <div :style="{color: scope.row.uploadFlag === 'Y' ? '#3ac252' : ''}">
  192. {{ scope.row.imageFlag }}
  193. </div>
  194. </template>
  195. </el-table-column>
  196. <el-table-column
  197. prop=""
  198. header-align="center"
  199. align="right"
  200. min-width="80"
  201. label="实测值">
  202. <template slot-scope="scope">
  203. <el-input :ref="`textValue${scope.$index}`" v-if="scope.row.valueTypeDb === 'T' && scope.row.valueChooseFlag === 'N'" v-model="scope.row.textValue" @keyup.enter.native="focusNextInput(scope.$index, 'textValue')" style="height: 11px;padding: 0px " allow-create>;width:98%"></el-input>
  204. <el-input :ref="`textValue${scope.$index}`" v-if="scope.row.valueTypeDb === 'N' && scope.row.valueChooseFlag === 'N'" v-model="scope.row.numberValue" @keyup.enter.native="focusNextInput(scope.$index, 'textValue')" type="number" style="height: 11px;padding: 0px " allow-create>;width:98%"></el-input>
  205. <el-select v-if="scope.row.valueTypeDb === 'T' && scope.row.valueChooseFlag === 'Y'" v-model="scope.row.textValue" placeholder="请选择" style="height: 11px;padding: 0px " allow-create>
  206. <el-option
  207. v-for="item in scope.row.availableList"
  208. :key="index"
  209. :label="item.availableValue"
  210. :value="item.availableValue">
  211. </el-option>
  212. </el-select>
  213. <el-select v-if="scope.row.valueTypeDb === 'N' && scope.row.valueChooseFlag === 'Y'" v-model="scope.row.numberValue" placeholder="请选择" style="height: 11px;padding: 0px " allow-create>
  214. <el-option
  215. v-for="item in scope.row.availableList"
  216. :key="index"
  217. :label="item.availableValue"
  218. :value="item.availableValue">
  219. </el-option>
  220. </el-select>
  221. </template>
  222. </el-table-column>
  223. <el-table-column
  224. prop=""
  225. header-align="center"
  226. align="right"
  227. min-width="80"
  228. label="检验结论">
  229. <template slot-scope="scope">
  230. <el-select v-model="scope.row.itemResult" style="height: 11px;padding: 0px" placeholder="请选择">
  231. <el-option label="合格" value="合格" style="color: green"></el-option>
  232. <el-option label="不合格" value="不合格" style="color: red"></el-option>
  233. </el-select>
  234. </template>
  235. </el-table-column>
  236. </el-table>
  237. </div>
  238. </el-tab-pane>
  239. <el-tab-pane label="维保记录" name="history_record">
  240. <el-table
  241. :height="400"
  242. :data="HistoryRecordList"
  243. border
  244. v-loading="dataListLoading"
  245. style="width: 100%;">
  246. <el-table-column
  247. v-for="(item,index) in columnHistoryList" :key="index"
  248. :sortable="item.columnSortable"
  249. :prop="item.columnProp"
  250. :header-align="item.headerAlign"
  251. :show-overflow-tooltip="item.showOverflowTooltip"
  252. :align="item.align"
  253. :fixed="item.fixed===''?false:item.fixed"
  254. :min-width="item.columnWidth"
  255. :label="item.columnLabel">
  256. <template slot-scope="scope">
  257. <span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
  258. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  259. </template>
  260. </el-table-column>
  261. <el-table-column
  262. fixed="right"
  263. header-align="center"
  264. align="center"
  265. width="100"
  266. label="操作">
  267. <template slot-scope="scope">
  268. <a type="text" size="small" @click="detailModal(scope.row)">详情</a>
  269. </template>
  270. </el-table-column>
  271. </el-table>
  272. </el-tab-pane>
  273. </el-tabs>
  274. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  275. <el-button type="primary" @click="saveCheckReport()">保存</el-button>
  276. <el-button type="primary" @click="detailModelFlag = false">关闭</el-button>
  277. </el-footer>
  278. </el-dialog>
  279. <el-dialog title="详情" :close-on-click-modal="false" v-drag :visible.sync="historyDetailModelFlag" width="1212px" top="180px">
  280. <div class="rq ">
  281. <el-table
  282. :height="300"
  283. :data="historyDetailList"
  284. border
  285. v-loading="dataListLoading"
  286. style="width: 100%;">
  287. <el-table-column
  288. v-for="(item,index) in columnHistoryDetailList" :key="index"
  289. :sortable="item.columnSortable"
  290. :prop="item.columnProp"
  291. :header-align="item.headerAlign"
  292. :show-overflow-tooltip="item.showOverflowTooltip"
  293. :align="item.align"
  294. :fixed="item.fixed==''?false:item.fixed"
  295. :min-width="item.columnWidth"
  296. :label="item.columnLabel">
  297. <template slot-scope="scope">
  298. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  299. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  300. </template>
  301. </el-table-column>
  302. <el-table-column
  303. prop=""
  304. header-align="center"
  305. align="center"
  306. min-width="80"
  307. label="是否完成">
  308. <template slot-scope="scope">
  309. {{scope.row.finishFlag=='Y'?"是":"否"}}
  310. </template>
  311. </el-table-column>
  312. <el-table-column
  313. prop=""
  314. header-align="center"
  315. align="right"
  316. min-width="80"
  317. label="实测值">
  318. <template slot-scope="scope">
  319. <el-input v-if="scope.row.valueTypeDb === 'T'" disabled v-model="scope.row.textValue" style="height: 11px;padding: 0px " allow-create>;width:98%"></el-input>
  320. <el-input v-if="scope.row.valueTypeDb === 'N'" disabled v-model="scope.row.numberValue" type="number" style="height: 11px;padding: 0px " allow-create>;width:98%"></el-input>
  321. </template>
  322. </el-table-column>
  323. <el-table-column
  324. prop=""
  325. header-align="center"
  326. align="right"
  327. min-width="80"
  328. label="检验结论">
  329. <template slot-scope="scope">
  330. <el-select v-model="scope.row.itemResult" disabled style="height: 11px;padding: 0px">
  331. <el-option label="合格" value="合格"></el-option>
  332. <el-option label="不合格" value="不合格"></el-option>
  333. </el-select>
  334. </template>
  335. </el-table-column>
  336. </el-table>
  337. </div>
  338. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  339. <el-button type="primary" @click="historyDetailModelFlag = false">关闭</el-button>
  340. </el-footer>
  341. </el-dialog>
  342. <!-- 机修人员清单 -->
  343. <el-dialog title="机修人员清单" :close-on-click-modal="false" v-drag :visible.sync="operatorModelFlag" width="820px">
  344. <div class="rq">
  345. <el-form :inline="true" label-position="top" :model="operatorData">
  346. <el-form-item :label="'人员编码'">
  347. <el-input v-model="operatorData.adminID" style="width: 120px"></el-input>
  348. </el-form-item>
  349. <el-form-item :label="'人员姓名'">
  350. <el-input v-model="operatorData.adminName" style="width: 120px"></el-input>
  351. </el-form-item>
  352. <el-form-item :label="' '">
  353. <el-button type="primary" @click="getOperatorList()">查询</el-button>
  354. </el-form-item>
  355. </el-form>
  356. <el-table
  357. :height="300"
  358. :data="operatorList"
  359. ref="operatorTable"
  360. @row-click="operatorClickRow"
  361. @selection-change="selectionChangeHandle2"
  362. border
  363. v-loading="dataListLoading"
  364. style="width: 100%;">
  365. <el-table-column
  366. type="selection"
  367. header-align="center"
  368. align="center"
  369. :selectable="selectFlag"
  370. width="50">
  371. </el-table-column>
  372. <el-table-column
  373. v-for="(item,index) in operatorDetailList" :key="index"
  374. :sortable="item.columnSortable"
  375. :prop="item.columnProp"
  376. :header-align="item.headerAlign"
  377. :show-overflow-tooltip="item.showOverflowTooltip"
  378. :align="item.align"
  379. :fixed="item.fixed==''?false:item.fixed"
  380. :min-width="item.columnWidth"
  381. :label="item.columnLabel">
  382. <template slot-scope="scope">
  383. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  384. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  385. </template>
  386. </el-table-column>
  387. </el-table>
  388. </div>
  389. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  390. <el-button type="primary" @click="confirmOperator()">确认</el-button>
  391. <el-button type="primary" @click="operatorModelFlag = false">关闭</el-button>
  392. </el-footer>
  393. </el-dialog>
  394. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  395. <!-- 上传文件的modal -->
  396. <comEamItemImageUploadFile ref="comEamItemImageUploadFile" @refreshPageTables="getInspectionFormData()" v-drag></comEamItemImageUploadFile>
  397. </div>
  398. </template>
  399. <script>
  400. import {
  401. eamWorkOrderSearch,
  402. eamWorkOrderItemSearch,
  403. saveCheckOrderReport,
  404. queryHistoryRecord, // 查询设备的点检历史记录
  405. eamWorkOrderReportSearch, //历史记录详情
  406. getOperatorList,
  407. refreshItem,
  408. reach
  409. } from "@/api/eam/eam.js"
  410. import {
  411. getTableDefaultListLanguage,
  412. getTableUserListLanguage,
  413. } from "@/api/table.js"
  414. import Chooselist from '@/views/modules/common/Chooselist_eam'
  415. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  416. import comEamItemImageUploadFile from './com_eam_itemImage_upload_file.vue'
  417. export default {
  418. components: {
  419. Chooselist,
  420. comEamItemImageUploadFile
  421. },
  422. watch: {
  423. saveData: {
  424. deep: true,
  425. handler: function (newV, oldV) {
  426. this.saveData.workTime = Math.ceil(Math.floor(this.dayjs(this.saveData.endDate).diff(this.saveData.startDate, 'seconds') / 30) / 2)
  427. }
  428. },
  429. searchData: {
  430. deep: true,
  431. handler: function (newV, oldV) {
  432. this.searchData.groupID = this.searchData.groupID.toUpperCase()
  433. }
  434. },
  435. modalData: {
  436. deep: true,
  437. handler: function (newV, oldV) {
  438. this.modalData.groupID = this.modalData.groupID.toUpperCase()
  439. }
  440. }
  441. },
  442. data () {
  443. return {
  444. // 是否收藏
  445. favorite: false,
  446. tagNo:'',
  447. // 导出 start
  448. exportData: [],
  449. exportName: "维保执行" + this.dayjs().format('YYYYMMDDHHmmss'),
  450. exportHeader: ["维保执行"],
  451. exportFooter: [],
  452. exportList:[],
  453. // 导出 end
  454. searchData: {
  455. site: this.$store.state.user.site,
  456. username: this.$store.state.user.name,
  457. orderNo: '',
  458. planID: '',
  459. planDesc: '',
  460. objectID: '',
  461. planOperator: '',
  462. functionType: 'B',
  463. status: '',
  464. startDate:'',
  465. planDate: new Date(),
  466. endDate:'',
  467. page: 1,
  468. limit: 10,
  469. searchType: 'reportMaintenance'
  470. },
  471. height: 200,
  472. pageIndex: 1,
  473. pageSize: 50,
  474. totalPage: 0,
  475. dataList: [],
  476. dataListLoading: false,
  477. dataListSelections: [],
  478. modalFlag:false,
  479. modalDisableFlag:false,
  480. modalData:{
  481. flag:'',
  482. site: this.$store.state.user.site,
  483. groupID:'',
  484. groupDesc:'',
  485. active:'',
  486. },
  487. departmentList:[],
  488. // 展示列集
  489. columnList: [
  490. {
  491. userId: this.$store.state.user.name,
  492. functionId: 101003005,
  493. serialNumber: '101003005Table1OrderNo',
  494. tableId: "101003005Table1",
  495. tableName: "维保执行表",
  496. columnProp: 'orderNo',
  497. headerAlign: "center",
  498. align: "center",
  499. columnLabel: '工单编码',
  500. columnHidden: false,
  501. columnImage: false,
  502. columnSortable: false,
  503. sortLv: 0,
  504. status: true,
  505. fixed: '',
  506. columnWidth: 79,
  507. },
  508. {
  509. userId: this.$store.state.user.name,
  510. functionId: 101003005,
  511. serialNumber: '101003005Table1PlanID',
  512. tableId: "101003005Table1",
  513. tableName: "维保执行表",
  514. columnProp: 'planID',
  515. headerAlign: "center",
  516. align: "center",
  517. columnLabel: '计划编码',
  518. columnHidden: false,
  519. columnImage: false,
  520. columnSortable: false,
  521. sortLv: 0,
  522. status: true,
  523. fixed: '',
  524. columnWidth: 80,
  525. },
  526. {
  527. userId: this.$store.state.user.name,
  528. functionId: 101003005,
  529. serialNumber: '101003005Table1PlanID',
  530. tableId: "101003005Table1",
  531. tableName: "维保执行表",
  532. columnProp: 'planDesc',
  533. headerAlign: "center",
  534. align: "center",
  535. columnLabel: '计划描述',
  536. columnHidden: false,
  537. columnImage: false,
  538. columnSortable: false,
  539. sortLv: 0,
  540. status: true,
  541. fixed: '',
  542. columnWidth: 80,
  543. },
  544. {
  545. userId: this.$store.state.user.name,
  546. functionId: 101003005,
  547. serialNumber: '101003005Table1ActualPlanDate',
  548. tableId: "101003005Table1",
  549. tableName: "维保执行表",
  550. columnProp: 'planDate',
  551. headerAlign: "center",
  552. align: "center",
  553. columnLabel: '计划执行日期',
  554. columnHidden: false,
  555. columnImage: false,
  556. columnSortable: false,
  557. sortLv: 0,
  558. status: true,
  559. fixed: '',
  560. columnWidth: 80,
  561. },
  562. {
  563. userId: this.$store.state.user.name,
  564. functionId: 101003005,
  565. serialNumber: '101003005Table1PropertiesCode',
  566. tableId: "101003005Table1",
  567. tableName: "维保执行表",
  568. columnProp: 'propertiesCode',
  569. headerAlign: "center",
  570. align: "center",
  571. columnLabel: '模板编码',
  572. columnHidden: false,
  573. columnImage: false,
  574. columnSortable: false,
  575. sortLv: 0,
  576. status: true,
  577. fixed: '',
  578. columnWidth: 80,
  579. },
  580. {
  581. userId: this.$store.state.user.name,
  582. functionId: 101003005,
  583. serialNumber: '101003005Table1ObjectID',
  584. tableId: "101003005Table1",
  585. tableName: "维保执行表",
  586. columnProp: 'objectID',
  587. headerAlign: "center",
  588. align: "center",
  589. columnLabel: '设备编码',
  590. columnHidden: false,
  591. columnImage: false,
  592. columnSortable: false,
  593. sortLv: 0,
  594. status: true,
  595. fixed: '',
  596. columnWidth: 80,
  597. },
  598. {
  599. userId: this.$store.state.user.name,
  600. functionId: 101003005,
  601. serialNumber: '101003005Table1Status',
  602. tableId: "101003005Table1",
  603. tableName: "维保执行表",
  604. columnProp: 'status',
  605. headerAlign: "center",
  606. align: "center",
  607. columnLabel: '状态',
  608. columnHidden: false,
  609. columnImage: false,
  610. columnSortable: false,
  611. sortLv: 0,
  612. status: true,
  613. fixed: '',
  614. columnWidth: 80,
  615. },
  616. {
  617. userId: this.$store.state.user.name,
  618. functionId: 101003005,
  619. serialNumber: '101003005Table1PlanOperatorName',
  620. tableId: "101003005Table1",
  621. tableName: "维保执行表",
  622. columnProp: 'planOperatorName',
  623. headerAlign: "center",
  624. align: "center",
  625. columnLabel: '计划执行人员',
  626. columnHidden: false,
  627. columnImage: false,
  628. columnSortable: false,
  629. sortLv: 0,
  630. status: true,
  631. fixed: '',
  632. columnWidth: 80,
  633. },
  634. {
  635. userId: this.$store.state.user.name,
  636. functionId: 101003005,
  637. serialNumber: '101003005Table1ActualOperatorName',
  638. tableId: "101003005Table1",
  639. tableName: "维保执行表",
  640. columnProp: 'checkerName',
  641. headerAlign: "center",
  642. align: "center",
  643. columnLabel: '审核人员',
  644. columnHidden: false,
  645. columnImage: false,
  646. columnSortable: false,
  647. sortLv: 0,
  648. status: true,
  649. fixed: '',
  650. columnWidth: 80,
  651. },
  652. {
  653. userId: this.$store.state.user.name,
  654. functionId: 101003005,
  655. serialNumber: '101003005Table1ActualRemark',
  656. tableId: "101003005Table1",
  657. tableName: "维保执行表",
  658. columnProp: 'remark',
  659. headerAlign: "center",
  660. align: "center",
  661. columnLabel: '备注',
  662. columnHidden: false,
  663. columnImage: false,
  664. columnSortable: false,
  665. sortLv: 0,
  666. status: true,
  667. fixed: '',
  668. columnWidth: 80,
  669. },
  670. ],
  671. detailModelFlag:false,
  672. detailList:[],
  673. saveData:{
  674. site:'',
  675. orderNo:'',
  676. planOperatorName:'',
  677. startDate: '',
  678. endDate: '',
  679. workTime:'',
  680. remark:'',
  681. mesUser:'',
  682. planID:'',
  683. planDesc:'',
  684. propertiesCode:'',
  685. objectID: '',
  686. itemList:[],
  687. checkResult: '',
  688. operator: '',
  689. operatorName: '',
  690. disposalMeasures: '',
  691. functionType: 'B',
  692. createBy: this.$store.state.user.name,
  693. reachDate: ''
  694. },
  695. columnDetailList: [
  696. {
  697. userId: this.$store.state.user.name,
  698. functionId: 101003005,
  699. serialNumber: '101003005Table2ItemNo',
  700. tableId: "101003005Table2",
  701. tableName: "维保项目表",
  702. columnProp: 'itemNo',
  703. headerAlign: "center",
  704. align: "center",
  705. columnLabel: '维保项目编码',
  706. columnHidden: false,
  707. columnImage: false,
  708. columnSortable: false,
  709. sortLv: 0,
  710. status: true,
  711. fixed: '',
  712. columnWidth: 82,
  713. },
  714. {
  715. userId: this.$store.state.user.name,
  716. functionId: 101003005,
  717. serialNumber: '101003005Table2ItemDesc',
  718. tableId: "101003005Table2",
  719. tableName: "维保项目表",
  720. columnProp: 'itemDesc',
  721. headerAlign: "center",
  722. align: "center",
  723. columnLabel: '维保项目名称',
  724. columnHidden: false,
  725. columnImage: false,
  726. columnSortable: false,
  727. sortLv: 0,
  728. status: true,
  729. fixed: '',
  730. columnWidth: 109,
  731. },
  732. {
  733. userId: this.$store.state.user.name,
  734. functionId: 101003005,
  735. serialNumber: '101003005Table2ItemRemark',
  736. tableId: "101003005Table2",
  737. tableName: "维保项目表",
  738. columnProp: 'itemRemark',
  739. headerAlign: "center",
  740. align: "center",
  741. columnLabel: '维保方法说明',
  742. columnHidden: false,
  743. columnImage: false,
  744. columnSortable: false,
  745. sortLv: 0,
  746. status: true,
  747. fixed: '',
  748. columnWidth: 478,
  749. },
  750. {
  751. userId: this.$store.state.user.name,
  752. functionId: 101003005,
  753. serialNumber: '101003005Table2ValueType',
  754. tableId: "101003005Table2",
  755. tableName: "维保项目表",
  756. columnProp: 'valueType',
  757. headerAlign: "center",
  758. align: "center",
  759. columnLabel: '检测值类型',
  760. columnHidden: false,
  761. columnImage: false,
  762. columnSortable: false,
  763. sortLv: 0,
  764. status: true,
  765. fixed: '',
  766. columnWidth: 70,
  767. },
  768. {
  769. userId: this.$store.state.user.name,
  770. functionId: 101003005,
  771. serialNumber: '101003005Table2DefaultValue',
  772. tableId: "101003005Table2",
  773. tableName: "维保项目表",
  774. columnProp: 'defaultValue',
  775. headerAlign: "center",
  776. align: "center",
  777. columnLabel: '参照值',
  778. columnHidden: false,
  779. columnImage: false,
  780. columnSortable: false,
  781. sortLv: 0,
  782. status: true,
  783. fixed: '',
  784. columnWidth: 65,
  785. },
  786. {
  787. userId: this.$store.state.user.name,
  788. functionId: 101003005,
  789. serialNumber: '101003005Table2MaxValue',
  790. tableId: "101003005Table2",
  791. tableName: "维保项目表",
  792. columnProp: 'maxValue',
  793. headerAlign: "center",
  794. align: "center",
  795. columnLabel: '最大值',
  796. columnHidden: false,
  797. columnImage: false,
  798. columnSortable: false,
  799. sortLv: 0,
  800. status: true,
  801. fixed: '',
  802. columnWidth: 65,
  803. },
  804. {
  805. userId: this.$store.state.user.name,
  806. functionId: 101003005,
  807. serialNumber: '101003005Table2MinValue',
  808. tableId: "101003005Table2",
  809. tableName: "维保项目表",
  810. columnProp: 'minValue',
  811. headerAlign: "center",
  812. align: "center",
  813. columnLabel: '最小值',
  814. columnHidden: false,
  815. columnImage: false,
  816. columnSortable: false,
  817. sortLv: 0,
  818. status: true,
  819. fixed: '',
  820. columnWidth: 65,
  821. }
  822. ],
  823. activeTable: 'inspection_form',
  824. HistoryRecordList: [],
  825. HistoryModelFlag: false,
  826. columnHistoryList: [
  827. {
  828. userId: this.$store.state.user.name,
  829. functionId: 101003005,
  830. serialNumber: '101003005Table3OrderNo',
  831. tableId: "101003005Table3",
  832. tableName: "维保记录表",
  833. columnProp: 'orderNo',
  834. headerAlign: "center",
  835. align: "center",
  836. columnLabel: '工单编号',
  837. columnHidden: false,
  838. columnImage: false,
  839. columnSortable: false,
  840. sortLv: 0,
  841. status: true,
  842. fixed: '',
  843. columnWidth: 78,
  844. },
  845. {
  846. userId: this.$store.state.user.name,
  847. functionId: 101003005,
  848. serialNumber: '101003005Table3PlanDesc',
  849. tableId: "101003005Table3",
  850. tableName: "维保记录表",
  851. columnProp: 'planDesc',
  852. headerAlign: "center",
  853. align: "center",
  854. columnLabel: '计划描述',
  855. columnHidden: false,
  856. columnImage: false,
  857. columnSortable: false,
  858. sortLv: 0,
  859. status: true,
  860. fixed: '',
  861. columnWidth: 78,
  862. },
  863. {
  864. userId: this.$store.state.user.name,
  865. functionId: 101003005,
  866. serialNumber: '101003005Table3ActualDate',
  867. tableId: "101003005Table3",
  868. tableName: "维保记录表",
  869. columnProp: 'actualDate',
  870. headerAlign: "center",
  871. align: "center",
  872. columnLabel: '维保日期',
  873. columnHidden: false,
  874. columnImage: false,
  875. columnSortable: false,
  876. sortLv: 0,
  877. status: true,
  878. fixed: '',
  879. columnWidth: 78,
  880. },
  881. {
  882. userId: this.$store.state.user.name,
  883. functionId: 101003005,
  884. serialNumber: '101003005Table3CheckResult',
  885. tableId: "101003005Table3",
  886. tableName: "维保记录表",
  887. columnProp: 'checkResult',
  888. headerAlign: "center",
  889. align: "center",
  890. columnLabel: '维保结论',
  891. columnHidden: false,
  892. columnImage: false,
  893. columnSortable: false,
  894. sortLv: 0,
  895. status: true,
  896. fixed: '',
  897. columnWidth: 78,
  898. },
  899. {
  900. userId: this.$store.state.user.name,
  901. functionId: 101003005,
  902. serialNumber: '101003005Table3ActualOperatorName',
  903. tableId: "101003005Table3",
  904. tableName: "维保记录表",
  905. columnProp: 'actualOperatorName',
  906. headerAlign: "center",
  907. align: "center",
  908. columnLabel: '维保人员',
  909. columnHidden: false,
  910. columnImage: false,
  911. columnSortable: false,
  912. sortLv: 0,
  913. status: true,
  914. fixed: '',
  915. columnWidth: 78,
  916. },
  917. {
  918. userId: this.$store.state.user.name,
  919. functionId: 101003005,
  920. serialNumber: '101003005Table3ObjectID',
  921. tableId: "101003005Table3",
  922. tableName: "维保记录表",
  923. columnProp: 'objectID',
  924. headerAlign: "center",
  925. align: "center",
  926. columnLabel: '设备编码',
  927. columnHidden: false,
  928. columnImage: false,
  929. columnSortable: false,
  930. sortLv: 0,
  931. status: true,
  932. fixed: '',
  933. columnWidth: 78,
  934. },
  935. {
  936. userId: this.$store.state.user.name,
  937. functionId: 101003005,
  938. serialNumber: '101003005Table3ObjectDesc',
  939. tableId: "101003005Table3",
  940. tableName: "维保记录表",
  941. columnProp: 'objectDesc',
  942. headerAlign: "center",
  943. align: "center",
  944. columnLabel: '设备名称',
  945. columnHidden: false,
  946. columnImage: false,
  947. columnSortable: false,
  948. sortLv: 0,
  949. status: true,
  950. fixed: '',
  951. columnWidth: 78,
  952. },
  953. {
  954. userId: this.$store.state.user.name,
  955. functionId: 101003005,
  956. serialNumber: '101003005Table3Remark',
  957. tableId: "101003005Table3",
  958. tableName: "维保记录表",
  959. columnProp: 'remark',
  960. headerAlign: "center",
  961. align: "center",
  962. columnLabel: '备注',
  963. columnHidden: false,
  964. columnImage: false,
  965. columnSortable: false,
  966. sortLv: 0,
  967. status: true,
  968. fixed: '',
  969. columnWidth: 78,
  970. },
  971. ],
  972. historyDetailList: [],
  973. historyDetailModelFlag: false,
  974. columnHistoryDetailList: [
  975. {
  976. userId: this.$store.state.user.name,
  977. functionId: 101003005,
  978. serialNumber: '101003005Table4ItemNo',
  979. tableId: "101003005Table4",
  980. tableName: "维保记录维保项目表",
  981. columnProp: 'itemNo',
  982. headerAlign: "center",
  983. align: "center",
  984. columnLabel: '维保项目编码',
  985. columnHidden: false,
  986. columnImage: false,
  987. columnSortable: false,
  988. sortLv: 0,
  989. status: true,
  990. fixed: '',
  991. columnWidth: 82,
  992. },
  993. {
  994. userId: this.$store.state.user.name,
  995. functionId: 101003005,
  996. serialNumber: '101003005Table4ItemDesc',
  997. tableId: "101003005Table4",
  998. tableName: "维保记录维保项目表",
  999. columnProp: 'itemDesc',
  1000. headerAlign: "center",
  1001. align: "center",
  1002. columnLabel: '维保项目名称',
  1003. columnHidden: false,
  1004. columnImage: false,
  1005. columnSortable: false,
  1006. sortLv: 0,
  1007. status: true,
  1008. fixed: '',
  1009. columnWidth: 109,
  1010. },
  1011. {
  1012. userId: this.$store.state.user.name,
  1013. functionId: 101003005,
  1014. serialNumber: '101003005Table4ItemRemark',
  1015. tableId: "101003005Table4",
  1016. tableName: "维保记录维保项目表",
  1017. columnProp: 'itemRemark',
  1018. headerAlign: "center",
  1019. align: "center",
  1020. columnLabel: '维保方法说明',
  1021. columnHidden: false,
  1022. columnImage: false,
  1023. columnSortable: false,
  1024. sortLv: 0,
  1025. status: true,
  1026. fixed: '',
  1027. columnWidth: 478,
  1028. },
  1029. {
  1030. userId: this.$store.state.user.name,
  1031. functionId: 101003005,
  1032. serialNumber: '101003005Table4ValueType',
  1033. tableId: "101003005Table4",
  1034. tableName: "维保记录维保项目表",
  1035. columnProp: 'valueType',
  1036. headerAlign: "center",
  1037. align: "center",
  1038. columnLabel: '检测值类型',
  1039. columnHidden: false,
  1040. columnImage: false,
  1041. columnSortable: false,
  1042. sortLv: 0,
  1043. status: true,
  1044. fixed: '',
  1045. columnWidth: 70,
  1046. },
  1047. {
  1048. userId: this.$store.state.user.name,
  1049. functionId: 101003005,
  1050. serialNumber: '101003005Table4DefaultValue',
  1051. tableId: "101003005Table4",
  1052. tableName: "维保记录维保项目表",
  1053. columnProp: 'defaultValue',
  1054. headerAlign: "center",
  1055. align: "center",
  1056. columnLabel: '参照值',
  1057. columnHidden: false,
  1058. columnImage: false,
  1059. columnSortable: false,
  1060. sortLv: 0,
  1061. status: true,
  1062. fixed: '',
  1063. columnWidth: 65,
  1064. },
  1065. {
  1066. userId: this.$store.state.user.name,
  1067. functionId: 101003005,
  1068. serialNumber: '101003005Table4MaxValue',
  1069. tableId: "101003005Table4",
  1070. tableName: "维保记录维保项目表",
  1071. columnProp: 'maxValue',
  1072. headerAlign: "center",
  1073. align: "center",
  1074. columnLabel: '最大值',
  1075. columnHidden: false,
  1076. columnImage: false,
  1077. columnSortable: false,
  1078. sortLv: 0,
  1079. status: true,
  1080. fixed: '',
  1081. columnWidth: 65,
  1082. },
  1083. {
  1084. userId: this.$store.state.user.name,
  1085. functionId: 101003005,
  1086. serialNumber: '101003005Table4MinValue',
  1087. tableId: "101003005Table4",
  1088. tableName: "维保记录维保项目表",
  1089. columnProp: 'minValue',
  1090. headerAlign: "center",
  1091. align: "center",
  1092. columnLabel: '最小值',
  1093. columnHidden: false,
  1094. columnImage: false,
  1095. columnSortable: false,
  1096. sortLv: 0,
  1097. status: true,
  1098. fixed: '',
  1099. columnWidth: 65,
  1100. },
  1101. ],
  1102. operatorList: [],
  1103. operatorData: {
  1104. site: this.$store.state.user.site,
  1105. adminID: '',
  1106. adminName: ''
  1107. },
  1108. operatorModelFlag: false,
  1109. dataListSelections2: [],
  1110. operatorDetailList: [
  1111. {
  1112. columnProp: 'adminID',
  1113. headerAlign: "center",
  1114. align: "center",
  1115. columnLabel: '编码',
  1116. columnHidden: false,
  1117. columnImage: false,
  1118. columnSortable: false,
  1119. sortLv: 0,
  1120. status: true,
  1121. fixed: '',
  1122. },
  1123. {
  1124. columnProp: 'adminName',
  1125. headerAlign: "center",
  1126. align: "center",
  1127. columnLabel: '名称',
  1128. columnHidden: false,
  1129. columnImage: false,
  1130. columnSortable: false,
  1131. sortLv: 0,
  1132. status: true,
  1133. fixed: '',
  1134. },
  1135. {
  1136. columnProp: 'phone',
  1137. headerAlign: "center",
  1138. align: "center",
  1139. columnLabel: '手机号',
  1140. columnHidden: false,
  1141. columnImage: false,
  1142. columnSortable: false,
  1143. sortLv: 0,
  1144. status: true,
  1145. fixed: '',
  1146. },
  1147. {
  1148. columnProp: 'department',
  1149. headerAlign: "center",
  1150. align: "center",
  1151. columnLabel: '部门',
  1152. columnHidden: false,
  1153. columnImage: false,
  1154. columnSortable: false,
  1155. sortLv: 0,
  1156. status: true,
  1157. fixed: '',
  1158. },
  1159. {
  1160. columnProp: 'email',
  1161. headerAlign: "center",
  1162. align: "center",
  1163. columnLabel: '邮箱',
  1164. columnHidden: false,
  1165. columnImage: false,
  1166. columnSortable: false,
  1167. sortLv: 0,
  1168. status: true,
  1169. fixed: '',
  1170. },
  1171. {
  1172. columnProp: 'tel',
  1173. headerAlign: "center",
  1174. align: "center",
  1175. columnLabel: '座机号',
  1176. columnHidden: false,
  1177. columnImage: false,
  1178. columnSortable: false,
  1179. sortLv: 0,
  1180. status: true,
  1181. fixed: '',
  1182. },
  1183. {
  1184. columnProp: 'adminLevelDesc',
  1185. headerAlign: "center",
  1186. align: "center",
  1187. columnLabel: '等级',
  1188. columnHidden: false,
  1189. columnImage: false,
  1190. columnSortable: false,
  1191. sortLv: 0,
  1192. status: true,
  1193. fixed: '',
  1194. },
  1195. {
  1196. columnProp: 'mesUser',
  1197. headerAlign: "center",
  1198. align: "center",
  1199. columnLabel: 'MES账号',
  1200. columnHidden: false,
  1201. columnImage: false,
  1202. columnSortable: false,
  1203. sortLv: 0,
  1204. status: true,
  1205. fixed: '',
  1206. },
  1207. ],
  1208. }
  1209. },
  1210. mounted () {
  1211. this.$nextTick(() => {
  1212. this.height = window.innerHeight - 210
  1213. })
  1214. },
  1215. created () {
  1216. this.favoriteIsOk()
  1217. this.getDataList()
  1218. // 动态列
  1219. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  1220. this.getTableUserColumn(this.$route.meta.menuId+'table2',2)
  1221. this.getTableUserColumn(this.$route.meta.menuId+'table3',3)
  1222. this.getTableUserColumn(this.$route.meta.menuId+'table4',4)
  1223. },
  1224. methods: {
  1225. // 回车选中下一行
  1226. focusNextInput(index, type) {
  1227. let aaa = ''
  1228. if (this.detailList.length - 1 === index) {
  1229. aaa = `${type}0`
  1230. } else {
  1231. aaa = `${type}${index + 1}`
  1232. }
  1233. this.$nextTick(() => {
  1234. this.$refs[aaa].focus()
  1235. })
  1236. },
  1237. /**
  1238. * 刷新项目
  1239. */
  1240. refreshItem () {
  1241. let tempData = {
  1242. site: this.saveData.site,
  1243. planID: this.saveData.planID,
  1244. itemType: this.saveData.functionType,
  1245. objectID: this.saveData.objectID,
  1246. userId: this.$store.state.user.name,
  1247. propertiesCode: this.saveData.propertiesCode
  1248. }
  1249. this.$confirm(`是否更新该计划的项目?`, '提示', {
  1250. confirmButtonText: '确定',
  1251. cancelButtonText: '取消',
  1252. type: 'warning'
  1253. }).then(() => {
  1254. refreshItem(tempData).then(({data}) => {
  1255. if (data && data.code === 0) {
  1256. this.getInspectionFormData();
  1257. this.$message({
  1258. message: '操作成功',
  1259. type: 'success',
  1260. duration: 1500,
  1261. onClose: () => {
  1262. }
  1263. })
  1264. } else {
  1265. this.$alert(data.msg, '错误', {
  1266. confirmButtonText: '确定'
  1267. })
  1268. }
  1269. })
  1270. }).catch(() => {
  1271. })
  1272. },
  1273. // 获取机修人员列表
  1274. getOperatorList(){
  1275. getOperatorList(this.operatorData).then(({data}) => {
  1276. if (data && data.code === 0) {
  1277. this.operatorList = data.rows
  1278. this.saveData.operatorName = ''
  1279. this.saveData.operator = ''
  1280. this.operatorModelFlag = true;
  1281. } else {
  1282. this.$alert(data.msg, '错误', {
  1283. confirmButtonText: '确定'
  1284. })
  1285. }
  1286. })
  1287. },
  1288. // 点击行选中复选框
  1289. operatorClickRow(row){
  1290. this.$refs.operatorTable.toggleRowSelection(row);
  1291. },
  1292. // 多选
  1293. selectionChangeHandle2 (val) {
  1294. this.dataListSelections2 = val
  1295. },
  1296. selectFlag(){
  1297. return true;
  1298. },
  1299. // 确认多选协同人员
  1300. confirmOperator(){
  1301. if(this.dataListSelections2.length === 0){
  1302. this.$message.warning('请勾选人员!')
  1303. return
  1304. }
  1305. for (let i = 0; i < this.dataListSelections2.length; i++) {
  1306. this.saveData.operatorName = this.saveData.operatorName + ";" + this.dataListSelections2[i].adminName
  1307. this.saveData.operator = this.saveData.operator + ";" + this.dataListSelections2[i].adminID
  1308. }
  1309. this.saveData.operator = this.saveData.operator.substring(1)
  1310. this.saveData.operatorName = this.saveData.operatorName.substring(1)
  1311. this.operatorModelFlag = false
  1312. },
  1313. // 列表表格选择替换
  1314. tabClick (tab, event) {
  1315. // 刷新列表数据
  1316. this.refreshCurrentTabTable()
  1317. },
  1318. // 刷新页签的table数据
  1319. refreshCurrentTabTable () {
  1320. // 区分不同的页签刷新不同的列表数据
  1321. if (this.activeTable === 'inspection_form') {
  1322. this.getInspectionFormData();
  1323. } else if (this.activeTable === 'history_record') {
  1324. this.queryHistoryRecord();
  1325. }
  1326. },
  1327. // 检验单
  1328. getInspectionFormData(){
  1329. let tempData = {
  1330. site: this.saveData.site,
  1331. planID: this.saveData.planID,
  1332. orderNo: this.saveData.orderNo,
  1333. itemType: 'B',
  1334. objectID: this.saveData.objectID
  1335. }
  1336. eamWorkOrderItemSearch(tempData).then(({data}) => {
  1337. if (data && data.code === 0) {
  1338. this.detailList = data.rows
  1339. for (let i = 0; i < this.detailList.length; i++) {
  1340. this.detailList[i].itemResult = '合格'
  1341. }
  1342. }else {
  1343. this.detailList = [];
  1344. }
  1345. })
  1346. },
  1347. // 点检记录
  1348. queryHistoryRecord(){
  1349. let tempData = {
  1350. site: this.saveData.site,
  1351. objectID: this.saveData.objectID,
  1352. functionType: 'B'
  1353. }
  1354. queryHistoryRecord(tempData).then(({data}) => {
  1355. if (data && data.code === 0) {
  1356. this.HistoryRecordList = data.rows
  1357. }else {
  1358. this.HistoryRecordList = [];
  1359. }
  1360. })
  1361. },
  1362. // 详情
  1363. detailModal(row){
  1364. let tempData = {
  1365. site: this.saveData.site,
  1366. orderNo: row.orderNo,
  1367. }
  1368. eamWorkOrderReportSearch(tempData).then(({data}) => {
  1369. this.historyDetailList = data.rows
  1370. })
  1371. this.historyDetailModelFlag = true;
  1372. },
  1373. // 校验用户是否收藏
  1374. favoriteIsOk() {
  1375. let userFavorite = {
  1376. userId: this.$store.state.user.id,
  1377. languageCode: this.$i18n.locale
  1378. }
  1379. console.log(this.$route.meta.menuId)
  1380. userFavoriteList(userFavorite).then(({data}) => {
  1381. for (let i = 0; i < data.list.length; i++) {
  1382. // let flag=false;
  1383. if(this.$route.meta.menuId==data.list[i].menuId){
  1384. this.favorite = true
  1385. // flag=true;
  1386. }
  1387. }
  1388. })
  1389. },
  1390. // 收藏 OR 取消收藏
  1391. favoriteFunction() {
  1392. let userFavorite = {
  1393. userId: this.$store.state.user.id,
  1394. functionId: this.$route.meta.menuId,
  1395. }
  1396. if (this.favorite) {
  1397. removeUserFavorite(userFavorite).then(({data}) => {
  1398. this.$message.success(data.msg)
  1399. this.favorite = false
  1400. })
  1401. } else {
  1402. // 收藏
  1403. saveUserFavorite(userFavorite).then(({data}) => {
  1404. this.$message.success(data.msg)
  1405. this.favorite = true
  1406. })
  1407. }
  1408. },
  1409. // 获取基础数据列表S
  1410. getBaseList (val,type) {
  1411. this.tagNo = val
  1412. this.$nextTick(() => {
  1413. let strVal = ''
  1414. if (val === 201) {
  1415. strVal = this.searchData.planOperator
  1416. this.$refs.baseList.init(val, strVal)
  1417. }
  1418. })
  1419. },
  1420. /* 列表方法的回调 */
  1421. getBaseData (val) {
  1422. if (this.tagNo === 201) {
  1423. this.searchData.planOperator = val.AdminID
  1424. }
  1425. },
  1426. // 重置查询时间
  1427. searchClick(){
  1428. this.searchData.planDate = ''
  1429. this.getDataList()
  1430. },
  1431. // 获取数据列表
  1432. getDataList () {
  1433. this.searchData.limit = this.pageSize
  1434. this.searchData.page = this.pageIndex
  1435. eamWorkOrderSearch(this.searchData).then(({data}) => {
  1436. if (data.code == 0) {
  1437. this.dataList = data.page.list
  1438. this.pageIndex = data.page.currPage
  1439. this.pageSize = data.page.pageSize
  1440. this.totalPage = data.page.totalCount
  1441. }
  1442. this.dataListLoading = false
  1443. })
  1444. },
  1445. //导出excel
  1446. async createExportData() {
  1447. this.searchData.limit = -1
  1448. this.searchData.page = 1
  1449. await eamWorkOrderSearch(this.searchData).then(({data}) => {
  1450. this.exportList= data.page.list;
  1451. })
  1452. return this.exportList;
  1453. },
  1454. startDownload() {},
  1455. finishDownload() {},
  1456. fields() {
  1457. let json = "{"
  1458. this.columnList.forEach((item, index) => {
  1459. if (index == this.columnList.length - 1) {
  1460. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1461. } else {
  1462. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1463. }
  1464. })
  1465. json += "}"
  1466. let s = eval("(" + json + ")")
  1467. return s
  1468. },
  1469. // 导出 end
  1470. // 每页数
  1471. sizeChangeHandle (val) {
  1472. this.pageSize = val
  1473. this.pageIndex = 1
  1474. this.getDataList()
  1475. },
  1476. // 当前页
  1477. currentChangeHandle (val) {
  1478. this.pageIndex = val
  1479. this.getDataList()
  1480. },
  1481. // 多选
  1482. selectionChangeHandle (val) {
  1483. this.dataListSelections = val
  1484. },
  1485. // 到达
  1486. reach (row){
  1487. let tempData = {
  1488. site: row.site,
  1489. functionType: 'B',
  1490. orderNo: row.orderNo,
  1491. status: '已到达'
  1492. }
  1493. this.$confirm(`是否确认到达?`, '提示', {
  1494. confirmButtonText: '确定',
  1495. cancelButtonText: '取消',
  1496. type: 'warning'
  1497. }).then(() => {
  1498. reach(tempData).then(({data}) => {
  1499. if (data && data.code === 0) {
  1500. this.getDataList();
  1501. this.$message({
  1502. message: '操作成功',
  1503. type: 'success',
  1504. duration: 1500,
  1505. onClose: () => {
  1506. }
  1507. })
  1508. } else {
  1509. this.$alert(data.msg, '错误', {
  1510. confirmButtonText: '确定'
  1511. })
  1512. }
  1513. })
  1514. }).catch(() => {
  1515. })
  1516. },
  1517. reportModal(row){
  1518. this.saveData = {
  1519. site: row.site,
  1520. orderNo: row.orderNo,
  1521. planID: row.planID,
  1522. objectID: row.objectID,
  1523. planOperatorName: row.planOperatorName,
  1524. workTime: '',
  1525. remark: '',
  1526. mesUser: this.$store.state.user.name,
  1527. itemList: [],
  1528. checkResult: '',
  1529. operator: row.operator,
  1530. operatorName: row.operatorName,
  1531. functionType: 'B',
  1532. planDesc: row.planDesc,
  1533. propertiesCode: row.propertiesCode,
  1534. reachDate: row.reachDate
  1535. }
  1536. this.getInspectionFormData()
  1537. this.queryHistoryRecord()
  1538. this.detailModelFlag = true
  1539. },
  1540. async saveCheckReport(){
  1541. let tempFlag = 'N'
  1542. if(this.saveData.checkResult === ''||this.saveData.checkResult == null){
  1543. this.$message.warning('请选择维保结论!')
  1544. return
  1545. }
  1546. if(this.saveData.checkResult === '异常' && (this.saveData.disposalMeasures == null || this.saveData.disposalMeasures === '')){
  1547. this.$message.warning('请选择异常原因!')
  1548. return
  1549. }
  1550. for (let i = 0; i < this.detailList.length; i++) {
  1551. if(this.detailList[i].valueTypeDb === 'N' && (this.detailList[i].numberValue === '' || this.detailList[i].numberValue == null)){
  1552. this.$message.warning(this.detailList[i].itemDesc+'实测值未填写!')
  1553. return
  1554. }
  1555. if(this.detailList[i].valueTypeDb === 'N' && this.detailList[i].numberValue != '' && this.detailList[i].numberValue != null){
  1556. if((this.detailList[i].minValue != "" && this.detailList[i].minValue != null && this.detailList[i].minValue > this.detailList[i].numberValue) || (this.detailList[i].minValue != ""&& this.detailList[i].minValue != null && this.detailList[i].maxValue < this.detailList[i].numberValue)){
  1557. this.detailList[i].itemResult = '不合格'
  1558. }
  1559. }
  1560. }
  1561. if (this.saveData.checkResult == '不合格') {
  1562. this.detailList.forEach(val => {
  1563. if (val.itemResult == '不合格') {
  1564. tempFlag = 'Y'
  1565. }
  1566. })
  1567. if (tempFlag != 'Y') {
  1568. this.$message.warning('请选择不合格项目!')
  1569. return
  1570. }
  1571. }
  1572. this.saveData.itemList = JSON.parse(JSON.stringify(this.detailList))
  1573. await saveCheckOrderReport(this.saveData).then(({data}) => {
  1574. if (data && data.code === 0) {
  1575. this.getDataList()
  1576. this.detailModelFlag = false
  1577. this.$message({
  1578. message: '操作成功',
  1579. type: 'success',
  1580. duration: 1500,
  1581. onClose: () => {}
  1582. })
  1583. } else {
  1584. this.$alert(data.msg, '错误', {
  1585. confirmButtonText: '确定'
  1586. })
  1587. }
  1588. })
  1589. },
  1590. /**
  1591. * 上传图片
  1592. */
  1593. addUploadFileModal(row){
  1594. let currentData = {
  1595. site: this.$store.state.user.site,
  1596. createBy: this.$store.state.user.name,
  1597. orderNo: this.saveData.orderNo,
  1598. functionType: 'B',
  1599. itemNo: row.itemNo,
  1600. folder: 'WBItemImageFile'
  1601. };
  1602. //打开组件 去做新增业务
  1603. this.$nextTick(() => {
  1604. this.$refs.comEamItemImageUploadFile.init(currentData);
  1605. })
  1606. },
  1607. //去掉input框获得的焦点
  1608. elDatePickerOnFocus(){
  1609. document.activeElement.blur();
  1610. },
  1611. // 动态列开始 获取 用户保存的 格式列
  1612. async getTableUserColumn(tableId, columnId) {
  1613. let queryTableUser = {
  1614. userId: this.$store.state.user.name,
  1615. functionId: this.$route.meta.menuId,
  1616. tableId: tableId,
  1617. status: true,
  1618. languageCode: this.$i18n.locale
  1619. }
  1620. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  1621. if (data.rows.length > 0) {
  1622. //this.columnList1 = []
  1623. switch (columnId) {
  1624. case 1:
  1625. this.columnList = data.rows
  1626. break;
  1627. case 2:
  1628. this.columnDetailList = data.rows
  1629. break;
  1630. case 3:
  1631. this.columnHistoryList = data.rows
  1632. break;
  1633. case 4:
  1634. this.columnHistoryDetailList = data.rows
  1635. break;
  1636. }
  1637. } else {
  1638. this.getColumnList(tableId, columnId)
  1639. }
  1640. })
  1641. },
  1642. // 获取 tableDefault 列
  1643. async getColumnList(tableId, columnId) {
  1644. this.queryTable.tableId = tableId
  1645. let queryTable= {
  1646. functionId: this.$route.meta.menuId,
  1647. tableId: tableId,
  1648. languageCode: this.$i18n.locale
  1649. }
  1650. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  1651. if (!data.rows.length == 0) {
  1652. switch (columnId) {
  1653. case 1:
  1654. this.columnList = data.rows
  1655. break;
  1656. case 2:
  1657. this.columnDetailList = data.rows
  1658. break;
  1659. case 3:
  1660. this.columnHistoryList = data.rows
  1661. break;
  1662. case 4:
  1663. this.columnHistoryDetailList = data.rows
  1664. break;
  1665. }
  1666. } else {
  1667. // this.showDefault = true.
  1668. }
  1669. })
  1670. },
  1671. //动态列结束
  1672. }
  1673. }
  1674. </script>
  1675. <style >
  1676. </style>