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.

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