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.

2009 lines
71 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
1 year ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
3 years ago
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 year ago
1 year ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
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 year ago
1 year ago
2 years ago
2 years ago
1 year ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
3 years ago
3 years ago
3 years ago
1 year ago
1 year ago
3 years ago
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 year ago
3 years ago
1 year ago
1 year ago
1 year ago
3 years ago
  1. <template>
  2. <div class="mod-config">
  3. <el-form :inline="true" label-position="top" :model="searchData">
  4. <el-form-item :label="'BU'">
  5. <el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 80px">
  6. <el-option
  7. v-for = "i in userBuList"
  8. :key = "i.buNo"
  9. :label = "i.buDesc"
  10. :value = "i.buDesc">
  11. </el-option>
  12. </el-select>
  13. </el-form-item>
  14. <el-form-item :label="'报修方式'">
  15. <el-select v-model="searchData.repairReportingType" placeholder="请选择" clearable style="width: 100px">
  16. <el-option label="设备故障" value="设备故障"></el-option>
  17. <el-option label="TPM红牌" value="TPM红牌"></el-option>
  18. </el-select>
  19. </el-form-item>
  20. <el-form-item :label="'维修类型'">
  21. <el-select v-model="searchData.repairType" placeholder="请选择" clearable style="width: 100px">
  22. <el-option label="换线专家组" value="换线专家组"></el-option>
  23. <el-option label="设备维修组" value="设备维修组"></el-option>
  24. </el-select>
  25. </el-form-item>
  26. <el-form-item :label="'紧急程度'">
  27. <el-select v-model="searchData.urgency" placeholder="请选择" clearable style="width: 80px">
  28. <el-option label="特急" value="特急"></el-option>
  29. <el-option label="紧急" value="紧急"></el-option>
  30. <el-option label="一般" value="一般"></el-option>
  31. </el-select>
  32. </el-form-item>
  33. <el-form-item :label="'反馈单号'">
  34. <el-input v-model="searchData.feedBackID" clearable style="width: 120px"></el-input>
  35. </el-form-item>
  36. <el-form-item :label="'设备编码'">
  37. <el-input v-model="searchData.objectID" clearable style="width: 100px"></el-input>
  38. </el-form-item>
  39. <el-form-item :label="'故障原因'">
  40. <el-input v-model="searchData.defectDesc" clearable style="width: 120px"></el-input>
  41. </el-form-item>
  42. <el-form-item :label="'设备区域'">
  43. <el-input v-model="searchData.locationName" clearable style="width: 100px"></el-input>
  44. </el-form-item>
  45. <el-form-item :label="'部门'">
  46. <el-input v-model="searchData.department" clearable style="width: 120px"></el-input>
  47. </el-form-item>
  48. <el-form-item :label="'报修人员'">
  49. <el-input v-model="searchData.feedbackBy" clearable style="width: 120px"></el-input>
  50. </el-form-item>
  51. <el-form-item :label="'状态'">
  52. <el-select filterable v-model="searchData.status" clearable style="width: 100px">
  53. <el-option label="已录入" value="已录入"></el-option>
  54. <el-option label="事项跟踪" value="事项跟踪"></el-option>
  55. <el-option label="已下达" value="已下达"></el-option>
  56. <el-option label="维修确认" value="维修确认"></el-option>
  57. <el-option label="维修完成" value="维修完成"></el-option>
  58. <el-option label="维修失败" value="维修失败"></el-option>
  59. <el-option label="已取消" value="已取消"></el-option>
  60. </el-select>
  61. </el-form-item>
  62. <el-form-item :label="'故障发现日期'">
  63. <el-date-picker
  64. style="width: 120px"
  65. v-model="searchData.startDate"
  66. type="date"
  67. value-format="yyyy-MM-dd"
  68. placeholder="选择日期">
  69. </el-date-picker>
  70. </el-form-item>
  71. <el-form-item style="margin-top: 23px;">
  72. <laber style="margin-left: -9px;font-size: 19px">&#10142</laber>
  73. </el-form-item>
  74. <el-form-item :label="' '">
  75. <el-date-picker
  76. style="width: 120px"
  77. v-model="searchData.endDate"
  78. type="date"
  79. value-format="yyyy-MM-dd"
  80. placeholder="选择日期">
  81. </el-date-picker>
  82. </el-form-item>
  83. <el-form-item :label="' '">
  84. <el-button v-if="!authSearch" :loading="dataListLoading" @click="getDataList">查询</el-button>
  85. <el-button v-if="!authSave" @click="saveModal">新增</el-button>
  86. <el-button @click="exportExcel()" type="primary" style="margin-left: 2px">{{'导出'}}</el-button>
  87. <!-- <download-excel-->
  88. <!-- :fields="fields()"-->
  89. <!-- :data="exportData"-->
  90. <!-- type="xls"-->
  91. <!-- :name="exportName"-->
  92. <!-- :header="exportHeader"-->
  93. <!-- :footer="exportFooter"-->
  94. <!-- :fetch="createExportData"-->
  95. <!-- :before-generate="startDownload"-->
  96. <!-- :before-finish="finishDownload"-->
  97. <!-- worksheet="导出信息"-->
  98. <!-- class="el-button el-button&#45;&#45;primary el-button&#45;&#45;medium">-->
  99. <!-- {{ "导出" }}-->
  100. <!-- </download-excel>-->
  101. </el-form-item>
  102. </el-form>
  103. <el-table
  104. :height="height"
  105. :data="dataList"
  106. border
  107. v-loading="dataListLoading"
  108. @selection-change="selectionChangeHandle"
  109. style="width: 100%;">
  110. <el-table-column
  111. prop="buDesc"
  112. header-align="center"
  113. align="center"
  114. label="BU"
  115. width="60">
  116. </el-table-column>
  117. <el-table-column
  118. prop="urgency"
  119. header-align="center"
  120. align="center"
  121. label="紧急程度"
  122. width="70">
  123. <template slot-scope="scope">
  124. <div :style="{fontWeight:'bold', color: scope.row.urgency === '特急' ? 'red' : scope.row.urgency === '紧急' ? '#ffa500e0' : scope.row.urgency === '一般' ? '#47B0FF' : ''}">
  125. {{ scope.row.urgency }}
  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="130"
  149. label="操作">
  150. <template slot-scope="scope">
  151. <el-link style="cursor: pointer" v-if="(scope.row.status === '已录入'||scope.row.status === '事项跟踪') && !authCancel" @click="cancelFeedBack(scope.row)">取消反馈</el-link>
  152. <el-link style="cursor: pointer" v-if="(scope.row.status === '已录入'||scope.row.status === '事项跟踪') && !authRelease" @click="createDefectOrderModel1(scope.row)">下达</el-link>
  153. <el-link style="cursor: pointer" v-if="scope.row.repairReportingType === 'TPM红牌'" @click="searchFeedMatterRecord(scope.row)">事项</el-link>
  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. <!-- 下达按钮弹框-->
  167. <el-dialog title="下达" :close-on-click-modal="false" v-drag :visible.sync="chooseReachModelFlag" width="410px">
  168. <el-form :inline="true" label-position="top">
  169. <el-form-item >
  170. <span slot="label" @click="getOperatorList(0)"><a>选择计划执行人员</a></span>
  171. <el-input v-model="this.xdplanOperatorName" style="width: 389px"></el-input>
  172. </el-form-item>
  173. </el-form>
  174. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  175. <el-button type="primary" @click="reach()">保存</el-button>
  176. <el-button type="primary" @click="chooseReachModelFlag = false">关闭</el-button>
  177. </el-footer>
  178. </el-dialog>
  179. <!-- 下达 -->
  180. <el-dialog title="下达维修工单" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="570px">
  181. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  182. <el-form-item label="计划编码:">
  183. <el-input v-model="modalData.feedBackID" disabled style="width: 120px"></el-input>
  184. </el-form-item>
  185. <el-form-item label="计划描述:">
  186. <el-input v-model="modalData.feedBackDesc" disabled style="width: 120px"></el-input>
  187. </el-form-item>
  188. <el-form-item >
  189. <span slot="label" style="">设备编码</span>
  190. <el-input v-model="modalData.objectID" disabled style="width: 120px"></el-input>
  191. </el-form-item>
  192. <el-form-item label="设备名称:">
  193. <el-input v-model="modalData.objectDesc" disabled style="width: 120px"></el-input>
  194. </el-form-item>
  195. </el-form>
  196. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  197. <el-form-item >
  198. <span slot="label" style="">故障编码</span>
  199. <el-input v-model="modalData.defectID" disabled style="width: 120px"></el-input>
  200. </el-form-item>
  201. <el-form-item label="故障原因:">
  202. <el-input v-model="modalData.defectDesc" disabled style="width: 120px"></el-input>
  203. </el-form-item>
  204. <el-form-item label="计划维修日期:">
  205. <el-date-picker
  206. style="width: 120px"
  207. v-model="modalData.planDate"
  208. type="date"
  209. value-format="yyyy-MM-dd"
  210. placeholder="必选">
  211. </el-date-picker>
  212. </el-form-item>
  213. <el-form-item >
  214. <span style="cursor: pointer" slot="label" @click="getBaseList(201)"><a>计划执行人员</a></span>
  215. <el-input v-model="modalData.planOperator" style="width: 120px"></el-input>
  216. </el-form-item>
  217. </el-form>
  218. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  219. <el-button type="primary" @click="saveDefectOrder()">保存</el-button>
  220. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  221. </el-footer>
  222. </el-dialog>
  223. <!-- 新增 -->
  224. <el-dialog title="设备故障报备" top="25vh" :close-on-click-modal="false" v-drag :visible.sync="saveModalFlag" width="500px">
  225. <el-form :inline="true" label-position="top" :model="saveModalData" :rules="saveRules" style="margin-left: 7px;margin-top: -5px;">
  226. <el-form-item label="BU" prop="bu" :rules="saveRules.bu">
  227. <el-select v-model="saveModalData.bu" placeholder="请选择" :disabled="modalDisableFlag" @change="buChangedMethod" style="width: 221px">
  228. <el-option
  229. v-for = "i in userBuList"
  230. :key = "i.buNo"
  231. :label = "i.sitename"
  232. :value = "i.buNo">
  233. <span style="float: left;width: 100px">{{ i.sitename }}</span>
  234. <span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
  235. {{ i.buDesc }}
  236. </span>
  237. </el-option>
  238. </el-select>
  239. </el-form-item>
  240. <el-form-item label="反馈单号">
  241. <el-input v-model="saveModalData.feedBackID" disabled style="width: 105px"></el-input>
  242. </el-form-item>
  243. <el-form-item label="报修方式" prop="repairReportingType">
  244. <el-select v-model="saveModalData.repairReportingType" @change="repairReportingTypeChange" style="width: 102px">
  245. <el-option label="设备故障" value="设备故障"></el-option>
  246. <el-option label="TPM红牌" value="TPM红牌"></el-option>
  247. </el-select>
  248. </el-form-item>
  249. </el-form>
  250. <el-form :inline="true" label-position="top" :model="saveModalData" :rules="saveRules" style="margin-left: 7px">
  251. <el-form-item prop="objectID">
  252. <span style="cursor: pointer" slot="label" @click="getBaseList(200)"><a>设备编码</a></span>
  253. <el-input v-model="saveModalData.objectID" style="width: 221px"></el-input>
  254. </el-form-item>
  255. <el-form-item label="设备名称">
  256. <el-input v-model="saveModalData.objectDesc" disabled style="width: 221px"></el-input>
  257. </el-form-item>
  258. </el-form>
  259. <el-form v-if="saveModalData.repairReportingType === '设备故障'" :inline="true" label-position="top" :model="saveModalData" :rules="saveRules" style="margin-left: 7px">
  260. <el-form-item prop="defectID">
  261. <span style="cursor: pointer" slot="label" @click="getBaseList(1055)"><a>故障编码</a></span>
  262. <el-input v-model="saveModalData.defectID" style="width: 221px"></el-input>
  263. </el-form-item>
  264. <el-form-item label="故障名称">
  265. <el-input v-model="saveModalData.defectDesc" disabled style="width: 221px"></el-input>
  266. </el-form-item>
  267. </el-form>
  268. <el-form v-if="saveModalData.repairReportingType === '设备故障'" :inline="true" label-position="top" :model="saveModalData" style="margin-left: 7px">
  269. <el-form-item label="故障日期" :rules="saveRules.defectDate">
  270. <el-date-picker style="width: 221px" v-model="saveModalData.defectDate" type="date" value-format="yyyy-MM-dd" format='yyyy-MM-dd' placeholder="请选择故障日期" :editable=false :picker-options="pickerOptions"></el-date-picker>
  271. </el-form-item>
  272. <!-- <el-form-item label="故障描述">-->
  273. <!-- <el-input v-model="saveModalData.feedBackDesc" style="width: 221px"></el-input>-->
  274. <!-- </el-form-item>-->
  275. </el-form>
  276. <el-form v-else :inline="true" label-position="top" :model="saveModalData" style="margin-left: 7px">
  277. <el-form-item label="反馈时间">
  278. <el-date-picker style="width: 221px" v-model="saveModalData.defectDate" type="date" value-format="yyyy-MM-dd" format='yyyy-MM-dd' placeholder="请选择故障日期" :editable=false :picker-options="pickerOptions"></el-date-picker>
  279. </el-form-item>
  280. <el-form-item label="反馈描述">
  281. <el-input v-model="saveModalData.feedBackDesc" style="width: 221px"></el-input>
  282. </el-form-item>
  283. </el-form>
  284. <el-form :inline="true" label-position="top" :model="saveModalData" :rules="saveRules" style="margin-left: 7px">
  285. <el-form-item label="紧急程度" prop="urgency" :rules="saveRules.urgency">
  286. <el-select v-model="saveModalData.urgency" style="width: 104px">
  287. <el-option label="一般" value="一般"></el-option>
  288. <el-option label="紧急" value="紧急"></el-option>
  289. <el-option label="特急" value="特急"></el-option>
  290. </el-select>
  291. </el-form-item>
  292. <el-form-item v-if="saveModalData.repairReportingType === '设备故障'" label="维修类型" prop="repairType">
  293. <el-select v-model="saveModalData.repairType" style="width: 104px"
  294. :disabled="repairReportingTypeFlag"
  295. @change="repairTypeChange">
  296. <el-option label="换线专家组" value="换线专家组"></el-option>
  297. <el-option label="设备维修组" value="设备维修组"></el-option>
  298. </el-select>
  299. </el-form-item>
  300. <el-form-item :rules="saveRules.planOperatorName">
  301. <span style="cursor: pointer" slot="label" @click="getOperatorList(0)"><a>计划维修人员</a></span>
  302. <el-input v-model="saveModalData.planOperatorName" disabled style="width: 130px"></el-input>
  303. </el-form-item>
  304. <el-form-item :label="' '">
  305. <el-button type="primary" @click="uploadFaultImageModal()">故障图片</el-button>
  306. </el-form-item>
  307. </el-form>
  308. <el-form :inline="true" label-position="top" :model="saveModalData" style="margin-left: 7px">
  309. <el-form-item label="备注">
  310. <el-input v-model="saveModalData.remark" style="width: 456px"></el-input>
  311. </el-form-item>
  312. </el-form>
  313. <el-form :inline="true" label-position="top" :model="saveModalData" style="margin-left: 7px">
  314. <el-form-item v-if="saveModalData.repairType === '换线专家组' && saveModalData.bu && saveModalData.bu.includes('RFID')" label="换线复杂度" prop="lineChangeComplexity" :rules="saveRules.lineChangeComplexity">
  315. <el-select v-model="saveModalData.lineChangeComplexity" placeholder="请选择" clearable style="width: 456px">
  316. <el-option label="换胶,天线,芯片,热压头,检测(大换型)" value="换胶,天线,芯片,热压头,检测(大换型)"></el-option>
  317. <el-option label="换胶、天线、芯片(中换型)" value="换胶、天线、芯片(中换型)"></el-option>
  318. <el-option label="胶、天线、芯片只换其中一项(小换型)" value="胶、天线、芯片只换其中一项(小换型)"></el-option>
  319. </el-select>
  320. </el-form-item>
  321. <el-form-item label="故障描述" prop="feedBackDesc" :rules="saveRules.feedBackDesc">
  322. <el-input type="textarea" v-model="saveModalData.feedBackDesc" :rows="2" resize='none' show-word-limit style="width: 456px"></el-input>
  323. </el-form-item>
  324. </el-form>
  325. <el-footer style="height:35px;margin-top: 50px;text-align:center">
  326. <el-button :loading="saveLoading" type="primary" @click="saveData">保存</el-button>
  327. <el-button type="primary" @click="saveModalFlag = false">关闭</el-button>
  328. </el-footer>
  329. </el-dialog>
  330. <!-- 维修事项 -->
  331. <el-dialog title="事项列表" top="20vh" :close-on-click-modal="false" v-drag :visible.sync="searchFeedMatterFlag" width="800px">
  332. <el-form label-position="top" style="margin-top: 2px; margin-left: 2px;">
  333. <el-button type="primary" @click="createFeedMatterModel">添加</el-button>
  334. </el-form>
  335. <el-table
  336. :data="matterList"
  337. height="300"
  338. border
  339. style="width: 100%;">
  340. <el-table-column
  341. v-for="(item,index) in columnMatterList" :key="index"
  342. :sortable="item.columnSortable"
  343. :prop="item.columnProp"
  344. :header-align="item.headerAlign"
  345. :show-overflow-tooltip="item.showOverflowTooltip"
  346. :align="item.align"
  347. :fixed="item.fixed==''?false:item.fixed"
  348. :min-width="item.columnWidth"
  349. :label="item.columnLabel">
  350. <template slot-scope="scope">
  351. <span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
  352. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  353. </template>
  354. </el-table-column>
  355. <el-table-column
  356. fixed="right"
  357. header-align="center"
  358. align="center"
  359. width="100"
  360. label="操作">
  361. <template slot-scope="scope">
  362. <el-link style="cursor: pointer" @click="updateFeedMatterModel(scope.row)">编辑 |</el-link>
  363. <el-link style="cursor: pointer" @click="deleteFeedMatter(scope.row)">删除</el-link>
  364. </template>
  365. </el-table-column>
  366. </el-table>
  367. <el-footer style="height:35px;margin-top: 10px;text-align:center">
  368. <el-button type="primary" @click="searchFeedMatterFlag = false">关闭</el-button>
  369. </el-footer>
  370. </el-dialog>
  371. <!-- 添加事项 -->
  372. <el-dialog title="新增事项" top="23vh" :close-on-click-modal="false" v-drag :visible.sync="saveFeedMatterFlag" width="500px">
  373. <el-form :inline="true" label-position="top" :rules="saveMatterRules" style="margin-left: 7px;margin-top: -5px;">
  374. <el-form-item label="计划完成日期">
  375. <el-date-picker
  376. style="width: 120px"
  377. v-model="saveMatterData.plannedExecutionDate"
  378. type="date"
  379. value-format="yyyy-MM-dd">
  380. </el-date-picker>
  381. </el-form-item>
  382. <el-form-item label="实际完成日期">
  383. <el-date-picker
  384. style="width: 120px"
  385. v-model="saveMatterData.actualExecutionDate"
  386. type="date"
  387. value-format="yyyy-MM-dd">
  388. </el-date-picker>
  389. </el-form-item>
  390. <el-form-item label="状态" prop="status">
  391. <el-input v-model="saveMatterData.status" style="width: 90px"></el-input>
  392. </el-form-item>
  393. <el-form-item>
  394. <span style="cursor: pointer" slot="label" @click="getBaseList(201)"><a>跟踪人员</a></span>
  395. <el-input v-model="saveMatterData.trackingPersonnel" disabled style="width: 90px"></el-input>
  396. </el-form-item>
  397. </el-form>
  398. <el-form :inline="true" label-position="top" :rules="saveMatterRules" style="margin-left: 7px;">
  399. <el-form-item label="事项描述" prop="eventDesc">
  400. <el-input type="textarea" v-model="saveMatterData.eventDesc" :rows="3" resize='none' show-word-limit style="width: 460px"></el-input>
  401. </el-form-item>
  402. </el-form>
  403. <el-footer style="height:35px;margin-top: 55px;text-align:center">
  404. <el-button type="primary" @click="saveFeedMatter">保存</el-button>
  405. <el-button type="primary" @click="saveFeedMatterFlag = false">关闭</el-button>
  406. </el-footer>
  407. </el-dialog>
  408. <!-- 执行人员清单 -->
  409. <el-dialog title="执行人员清单" :close-on-click-modal="false" v-drag :visible.sync="operatorModelFlag" width="820px">
  410. <div class="rq">
  411. <el-form :inline="true" label-position="top" :model="operatorData">
  412. <el-form-item label="排班日期">
  413. <el-date-picker style="width: 221px" v-model="operatorData.date" type="date" value-format="yyyy-MM-dd" format='yyyy-MM-dd' :editable=false :picker-options="pickerOptions"></el-date-picker>
  414. </el-form-item>
  415. <el-form-item label="班次">
  416. <el-select v-model="operatorData.classesCode" placeholder="请选择" clearable >
  417. <el-option
  418. v-for = "i in classesList"
  419. :key = "i.code"
  420. :label = "i.code+' '+i.description"
  421. :value = "i.code">
  422. </el-option>
  423. </el-select>
  424. </el-form-item>
  425. <el-form-item :label="'所属角色'">
  426. <el-select v-model="operatorData.roleId" placeholder="请选择" style="width: 120px">
  427. <el-option
  428. v-for = "i in roleList"
  429. :key = "i.roleId"
  430. :label = "i.roleName"
  431. :value = "i.roleId">
  432. </el-option>
  433. </el-select>
  434. </el-form-item>
  435. <el-form-item :label="'人员编码'">
  436. <el-input v-model="operatorData.adminID" clearable style="width: 120px"></el-input>
  437. </el-form-item>
  438. <el-form-item :label="'人员姓名'">
  439. <el-input v-model="operatorData.adminName" clearable style="width: 120px"></el-input>
  440. </el-form-item>
  441. <el-form-item :label="' '">
  442. <el-button type="primary" @click="getOperatorList2">查询</el-button>
  443. </el-form-item>
  444. </el-form>
  445. <el-table
  446. :height="300"
  447. :data="operatorList"
  448. @row-dblclick="operatorClick"
  449. border
  450. style="width: 100%;">
  451. <el-table-column
  452. v-for="(item,index) in operatorDetailList" :key="index"
  453. :sortable="item.columnSortable"
  454. :prop="item.columnProp"
  455. :header-align="item.headerAlign"
  456. :show-overflow-tooltip="item.showOverflowTooltip"
  457. :align="item.align"
  458. :fixed="item.fixed==''?false:item.fixed"
  459. :min-width="item.columnWidth"
  460. :label="item.columnLabel">
  461. <template slot-scope="scope">
  462. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  463. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  464. </template>
  465. </el-table-column>
  466. </el-table>
  467. </div>
  468. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  469. <el-button type="primary" @click="operatorModelFlag = false">关闭</el-button>
  470. </el-footer>
  471. </el-dialog>
  472. <!-- chooseList -->
  473. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  474. <upload-file-list ref="feedBackRef" :folder="uploadData.folder" :title="uploadData.title" :upload-status="true" :label="'反馈单号:'" :file-list.sync="fileData.file" :no="uploadData.feedBackID" :upload-dialog.sync="uploadDialog"></upload-file-list>
  475. </div>
  476. </template>
  477. <script>
  478. import {
  479. eamFeedBackSearch,
  480. cancelFeedBack,
  481. saveDefectOrder,
  482. saveEamGzBbData, // 新增方法
  483. getSiteAndBuByUserName,
  484. getFeedBackId, // 获得反馈单号
  485. searchFeedMatterRecord, // 查询维修事项
  486. saveFeedMatter, // 新增维修事项
  487. updateFeedMatter, // 编辑维修事项
  488. deleteFeedMatter, // 删除维修事项
  489. getUserRoleList, // 获取用户角色列表
  490. getOperatorListByOrder, // 获取用户列表
  491. updateEamDefectFeedBackPlanOperator, // 更新计划执行人员
  492. } from "@/api/eam/eam.js"
  493. import {
  494. getTableDefaultListLanguage,
  495. getTableUserListLanguage,
  496. } from "@/api/table.js"
  497. import Chooselist from '@/views/modules/common/Chooselist_eam'
  498. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  499. import {uploadFileList} from '../../../api/base/baseFunction.js';
  500. import UploadFileList from "../common/uploadFileList.vue";
  501. import excel from "@/utils/excel-util.js";
  502. import {getClassesList,
  503. getSchedulingOperator
  504. } from "../../../api/scheduling/scheduling";
  505. export default {
  506. components: {
  507. Chooselist,
  508. UploadFileList
  509. },
  510. watch: {
  511. "saveModalData.bu"(newV, oldV) {
  512. this.saveModalData.repairType = '设备维修组'
  513. this.repairReportingTypeFlag = false // 允许编辑
  514. },
  515. "saveModalData.objectID"(newV, oldV) {
  516. // 设备编码变化时不再自动设置维修类型
  517. }
  518. },
  519. data () {
  520. return {
  521. uploadDialog: false,
  522. repairReportingTypeFlag:true,
  523. chooseReachModelFlag: false,
  524. xdrowData:{},
  525. xdplanOperator:'',
  526. xdplanOperatorName:'',
  527. uploadData: {
  528. folder: '',
  529. title: '',
  530. feedBackID: ''
  531. },
  532. fileData: {
  533. file: [],
  534. orderRef1: '',
  535. orderRef2: '',
  536. orderRef3: '',
  537. orderRef4: '',
  538. folder: ''
  539. },
  540. // 是否收藏
  541. favorite: false,
  542. // 导出 start
  543. exportData: [],
  544. exportName: "维修反馈" + this.dayjs().format('YYYYMMDDHHmmss'),
  545. exportHeader: ["维修反馈"],
  546. exportFooter: [],
  547. exportList: [],
  548. // 导出 end
  549. tagNo: '',
  550. searchData: {
  551. site: '',
  552. userName: this.$store.state.user.name,
  553. feedBackID: '',
  554. objectID: '',
  555. planOperator: '',
  556. functionType: 'C',
  557. status: '',
  558. startDate: '',
  559. defectDesc: '',
  560. endDate: '',
  561. page: 1,
  562. limit: 10,
  563. buDesc: '',
  564. urgency: '',
  565. repairReportingType: '',
  566. repairType: '',
  567. feedbackBy: '',
  568. matterTrackingFlag: '',
  569. },
  570. height: 200,
  571. pageIndex: 1,
  572. pageSize: 50,
  573. totalPage: 0,
  574. dataList: [],
  575. dataListLoading: false,
  576. dataListSelections: [],
  577. modalFlag: false,
  578. modalDisableFlag: false,
  579. saveModalFlag: false,
  580. saveModalDisableFlag: false,
  581. modalData: {
  582. site: '',
  583. bu: '',
  584. feedBackID: '',
  585. feedBackDesc: '',
  586. objectID: '',
  587. objectDesc: '',
  588. defectID: '',
  589. defectDesc: '',
  590. planDate: '',
  591. planOperator: '',
  592. createdBy: '',
  593. repairReportingType: '',
  594. repairType: ''
  595. },
  596. saveModalData: {
  597. site: '',
  598. bu: '',
  599. feedBackID: '',
  600. feedBackDesc: '',
  601. objectID: '',
  602. objectDesc: '',
  603. defectID: '',
  604. defectDesc: '',
  605. defectDate: '',
  606. remark: '',
  607. urgency: '',
  608. status: '',
  609. createdBy: '',
  610. updateBy: '',
  611. repairReportingType: '',
  612. repairType: '',
  613. planOperator: '',
  614. planOperatorName: '',
  615. lineChangeComplexity: ''
  616. },
  617. classesList: [],
  618. operatorData: {
  619. site: '',
  620. bu: '',
  621. adminID: '',
  622. adminName: '',
  623. roleId: '',
  624. roleName: '',
  625. functionType: 'C'
  626. },
  627. departmentList: [],
  628. matterList: [],
  629. roleList: [],
  630. operatorList: [],
  631. // 展示列集
  632. columnList: [
  633. {
  634. userId: this.$store.state.user.name,
  635. functionId: 101004001,
  636. serialNumber: '101004001Table1FeedBackID',
  637. tableId: "101004001Table1",
  638. tableName: "维修反馈表",
  639. columnProp: 'feedBackID',
  640. headerAlign: "center",
  641. align: "center",
  642. columnLabel: '反馈单号',
  643. columnHidden: false,
  644. columnImage: false,
  645. columnSortable: false,
  646. sortLv: 0,
  647. status: true,
  648. fixed: '',
  649. columnWidth: 95,
  650. },
  651. {
  652. userId: this.$store.state.user.name,
  653. functionId: 101004001,
  654. serialNumber: '101004001Table1FeedBackDesc',
  655. tableId: "101004001Table1",
  656. tableName: "维修反馈表",
  657. columnProp: 'feedBackDesc',
  658. headerAlign: "center",
  659. align: "center",
  660. columnLabel: '反馈描述',
  661. columnHidden: false,
  662. columnImage: false,
  663. columnSortable: false,
  664. sortLv: 0,
  665. status: true,
  666. fixed: '',
  667. columnWidth: 95,
  668. },
  669. {
  670. userId: this.$store.state.user.name,
  671. functionId: 101004001,
  672. serialNumber: '101004001Table1DefectID',
  673. tableId: "101004001Table1",
  674. tableName: "维修反馈表",
  675. columnProp: 'defectID',
  676. headerAlign: "center",
  677. align: "center",
  678. columnLabel: '故障代码',
  679. columnHidden: false,
  680. columnImage: false,
  681. columnSortable: false,
  682. sortLv: 0,
  683. status: true,
  684. fixed: '',
  685. columnWidth: 95,
  686. },
  687. {
  688. userId: this.$store.state.user.name,
  689. functionId: 101004001,
  690. serialNumber: '101004001Table1DefectDesc',
  691. tableId: "101004001Table1",
  692. tableName: "维修反馈表",
  693. columnProp: 'defectDesc',
  694. headerAlign: "center",
  695. align: "center",
  696. columnLabel: '故障原因',
  697. columnHidden: false,
  698. columnImage: false,
  699. columnSortable: false,
  700. sortLv: 0,
  701. status: true,
  702. fixed: '',
  703. columnWidth: 95,
  704. },
  705. {
  706. userId: this.$store.state.user.name,
  707. functionId: 101004001,
  708. serialNumber: '101004001Table1ObjectID',
  709. tableId: "101004001Table1",
  710. tableName: "维修反馈表",
  711. columnProp: 'objectID',
  712. headerAlign: "center",
  713. align: "center",
  714. columnLabel: '设备编码',
  715. columnHidden: false,
  716. columnImage: false,
  717. columnSortable: false,
  718. sortLv: 0,
  719. status: true,
  720. fixed: '',
  721. columnWidth: 95,
  722. },
  723. {
  724. userId: this.$store.state.user.name,
  725. functionId: 101004001,
  726. serialNumber: '101004001Table1ObjectDesc',
  727. tableId: "101004001Table1",
  728. tableName: "维修反馈表",
  729. columnProp: 'objectDesc',
  730. headerAlign: "center",
  731. align: "center",
  732. columnLabel: '设备名称',
  733. columnHidden: false,
  734. columnImage: false,
  735. columnSortable: false,
  736. sortLv: 0,
  737. status: true,
  738. fixed: '',
  739. columnWidth: 95,
  740. },
  741. {
  742. userId: this.$store.state.user.name,
  743. functionId: 101004001,
  744. serialNumber: '101004001Table1LocationName',
  745. tableId: "101004001Table1",
  746. tableName: "维修反馈表",
  747. columnProp: 'locationName',
  748. headerAlign: "center",
  749. align: "left",
  750. columnLabel: '设备区域',
  751. columnHidden: false,
  752. columnImage: false,
  753. columnSortable: false,
  754. sortLv: 0,
  755. status: true,
  756. fixed: '',
  757. columnWidth: 120,
  758. },
  759. {
  760. userId: this.$store.state.user.name,
  761. functionId: 101004001,
  762. serialNumber: '101004001TableDepartment',
  763. tableId: "101004001Table1",
  764. tableName: "维修反馈表",
  765. columnProp: 'department',
  766. headerAlign: "center",
  767. align: "left",
  768. columnLabel: '部门',
  769. columnHidden: false,
  770. columnImage: false,
  771. columnSortable: false,
  772. sortLv: 0,
  773. status: true,
  774. fixed: '',
  775. columnWidth: 113,
  776. },
  777. {
  778. userId: this.$store.state.user.name,
  779. functionId: 101004001,
  780. serialNumber: '101004001Table1Status',
  781. tableId: "101004001Table1",
  782. tableName: "维修反馈表",
  783. columnProp: 'status',
  784. headerAlign: "center",
  785. align: "center",
  786. columnLabel: '状态',
  787. columnHidden: false,
  788. columnImage: false,
  789. columnSortable: false,
  790. sortLv: 0,
  791. status: true,
  792. fixed: '',
  793. columnWidth: 95,
  794. },
  795. {
  796. userId: this.$store.state.user.name,
  797. functionId: 101004001,
  798. serialNumber: '101004001Table1PlanOperatorName',
  799. tableId: "101004001Table1",
  800. tableName: "维修反馈表",
  801. columnProp: 'planOperatorName',
  802. headerAlign: "center",
  803. align: "center",
  804. columnLabel: '计划执行人员',
  805. columnHidden: false,
  806. columnImage: false,
  807. columnSortable: false,
  808. sortLv: 0,
  809. status: true,
  810. fixed: '',
  811. columnWidth: 95,
  812. },
  813. {
  814. userId: this.$store.state.user.name,
  815. functionId: 101004001,
  816. serialNumber: '101004001Table1ActualOperatorName',
  817. tableId: "101004001Table1",
  818. tableName: "维修反馈表",
  819. columnProp: 'actualOperatorName',
  820. headerAlign: "center",
  821. align: "center",
  822. columnLabel: '实际执行人员',
  823. columnHidden: false,
  824. columnImage: false,
  825. columnSortable: false,
  826. sortLv: 0,
  827. status: true,
  828. fixed: '',
  829. columnWidth: 95,
  830. },
  831. {
  832. userId: this.$store.state.user.name,
  833. functionId: 101004001,
  834. serialNumber: '101004001Table1DefectDate',
  835. tableId: "101004001Table1",
  836. tableName: "维修反馈表",
  837. columnProp: 'defectDate',
  838. headerAlign: "center",
  839. align: "center",
  840. columnLabel: '故障发现日期',
  841. columnHidden: false,
  842. columnImage: false,
  843. columnSortable: false,
  844. sortLv: 0,
  845. status: true,
  846. fixed: '',
  847. columnWidth: 95,
  848. },
  849. {
  850. userId: this.$store.state.user.name,
  851. functionId: 101004001,
  852. serialNumber: '101004001Table1CreatedDate',
  853. tableId: "101004001Table1",
  854. tableName: "维修反馈表",
  855. columnProp: 'createdDate',
  856. headerAlign: "center",
  857. align: "center",
  858. columnLabel: '反馈时间',
  859. columnHidden: false,
  860. columnImage: false,
  861. columnSortable: false,
  862. sortLv: 0,
  863. status: true,
  864. fixed: '',
  865. columnWidth: 95,
  866. },
  867. {
  868. userId: this.$store.state.user.name,
  869. functionId: 101004001,
  870. serialNumber: '101004001Table1FinishDate',
  871. tableId: "101004001Table1",
  872. tableName: "维修反馈表",
  873. columnProp: 'finishDate',
  874. headerAlign: "center",
  875. align: "center",
  876. columnLabel: '维修时间',
  877. columnHidden: false,
  878. columnImage: false,
  879. columnSortable: false,
  880. sortLv: 0,
  881. status: true,
  882. fixed: '',
  883. columnWidth: 95,
  884. },
  885. {
  886. userId: this.$store.state.user.name,
  887. functionId: 101004001,
  888. serialNumber: '101004001Table1CreatedBy',
  889. tableId: "101004001Table1",
  890. tableName: "维修反馈表",
  891. columnProp: 'createdBy',
  892. headerAlign: "center",
  893. align: "center",
  894. columnLabel: '报修人员账号',
  895. columnHidden: false,
  896. columnImage: false,
  897. columnSortable: false,
  898. sortLv: 0,
  899. status: true,
  900. fixed: '',
  901. columnWidth: 95,
  902. },
  903. {
  904. userId: this.$store.state.user.name,
  905. functionId: 101004001,
  906. serialNumber: '101004001Table1FeedbackBy',
  907. tableId: "101004001Table1",
  908. tableName: "维修反馈表",
  909. columnProp: 'feedbackBy',
  910. headerAlign: "center",
  911. align: "center",
  912. columnLabel: '报修人员名称',
  913. columnHidden: false,
  914. columnImage: false,
  915. columnSortable: false,
  916. sortLv: 0,
  917. status: true,
  918. fixed: '',
  919. columnWidth: 95,
  920. },
  921. {
  922. userId: this.$store.state.user.name,
  923. functionId: 101004001,
  924. serialNumber: '101004001Table1Remark',
  925. tableId: "101004001Table1",
  926. tableName: "维修反馈表",
  927. columnProp: 'remark',
  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. columnWidth: 95,
  938. },
  939. ],
  940. columnMatterList: [
  941. {
  942. columnProp: 'eventDesc',
  943. headerAlign: "center",
  944. align: "left",
  945. columnLabel: '事项描述',
  946. columnHidden: false,
  947. columnImage: false,
  948. status: true,
  949. fixed: '',
  950. columnWidth: 250,
  951. },
  952. {
  953. columnProp: 'status',
  954. headerAlign: "center",
  955. align: "left",
  956. columnLabel: '状态',
  957. columnHidden: false,
  958. columnImage: false,
  959. status: true,
  960. fixed: '',
  961. columnWidth: 80,
  962. },
  963. {
  964. columnProp: 'plannedExecutionDate',
  965. headerAlign: 'center',
  966. align: 'center',
  967. columnLabel: '计划完成日期',
  968. columnHidden: false,
  969. columnImage: false,
  970. status: true,
  971. fixed: '',
  972. columnWidth: 120,
  973. },
  974. {
  975. columnProp: 'actualExecutionDate',
  976. headerAlign: 'center',
  977. align: 'center',
  978. columnLabel: '实际完成日期',
  979. columnHidden: false,
  980. columnImage: false,
  981. status: true,
  982. fixed: '',
  983. columnWidth: 120,
  984. },
  985. {
  986. columnProp: 'trackingPersonnel',
  987. headerAlign: 'center',
  988. align: 'center',
  989. columnLabel: '跟踪人员',
  990. columnHidden: false,
  991. columnImage: false,
  992. status: true,
  993. fixed: '',
  994. columnWidth: 100,
  995. },
  996. ],
  997. pickerOptions: {
  998. disabledDate(time) {
  999. let curDate = new Date().getTime()
  1000. let curD = new Date()
  1001. /* 获取当前月份 */
  1002. let curMonth = curD.getMonth()
  1003. /* 生成实际的月份: 由于curMonth会比实际月份小1, 故需加1 */
  1004. curD.setMonth(curMonth + 1)
  1005. /* 将日期设置为0, 这里为什么要这样设置, 我不知道原因, 这是从网上学来的 */
  1006. curD.setDate(0)
  1007. /* 返回当月的天数 */
  1008. let days = curD.getDate()
  1009. let three = days * 24 * 3600 * 1000
  1010. let threeMonths = curDate - three
  1011. return time.getTime() > Date.now() || time.getTime() < threeMonths
  1012. },
  1013. },
  1014. operatorDetailList: [
  1015. {
  1016. columnProp: 'adminID',
  1017. headerAlign: "center",
  1018. align: "center",
  1019. columnLabel: '用户账号',
  1020. columnHidden: false,
  1021. columnImage: false,
  1022. columnSortable: false,
  1023. sortLv: 0,
  1024. status: true,
  1025. fixed: '',
  1026. },
  1027. {
  1028. columnProp: 'adminName',
  1029. headerAlign: "center",
  1030. align: "center",
  1031. columnLabel: '用户名称',
  1032. columnHidden: false,
  1033. columnImage: false,
  1034. columnSortable: false,
  1035. sortLv: 0,
  1036. status: true,
  1037. fixed: '',
  1038. },
  1039. {
  1040. columnProp: 'planOrderCount',
  1041. headerAlign: "center",
  1042. align: "right",
  1043. columnLabel: '计划分配工单数',
  1044. columnHidden: false,
  1045. columnImage: false,
  1046. columnSortable: false,
  1047. sortLv: 0,
  1048. status: true,
  1049. fixed: '',
  1050. },
  1051. {
  1052. columnProp: 'actualOrderCount',
  1053. headerAlign: "center",
  1054. align: "right",
  1055. columnLabel: '维修中工单数',
  1056. columnHidden: false,
  1057. columnImage: false,
  1058. columnSortable: false,
  1059. sortLv: 0,
  1060. status: true,
  1061. fixed: '',
  1062. },
  1063. {
  1064. columnProp: 'loadRate',
  1065. headerAlign: "center",
  1066. align: "right",
  1067. columnLabel: '负荷率(%)',
  1068. columnHidden: false,
  1069. columnImage: false,
  1070. columnSortable: false,
  1071. sortLv: 0,
  1072. status: true,
  1073. fixed: '',
  1074. },
  1075. ],
  1076. saveRules: {
  1077. objectID: [
  1078. {
  1079. required: true,
  1080. message: ' ',
  1081. trigger: ['blur','change']
  1082. }
  1083. ],
  1084. objectDesc: [
  1085. {
  1086. required: true,
  1087. message: ' ',
  1088. trigger: ['blur','change']
  1089. }
  1090. ],
  1091. defectID: [
  1092. {
  1093. required: true,
  1094. message: ' ',
  1095. trigger: ['blur','change']
  1096. }
  1097. ],
  1098. defectDate: [
  1099. {
  1100. required: true,
  1101. message: ' ',
  1102. trigger: ['blur','change']
  1103. }
  1104. ],
  1105. defectDesc: [
  1106. {
  1107. required: true,
  1108. message: ' ',
  1109. trigger: ['blur','change']
  1110. }
  1111. ],
  1112. urgency: [
  1113. {
  1114. required: true,
  1115. message: ' ',
  1116. trigger: ['blur','change']
  1117. }
  1118. ],
  1119. bu: [
  1120. {
  1121. required: true,
  1122. message: ' ',
  1123. trigger: ['blur','change']
  1124. }
  1125. ],
  1126. repairReportingType: [
  1127. {
  1128. required: true,
  1129. message: ' ',
  1130. trigger: ['blur','change']
  1131. }
  1132. ],
  1133. repairType: [
  1134. {
  1135. required: true,
  1136. message: ' ',
  1137. trigger: ['blur','change']
  1138. }
  1139. ],
  1140. planOperatorName: [
  1141. {
  1142. required: true,
  1143. message: ' ',
  1144. trigger: ['blur','change']
  1145. }
  1146. ],
  1147. feedBackDesc: [
  1148. {
  1149. required: true,
  1150. message: ' ',
  1151. trigger: ['blur','change']
  1152. }
  1153. ],
  1154. lineChangeComplexity: [
  1155. {
  1156. required: true,
  1157. message: ' ',
  1158. trigger: ['blur','change']
  1159. }
  1160. ]
  1161. },
  1162. saveMatterRules: {
  1163. eventDesc: [
  1164. {
  1165. required: true,
  1166. message: ' ',
  1167. trigger: ['blur','change']
  1168. }
  1169. ],
  1170. status: [
  1171. {
  1172. required: true,
  1173. message: ' ',
  1174. trigger: ['blur','change']
  1175. }
  1176. ],
  1177. },
  1178. matterData: {
  1179. site: '',
  1180. bu: '',
  1181. feedBackId: ''
  1182. },
  1183. saveMatterData: {
  1184. flag: '',
  1185. id: '',
  1186. site: '',
  1187. bu: '',
  1188. feedBackId: '',
  1189. eventDesc: '',
  1190. status: '',
  1191. plannedExecutionDate: '',
  1192. actualExecutionDate: '',
  1193. trackingPersonnel: '',
  1194. createBy: '',
  1195. updateBy: ''
  1196. },
  1197. saveLoading: false,
  1198. userBuList: [],
  1199. authSearch: false,
  1200. authSave: false,
  1201. authCancel: false,
  1202. authRelease: false,
  1203. menuId: this.$route.meta.menuId,
  1204. saveFeedMatterFlag: false,
  1205. searchFeedMatterFlag: false,
  1206. operatorModelFlag: false,
  1207. }
  1208. },
  1209. mounted () {
  1210. this.$nextTick(() => {
  1211. this.height = window.innerHeight - 173
  1212. })
  1213. },
  1214. created () {
  1215. // 按钮控制
  1216. this.getButtonAuthData()
  1217. // 获取用户的 site 和 bu
  1218. this.getSiteAndBuByUserName()
  1219. // 校验用户是否收藏
  1220. this.favoriteIsOk()
  1221. // 动态列
  1222. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  1223. if (!this.authSearch) {
  1224. // 获取数据列表
  1225. this.getDataList()
  1226. }
  1227. // 获取用户角色
  1228. this.getUserRoleList()
  1229. },
  1230. methods: {
  1231. // 获取用户的bu
  1232. getSiteAndBuByUserName () {
  1233. let tempData = {
  1234. username: this.$store.state.user.name,
  1235. }
  1236. getSiteAndBuByUserName(tempData).then(({data}) => {
  1237. if (data.code === 0) {
  1238. this.userBuList = data.rows
  1239. }
  1240. })
  1241. },
  1242. // 获取用户角色
  1243. getUserRoleList () {
  1244. getUserRoleList().then(({data}) => {
  1245. if (data.code === 0) {
  1246. this.roleList = data.rows
  1247. } else {
  1248. this.roleList = []
  1249. }
  1250. })
  1251. },
  1252. buChangedMethod(){
  1253. if (this.saveModalData.bu == '2_01-Label'){
  1254. this.repairReportingTypeFlag = true
  1255. } else {
  1256. this.repairReportingTypeFlag = false // 允许编辑
  1257. }
  1258. },
  1259. // 维修类型变化事件
  1260. repairTypeChange() {
  1261. // 当用户手动更改维修类型时的处理逻辑
  1262. },
  1263. // 报修方式改变事件
  1264. repairReportingTypeChange () {
  1265. this.saveModalData.defectID = ''
  1266. this.saveModalData.defectDesc = ''
  1267. if (this.saveModalData.repairReportingType === 'TPM红牌') {
  1268. this.saveModalData.defectID = '***'
  1269. this.saveModalData.repairType = '设备维修组'
  1270. }
  1271. },
  1272. reach () {
  1273. console.log('1')
  1274. if (this.xdplanOperatorName === '' || this.xdplanOperatorName == null) {
  1275. this.$message.warning('请选择计划执行人员!')
  1276. return
  1277. }
  1278. console.log('2')
  1279. let tempData = {
  1280. ...this.xdrowData,
  1281. planOperator: this.xdplanOperator,
  1282. planOperatorName: this.xdplanOperatorName
  1283. }
  1284. updateEamDefectFeedBackPlanOperator(tempData).then()
  1285. this.chooseReachModelFlag = false
  1286. this.createDefectOrderModel(tempData)
  1287. },
  1288. // 新增模态框
  1289. saveModal () {
  1290. this.saveModalData.bu = ''
  1291. // 获取反馈单号
  1292. getFeedBackId().then(({data}) => {
  1293. if (data.code === 0) {
  1294. this.saveModalData = {
  1295. site: '',
  1296. bu: this.userBuList[0].buNo,
  1297. feedBackID: data.feedBackID,
  1298. feedBackDesc: '',
  1299. objectID: '',
  1300. objectDesc: '',
  1301. defectID: '',
  1302. defectDesc: '',
  1303. defectDate: new Date(),
  1304. remark: '',
  1305. urgency: '',
  1306. status: '已录入',
  1307. createdBy: this.$store.state.user.name,
  1308. repairReportingType: '设备故障',
  1309. repairType: '设备维修组',
  1310. planOperator: '',
  1311. planOperatorName: '',
  1312. lineChangeComplexity: ''
  1313. }
  1314. this.fileData = {
  1315. file: [],
  1316. orderRef1: '',
  1317. orderRef2: '',
  1318. orderRef3: '',
  1319. orderRef4: '',
  1320. folder: ''
  1321. }
  1322. if (this.saveModalData.bu == '2_01-Label'){
  1323. this.repairReportingTypeFlag=true
  1324. } else {
  1325. this.repairReportingTypeFlag=false
  1326. }
  1327. this.saveModalDisableFlag = false
  1328. this.saveModalFlag = true
  1329. } else {
  1330. this.$alert(data.msg, '错误', {
  1331. confirmButtonText: '确定'
  1332. })
  1333. }
  1334. })
  1335. },
  1336. // 新增/编辑方法
  1337. saveData () {
  1338. if (this.saveModalData.bu === '' || this.saveModalData.bu == null) {
  1339. this.$message.warning('请选择BU!')
  1340. return
  1341. }
  1342. if (this.saveModalData.objectID === '' || this.saveModalData.objectID == null) {
  1343. this.$message.warning("请选择设备!")
  1344. return;
  1345. }
  1346. if (this.saveModalData.defectID === '' || this.saveModalData.defectID == null) {
  1347. this.$message.warning("请选择故障!")
  1348. return;
  1349. }
  1350. if (this.saveModalData.urgency === '' || this.saveModalData.urgency == null) {
  1351. this.$message.warning("请选择紧急程度!")
  1352. return;
  1353. }
  1354. if (this.saveModalData.repairReportingType === '' || this.saveModalData.repairReportingType == null) {
  1355. this.$message.warning("请选择报修方式!")
  1356. return;
  1357. }
  1358. if (this.saveModalData.repairType === '' || this.saveModalData.repairType == null) {
  1359. this.$message.warning("请选择维修类型!")
  1360. return;
  1361. }
  1362. if (this.saveModalData.planOperatorName === '' || this.saveModalData.planOperatorName == null) {
  1363. this.$message.warning("请选择计划执行人员!")
  1364. return;
  1365. }
  1366. if (this.saveModalData.repairType === '换线专家组' &&
  1367. this.saveModalData.bu && this.saveModalData.bu.includes('RFID') &&
  1368. (this.saveModalData.lineChangeComplexity === '' || this.saveModalData.lineChangeComplexity == null)) {
  1369. this.$message.warning("请填写换线复杂度!")
  1370. return;
  1371. }
  1372. if (this.saveModalData.feedBackDesc === '' || this.saveModalData.feedBackDesc == null) {
  1373. this.$message.warning("请填写故障描述!")
  1374. return;
  1375. }
  1376. if (this.saveModalData.defectDate === '' || this.saveModalData.defectDate == null) {
  1377. this.$message.warning("请选择故障时间!")
  1378. return;
  1379. }
  1380. this.saveLoading = true
  1381. this.fileData.orderRef1 = this.saveModalData.bu.split('_')[0]
  1382. this.fileData.orderRef2 = this.saveModalData.feedBackID
  1383. this.fileData.orderRef3 = this.uploadData.folder
  1384. this.fileData.orderRef4 = this.saveModalData.bu.split('_')[1]
  1385. this.fileData.folder = this.uploadData.folder
  1386. saveEamGzBbData(this.saveModalData).then(({data}) => {
  1387. if (data && data.code === 0) {
  1388. if (this.fileData.file.length > 0) { // 上传文件
  1389. let tempData = new FormData()
  1390. for (let i in this.fileData) {
  1391. if (i === 'file') {
  1392. for (let j = 0; j < this.fileData.file.length; j++) {
  1393. tempData.append("file", this.fileData.file[j].raw)
  1394. }
  1395. continue
  1396. }
  1397. tempData.append(i, this.fileData[i])
  1398. }
  1399. uploadFileList(tempData).then(({data}) => {
  1400. if (data.code !== 0) {
  1401. this.$message.warning(data.msg)
  1402. }
  1403. })
  1404. }
  1405. this.getDataList()
  1406. this.saveModalFlag = false
  1407. this.$message({
  1408. message: '操作成功',
  1409. type: 'success',
  1410. duration: 1500,
  1411. onClose: () => {}
  1412. })
  1413. } else {
  1414. this.$alert(data.msg, '错误', {
  1415. confirmButtonText: '确定'
  1416. })
  1417. }
  1418. this.saveLoading = false
  1419. })
  1420. },
  1421. // 获取数据列表
  1422. getDataList () {
  1423. this.dataListLoading = true
  1424. this.searchData.limit = this.pageSize
  1425. this.searchData.page = this.pageIndex
  1426. eamFeedBackSearch(this.searchData).then(({data}) => {
  1427. if (data.code === 0) {
  1428. this.dataList = data.page.list
  1429. this.pageIndex = data.page.currPage
  1430. this.pageSize = data.page.pageSize
  1431. this.totalPage = data.page.totalCount
  1432. }
  1433. }).catch(() => {
  1434. this.$message.error('查询异常')
  1435. }).finally(() => {
  1436. this.dataListLoading = false
  1437. })
  1438. },
  1439. // 每页数
  1440. sizeChangeHandle (val) {
  1441. this.pageSize = val
  1442. this.pageIndex = 1
  1443. this.getDataList()
  1444. },
  1445. // 当前页
  1446. currentChangeHandle (val) {
  1447. this.pageIndex = val
  1448. this.getDataList()
  1449. },
  1450. // 多选
  1451. selectionChangeHandle (val) {
  1452. this.dataListSelections = val
  1453. },
  1454. cancelFeedBack (row) {
  1455. this.$confirm(`是否取消选定反馈单?`, '提示', {
  1456. confirmButtonText: '确定',
  1457. cancelButtonText: '取消',
  1458. type: 'warning'
  1459. }).then(() => {
  1460. cancelFeedBack(row).then(({data}) => {
  1461. if (data && data.code === 0) {
  1462. this.getDataList()
  1463. this.$message({
  1464. message: '操作成功',
  1465. type: 'success',
  1466. duration: 1500,
  1467. onClose: () => {}
  1468. })
  1469. } else {
  1470. this.$alert(data.msg, '错误', {
  1471. confirmButtonText: '确定'
  1472. })
  1473. }
  1474. })
  1475. }).catch(() => {
  1476. })
  1477. },
  1478. createDefectOrderModel1(row){
  1479. this.xdplanOperator = row.planOperator
  1480. this.xdplanOperatorName = row.planOperatorName
  1481. this.chooseReachModelFlag=true
  1482. this.xdrowData = row
  1483. this.saveModalData.bu = row.site+'_'+row.buNo
  1484. },
  1485. // 下达
  1486. createDefectOrderModel (row) {
  1487. // this.$confirm(`是否下达反馈单?`, '提示', {
  1488. // confirmButtonText: '确定',
  1489. // cancelButtonText: '取消',
  1490. // type: 'warning'
  1491. // }).then(() => {
  1492. // saveDefectOrder(row).then(({data}) => {
  1493. // if (data && data.code === 0) {
  1494. // this.getDataList()
  1495. // this.$message({
  1496. // message: '操作成功',
  1497. // type: 'success',
  1498. // duration: 1500,
  1499. // onClose: () => {}
  1500. // })
  1501. // } else {
  1502. // this.$alert(data.msg, '错误', {
  1503. // confirmButtonText: '确定'
  1504. // })
  1505. // }
  1506. // })
  1507. // })
  1508. saveDefectOrder(row).then(({data}) => {
  1509. if (data && data.code === 0) {
  1510. this.getDataList()
  1511. this.$message({
  1512. message: '操作成功',
  1513. type: 'success',
  1514. duration: 1500,
  1515. onClose: () => {}
  1516. })
  1517. } else {
  1518. this.$alert(data.msg, '错误', {
  1519. confirmButtonText: '确定'
  1520. })
  1521. }
  1522. })
  1523. },
  1524. // 查计划事项
  1525. searchFeedMatterRecord (row) {
  1526. this.matterData = {
  1527. site: row.site,
  1528. buNo: row.buNo,
  1529. feedBackId: row.feedBackID
  1530. }
  1531. this.searchFeedMatterRecord2()
  1532. },
  1533. searchFeedMatterRecord2 () {
  1534. searchFeedMatterRecord(this.matterData).then(({data}) => {
  1535. if (data && data.code === 0) {
  1536. this.matterList = data.rows
  1537. this.searchFeedMatterFlag = true
  1538. } else {
  1539. this.matterList = []
  1540. }
  1541. })
  1542. },
  1543. // 新增事项模态框
  1544. createFeedMatterModel () {
  1545. this.saveMatterData = {
  1546. flag: '1',
  1547. id: '',
  1548. site: this.matterData.site,
  1549. buNo: this.matterData.buNo,
  1550. feedBackId: this.matterData.feedBackId,
  1551. eventDesc: '',
  1552. status: '',
  1553. plannedExecutionDate: '',
  1554. actualExecutionDate: '',
  1555. trackingPersonnel: '',
  1556. createBy: this.$store.state.user.name
  1557. }
  1558. this.saveFeedMatterFlag = true
  1559. },
  1560. // 编辑事项模态框
  1561. updateFeedMatterModel (row) {
  1562. this.saveMatterData = {
  1563. flag: '2',
  1564. id: row.id,
  1565. site: row.site,
  1566. buNo: row.buNo,
  1567. feedBackId: row.feedBackId,
  1568. eventDesc: row.eventDesc,
  1569. status: row.status,
  1570. plannedExecutionDate: row.plannedExecutionDate,
  1571. actualExecutionDate: row.actualExecutionDate,
  1572. trackingPersonnel: row.trackingPersonnel,
  1573. updateBy: this.$store.state.user.name
  1574. }
  1575. this.saveFeedMatterFlag = true
  1576. },
  1577. async getClassesList() {
  1578. let split = this.saveModalData.bu.split('_')
  1579. let params = {
  1580. site: split[0],
  1581. buNo: split[1]
  1582. }
  1583. await getClassesList(params).then(({data}) => {
  1584. if (data.code === 0) {
  1585. this.classesList = data.rows
  1586. let h = new Date().getHours();
  1587. this.classesList.forEach((options)=>{
  1588. //判断当前时间是白班|夜班
  1589. if (h >= 8 && h < 20){
  1590. if (options.description.includes('白班')){
  1591. this.$set(this.operatorData,'classesCode',options.code)
  1592. }
  1593. } else {
  1594. if (options.description.includes('夜班')){
  1595. this.$set(this.operatorData,'classesCode',options.code)
  1596. }
  1597. }
  1598. })
  1599. } else {
  1600. this.$message.warning(data.msg)
  1601. }
  1602. }).catch((error)=>{
  1603. this.$message.error(error)
  1604. })
  1605. },
  1606. // 新增事项
  1607. saveFeedMatter () {
  1608. if (this.saveMatterData.eventDesc === '' || this.saveMatterData.eventDesc == null) {
  1609. this.$message.warning('请填写事项描述!')
  1610. return
  1611. }
  1612. if (this.saveMatterData.status === '' || this.saveMatterData.status == null) {
  1613. this.$message.warning('请填写状态!')
  1614. return
  1615. }
  1616. if (this.saveMatterData.flag === '1') {
  1617. saveFeedMatter(this.saveMatterData).then(({data}) => {
  1618. if (data && data.code === 0) {
  1619. this.searchFeedMatterRecord2()
  1620. this.getDataList()
  1621. this.saveFeedMatterFlag = false
  1622. this.$message({
  1623. message: '操作成功',
  1624. type: 'success',
  1625. duration: 1500,
  1626. onClose: () => {}
  1627. })
  1628. } else {
  1629. this.$alert(data.msg, '错误', {
  1630. confirmButtonText: '确定'
  1631. })
  1632. }
  1633. })
  1634. } else {
  1635. updateFeedMatter(this.saveMatterData).then(({data}) => {
  1636. if (data && data.code === 0) {
  1637. this.searchFeedMatterRecord2()
  1638. this.saveFeedMatterFlag = false
  1639. this.$message({
  1640. message: '操作成功',
  1641. type: 'success',
  1642. duration: 1500,
  1643. onClose: () => {}
  1644. })
  1645. } else {
  1646. this.$alert(data.msg, '错误', {
  1647. confirmButtonText: '确定'
  1648. })
  1649. }
  1650. })
  1651. }
  1652. },
  1653. // 删除事项
  1654. deleteFeedMatter (row) {
  1655. this.$confirm(`是否删除该事项?`, '提示', {
  1656. confirmButtonText: '确定',
  1657. cancelButtonText: '取消',
  1658. type: 'warning'
  1659. }).then(() => {
  1660. deleteFeedMatter(row).then(({data}) => {
  1661. if (data && data.code === 0) {
  1662. this.searchFeedMatterRecord2()
  1663. this.$message({
  1664. message: '操作成功',
  1665. type: 'success',
  1666. duration: 1500,
  1667. onClose: () => {}
  1668. })
  1669. } else {
  1670. this.$alert(data.msg, '错误', {
  1671. confirmButtonText: '确定'
  1672. })
  1673. }
  1674. })
  1675. })
  1676. },
  1677. // 获取基础数据列表S
  1678. getBaseList (val,type) {
  1679. this.tagNo = val
  1680. this.$nextTick(() => {
  1681. let strVal = ''
  1682. let conSql = ''
  1683. if (val === 201) {
  1684. strVal = this.saveMatterData.trackingPersonnel
  1685. this.$refs.baseList.init(val, strVal)
  1686. }
  1687. if (val === 200) {
  1688. strVal = this.saveModalData.objectID
  1689. if (this.saveModalData.bu === null || this.saveModalData.bu === '') {
  1690. this.$message.warning("请选择BU!")
  1691. return
  1692. } else {
  1693. conSql = " and bu_no = '" + this.saveModalData.bu.split('_')[1] + "'"
  1694. this.$refs.baseList.init(val, strVal, conSql)
  1695. }
  1696. }
  1697. if (val === 1055) {
  1698. strVal = this.saveModalData.defectID
  1699. this.$refs.baseList.init(val, strVal)
  1700. }
  1701. if (val === 1058) {
  1702. strVal = this.saveModalData.defectID
  1703. this.$refs.baseList.init(val, strVal)
  1704. }
  1705. })
  1706. },
  1707. // 列表方法的回调
  1708. async getBaseData (val) {
  1709. if (this.tagNo === 201) {
  1710. this.saveMatterData.trackingPersonnel = val.username
  1711. }
  1712. if (this.tagNo === 200) {
  1713. this.saveModalData.objectID = val.ObjectID
  1714. this.saveModalData.objectDesc = val.ObjectDesc
  1715. if (val.deviceManager != '' && val.deviceManager != null) {
  1716. let peopleList = val.deviceManager.split(';')
  1717. await this.getOperatorList(1)
  1718. peopleList.forEach((username) => {
  1719. this.operatorList.forEach((item) => {
  1720. if (item.adminID === username) {
  1721. this.saveModalData.planOperator = item.adminID
  1722. this.saveModalData.planOperatorName = item.adminName
  1723. }
  1724. })
  1725. })
  1726. }
  1727. // 根据BU和设备ID设置维修类型
  1728. if (this.saveModalData.bu && this.saveModalData.bu.includes('RFID') &&
  1729. this.saveModalData.repairReportingType !== 'TPM红牌') {
  1730. if (val.ObjectID && val.ObjectID.startsWith('B')) {
  1731. this.saveModalData.repairType = '换线专家组'
  1732. this.repairReportingTypeFlag = false // 允许编辑
  1733. } else {
  1734. this.saveModalData.repairType = '设备维修组'
  1735. this.repairReportingTypeFlag = true // 不允许编辑
  1736. }
  1737. }
  1738. }
  1739. if (this.tagNo === 1055) {
  1740. this.saveModalData.defectID = val.DefectID
  1741. this.saveModalData.defectDesc = val.DefectDesc
  1742. }
  1743. if (this.tagNo === 1058) {
  1744. this.saveModalData.defectID = val.DefectID
  1745. this.saveModalData.defectDesc = val.DefectDesc
  1746. }
  1747. },
  1748. // 校验用户是否收藏
  1749. favoriteIsOk () {
  1750. let userFavorite = {
  1751. userId: this.$store.state.user.id,
  1752. languageCode: this.$i18n.locale
  1753. }
  1754. userFavoriteList(userFavorite).then(({data}) => {
  1755. for (let i = 0; i < data.list.length; i++) {
  1756. if(this.$route.meta.menuId === data.list[i].menuId){
  1757. this.favorite = true
  1758. }
  1759. }
  1760. })
  1761. },
  1762. // 收藏 OR 取消收藏
  1763. favoriteFunction () {
  1764. let userFavorite = {
  1765. userId: this.$store.state.user.id,
  1766. functionId: this.$route.meta.menuId,
  1767. }
  1768. if (this.favorite) {
  1769. removeUserFavorite(userFavorite).then(({data}) => {
  1770. this.$message.success(data.msg)
  1771. this.favorite = false
  1772. })
  1773. } else {
  1774. // 收藏
  1775. saveUserFavorite(userFavorite).then(({data}) => {
  1776. this.$message.success(data.msg)
  1777. this.favorite = true
  1778. })
  1779. }
  1780. },
  1781. async exportExcel() {
  1782. this.searchData.limit = this.pageSize
  1783. this.searchData.page = this.pageIndex
  1784. excel.exportTable({
  1785. url: "/pms/eam/eamFeedBackSearch",
  1786. columnMapping: this.columnList,//可以直接用table,不需要的列就剔除
  1787. mergeSetting: [],//需要合并的列
  1788. params: this.searchData,
  1789. fileName: this.exportName+".xlsx",
  1790. rowFetcher: res => res.data,
  1791. columnFormatter: [],
  1792. dropColumns: [],//需要剔除的列,例如dropColumns: ["netWeight"],即剔除净重列
  1793. });
  1794. },
  1795. //导出excel
  1796. // async createExportData () {
  1797. // this.searchData.limit = -1
  1798. // this.searchData.page = 1
  1799. // await eamFeedBackSearch(this.searchData).then(({data}) => {
  1800. // this.exportList= data.page.list
  1801. // })
  1802. // return this.exportList
  1803. // },
  1804. //
  1805. // startDownload () {},
  1806. //
  1807. // finishDownload () {},
  1808. //
  1809. // fields () {
  1810. // let json = "{"
  1811. // this.columnList.forEach((item, index) => {
  1812. // if (index === this.columnList.length - 1) {
  1813. // json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1814. // } else {
  1815. // json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1816. // }
  1817. // })
  1818. // json += "}"
  1819. // let s = eval("(" + json + ")")
  1820. // return s
  1821. // },
  1822. // 动态列开始 获取 用户保存的 格式列
  1823. async getTableUserColumn(tableId, columnId) {
  1824. let queryTableUser = {
  1825. userId: this.$store.state.user.name,
  1826. functionId: this.$route.meta.menuId,
  1827. tableId: tableId,
  1828. status: true,
  1829. languageCode: this.$i18n.locale
  1830. }
  1831. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  1832. if (data.rows.length > 0) {
  1833. switch (columnId) {
  1834. case 1:
  1835. this.columnList = data.rows
  1836. break;
  1837. }
  1838. } else {
  1839. this.getColumnList(tableId, columnId)
  1840. }
  1841. })
  1842. },
  1843. // 获取 tableDefault 列
  1844. async getColumnList(tableId, columnId) {
  1845. let queryTable= {
  1846. functionId: this.$route.meta.menuId,
  1847. tableId: tableId,
  1848. languageCode: this.$i18n.locale
  1849. }
  1850. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  1851. if (!data.rows.length == 0) {
  1852. switch (columnId) {
  1853. case 1:
  1854. this.columnList = data.rows
  1855. break;
  1856. }
  1857. }
  1858. })
  1859. },
  1860. //获取按钮的权限数据
  1861. getButtonAuthData () {
  1862. let searchFlag = this.isAuth(this.menuId+":search")
  1863. let saveFlag = this.isAuth(this.menuId+":save")
  1864. let cancelFlag = this.isAuth(this.menuId+":cancel")
  1865. let releaseFlag = this.isAuth(this.menuId+":release")
  1866. //处理页面的权限数据
  1867. this.authSearch = !searchFlag
  1868. this.authSave = !saveFlag
  1869. this.authCancel = !cancelFlag
  1870. this.authRelease = !releaseFlag
  1871. },
  1872. // 上传保修故障图片
  1873. uploadFaultImageModal () {
  1874. this.uploadData = {
  1875. folder: 'feedBack',
  1876. title: '故障保修图片上传',
  1877. feedBackID: this.saveModalData.feedBackID
  1878. }
  1879. this.uploadDialog = true
  1880. },
  1881. // 获取机修人员列表
  1882. async getOperatorList (type) {
  1883. this.operatorData.bu = this.saveModalData.bu
  1884. this.$set(this.operatorData,'date',this.saveModalData.defectDate)
  1885. if (this.roleList.length > 0) {
  1886. let roleName
  1887. if (this.saveModalData.repairType == '设备维修组'){
  1888. roleName = '机修'
  1889. } else {
  1890. roleName = '换线组'
  1891. }
  1892. let filterList = this.roleList.filter(item => item.roleName === roleName)
  1893. if (filterList.length > 0) {
  1894. this.operatorData.roleId = filterList[0].roleId
  1895. } else {
  1896. this.operatorData.roleId = this.roleList[0].roleId
  1897. }
  1898. } else {
  1899. this.operatorData.roleId = ''
  1900. }
  1901. // 先清空班次信息
  1902. this.$set(this.operatorData,'classesCode','')
  1903. // 根据bu查询班次信息
  1904. await this.getClassesList()
  1905. // 查询人员
  1906. await getOperatorListByOrder(this.operatorData).then(({data}) => {
  1907. if (data && data.code === 0) {
  1908. this.operatorList = data.rows
  1909. if (type != 1){
  1910. this.operatorModelFlag = true
  1911. }
  1912. } else {
  1913. this.operatorList = []
  1914. }
  1915. })
  1916. },
  1917. // 查询机修人员列表
  1918. getOperatorList2 () {
  1919. // 查询人员
  1920. getOperatorListByOrder(this.operatorData).then(({data}) => {
  1921. if (data && data.code === 0) {
  1922. this.operatorList = data.rows
  1923. } else {
  1924. this.operatorList = []
  1925. }
  1926. })
  1927. },
  1928. // 选中人员
  1929. operatorClick (row) {
  1930. if (this.chooseReachModelFlag){
  1931. this.xdplanOperator = row.adminID;
  1932. this.xdplanOperatorName = row.adminName;
  1933. this.operatorModelFlag = false;
  1934. } else {
  1935. // 找到operatorList中actualOrderCount最小值
  1936. const minActualOrderCount = Math.min(...this.operatorList.map(item => item.actualOrderCount));
  1937. if (this.saveModalData.bu==='2_01-Label'){
  1938. this.saveModalData.planOperator = row.adminID;
  1939. this.saveModalData.planOperatorName = row.adminName;
  1940. this.operatorModelFlag = false;
  1941. } else {
  1942. if (row.actualOrderCount === minActualOrderCount) {
  1943. // 只有actualOrderCount最小的行允许选择
  1944. this.saveModalData.planOperator = row.adminID;
  1945. this.saveModalData.planOperatorName = row.adminName;
  1946. this.operatorModelFlag = false;
  1947. } else {
  1948. // 不是最小,给提示或不做处理
  1949. this.$message.warning('只能选择实际维修工单数最小的人员!');
  1950. }
  1951. }
  1952. }
  1953. },
  1954. }
  1955. }
  1956. </script>
  1957. <style scoped lang="scss">
  1958. /deep/ .el-table .cell {
  1959. line-height: 14px;
  1960. font-size: 12px;
  1961. height: auto;
  1962. }
  1963. </style>