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.

1539 lines
53 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
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="'BU'">
  10. <el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 130px">
  11. <el-option
  12. v-for = "i in userBuList"
  13. :key = "i.buNo"
  14. :label = "i.buDesc"
  15. :value = "i.buDesc">
  16. </el-option>
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item :label="'反馈单号'">
  20. <el-input v-model="searchData.planID" clearable style="width: 120px"></el-input>
  21. </el-form-item>
  22. <el-form-item :label="'工单编码'">
  23. <el-input v-model="searchData.orderNo" clearable style="width: 120px"></el-input>
  24. </el-form-item>
  25. <el-form-item :label="'设备编码'">
  26. <el-input v-model="searchData.objectID" clearable style="width: 120px"></el-input>
  27. </el-form-item>
  28. <!-- <el-form-item :label="'计划执行人员编码'">-->
  29. <!-- <el-input v-model="searchData.planOperatorName" clearable style="width: 120px"></el-input>-->
  30. <!-- </el-form-item>-->
  31. <el-form-item :label="'人员部门'">
  32. <el-input v-model="searchData.departmentName" readonly style="width: 120px"></el-input>
  33. </el-form-item>
  34. <el-form-item :label="'状态'">
  35. <el-select v-model="searchData.status" style="width: 100px">
  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-option label="已取消" value="已取消"></el-option>
  41. </el-select>
  42. </el-form-item>
  43. <el-form-item :label="'单据来源'">
  44. <el-select v-model="searchData.documentSource" style="width: 100px">
  45. <el-option label="全部" value=""></el-option>
  46. <el-option label="设备点检" value="设备点检"></el-option>
  47. <el-option label="设备维修" value="设备维修"></el-option>
  48. </el-select>
  49. </el-form-item>
  50. <el-form-item :label="'计划执行日期:'">
  51. <el-date-picker
  52. style="width: 120px"
  53. v-model="searchData.startDate"
  54. type="date"
  55. value-format="yyyy-MM-dd"
  56. placeholder="选择日期">
  57. </el-date-picker>
  58. </el-form-item>
  59. <el-form-item style="margin-top: 23px;">
  60. <laber style="margin-left: -9px;font-size: 19px">&#10142</laber>
  61. </el-form-item>
  62. <el-form-item :label="' '">
  63. <el-date-picker
  64. style="width: 120px"
  65. v-model="searchData.endDate"
  66. type="date"
  67. value-format="yyyy-MM-dd"
  68. placeholder="选择日期">
  69. </el-date-picker>
  70. </el-form-item>
  71. <el-form-item :label="' '">
  72. <el-button v-if="!authSearch" @click="getDataList()">查询</el-button>
  73. <el-button v-if="!authChange" type="primary" @click="changeModel()">更改执行人员</el-button>
  74. <download-excel
  75. :fields="fields()"
  76. :data="exportData"
  77. type="xls"
  78. :name="exportName"
  79. :header="exportHeader"
  80. :footer="exportFooter"
  81. :fetch="createExportData"
  82. :before-generate="startDownload"
  83. :before-finish="finishDownload"
  84. worksheet="导出信息"
  85. class="el-button el-button--primary el-button--medium">
  86. {{ "导出" }}
  87. </download-excel>
  88. </el-form-item>
  89. </el-form>
  90. <el-table
  91. :height="height"
  92. :data="dataList"
  93. border
  94. v-loading="dataListLoading"
  95. @selection-change="selectionChangeHandle"
  96. :row-style="controlRowStyle"
  97. style="width: 100%;">
  98. <el-table-column
  99. type="selection"
  100. header-align="center"
  101. align="center"
  102. :selectable="selectFlag"
  103. width="50">
  104. </el-table-column>
  105. <el-table-column
  106. prop="urgency"
  107. header-align="center"
  108. align="center"
  109. label="紧急程度"
  110. width="70">
  111. <template slot-scope="scope">
  112. <div :style="{fontWeight:'bold', color: scope.row.urgency === '特急' ? 'red' : scope.row.urgency === '紧急' ? '#ffa500e0' : scope.row.urgency === '一般' ? '#3ac252' : ''}">
  113. {{ scope.row.urgency }}
  114. </div>
  115. </template>
  116. </el-table-column>
  117. <el-table-column
  118. prop="result"
  119. header-align="center"
  120. align="center"
  121. label="维修结论"
  122. width="80">
  123. <template slot-scope="scope">
  124. <div :style="{fontWeight:'bold', color: scope.row.result =='维修失败' ? 'red' : scope.row.result =='维修完成' ? '#3ac252' : ''}">
  125. {{ scope.row.result }}
  126. </div>
  127. </template>
  128. </el-table-column>
  129. <el-table-column
  130. v-for="(item,index) in columnList" :key="index"
  131. :sortable="item.columnSortable"
  132. :prop="item.columnProp"
  133. :header-align="item.headerAlign"
  134. :show-overflow-tooltip="item.showOverflowTooltip"
  135. :align="item.align"
  136. :fixed="item.fixed==''?false:item.fixed"
  137. :min-width="item.columnWidth"
  138. :label="item.columnLabel">
  139. <template slot-scope="scope">
  140. <span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
  141. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  142. </template>
  143. </el-table-column>
  144. <el-table-column
  145. fixed="right"
  146. header-align="center"
  147. align="center"
  148. width="100"
  149. label="操作">
  150. <template slot-scope="scope">
  151. <!-- <a type="text" size="small" v-if="scope.row.status === '待审核'" @click="checkModal(scope.row)">审核</a>-->
  152. <a type="text" size="small" v-if="(scope.row.status === '待审核' || scope.row.status === '已完工') && !authDetail" @click="reportModal(scope.row)">详情</a>
  153. <a type="text" size="small" v-if="scope.row.status === '未开工' && !authCancel" @click="cancelOrder(scope.row)">取消工单</a>
  154. </template>
  155. </el-table-column>
  156. </el-table>
  157. <el-pagination
  158. @size-change="sizeChangeHandle"
  159. @current-change="currentChangeHandle"
  160. :current-page="pageIndex"
  161. :page-sizes="[20, 50, 100, 200, 500]"
  162. :page-size="pageSize"
  163. :total="totalPage"
  164. layout="total, sizes, prev, pager, next, jumper">
  165. </el-pagination>
  166. <el-dialog title="批量修改计划人员" :close-on-click-modal="false" v-drag :visible.sync="changeModelFlag" width="300px">
  167. <el-form :inline="true" label-position="top" >
  168. <el-form-item style="margin-left: 10px" >
  169. <span slot="label" style="" @click="getBaseList(201)"><a herf="#">计划执行人员</a></span>
  170. <el-input v-model="planOperator" style="width: 120px"></el-input>
  171. </el-form-item>
  172. <el-form-item :label="'人员名称'">
  173. <el-input v-model="planOperatorName" disabled style="width: 120px"></el-input>
  174. </el-form-item>
  175. </el-form>
  176. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  177. <el-button type="primary" @click="changeOrderOperator()">保存</el-button>
  178. <el-button type="primary" @click="changeModelFlag = false">关闭</el-button>
  179. </el-footer>
  180. </el-dialog>
  181. <el-dialog title="审核" :close-on-click-modal="false" v-drag :visible.sync="submitModelFlag" width="375px">
  182. <el-form :inline="true" label-position="top">
  183. <el-form-item :label="'难度等级'">
  184. <el-select filterable v-model="submitData.difficultyLevel" style="width: 130px" placeholder="请评估难度等级">
  185. <el-option label="难度一" value="难度一"></el-option>
  186. <el-option label="难度二" value="难度二"></el-option>
  187. <el-option label="难度三" value="难度三"></el-option>
  188. </el-select>
  189. </el-form-item>
  190. <el-form-item :label="'备注'">
  191. <el-input v-model="submitData.difficultyRemark" style="width: 200px"></el-input>
  192. </el-form-item>
  193. </el-form>
  194. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  195. <el-button type="primary" @click="submitModel()">确定</el-button>
  196. <el-button type="primary" @click="submitModelFlag = false">取消</el-button>
  197. </el-footer>
  198. </el-dialog>
  199. <el-dialog title="执行结果" top="22vh" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="960px">
  200. <el-form :inline="true" label-position="top">
  201. <el-form-item :label="'设备编码'">
  202. <el-input v-model="detailData.objectID" disabled style="width: 221px"></el-input>
  203. </el-form-item>
  204. <el-form-item :label="'设备名称'">
  205. <el-input v-model="detailData.objectDesc" disabled style="width: 221px"></el-input>
  206. </el-form-item>
  207. <el-form-item :label="'机台'">
  208. <el-input v-model="detailData.resourceDesc" disabled style="width: 221px"></el-input>
  209. </el-form-item>
  210. <el-form-item :label="'反馈描述'">
  211. <el-input v-model="detailData.feedBackDesc" disabled style="width: 221px"></el-input>
  212. </el-form-item>
  213. </el-form>
  214. <el-form :inline="true" label-position="top">
  215. <el-form-item label="故障编码">
  216. <el-input v-model="detailData.defectID" disabled style="width: 221px"></el-input>
  217. </el-form-item>
  218. <el-form-item label="故障名称">
  219. <el-input v-model="detailData.defectDesc" disabled style="width: 221px"></el-input>
  220. </el-form-item>
  221. <el-form-item :label="'维修结果'">
  222. <el-input v-model="detailData.result" disabled style="width: 221px"></el-input>
  223. </el-form-item>
  224. <el-form-item :label="'处置措施'">
  225. <el-input v-model="detailData.disposalMeasures" disabled style="width: 221px"></el-input>
  226. </el-form-item>
  227. </el-form>
  228. <el-form :inline="true" label-position="top">
  229. <el-form-item :label="'计划执行日期'">
  230. <el-date-picker style="width: 221px" v-model="detailData.planDate" type="datetime" disabled value-format='yyyy-MM-dd' format='yyyy-MM-dd'></el-date-picker>
  231. </el-form-item>
  232. <el-form-item :label="'到达时间'">
  233. <el-date-picker v-if="detailData.status === '待审核'" style="width: 221px" v-model="detailData.reachDate" type="datetime" value-format='yyyy-MM-dd HH:mm:ss' format='yyyy-MM-dd HH:mm:ss'></el-date-picker>
  234. <el-date-picker v-else disabled style="width: 221px" v-model="detailData.reachDate" type="datetime" value-format='yyyy-MM-dd HH:mm:ss' format='yyyy-MM-dd HH:mm:ss'></el-date-picker>
  235. </el-form-item>
  236. <el-form-item :label="'实际执行时间'">
  237. <el-date-picker v-if="detailData.status === '待审核'" style="width: 221px" v-model="detailData.actualDate" type="datetime" value-format='yyyy-MM-dd HH:mm:ss' format='yyyy-MM-dd HH:mm:ss'></el-date-picker>
  238. <el-date-picker v-else disabled style="width: 221px" v-model="detailData.actualDate" type="datetime" value-format='yyyy-MM-dd HH:mm:ss' format='yyyy-MM-dd HH:mm:ss'></el-date-picker>
  239. </el-form-item>
  240. <el-form-item :label="'工作时长(m)'">
  241. <!-- <el-input class="numInput" v-model="detailData.workTime" type="number" disabled :min="0" style="width: 221px"></el-input>-->
  242. <el-input class="numInput" v-if="detailData.status === '待审核'" v-model="detailData.workTime" type="number" @input="handleInput(detailData.workTime,1)" style="width: 221px"></el-input>
  243. <el-input class="numInput" v-if="detailData.status === '已完工'" v-model="detailData.workTime" type="number" disabled style="width: 221px"></el-input>
  244. </el-form-item>
  245. </el-form>
  246. <el-form :inline="true" label-position="top">
  247. <el-form-item label="执行人员">
  248. <el-input v-model="detailData.actualOperatorName" disabled style="width: 673px"></el-input>
  249. </el-form-item>
  250. <el-form-item :label="' '">
  251. <el-button v-if="detailData.status === '已完工'" type="primary" @click="checkModal()">取消审核</el-button>
  252. <el-button v-if="detailData.status === '待审核'" type="primary" @click="checkModal()">审核</el-button>
  253. </el-form-item>
  254. <el-form-item :label="' '">
  255. <el-button type="primary" @click="checkFaultImageModal()">故障图片</el-button>
  256. </el-form-item>
  257. <el-form-item :label="' '">
  258. <el-button type="primary" @click="checkSparPartImageModal()">备件图片</el-button>
  259. </el-form-item>
  260. </el-form>
  261. <el-form :inline="true" label-position="top">
  262. <el-form-item :label="'故障原因'">
  263. <el-input v-if="detailData.status === '已完工'" readonly type="textarea" v-model="detailData.faultReason" :rows="3" resize='none' show-word-limit style="width: 456px"></el-input>
  264. <el-input v-if="detailData.status === '待审核'" type="textarea" v-model="detailData.faultReason" :rows="3" resize='none' show-word-limit style="width: 456px"></el-input>
  265. </el-form-item>
  266. <el-form-item :label="'处理方式'">
  267. <el-input v-if="detailData.status === '已完工'" readonly type="textarea" v-model="detailData.handlingMethod" :rows="3" resize='none' show-word-limit style="width: 456px"></el-input>
  268. <el-input v-if="detailData.status === '待审核'" type="textarea" v-model="detailData.handlingMethod" :rows="3" resize='none' show-word-limit style="width: 456px"></el-input>
  269. </el-form-item>
  270. </el-form>
  271. <el-form :inline="true" label-position="top" style="margin-top: 45px">
  272. <el-form-item :label="'预防措施'">
  273. <el-input v-if="detailData.status === '已完工'" readonly type="textarea" v-model="detailData.preventiveMeasure" :rows="3" resize='none' show-word-limit style="width: 456px"></el-input>
  274. <el-input v-if="detailData.status === '待审核'" type="textarea" v-model="detailData.preventiveMeasure" :rows="3" resize='none' show-word-limit style="width: 456px"></el-input>
  275. </el-form-item>
  276. <el-form-item :label="'执行结果备注'">
  277. <el-input v-if="detailData.status === '已完工'" readonly type="textarea" v-model="detailData.remark" :rows="3" resize='none' show-word-limit style="width: 456px"></el-input>
  278. <el-input v-if="detailData.status === '待审核'" type="textarea" v-model="detailData.remark" :rows="3" resize='none' show-word-limit style="width: 456px"></el-input>
  279. </el-form-item>
  280. </el-form>
  281. <el-footer style="height:40px;margin-top: 65px;text-align:center">
  282. <el-button style="margin-left: -12px" type="primary" @click="updateResult()">保存</el-button>
  283. <el-button type="primary" @click="detailModelFlag = false">关闭</el-button>
  284. </el-footer>
  285. </el-dialog>
  286. <!-- 部门 -->
  287. <el-dialog title="部门清单" :close-on-click-modal="false" v-drag :visible.sync="departmentModelFlag" width="520px">
  288. <div class="rq">
  289. <el-form :inline="true" label-position="top" :model="departmentData">
  290. <el-form-item :label="'部门编码'">
  291. <el-input v-model="departmentData.deptId" style="width: 120px"></el-input>
  292. </el-form-item>
  293. <el-form-item :label="'部门名称'">
  294. <el-input v-model="departmentData.deptName" style="width: 120px"></el-input>
  295. </el-form-item>
  296. <el-form-item :label="' '">
  297. <el-button type="primary" @click="getDepartmentList()">查询</el-button>
  298. </el-form-item>
  299. </el-form>
  300. <el-table
  301. :height="300"
  302. :data="departmentList"
  303. ref="departmentTable"
  304. @row-click="departmentClickRow"
  305. @selection-change="selectionDepartment"
  306. :row-key="getRowKeys"
  307. border
  308. v-loading="dataListLoading"
  309. style="width: 100%;">
  310. <el-table-column
  311. type="selection"
  312. header-align="center"
  313. align="center"
  314. :reserve-selection="true"
  315. width="50">
  316. </el-table-column>
  317. <el-table-column
  318. v-for="(item,index) in departmentDetailList" :key="index"
  319. :sortable="item.columnSortable"
  320. :prop="item.columnProp"
  321. :header-align="item.headerAlign"
  322. :show-overflow-tooltip="item.showOverflowTooltip"
  323. :align="item.align"
  324. :fixed="item.fixed==''?false:item.fixed"
  325. :min-width="item.columnWidth"
  326. :label="item.columnLabel">
  327. <template slot-scope="scope">
  328. <span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
  329. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  330. </template>
  331. </el-table-column>
  332. </el-table>
  333. </div>
  334. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  335. <el-button type="primary" @click="confirmDepartment()">确认</el-button>
  336. <el-button type="primary" @click="departmentModelFlag = false">关闭</el-button>
  337. </el-footer>
  338. </el-dialog>
  339. <el-dialog title="图片查看" :close-on-click-modal="false" v-drag :visible.sync="imageModalFlag" width="390px" style="height: 550px;">
  340. <div v-viewer>
  341. <img v-for="(item, index) in descImages" :src="item" :key="index" style="width: 100px;height: 100px"/>
  342. </div>
  343. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  344. <el-button type="primary" @click="imageModalFlag = false">关闭</el-button>
  345. </el-footer>
  346. </el-dialog>
  347. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  348. </div>
  349. </template>
  350. <script>
  351. import {
  352. eamWorkOrderSearchForDefect,
  353. cancelOrder,
  354. changeOrderOperator,
  355. submitDefect,
  356. searchFileUrl,
  357. getEmpyDeptList,
  358. getDeptList,
  359. updateReportResult, // 修改执行结果
  360. getSiteAndBuByUserName
  361. } from "@/api/eam/eam.js"
  362. import {
  363. getTableDefaultListLanguage,
  364. getTableUserListLanguage,
  365. } from "@/api/table.js"
  366. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  367. import Chooselist from '@/views/modules/common/Chooselist_eam'
  368. import {isAuth} from '../../../utils'
  369. export default {
  370. components: {
  371. Chooselist
  372. },
  373. watch: {
  374. searchData: {
  375. deep: true,
  376. handler: function (newV, oldV) {
  377. this.searchData.groupID = this.searchData.groupID.toUpperCase()
  378. }
  379. },
  380. detailData: {
  381. deep: true,
  382. handler: function (newV, oldV) {
  383. this.detailData.workTime = Math.ceil(Math.floor(this.dayjs(this.detailData.actualDate).diff(this.detailData.reachDate, 'seconds') / 30) / 2)
  384. }
  385. }
  386. },
  387. data () {
  388. return {
  389. // 是否收藏
  390. favorite: false,
  391. // 导出 start
  392. exportData: [],
  393. exportName: "维修工单" + this.dayjs().format('YYYYMMDDHHmmss'),
  394. exportHeader: ["维修工单"],
  395. exportFooter: [],
  396. exportList: [],
  397. // 导出 end
  398. tagNo: '',
  399. searchData: {
  400. site: '',
  401. userName: this.$store.state.user.name,
  402. orderNo: '',
  403. planID: '',
  404. objectID: '',
  405. planOperator: '',
  406. planOperatorName: '',
  407. functionType: 'C',
  408. status: '',
  409. startDate:'',
  410. endDate:'',
  411. departmentName: '',
  412. documentSource: '',
  413. page: 1,
  414. limit: 10,
  415. },
  416. height: 200,
  417. pageIndex: 1,
  418. pageSize: 50,
  419. totalPage: 0,
  420. dataList: [],
  421. dataListLoading: false,
  422. dataListSelections: [],
  423. modalFlag: false,
  424. modalDisableFlag: false,
  425. departmentList: [],
  426. // 展示列集
  427. columnList: [
  428. {
  429. userId: this.$store.state.user.name,
  430. functionId: 101004002,
  431. serialNumber: '101004002Table1BuDesc',
  432. tableId: "101004002Table1",
  433. tableName: "维修工单表",
  434. columnProp: 'buDesc',
  435. headerAlign: "center",
  436. align: "center",
  437. columnLabel: 'BU',
  438. columnHidden: false,
  439. columnImage: false,
  440. columnSortable: false,
  441. sortLv: 0,
  442. status: true,
  443. fixed: '',
  444. columnWidth: 80,
  445. },
  446. {
  447. userId: this.$store.state.user.name,
  448. functionId: 101004002,
  449. serialNumber: '101004002Table1DisposalMeasures',
  450. tableId: "101004002Table1",
  451. tableName: "维修工单表",
  452. columnProp: 'disposalMeasures',
  453. headerAlign: "center",
  454. align: "center",
  455. columnLabel: '处置措施',
  456. columnHidden: false,
  457. columnImage: false,
  458. columnSortable: false,
  459. sortLv: 0,
  460. status: true,
  461. fixed: '',
  462. columnWidth: 80,
  463. },
  464. {
  465. userId: this.$store.state.user.name,
  466. functionId: 101004002,
  467. serialNumber: '101004002Table1OrderNo',
  468. tableId: "101004002Table1",
  469. tableName: "维修工单表",
  470. columnProp: 'orderNo',
  471. headerAlign: "center",
  472. align: "center",
  473. columnLabel: '工单编码',
  474. columnHidden: false,
  475. columnImage: false,
  476. columnSortable: true,
  477. sortLv: 0,
  478. status: true,
  479. fixed: '',
  480. columnWidth: 100,
  481. },
  482. {
  483. userId: this.$store.state.user.name,
  484. functionId: 101004002,
  485. serialNumber: '101004002Table1PlanID',
  486. tableId: "101004002Table1",
  487. tableName: "维修工单表",
  488. columnProp: 'planID',
  489. headerAlign: "center",
  490. align: "center",
  491. columnLabel: '反馈单号',
  492. columnHidden: false,
  493. columnImage: false,
  494. columnSortable: true,
  495. sortLv: 0,
  496. status: true,
  497. fixed: '',
  498. columnWidth: 100,
  499. },
  500. {
  501. userId: this.$store.state.user.name,
  502. functionId: 101004002,
  503. serialNumber: '101004002Table1FeedBackDesc',
  504. tableId: "101004002Table1",
  505. tableName: "维修工单表",
  506. columnProp: 'feedBackDesc',
  507. headerAlign: "center",
  508. align: "center",
  509. columnLabel: '反馈描述',
  510. columnHidden: false,
  511. columnImage: false,
  512. columnSortable: true,
  513. sortLv: 0,
  514. status: true,
  515. fixed: '',
  516. columnWidth: 100,
  517. },
  518. {
  519. userId: this.$store.state.user.name,
  520. functionId: 101004002,
  521. serialNumber: '101004002Table1DefectID',
  522. tableId: "101004002Table1",
  523. tableName: "维修工单表",
  524. columnProp: 'defectID',
  525. headerAlign: "center",
  526. align: "center",
  527. columnLabel: '故障编码',
  528. columnHidden: false,
  529. columnImage: false,
  530. columnSortable: false,
  531. sortLv: 0,
  532. status: true,
  533. fixed: '',
  534. columnWidth: 80,
  535. },
  536. {
  537. userId: this.$store.state.user.name,
  538. functionId: 101004002,
  539. serialNumber: '101004002Table1DefectDesc',
  540. tableId: "101004002Table1",
  541. tableName: "维修工单表",
  542. columnProp: 'defectDesc',
  543. headerAlign: "center",
  544. align: "center",
  545. columnLabel: '故障名称',
  546. columnHidden: false,
  547. columnImage: false,
  548. columnSortable: false,
  549. sortLv: 0,
  550. status: true,
  551. fixed: '',
  552. columnWidth: 80,
  553. },
  554. {
  555. userId: this.$store.state.user.name,
  556. functionId: 101004002,
  557. serialNumber: '101004002Table1ObjectID',
  558. tableId: "101004002Table1",
  559. tableName: "维修工单表",
  560. columnProp: 'objectID',
  561. headerAlign: "center",
  562. align: "center",
  563. columnLabel: '设备编码',
  564. columnHidden: false,
  565. columnImage: false,
  566. columnSortable: false,
  567. sortLv: 0,
  568. status: true,
  569. fixed: '',
  570. columnWidth: 80,
  571. },
  572. {
  573. userId: this.$store.state.user.name,
  574. functionId: 101004002,
  575. serialNumber: '101004002Table1ObjectDesc',
  576. tableId: "101004002Table1",
  577. tableName: "维修工单表",
  578. columnProp: 'objectDesc',
  579. headerAlign: "center",
  580. align: "center",
  581. columnLabel: '设备名称',
  582. columnHidden: false,
  583. columnImage: false,
  584. columnSortable: false,
  585. sortLv: 0,
  586. status: true,
  587. fixed: '',
  588. columnWidth: 120,
  589. },
  590. {
  591. userId: this.$store.state.user.name,
  592. functionId: 101004002,
  593. serialNumber: '101004002Table1ResourceDesc',
  594. tableId: "101004002Table1",
  595. tableName: "维修工单表",
  596. columnProp: 'resourceDesc',
  597. headerAlign: "center",
  598. align: "center",
  599. columnLabel: '机台名称',
  600. columnHidden: false,
  601. columnImage: false,
  602. columnSortable: false,
  603. sortLv: 0,
  604. status: true,
  605. fixed: '',
  606. columnWidth: 120,
  607. },
  608. {
  609. userId: this.$store.state.user.name,
  610. functionId: 101004002,
  611. serialNumber: '101004002Table1DepartmentName',
  612. tableId: "101004002Table1",
  613. tableName: "维修工单表",
  614. columnProp: 'departmentName',
  615. headerAlign: "center",
  616. align: "center",
  617. columnLabel: '设备部门',
  618. columnHidden: false,
  619. columnImage: false,
  620. columnSortable: false,
  621. sortLv: 0,
  622. status: true,
  623. fixed: '',
  624. columnWidth: 100,
  625. },
  626. {
  627. userId: this.$store.state.user.name,
  628. functionId: 101004002,
  629. serialNumber: '101004002Table1CreateBy',
  630. tableId: "101004002Table1",
  631. tableName: "维修工单表",
  632. columnProp: 'createBy',
  633. headerAlign: "center",
  634. align: "center",
  635. columnLabel: '报修人员名称',
  636. columnHidden: false,
  637. columnImage: false,
  638. columnSortable: false,
  639. sortLv: 0,
  640. status: true,
  641. fixed: '',
  642. columnWidth: 80,
  643. },
  644. {
  645. userId: this.$store.state.user.name,
  646. functionId: 101004002,
  647. serialNumber: '101004002Table1Status',
  648. tableId: "101004002Table1",
  649. tableName: "维修工单表",
  650. columnProp: 'status',
  651. headerAlign: "center",
  652. align: "center",
  653. columnLabel: '状态',
  654. columnHidden: false,
  655. columnImage: false,
  656. columnSortable: true,
  657. sortLv: 0,
  658. status: true,
  659. fixed: '',
  660. columnWidth: 80,
  661. },
  662. {
  663. userId: this.$store.state.user.name,
  664. functionId: 101004002,
  665. serialNumber: '101004002Table1PlanOperatorName',
  666. tableId: "101004002Table1",
  667. tableName: "维修工单表",
  668. columnProp: 'planOperatorName',
  669. headerAlign: "center",
  670. align: "center",
  671. columnLabel: '计划执行人员',
  672. columnHidden: false,
  673. columnImage: false,
  674. columnSortable: false,
  675. sortLv: 0,
  676. status: true,
  677. fixed: '',
  678. columnWidth: 100,
  679. },
  680. {
  681. userId: this.$store.state.user.name,
  682. functionId: 101004002,
  683. serialNumber: '101004002Table1ActualOperatorName',
  684. tableId: "101004002Table1",
  685. tableName: "维修工单表",
  686. columnProp: 'actualOperatorName',
  687. headerAlign: "center",
  688. align: "center",
  689. columnLabel: '实际执行人员',
  690. columnHidden: false,
  691. columnImage: false,
  692. columnSortable: false,
  693. sortLv: 0,
  694. status: true,
  695. fixed: '',
  696. columnWidth: 100,
  697. },
  698. {
  699. userId: this.$store.state.user.name,
  700. functionId: 101004002,
  701. serialNumber: '101004002Table1PlanDate',
  702. tableId: "101004002Table1",
  703. tableName: "维修工单表",
  704. columnProp: 'planDate',
  705. headerAlign: "center",
  706. align: "center",
  707. columnLabel: '计划执行日期',
  708. columnHidden: false,
  709. columnImage: false,
  710. columnSortable: true,
  711. sortLv: 0,
  712. status: true,
  713. fixed: '',
  714. columnWidth: 100,
  715. },
  716. {
  717. userId: this.$store.state.user.name,
  718. functionId: 101004002,
  719. serialNumber: '101004002Table1CreatedDate',
  720. tableId: "101004002Table1",
  721. tableName: "维修工单表",
  722. columnProp: 'createdDate',
  723. headerAlign: "center",
  724. align: "center",
  725. columnLabel: '故障时间',
  726. columnHidden: false,
  727. columnImage: false,
  728. columnSortable: true,
  729. sortLv: 0,
  730. status: true,
  731. fixed: '',
  732. columnWidth: 130,
  733. },
  734. {
  735. userId: this.$store.state.user.name,
  736. functionId: 101004002,
  737. serialNumber: '101004002Table1ReachDate',
  738. tableId: "101004002Table1",
  739. tableName: "维修工单表",
  740. columnProp: 'reachDate',
  741. headerAlign: "center",
  742. align: "center",
  743. columnLabel: '到达时间',
  744. columnHidden: false,
  745. columnImage: false,
  746. columnSortable: true,
  747. sortLv: 0,
  748. status: true,
  749. fixed: '',
  750. columnWidth: 130,
  751. },
  752. {
  753. userId: this.$store.state.user.name,
  754. functionId: 101004002,
  755. serialNumber: '101004002Table1ActualDate',
  756. tableId: "101004002Table1",
  757. tableName: "维修工单表",
  758. columnProp: 'actualDate',
  759. headerAlign: "center",
  760. align: "center",
  761. columnLabel: '实际执行时间',
  762. columnHidden: false,
  763. columnImage: false,
  764. columnSortable: true,
  765. sortLv: 0,
  766. status: true,
  767. fixed: '',
  768. columnWidth: 130,
  769. },
  770. {
  771. userId: this.$store.state.user.name,
  772. functionId: 101004002,
  773. serialNumber: '101004002Table1ResponseTime',
  774. tableId: "101004002Table1",
  775. tableName: "维修工单表",
  776. columnProp: 'responseTime',
  777. headerAlign: "center",
  778. align: "right",
  779. columnLabel: '维修响应时长(m)',
  780. columnHidden: false,
  781. columnImage: false,
  782. columnSortable: false,
  783. sortLv: 0,
  784. status: true,
  785. fixed: '',
  786. columnWidth: 110,
  787. },
  788. {
  789. userId: this.$store.state.user.name,
  790. functionId: 101004002,
  791. serialNumber: '101004002Table1WorkTime',
  792. tableId: "101004002Table1",
  793. tableName: "维修工单表",
  794. columnProp: 'workTime',
  795. headerAlign: "center",
  796. align: "right",
  797. columnLabel: '工作时长(m)',
  798. columnHidden: false,
  799. columnImage: false,
  800. columnSortable: false,
  801. sortLv: 0,
  802. status: true,
  803. fixed: '',
  804. columnWidth: 80,
  805. },
  806. {
  807. userId: this.$store.state.user.name,
  808. functionId: 101004002,
  809. serialNumber: '101004002Table1Remark',
  810. tableId: "101004002Table1",
  811. tableName: "维修工单表",
  812. columnProp: 'remark',
  813. headerAlign: "center",
  814. align: "center",
  815. columnLabel: '工单备注',
  816. columnHidden: false,
  817. columnImage: false,
  818. columnSortable: false,
  819. sortLv: 0,
  820. status: true,
  821. fixed: '',
  822. columnWidth: 120,
  823. },
  824. {
  825. userId: this.$store.state.user.name,
  826. functionId: 101004002,
  827. serialNumber: '101004002Table1DifficultyLevel',
  828. tableId: "101004002Table1",
  829. tableName: "维修工单表",
  830. columnProp: 'difficultyLevel',
  831. headerAlign: "center",
  832. align: "center",
  833. columnLabel: '难度等级',
  834. columnHidden: false,
  835. columnImage: false,
  836. columnSortable: false,
  837. sortLv: 0,
  838. status: true,
  839. fixed: '',
  840. columnWidth: 80,
  841. },
  842. {
  843. userId: this.$store.state.user.name,
  844. functionId: 101004002,
  845. serialNumber: '101004002Table1DifficultyRemark',
  846. tableId: "101004002Table1",
  847. tableName: "维修工单表",
  848. columnProp: 'difficultyRemark',
  849. headerAlign: "center",
  850. align: "center",
  851. columnLabel: '难度备注',
  852. columnHidden: false,
  853. columnImage: false,
  854. columnSortable: false,
  855. sortLv: 0,
  856. status: true,
  857. fixed: '',
  858. columnWidth: 120,
  859. },
  860. {
  861. userId: this.$store.state.user.name,
  862. functionId: 101004002,
  863. serialNumber: '101004002Table1DocumentSource',
  864. tableId: "101004002Table1",
  865. tableName: "维修工单表",
  866. columnProp: 'documentSource',
  867. headerAlign: "center",
  868. align: "center",
  869. columnLabel: '单据来源',
  870. columnHidden: false,
  871. columnImage: false,
  872. columnSortable: false,
  873. sortLv: 0,
  874. status: true,
  875. fixed: '',
  876. columnWidth: 100,
  877. },
  878. ],
  879. changeModelFlag: false,
  880. planOperator: '',
  881. planOperatorName: '',
  882. submitData: {
  883. site: '',
  884. buNo: '',
  885. orderNo: '',
  886. planID: '',
  887. objectID: '',
  888. checker: '',
  889. checkerName: '',
  890. difficultyLevel: '',
  891. difficultyRemark: '',
  892. status: '',
  893. updateBy: this.$store.state.user.name,
  894. createBy: this.$store.state.user.name,
  895. planDesc: '',
  896. disposalMeasures: '',
  897. defectID: '',
  898. remark: ''
  899. },
  900. submitModelFlag: false,
  901. detailData: {},
  902. detailModelFlag: false,
  903. descImages: [],
  904. imageModalFlag: false,
  905. departmentModelFlag: false,
  906. departmentData: {
  907. site: '',
  908. buNo: '',
  909. deptId: '',
  910. deptName: '',
  911. },
  912. departmentListSelections: [],
  913. departmentDetailList: [
  914. {
  915. columnProp: 'deptId',
  916. headerAlign: "center",
  917. align: "center",
  918. columnLabel: '部门编码',
  919. columnHidden: false,
  920. columnImage: false,
  921. columnSortable: false,
  922. sortLv: 0,
  923. status: true,
  924. fixed: '',
  925. },
  926. {
  927. columnProp: 'deptName',
  928. headerAlign: "center",
  929. align: "center",
  930. columnLabel: '部门名称',
  931. columnHidden: false,
  932. columnImage: false,
  933. columnSortable: false,
  934. sortLv: 0,
  935. status: true,
  936. fixed: '',
  937. },
  938. ],
  939. userBuList: [],
  940. authSearch: false,
  941. authChange: false,
  942. authDetail: false,
  943. authCancel: false,
  944. menuId: this.$route.meta.menuId,
  945. }
  946. },
  947. mounted () {
  948. this.$nextTick(() => {
  949. this.height = window.innerHeight - 210
  950. })
  951. },
  952. created () {
  953. // 按钮控制
  954. this.getButtonAuthData()
  955. // 获取用户的 site 和 bu
  956. this.getSiteAndBuByUserName()
  957. this.favoriteIsOk()
  958. // 动态列
  959. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  960. if (!this.authSearch) {
  961. // 查询登陆人员的部门,并过滤出相应工单
  962. this.getUserDept()
  963. }
  964. },
  965. methods: {
  966. // ======= 正则校验 =======
  967. handleInput (value, type) {
  968. // 大于等于0,且只能输入4位小数
  969. let val = value.replace(/^\D*([0-9]\d*\.?\d{0,4})?.*$/,'$1')
  970. if (val === null || val === undefined || val === '') {
  971. val = 0
  972. }
  973. if (type === 1) {
  974. this.detailData.workTime = val
  975. }
  976. },
  977. // 获取用户的bu
  978. getSiteAndBuByUserName () {
  979. let tempData = {
  980. username: this.$store.state.user.name,
  981. }
  982. getSiteAndBuByUserName(tempData).then(({data}) => {
  983. if (data.code === 0) {
  984. this.userBuList = data.rows
  985. }
  986. })
  987. },
  988. // 控制单行的背景颜色
  989. controlRowStyle ({row, rowIndex}) {
  990. // 区分不同的样式对应不同的颜色
  991. if (row.status === '待审核') {
  992. return "background-color: #D8ECF1"
  993. }
  994. },
  995. // 查询登陆人员的部门
  996. getUserDept () {
  997. let tempDate = {
  998. site: '',
  999. username: this.$store.state.user.name,
  1000. }
  1001. getDeptList(tempDate).then(({data}) => {
  1002. if (data.code === 0) {
  1003. data.rows.forEach(val => {
  1004. this.searchData.departmentName = this.searchData.departmentName + ";" + val
  1005. })
  1006. this.searchData.departmentName = this.searchData.departmentName.substring(1)
  1007. this.getDataList()
  1008. }
  1009. })
  1010. },
  1011. // 校验用户是否收藏
  1012. favoriteIsOk () {
  1013. let userFavorite = {
  1014. userId: this.$store.state.user.id,
  1015. languageCode: this.$i18n.locale
  1016. }
  1017. userFavoriteList(userFavorite).then(({data}) => {
  1018. for (let i = 0; i < data.list.length; i++) {
  1019. if (this.$route.meta.menuId === data.list[i].menuId) {
  1020. this.favorite = true
  1021. }
  1022. }
  1023. })
  1024. },
  1025. // 收藏 OR 取消收藏
  1026. favoriteFunction () {
  1027. let userFavorite = {
  1028. userId: this.$store.state.user.id,
  1029. functionId: this.$route.meta.menuId,
  1030. }
  1031. if (this.favorite) {
  1032. removeUserFavorite(userFavorite).then(({data}) => {
  1033. this.$message.success(data.msg)
  1034. this.favorite = false
  1035. })
  1036. } else {
  1037. // 收藏
  1038. saveUserFavorite(userFavorite).then(({data}) => {
  1039. this.$message.success(data.msg)
  1040. this.favorite = true
  1041. })
  1042. }
  1043. },
  1044. // 获取基础数据列表S
  1045. getBaseList (val,type) {
  1046. this.tagNo = val
  1047. this.$nextTick(() => {
  1048. let strVal = ''
  1049. if (val === 201) {
  1050. strVal = this.planOperator
  1051. this.$refs.baseList.init(val, strVal)
  1052. }
  1053. })
  1054. },
  1055. /* 列表方法的回调 */
  1056. getBaseData (val) {
  1057. if (this.tagNo === 201) {
  1058. this.planOperator = val.username
  1059. this.planOperatorName = val.user_display
  1060. }
  1061. },
  1062. //导出excel
  1063. async createExportData () {
  1064. this.searchData.limit = -1
  1065. this.searchData.page = 1
  1066. await eamWorkOrderSearchForDefect(this.searchData).then(({data}) => {
  1067. this.exportList= data.page.list
  1068. })
  1069. return this.exportList
  1070. },
  1071. startDownload () {},
  1072. finishDownload () {},
  1073. fields () {
  1074. let json = "{"
  1075. this.columnList.forEach((item, index) => {
  1076. if (index == this.columnList.length - 1) {
  1077. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1078. } else {
  1079. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1080. }
  1081. })
  1082. json += "}"
  1083. let s = eval("(" + json + ")")
  1084. return s
  1085. },
  1086. // 获取数据列表
  1087. getDataList () {
  1088. this.searchData.limit = this.pageSize
  1089. this.searchData.page = this.pageIndex
  1090. eamWorkOrderSearchForDefect(this.searchData).then(({data}) => {
  1091. if (data.code === 0) {
  1092. this.dataList = data.page.list
  1093. this.pageIndex = data.page.currPage
  1094. this.pageSize = data.page.pageSize
  1095. this.totalPage = data.page.totalCount
  1096. }
  1097. this.dataListLoading = false
  1098. })
  1099. },
  1100. // 每页数
  1101. sizeChangeHandle (val) {
  1102. this.pageSize = val
  1103. this.pageIndex = 1
  1104. this.getDataList()
  1105. },
  1106. // 当前页
  1107. currentChangeHandle (val) {
  1108. this.pageIndex = val
  1109. this.getDataList()
  1110. },
  1111. // 多选
  1112. selectionChangeHandle (val) {
  1113. this.dataListSelections = val
  1114. },
  1115. cancelOrder (row) {
  1116. this.$confirm(`是否取消选定工单?`, '提示', {
  1117. confirmButtonText: '确定',
  1118. cancelButtonText: '取消',
  1119. type: 'warning'
  1120. }).then(() => {
  1121. cancelOrder(row).then(({data}) => {
  1122. if (data && data.code === 0) {
  1123. this.getDataList()
  1124. this.$message({
  1125. message: '操作成功',
  1126. type: 'success',
  1127. duration: 1500,
  1128. onClose: () => {}
  1129. })
  1130. } else {
  1131. this.$alert(data.msg, '错误', {
  1132. confirmButtonText: '确定'
  1133. })
  1134. }
  1135. })
  1136. }).catch(() => {
  1137. })
  1138. },
  1139. selectFlag (row,index) {
  1140. if (row.status !== '未开工') {
  1141. return false
  1142. } else {
  1143. return true
  1144. }
  1145. },
  1146. changeModel () {
  1147. if (this.dataListSelections.length === 0) {
  1148. this.$alert('请勾选工单!', '错误', {
  1149. confirmButtonText: '确定'
  1150. })
  1151. return false
  1152. }
  1153. this.planOperator = ''
  1154. this.planOperatorName = ''
  1155. this.changeModelFlag = true
  1156. },
  1157. changeOrderOperator () {
  1158. let inList = JSON.parse(JSON.stringify(this.dataListSelections))
  1159. for (let i = 0; i <inList.length ; i++) {
  1160. inList[i].planOperator = this.planOperator
  1161. }
  1162. changeOrderOperator(inList).then(({data}) => {
  1163. if (data && data.code === 0) {
  1164. this.changeModelFlag = false
  1165. this.getDataList()
  1166. this.$message({
  1167. message: '操作成功',
  1168. type: 'success',
  1169. duration: 1500,
  1170. onClose: () => {}
  1171. })
  1172. } else {
  1173. this.$alert(data.msg, '错误', {
  1174. confirmButtonText: '确定'
  1175. })
  1176. }
  1177. })
  1178. },
  1179. // 审核按钮
  1180. checkModal () {
  1181. if (!this.isAuth(this.$route.meta.menuId+":check")) {
  1182. this.$message.warning('无审核权限!')
  1183. return
  1184. }
  1185. this.submitData.site = this.detailData.site
  1186. this.submitData.buNo = this.detailData.buNo
  1187. this.submitData.orderNo = this.detailData.orderNo
  1188. this.submitData.planID = this.detailData.planID
  1189. this.submitData.objectID = this.detailData.objectID
  1190. this.submitData.planDesc = this.detailData.planDesc
  1191. this.submitData.disposalMeasures = this.detailData.disposalMeasures
  1192. this.submitData.defectID = this.detailData.defectID
  1193. this.submitData.remark = this.detailData.remark
  1194. this.submitData.difficultyLevel = ''
  1195. this.submitData.difficultyRemark = ''
  1196. if (this.detailData.status === '已完工') {
  1197. this.$confirm(`是否取消审核?`, '提示', {
  1198. confirmButtonText: '确定',
  1199. cancelButtonText: '取消',
  1200. type: 'warning'
  1201. }).then(() => {
  1202. this.submitData.status = '待审核'
  1203. submitDefect(this.submitData).then(({data}) => {
  1204. if (data && data.code === 0) {
  1205. this.getDataList()
  1206. this.detailData.status = '待审核'
  1207. this.$message({
  1208. message: '操作成功',
  1209. type: 'success',
  1210. duration: 1500,
  1211. onClose: () => {}
  1212. })
  1213. } else {
  1214. this.$alert(data.msg, '错误', {
  1215. confirmButtonText: '确定'
  1216. })
  1217. }
  1218. })
  1219. }).catch(() => {
  1220. })
  1221. } else {
  1222. this.submitData.status = '已完工'
  1223. this.submitModelFlag = true
  1224. }
  1225. },
  1226. // 确认审核
  1227. submitModel () {
  1228. if (this.submitData.difficultyLevel === ''||this.submitData.difficultyLevel == null) {
  1229. this.$alert('请选择难度等级!', '提示', {
  1230. confirmButtonText: '确定'
  1231. })
  1232. return false
  1233. }
  1234. submitDefect(this.submitData).then(({data}) => {
  1235. if (data && data.code === 0) {
  1236. this.getDataList()
  1237. this.detailData.status = '已完工'
  1238. this.submitModelFlag = false
  1239. this.$message({
  1240. message: '操作成功',
  1241. type: 'success',
  1242. duration: 1500,
  1243. onClose: () => {}
  1244. })
  1245. } else {
  1246. this.$alert(data.msg, '错误', {
  1247. confirmButtonText: '确定'
  1248. })
  1249. }
  1250. })
  1251. },
  1252. // 详情
  1253. reportModal (row) {
  1254. this.detailData = {
  1255. site: row.site,
  1256. buNo: row.buNo,
  1257. orderNo: row.orderNo,
  1258. planID: row.planID,
  1259. objectID: row.objectID,
  1260. objectDesc: row.objectDesc,
  1261. status: row.status,
  1262. remark: row.remark,
  1263. workTime: row.workTime,
  1264. result: row.result,
  1265. defectID: row.defectID,
  1266. defectDesc: row.defectDesc,
  1267. actualOperatorName: row.actualOperatorName,
  1268. planDate: row.planDate,
  1269. reachDate: row.reachDate,
  1270. actualDate: row.actualDate,
  1271. planDesc: row.planDesc,
  1272. disposalMeasures: row.disposalMeasures,
  1273. handlingMethod: row.handlingMethod,
  1274. functionType: row.functionType,
  1275. resourceDesc: row.resourceDesc,
  1276. feedBackDesc: row.feedBackDesc,
  1277. faultReason: row.faultReason,
  1278. preventiveMeasure: row.preventiveMeasure
  1279. }
  1280. this.detailModelFlag = true
  1281. },
  1282. updateResult () {
  1283. if (!this.isAuth(this.$route.meta.menuId+":check")) {
  1284. this.$message.warning('无审核权限!')
  1285. return
  1286. }
  1287. if (this.detailData.reachDate === '' || this.detailData.reachDate == null) {
  1288. this.$message.warning('请选择到达时间!')
  1289. return
  1290. }
  1291. if (this.detailData.actualDate === '' || this.detailData.actualDate == null) {
  1292. this.$message.warning('请选择实际执行时间!')
  1293. return
  1294. }
  1295. if (this.detailData.reachDate > this.detailData.actualDate) {
  1296. this.$message.warning('到达时间不能大于实际执行时间!')
  1297. return
  1298. }
  1299. updateReportResult(this.detailData).then(({data}) => {
  1300. if (data && data.code === 0) {
  1301. this.getDataList()
  1302. this.detailModelFlag = false
  1303. this.$message({
  1304. message: '操作成功',
  1305. type: 'success',
  1306. duration: 1500,
  1307. onClose: () => {}
  1308. })
  1309. } else {
  1310. this.$alert(data.msg, '错误', {
  1311. confirmButtonText: '确定'
  1312. })
  1313. }
  1314. })
  1315. },
  1316. /**
  1317. * 查看故障图片
  1318. */
  1319. checkFaultImageModal () {
  1320. this.descImages = []
  1321. let tempData = {
  1322. site: this.detailData.site,
  1323. buNo: this.detailData.buNo,
  1324. orderNo: this.detailData.orderNo,
  1325. folder: 'reportFault',
  1326. }
  1327. searchFileUrl(tempData).then(({data}) => {
  1328. if (data.code === 0) {
  1329. for (let i = 0; i < data.rows.length; i++) {
  1330. this.descImages.push(data.rows[i].url)
  1331. }
  1332. } else {
  1333. this.$message.warning(data.msg)
  1334. }
  1335. })
  1336. this.imageModalFlag = true
  1337. },
  1338. /**
  1339. * 查看备件图片
  1340. */
  1341. checkSparPartImageModal () {
  1342. this.descImages = []
  1343. let tempData = {
  1344. site: this.detailData.site,
  1345. buNo: this.detailData.buNo,
  1346. orderNo: this.detailData.orderNo,
  1347. folder: 'reportSparPart',
  1348. }
  1349. searchFileUrl(tempData).then(({data}) => {
  1350. if (data.code === 0) {
  1351. for (let i = 0; i < data.rows.length; i++) {
  1352. this.descImages.push(data.rows[i].url)
  1353. }
  1354. } else {
  1355. this.$message.warning(data.msg)
  1356. }
  1357. })
  1358. this.imageModalFlag = true
  1359. },
  1360. // 获取部门列表
  1361. getDepartmentList () {
  1362. // 先清空缓存选中
  1363. this.$nextTick(() => this.$refs.departmentTable.clearSelection())
  1364. // 拿到选中的部门编号
  1365. let tempDataList = (this.searchData.departmentName == null ? '' : this.searchData.departmentName).split(';')
  1366. // 查询部门
  1367. getEmpyDeptList(this.departmentData).then(({data}) => {
  1368. if (data && data.code === 0) {
  1369. this.departmentList = data.rows
  1370. this.departmentList.forEach(val => {
  1371. // 回显选中的部门
  1372. if (tempDataList.includes(val.deptName)) {
  1373. this.$nextTick(() => this.$refs.departmentTable.toggleRowSelection(val, true))
  1374. }
  1375. })
  1376. this.departmentModelFlag = true
  1377. }else {
  1378. this.$alert(data.msg, '错误', {
  1379. confirmButtonText: '确定'
  1380. })
  1381. }
  1382. })
  1383. },
  1384. // 部门
  1385. departmentClickRow (row) {
  1386. this.$refs.departmentTable.toggleRowSelection(row)
  1387. },
  1388. // 多选
  1389. selectionDepartment (val) {
  1390. this.departmentListSelections = val
  1391. },
  1392. getRowKeys (row) {
  1393. // 唯一值,一般都为id
  1394. return row.deptId
  1395. },
  1396. // 确认多选部门
  1397. confirmDepartment () {
  1398. this.searchData.departmentName = ''
  1399. for (let i = 0; i < this.departmentListSelections.length; i++) {
  1400. this.searchData.departmentName = this.searchData.departmentName + ";" + this.departmentListSelections[i].deptName
  1401. }
  1402. this.searchData.departmentName = this.searchData.departmentName.substring(1)
  1403. this.departmentModelFlag = false
  1404. },
  1405. // 清空搜索框部门
  1406. clearDepartmentName () {
  1407. this.searchData.departmentName = ''
  1408. },
  1409. // 动态列开始 获取 用户保存的 格式列
  1410. async getTableUserColumn(tableId, columnId) {
  1411. let queryTableUser = {
  1412. userId: this.$store.state.user.name,
  1413. functionId: this.$route.meta.menuId,
  1414. tableId: tableId,
  1415. status: true,
  1416. languageCode: this.$i18n.locale
  1417. }
  1418. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  1419. if (data.rows.length > 0) {
  1420. //this.columnList1 = []
  1421. switch (columnId) {
  1422. case 1:
  1423. this.columnList = data.rows
  1424. break;
  1425. // case 2:
  1426. // this.columnDetailList = data.rows
  1427. // break;
  1428. // case 3:
  1429. // this.columnList2 = data.rows
  1430. // break;
  1431. // case 4:
  1432. // this.columnList3 = data.rows
  1433. // break;
  1434. }
  1435. } else {
  1436. this.getColumnList(tableId, columnId)
  1437. }
  1438. })
  1439. },
  1440. // 获取 tableDefault 列
  1441. async getColumnList(tableId, columnId) {
  1442. let queryTable= {
  1443. functionId: this.$route.meta.menuId,
  1444. tableId: tableId,
  1445. languageCode: this.$i18n.locale
  1446. }
  1447. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  1448. if (!data.rows.length == 0) {
  1449. switch (columnId) {
  1450. case 1:
  1451. this.columnList = data.rows
  1452. break;
  1453. // case 2:
  1454. // this.columnDetailList = data.rows
  1455. // break;
  1456. // case 3:
  1457. // this.columnList2 = data.rows
  1458. // break;
  1459. // case 4:
  1460. // this.columnList3 = data.rows
  1461. // break;
  1462. }
  1463. } else {
  1464. // this.showDefault = true.
  1465. }
  1466. })
  1467. },
  1468. //获取按钮的权限数据
  1469. getButtonAuthData () {
  1470. let searchFlag = this.isAuth(this.menuId+":search")
  1471. let changeFlag = this.isAuth(this.menuId+":change")
  1472. let detailFlag = this.isAuth(this.menuId+":detail")
  1473. let cancelFlag = this.isAuth(this.menuId+":cancel")
  1474. //处理页面的权限数据
  1475. this.authSearch = !searchFlag
  1476. this.authChange = !changeFlag
  1477. this.authDetail = !detailFlag
  1478. this.authCancel = !cancelFlag
  1479. },
  1480. }
  1481. }
  1482. </script>
  1483. <style scoped>
  1484. .numInput /deep/ .el-input__inner{
  1485. text-align: right;
  1486. }
  1487. </style>