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.

2802 lines
95 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
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
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
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
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
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
3 years ago
  1. <template>
  2. <div class="mod-config">
  3. <div>
  4. <span @click="favoriteFunction()">
  5. <icon-svg :name="favorite?'xiangqufill':'xiangqu'" class="sl-svg"></icon-svg>
  6. </span>
  7. </div>
  8. <el-form :inline="true" label-position="top" :model="searchData">
  9. <el-form-item :label="'BU'">
  10. <el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 130px">
  11. <el-option
  12. v-for = "i in userBuList"
  13. :key = "i.buNo"
  14. :label = "i.buDesc"
  15. :value = "i.buDesc">
  16. </el-option>
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item :label="'计划编码'">
  20. <el-input v-model="searchData.planID" clearable style="width: 120px"></el-input>
  21. </el-form-item>
  22. <el-form-item :label="'计划描述'">
  23. <el-input v-model="searchData.planDesc" clearable style="width: 120px"></el-input>
  24. </el-form-item>
  25. <el-form-item :label="'计划开始日期:'">
  26. <el-date-picker
  27. style="width: 120px"
  28. v-model="searchData.startDate"
  29. type="date"
  30. value-format="yyyy-MM-dd"
  31. placeholder="选择日期">
  32. </el-date-picker>
  33. </el-form-item>
  34. <el-form-item style="margin-top: 23px;">
  35. <laber style="margin-left: -9px;font-size: 19px">&#10142</laber>
  36. </el-form-item>
  37. <el-form-item :label="' '">
  38. <el-date-picker
  39. style="width: 120px"
  40. v-model="searchData.endDate"
  41. type="date"
  42. value-format="yyyy-MM-dd"
  43. placeholder="选择日期">
  44. </el-date-picker>
  45. </el-form-item>
  46. <el-form-item :label="'状态'">
  47. <el-select filterable v-model="searchData.status" style="width: 120px">
  48. <el-option label="全部" value=""></el-option>
  49. <el-option label="已计划" value="已计划"></el-option>
  50. <el-option label="进行中" value="进行中"></el-option>
  51. <el-option label="已结束" value="已结束"></el-option>
  52. <el-option label="已取消" value="已取消"></el-option>
  53. </el-select>
  54. </el-form-item>
  55. <el-form-item :label="' '">
  56. <el-button @click="getDataList()">查询</el-button>
  57. <el-button type="primary" @click="addModal()">新增计划</el-button>
  58. <download-excel
  59. :fields="fields()"
  60. :data="exportData"
  61. type="xls"
  62. :name="exportName"
  63. :header="exportHeader"
  64. :footer="exportFooter"
  65. :fetch="createExportData"
  66. :before-generate="startDownload"
  67. :before-finish="finishDownload"
  68. worksheet="导出信息"
  69. class="el-button el-button--primary el-button--medium">
  70. {{ "导出" }}
  71. </download-excel>
  72. </el-form-item>
  73. </el-form>
  74. <el-table
  75. :height="height"
  76. :data="dataList"
  77. border
  78. v-loading="dataListLoading"
  79. style="width: 100%;">
  80. <el-table-column
  81. v-for="(item,index) in columnList" :key="index"
  82. :sortable="item.columnSortable"
  83. :prop="item.columnProp"
  84. :header-align="item.headerAlign"
  85. :show-overflow-tooltip="item.showOverflowTooltip"
  86. :align="item.align"
  87. :fixed="item.fixed==''?false:item.fixed"
  88. :min-width="item.columnWidth"
  89. :label="item.columnLabel">
  90. <template slot-scope="scope">
  91. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  92. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  93. </template>
  94. </el-table-column>
  95. <el-table-column
  96. fixed="right"
  97. header-align="center"
  98. align="center"
  99. width="200"
  100. label="操作">
  101. <template slot-scope="scope">
  102. <a type="text" size="small" v-if="scope.row.status === '已计划'" @click="createOrder(scope.row)">下达</a>
  103. <a type="text" size="small" v-if="scope.row.status === '进行中'" @click="planOrder(scope.row)">计划</a>
  104. <a type="text" size="small" v-if="scope.row.status !== '已结束' && scope.row.status !== '已取消'" @click="cancelPlan(scope.row)">取消</a>
  105. <a type="text" size="small" v-if="scope.row.status === '已计划'" @click="updateModal(scope.row)">编辑</a>
  106. <a type="text" size="small" v-if="scope.row.status !== '进行中'" @click="deletePlan(scope.row)">删除</a>
  107. <a type="text" size="small" @click="itemModal(scope.row)">点检项目</a>
  108. </template>
  109. </el-table-column>
  110. </el-table>
  111. <el-pagination
  112. @size-change="sizeChangeHandle"
  113. @current-change="currentChangeHandle"
  114. :current-page="pageIndex"
  115. :page-sizes="[20, 50, 100, 200, 500]"
  116. :page-size="pageSize"
  117. :total="totalPage"
  118. layout="total, sizes, prev, pager, next, jumper">
  119. </el-pagination>
  120. <!-- 新增 -->
  121. <el-dialog title="点检计划" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="580px">
  122. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  123. <!-- <el-form-item label="计划编码">-->
  124. <!-- <el-input v-model="modalData.planID" disabled style="width: 260px"></el-input>-->
  125. <!-- </el-form-item>-->
  126. <el-form-item label="BU" prop="bu" :rules="rules.bu">
  127. <el-select v-model="modalData.bu" placeholder="请选择" :disabled="modalDisableFlag" style="width: 260px">
  128. <el-option
  129. v-for = "i in userBuList"
  130. :key = "i.buNo"
  131. :label = "i.buNo"
  132. :value = "i.buNo">
  133. <span style="float: left;width: 100px">{{ i.sitename }}</span>
  134. <span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
  135. {{ i.buDesc }}
  136. </span>
  137. </el-option>
  138. </el-select>
  139. </el-form-item>
  140. <el-form-item label="计划描述" prop="planDesc" :rules="rules.planDescType">
  141. <el-input v-model="modalData.planDesc" style="width: 260px"></el-input>
  142. </el-form-item>
  143. </el-form>
  144. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  145. <el-form-item prop="propertiesCode" :rules="rules.propertiesCodeType">
  146. <span slot="label" @click="getBaseList(31)"><a href="#">点检模板</a></span>
  147. <el-input v-model="modalData.propertiesCode" @blur="modalCodeBlur" style="width: 260px"></el-input>
  148. </el-form-item>
  149. <el-form-item label="模板名称" prop="propertiesDesc" :rules="rules.propertiesDescType">
  150. <el-input v-model="modalData.propertiesDesc" disabled style="width: 260px"></el-input>
  151. </el-form-item>
  152. </el-form>
  153. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: 0px;">
  154. <el-form-item label="计划开始日期" prop="planStartDate" :rules="rules.planStartDateType">
  155. <el-date-picker
  156. style="width: 260px"
  157. v-model="modalData.planStartDate"
  158. type="date"
  159. value-format="yyyy-MM-dd"
  160. format='yyyy-MM-dd'
  161. placeholder="请选择"
  162. :editable=false
  163. :picker-options="pickerOptions2">
  164. </el-date-picker>
  165. </el-form-item>
  166. <el-form-item label="计划结束日期" prop="planEndDate" :rules="rules.planEndDateType">
  167. <el-date-picker
  168. style="width: 260px"
  169. v-model="modalData.planEndDate"
  170. type="date"
  171. value-format="yyyy-MM-dd"
  172. format='yyyy-MM-dd'
  173. placeholder="请选择"
  174. :editable=false
  175. :picker-options="pickerOptions2">
  176. </el-date-picker>
  177. </el-form-item>
  178. </el-form>
  179. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: 0px;">
  180. <el-form-item label="任务开始时间" prop="taskStartDate" :rules="rules.taskStartDateType">
  181. <el-time-picker
  182. format="HH:mm"
  183. arrow-control
  184. style="width: 260px"
  185. v-model="modalData.taskStartDate"
  186. placeholder="请选择"
  187. value-format="HH:mm">
  188. </el-time-picker>
  189. </el-form-item>
  190. <el-form-item label="点检频率" prop="planPeriod" :rules="rules.planPeriodType">
  191. <el-input v-model="modalData.planPeriod" type="number" onkeyup="value=value.replace(/^[^\d]+/g,'')" style="width: 80px"></el-input>
  192. </el-form-item>
  193. <el-form-item label="点检周期">
  194. <el-select v-model="modalData.planCycle" style="width: 60px">
  195. <el-option label="天" value="天"></el-option>
  196. <el-option label="周" value="周"></el-option>
  197. <el-option label="月" value="月"></el-option>
  198. <el-option label="年" value="年"></el-option>
  199. </el-select>
  200. </el-form-item>
  201. <!-- <el-form-item label="周末">-->
  202. <!-- <input type="checkbox" value="A" name="addWorkOrderRule" v-model="modalData.workOrderRule"/>-->
  203. <!-- </el-form-item>-->
  204. <!-- <el-form-item label="自动生成">-->
  205. <!-- <input type="checkbox" value="Y" name="addAutoRenewalRule" v-model="modalData.autoRenewal"/>-->
  206. <!-- </el-form-item>-->
  207. <el-form-item style="margin-top: 8px;margin-left: 19px">
  208. <el-checkbox v-model="modalData.workOrderRule" true-label="A">周末点检</el-checkbox><br>
  209. <el-checkbox v-model="modalData.autoRenewal" true-label="Y">自动生成</el-checkbox>
  210. </el-form-item>
  211. </el-form>
  212. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: 0px;">
  213. <el-form-item prop="operatorName" :rules="rules.operatorNameType">
  214. <span slot="label" @click="getOperatorList()"><a>计划执行人员</a></span>
  215. <el-input v-model="modalData.operatorName" style="width: 260px"></el-input>
  216. </el-form-item>
  217. <el-form-item prop="checkerName" :rules="rules.checkerNameType">
  218. <span slot="label" @click="getCheckerList()"><a>选择审核人员</a></span>
  219. <el-input v-model="modalData.checkerName" style="width: 260px"></el-input>
  220. </el-form-item>
  221. </el-form>
  222. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: 0px;">
  223. <el-form-item label="备注">
  224. <el-input v-model="modalData.remark" style="width: 534px"></el-input>
  225. </el-form-item>
  226. </el-form>
  227. <div style="text-align: center ;font-size: 11px">
  228. <span> ----------------------------------------------------选择设备----------------------------------------------------</span>
  229. </div>
  230. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -8px;">
  231. <el-form-item label="设备编码">
  232. <el-input v-model="objectData.objectID" style="width: 120px"></el-input>
  233. </el-form-item>
  234. <el-form-item label="设备名称">
  235. <el-input v-model="objectData.objectDesc" style="width: 120px"></el-input>
  236. </el-form-item>
  237. <el-form-item label=" ">
  238. <el-button @click="getObjectList()">查询</el-button>
  239. </el-form-item>
  240. </el-form>
  241. <el-table
  242. :height="200"
  243. :data="objectList"
  244. border
  245. ref="objectTable"
  246. @row-click="objectClickRow"
  247. @selection-change="selectionChangeHandle"
  248. style="width: 100%;">
  249. <el-table-column
  250. type="selection"
  251. header-align="center"
  252. align="center"
  253. width="50">
  254. </el-table-column>
  255. <el-table-column
  256. prop="objectID"
  257. header-align="center"
  258. align="center"
  259. min-width="30"
  260. label="设备编码">
  261. </el-table-column>
  262. <el-table-column
  263. prop="objectDesc"
  264. header-align="center"
  265. align="center"
  266. min-width="30"
  267. label="设备名称">
  268. </el-table-column>
  269. <el-table-column
  270. prop="familyDesc"
  271. header-align="center"
  272. align="center"
  273. min-width="30"
  274. label="设备分类">
  275. </el-table-column>
  276. <el-table-column
  277. prop="locationName"
  278. header-align="center"
  279. align="center"
  280. min-width="30"
  281. label="设备区域">
  282. </el-table-column>
  283. </el-table>
  284. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  285. <el-button :loading="saveLoading" type="primary" @click="saveData()">保存</el-button>
  286. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  287. </el-footer>
  288. </el-dialog>
  289. <!-- 编辑 -->
  290. <el-dialog title="点检计划" :close-on-click-modal="false" v-drag :visible.sync="updateModalFlag" width="580px">
  291. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  292. <el-form-item label="计划编码">
  293. <el-input v-model="modalData.planID" disabled style="width: 260px"></el-input>
  294. </el-form-item>
  295. <el-form-item label="计划描述" prop="planDesc" :rules="rules.planDescType">
  296. <el-input v-model="modalData.planDesc" style="width: 260px"></el-input>
  297. </el-form-item>
  298. </el-form>
  299. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  300. <el-form-item prop="propertiesCode" :rules="rules.propertiesCodeType">
  301. <span slot="label" style="" @click="getBaseList(31)"><a herf="#">点检模板</a></span>
  302. <el-input v-model="modalData.propertiesCode" @blur="modalCodeBlur" style="width: 260px"></el-input>
  303. </el-form-item>
  304. <el-form-item label="模板名称" prop="propertiesDesc" :rules="rules.propertiesDescType">
  305. <el-input v-model="modalData.propertiesDesc" disabled style="width: 260px"></el-input>
  306. </el-form-item>
  307. </el-form>
  308. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: 0px;">
  309. <el-form-item label="计划开始日期" prop="planStartDate" :rules="rules.planStartDateType">
  310. <el-date-picker
  311. style="width: 260px"
  312. v-model="modalData.planStartDate"
  313. type="date"
  314. value-format="yyyy-MM-dd"
  315. placeholder="请选择"
  316. :editable=false
  317. :picker-options="pickerOptions2">
  318. </el-date-picker>
  319. </el-form-item>
  320. <el-form-item label="计划结束日期" prop="planEndDate" :rules="rules.planEndDateType">
  321. <el-date-picker
  322. style="width: 260px"
  323. v-model="modalData.planEndDate"
  324. type="date"
  325. value-format="yyyy-MM-dd"
  326. placeholder="请选择"
  327. :editable=false
  328. :picker-options="pickerOptions2">
  329. </el-date-picker>
  330. </el-form-item>
  331. </el-form>
  332. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: 0px;">
  333. <el-form-item label="任务开始时间" prop="taskStartDate" :rules="rules.taskStartDateType">
  334. <el-time-picker
  335. format="HH:mm"
  336. arrow-control
  337. style="width: 260px"
  338. v-model="modalData.taskStartDate"
  339. placeholder="请选择"
  340. value-format="HH:mm">
  341. </el-time-picker>
  342. </el-form-item>
  343. <el-form-item label="点检频率" prop="planPeriod" :rules="rules.planPeriodType">
  344. <el-input v-model="modalData.planPeriod" type="number" onkeyup="value=value.replace(/^[^\d]+/g,'')" style="width: 80px"></el-input>
  345. </el-form-item>
  346. <el-form-item label="点检周期">
  347. <el-select filterable v-model="modalData.planCycle" style="width: 60px">
  348. <el-option label="天" value="天"></el-option>
  349. <el-option label="周" value="周"></el-option>
  350. <el-option label="月" value="月"></el-option>
  351. <el-option label="年" value="年"></el-option>
  352. </el-select>
  353. </el-form-item>
  354. <!-- <el-form-item label="周末">-->
  355. <!-- <input type="checkbox" value="A" name="updateWorkOrderRule" v-model="modalData.workOrderRule"/>-->
  356. <!-- </el-form-item>-->
  357. <!-- <el-form-item label="自动生成">-->
  358. <!-- <input type="checkbox" value="Y" name="updateAutoRenewalRule" v-model="modalData.autoRenewal"/>-->
  359. <!-- </el-form-item>-->
  360. <el-form-item style="margin-top: 8px;margin-left: 19px">
  361. <el-checkbox v-model="modalData.workOrderRule" true-label="A">周末点检</el-checkbox><br>
  362. <el-checkbox v-model="modalData.autoRenewal" true-label="Y">自动生成</el-checkbox>
  363. </el-form-item>
  364. </el-form>
  365. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: 0px;">
  366. <el-form-item prop="operatorName" :rules="rules.operatorNameType">
  367. <span slot="label" @click="getOperatorList()"><a>计划执行人员</a></span>
  368. <el-input v-model="modalData.operatorName" style="width: 260px"></el-input>
  369. </el-form-item>
  370. <el-form-item prop="checkerName" :rules="rules.checkerNameType">
  371. <span slot="label" @click="getCheckerList()"><a>选择审核人员</a></span>
  372. <el-input v-model="modalData.checkerName" style="width: 260px"></el-input>
  373. </el-form-item>
  374. </el-form>
  375. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: 0px;">
  376. <el-form-item label="备注">
  377. <el-input v-model="modalData.remark" style="width: 534px"></el-input>
  378. </el-form-item>
  379. </el-form>
  380. <div style="text-align: center ;font-size: 11px">
  381. <span> ----------------------------------------------------选择设备----------------------------------------------------</span>
  382. </div>
  383. <el-button type="primary" @click="addPlanDetail()">设备编辑</el-button>
  384. <el-table
  385. :height="200"
  386. :data="updateObjectList"
  387. border
  388. style="width: 100%;">
  389. <el-table-column
  390. prop="objectID"
  391. header-align="center"
  392. align="center"
  393. min-width="30"
  394. label="设备编码">
  395. </el-table-column>
  396. <el-table-column
  397. prop="objectDesc"
  398. header-align="center"
  399. align="center"
  400. min-width="30"
  401. label="设备名称">
  402. </el-table-column>
  403. <el-table-column
  404. prop="familyDesc"
  405. header-align="center"
  406. align="center"
  407. min-width="30"
  408. label="设备分类">
  409. </el-table-column>
  410. <el-table-column
  411. prop="locationName"
  412. header-align="center"
  413. align="center"
  414. min-width="30"
  415. label="设备区域">
  416. </el-table-column>
  417. </el-table>
  418. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  419. <el-button :loading="updateLoading" type="primary" @click="saveData()">保存</el-button>
  420. <el-button type="primary" @click="updateModalFlag = false">关闭</el-button>
  421. </el-footer>
  422. </el-dialog>
  423. <!-- 点检项目 -->
  424. <el-dialog title="点检项目清单" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="830px">
  425. <el-form :inline="true" label-position="top">
  426. <el-form-item :label="'点检模板编码'">
  427. <el-input v-model="detailData.codeNo" disabled style="width: 120px"></el-input>
  428. </el-form-item>
  429. <el-form-item :label="'点检模板名称'">
  430. <el-input v-model="detailData.codeDesc" disabled style="width: 120px"></el-input>
  431. </el-form-item>
  432. <el-form-item label="计划设备">
  433. <el-select v-model="detailData.objectID" @change="objectChange()" placeholder="请选择">
  434. <el-option label="全部" value=""></el-option>
  435. <el-option
  436. v-for = "i in options"
  437. :key = "i.objectID"
  438. :label = "i.objectDesc"
  439. :value = "i.objectID">
  440. </el-option>
  441. </el-select>
  442. </el-form-item>
  443. </el-form>
  444. <el-table
  445. :height="300"
  446. :data="detailList"
  447. border
  448. style="width: 100%;">
  449. <el-table-column
  450. v-for="(item,index) in columnDetailList" :key="index"
  451. :sortable="item.columnSortable"
  452. :prop="item.columnProp"
  453. :header-align="item.headerAlign"
  454. :show-overflow-tooltip="item.showOverflowTooltip"
  455. :align="item.align"
  456. :fixed="item.fixed==''?false:item.fixed"
  457. :min-width="item.columnWidth"
  458. :label="item.columnLabel">
  459. <template slot-scope="scope">
  460. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  461. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  462. </template>
  463. </el-table-column>
  464. <el-table-column
  465. fixed="right"
  466. header-align="center"
  467. align="center"
  468. width="130"
  469. label="操作">
  470. <template slot-scope="scope">
  471. <a type="text" size="small" v-if="scope.row.valueChooseFlag=='Y'" @click="chooseModal(scope.row)">可选值</a>
  472. <a type="text" size="small" @click="updateItemModal(scope.row)">编辑</a>
  473. </template>
  474. </el-table-column>
  475. </el-table>
  476. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  477. <el-button type="primary" @click="detailModelFlag = false">关闭</el-button>
  478. </el-footer>
  479. </el-dialog>
  480. <el-dialog title="点检项目" :close-on-click-modal="false" v-drag :visible.sync="itemModalFlag" width="430px">
  481. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  482. <el-form-item label="点检项目编码:">
  483. <el-input v-model="itemModalData.itemNo" :disabled="itemModalDisableFlag" style="width: 120px"></el-input>
  484. </el-form-item>
  485. <el-form-item label="点检项目名称:">
  486. <el-input v-model="itemModalData.itemDesc" disabled style="width: 120px"></el-input>
  487. </el-form-item>
  488. <el-form-item :label="'检测值类型'">
  489. <el-select filterable v-model="itemModalData.valueTypeDb" style="width: 120px">
  490. <el-option label="文本" value="T"></el-option>
  491. <el-option label="数字" value="N"></el-option>
  492. </el-select>
  493. </el-form-item>
  494. </el-form>
  495. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  496. <el-form-item label="点检方法说明:">
  497. <el-input v-model="itemModalData.itemRemark" style="width: 254px"></el-input>
  498. </el-form-item>
  499. <el-form-item :label="'是否值可选'">
  500. <el-select filterable v-model="itemModalData.valueChooseFlag" style="width: 120px">
  501. <el-option label="是" value="Y"></el-option>
  502. <el-option label="否" value="N"></el-option>
  503. </el-select>
  504. </el-form-item>
  505. </el-form>
  506. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  507. <el-form-item label="参照值:">
  508. <el-input v-model="itemModalData.defaultValue" style="width: 120px"></el-input>
  509. </el-form-item>
  510. <el-form-item label="最大值:">
  511. <el-input v-model="itemModalData.maxValue" type="number" style="width: 120px"></el-input>
  512. </el-form-item>
  513. <el-form-item label="最小值:">
  514. <el-input v-model="itemModalData.minValue" type="number" style="width: 120px"></el-input>
  515. </el-form-item>
  516. </el-form>
  517. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  518. <el-button type="primary" @click="itemSaveData()">保存</el-button>
  519. <el-button type="primary" @click="itemModalFlag = false">关闭</el-button>
  520. </el-footer>
  521. </el-dialog>
  522. <el-dialog title="可选值" :close-on-click-modal="false" v-drag :visible.sync="chooseModalFlag" width="430px">
  523. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  524. <el-form-item label="点检项目名称:">
  525. <el-input v-model="chooseModalData.itemDesc" disabled style="width: 120px"></el-input>
  526. </el-form-item>
  527. <el-form-item :label="'检测值类型'">
  528. <el-select filterable v-model="chooseModalData.valueTypeDb" disabled style="width: 120px">
  529. <el-option label="文本" value="T"></el-option>
  530. <el-option label="数字" value="N"></el-option>
  531. </el-select>
  532. </el-form-item>
  533. <el-form-item :label="' '">
  534. <el-button type="primary" @click="addChooseModal()">新增</el-button>
  535. </el-form-item>
  536. </el-form>
  537. <el-table
  538. :height="300"
  539. :data="chooseTableData"
  540. border
  541. style="width: 100%">
  542. <el-table-column
  543. prop="availableValue"
  544. header-align="center"
  545. align="center"
  546. min-width="200"
  547. label="属性值">
  548. </el-table-column>
  549. <el-table-column
  550. prop=""
  551. header-align="center"
  552. align="center"
  553. min-width="100"
  554. label="操作">
  555. <template slot-scope="scope">
  556. <a type="text" size="small" @click="updateChooseModal(scope.row)">修改</a>
  557. <a type="text" size="small" @click="deleteItemAvailable(scope.row)">删除</a>
  558. </template>
  559. </el-table-column>
  560. </el-table>
  561. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  562. <el-button type="primary" @click="chooseModalFlag = false">关闭</el-button>
  563. </el-footer>
  564. </el-dialog>
  565. <el-dialog title="可选值维护" :close-on-click-modal="false" v-drag :visible.sync="itemAddModalFlag" width="215px" >
  566. <el-form :inline="true" label-position="top" style="margin-left: 22px;margin-top: -5px;" @submit.native.prevent>
  567. <el-form-item :label="'可选值:'">
  568. <el-input v-model="itemData.availableValue" :type="itemFlag" style="width: 130px;"></el-input>
  569. </el-form-item>
  570. </el-form>
  571. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  572. <el-button type="primary" @click="saveItemAvailable()">保存</el-button>
  573. <el-button type="primary" @click="itemAddModalFlag = false">关闭</el-button>
  574. </el-footer>
  575. </el-dialog>
  576. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  577. <!-- 机修人员清单 -->
  578. <el-dialog title="执行人员清单" @close="closeDialog" :close-on-click-modal="false" v-drag :visible.sync="operatorModelFlag" width="820px">
  579. <div class="rq">
  580. <el-form :inline="true" label-position="top" :model="operatorData">
  581. <el-form-item :label="'所属角色'">
  582. <el-select value="roleName" v-model="operatorData.roleName" clearable placeholder="请选择" style="width: 120px">
  583. <el-option
  584. v-for = "i in roleList"
  585. :key = "i.roleID"
  586. :label = "i.roleName"
  587. :value = "i.roleName">
  588. </el-option>
  589. </el-select>
  590. </el-form-item>
  591. <el-form-item :label="'用户账号'">
  592. <el-input v-model="operatorData.adminID" style="width: 120px"></el-input>
  593. </el-form-item>
  594. <el-form-item :label="'用户名称'">
  595. <el-input v-model="operatorData.adminName" style="width: 120px"></el-input>
  596. </el-form-item>
  597. <el-form-item :label="' '">
  598. <el-button type="primary" @click="getOperatorList()">查询</el-button>
  599. </el-form-item>
  600. </el-form>
  601. <el-table
  602. :height="300"
  603. :data="operatorList"
  604. ref="operatorTable"
  605. @row-click="operatorClickRow"
  606. @selection-change="selectionChangeHandle2"
  607. border
  608. style="width: 100%;">
  609. <el-table-column
  610. type="selection"
  611. header-align="center"
  612. align="center"
  613. :selectable="selectFlag"
  614. width="50">
  615. </el-table-column>
  616. <el-table-column
  617. v-for="(item,index) in operatorDetailList" :key="index"
  618. :sortable="item.columnSortable"
  619. :prop="item.columnProp"
  620. :header-align="item.headerAlign"
  621. :show-overflow-tooltip="item.showOverflowTooltip"
  622. :align="item.align"
  623. :fixed="item.fixed==''?false:item.fixed"
  624. :min-width="item.columnWidth"
  625. :label="item.columnLabel">
  626. <template slot-scope="scope">
  627. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  628. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  629. </template>
  630. </el-table-column>
  631. </el-table>
  632. </div>
  633. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  634. <el-button type="primary" @click="confirmOperator()">确认</el-button>
  635. <el-button type="primary" @click="operatorModelFlag = false">关闭</el-button>
  636. </el-footer>
  637. </el-dialog>
  638. <!-- 审核人员清单 -->
  639. <el-dialog title="审核人员清单" :close-on-click-modal="false" v-drag :visible.sync="checkerModelFlag" width="820px">
  640. <div class="rq">
  641. <el-form :inline="true" label-position="top" :model="checkerData">
  642. <el-form-item :label="'所属角色'">
  643. <el-select value="roleName" v-model="checkerData.roleName" clearable placeholder="请选择" style="width: 120px">
  644. <el-option
  645. v-for = "i in roleList"
  646. :key = "i.roleID"
  647. :label = "i.roleName"
  648. :value = "i.roleName">
  649. </el-option>
  650. </el-select>
  651. </el-form-item>
  652. <el-form-item :label="'人员编码'">
  653. <el-input v-model="checkerData.adminID" style="width: 120px"></el-input>
  654. </el-form-item>
  655. <el-form-item :label="'人员姓名'">
  656. <el-input v-model="checkerData.adminName" style="width: 120px"></el-input>
  657. </el-form-item>
  658. <el-form-item :label="' '">
  659. <el-button type="primary" @click="getCheckerList()">查询</el-button>
  660. </el-form-item>
  661. </el-form>
  662. <el-table
  663. :height="300"
  664. :data="checkerList"
  665. ref="checkerTable"
  666. @row-click="checkerClickRow"
  667. @selection-change="selectionChangeHandle3"
  668. border
  669. style="width: 100%;">
  670. <el-table-column
  671. type="selection"
  672. header-align="center"
  673. align="center"
  674. :selectable="selectFlag"
  675. width="50">
  676. </el-table-column>
  677. <el-table-column
  678. v-for="(item,index) in checkerDetailList" :key="index"
  679. :sortable="item.columnSortable"
  680. :prop="item.columnProp"
  681. :header-align="item.headerAlign"
  682. :show-overflow-tooltip="item.showOverflowTooltip"
  683. :align="item.align"
  684. :fixed="item.fixed==''?false:item.fixed"
  685. :min-width="item.columnWidth"
  686. :label="item.columnLabel">
  687. <template slot-scope="scope">
  688. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  689. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  690. </template>
  691. </el-table-column>
  692. </el-table>
  693. </div>
  694. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  695. <el-button type="primary" @click="confirmOperator2()">确认</el-button>
  696. <el-button type="primary" @click="checkerModelFlag = false">关闭</el-button>
  697. </el-footer>
  698. </el-dialog>
  699. <!-- 编辑->设备->新增 -->
  700. <el-dialog title="设备编辑" @close="getNewPlanDetailList" :close-on-click-modal="false" v-drag :visible.sync="fastAddFlag" width="900px">
  701. <el-container style="margin-top: -12px;">
  702. <el-main style="width: 400px">
  703. <span style="font-size: 12px" >可选设备</span>
  704. <el-table
  705. height="400px"
  706. :data="objectList1"
  707. border
  708. @selection-change="selectionObject1"
  709. ref="objectTable1"
  710. @row-click="objectClickRow1"
  711. highlight-current-row
  712. style="width: 100%">
  713. <el-table-column
  714. type="selection"
  715. header-align="center"
  716. align="center"
  717. :selectable="selectFlag"
  718. width="50">
  719. </el-table-column>
  720. <el-table-column
  721. prop="objectID"
  722. header-align="center"
  723. align="center"
  724. min-width="110"
  725. label="设备编码">
  726. </el-table-column>
  727. <el-table-column
  728. prop="objectDesc"
  729. header-align="center"
  730. align="center"
  731. min-width="170"
  732. label="设备名称">
  733. </el-table-column>
  734. </el-table>
  735. </el-main>
  736. <el-main style="width: 100px">
  737. <div style="margin-top: 100px">
  738. <el-button type="primary" @click="addObject()">添加>></el-button>
  739. </div>
  740. <div style="margin-top: 20px">
  741. <el-button type="primary" @click="delObject()">删除<<</el-button>
  742. </div>
  743. </el-main>
  744. <el-main style="width: 400px">
  745. <span style="font-size: 12px">已有设备</span>
  746. <el-table
  747. height="400px"
  748. :data="objectList2"
  749. border
  750. @selection-change="selectionObject2"
  751. ref="objectTable2"
  752. @row-click="objectClickRow2"
  753. highlight-current-row
  754. style="width: 100%">
  755. <el-table-column
  756. type="selection"
  757. header-align="center"
  758. align="center"
  759. :selectable="selectFlag"
  760. width="50">
  761. </el-table-column>
  762. <el-table-column
  763. prop="objectID"
  764. header-align="center"
  765. align="center"
  766. min-width="110"
  767. label="设备编码">
  768. </el-table-column>
  769. <el-table-column
  770. prop="objectDesc"
  771. header-align="center"
  772. align="center"
  773. min-width="170"
  774. label="设备名称">
  775. </el-table-column>
  776. </el-table>
  777. </el-main>
  778. </el-container>
  779. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  780. <el-button type="primary" @click="fastAddFlag = false">关闭</el-button>
  781. </el-footer>
  782. </el-dialog>
  783. </div>
  784. </template>
  785. <script>
  786. import {
  787. eamWorkPlanSave,
  788. eamWorkPlanEdit,
  789. eamWorkPlanDelete,
  790. searchPlanItems,
  791. updatePlanItems,
  792. searchPlanItemAvailable,
  793. savePlanItemAvailable,
  794. deletePlanItemAvailable,
  795. createEamWorkOrder,
  796. objectIDBlur,
  797. modalCodeBlur,
  798. getObjectList,
  799. planOrder,
  800. cancelPlan,
  801. getOperatorList, // 获取机修人员列表
  802. getCheckerList, // 获取审核人员列表
  803. eamWorkPlanOverviewSearch, // 点检计划总览
  804. getPlanDetailList, // 查询计划详情
  805. delPlanDetail, // 删除计划中的设备
  806. getObjList, // 获取设备的差异列表(快速新增)
  807. addObject, // 添加设备
  808. delObject, // 移除设备
  809. planObjectSearch, // 查询该计划的设备
  810. getSiteAndBuByUserName
  811. } from "@/api/eam/eam.js"
  812. import {getTableDefaultListLanguage, getTableUserListLanguage} from "@/api/table.js"
  813. import Chooselist from '@/views/modules/common/Chooselist_eam'
  814. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  815. export default {
  816. components: {
  817. Chooselist
  818. },
  819. data () {
  820. return {
  821. // 是否收藏
  822. favorite: false,
  823. // 导出 start
  824. exportData: [],
  825. exportName: "点检计划" + this.dayjs().format('YYYYMMDDHHmmss'),
  826. exportHeader: ["点检计划"],
  827. exportFooter: [],
  828. exportList: [],
  829. // 导出 end
  830. tagNo:'',
  831. searchData: {
  832. site: this.$store.state.user.site,
  833. userName: this.$store.state.user.name,
  834. planID: '',
  835. planDesc: '',
  836. objectID: '',
  837. buDesc: '',
  838. status: '',
  839. startDate: new Date(),
  840. endDate:'',
  841. functionType:'A',
  842. page: 1,
  843. limit: 10,
  844. },
  845. pageIndex: 1,
  846. pageSize: 20,
  847. totalPage: 0,
  848. height: 200,
  849. dataList: [],
  850. dataListLoading: false,
  851. dataListSelections: [],
  852. modalFlag: false,
  853. modalDisableFlag: false,
  854. modalData: {
  855. objectList: [],
  856. flag: '',
  857. bu: '',
  858. functionType: 'A',
  859. site: '',
  860. planID: '',
  861. planDesc: '',
  862. objectID: '',
  863. propertiesCode: '',
  864. propertiesDesc: '',
  865. operator: '',
  866. operatorName: '',
  867. checker: '',
  868. checkerName: '',
  869. planPeriod: '',
  870. status: '',
  871. planStartDate: '',
  872. planEndDate: '',
  873. createdBy: this.$store.state.user.name,
  874. updateBy: this.$store.state.user.name,
  875. userId: '',
  876. remark: '',
  877. workOrderRule: '',
  878. planCycle: '',
  879. taskStartDate: '',
  880. autoRenewal: ''
  881. },
  882. objectData: {
  883. site: '',
  884. bu: '',
  885. objectID: '',
  886. objectDesc: '',
  887. familyID: '',
  888. },
  889. objectList: [],
  890. // 展示列集
  891. columnList: [
  892. {
  893. userId: this.$store.state.user.name,
  894. functionId: 101002003,
  895. serialNumber: '101002003Table1BuDesc',
  896. tableId: "101002003Table1",
  897. tableName: "点检计划表",
  898. columnProp: 'buDesc',
  899. headerAlign: "center",
  900. align: "center",
  901. columnLabel: 'BU',
  902. columnHidden: false,
  903. columnImage: false,
  904. columnSortable: false,
  905. sortLv: 0,
  906. status: true,
  907. fixed: '',
  908. columnWidth: 80,
  909. },
  910. {
  911. userId: this.$store.state.user.name,
  912. functionId: 101002003,
  913. serialNumber: '101002003Table1PlanID',
  914. tableId: "101002003Table1",
  915. tableName: "点检计划表",
  916. columnProp: 'planID',
  917. headerAlign: "center",
  918. align: "center",
  919. columnLabel: '计划编码',
  920. columnHidden: false,
  921. columnImage: false,
  922. columnSortable: false,
  923. sortLv: 0,
  924. status: true,
  925. fixed: '',
  926. columnWidth: 80,
  927. },
  928. {
  929. userId: this.$store.state.user.name,
  930. functionId: 101002003,
  931. serialNumber: '101002003Table1PlanDesc',
  932. tableId: "101002003Table1",
  933. tableName: "点检计划表",
  934. columnProp: 'planDesc',
  935. headerAlign: "center",
  936. align: "left",
  937. columnLabel: '计划描述',
  938. columnHidden: false,
  939. columnImage: false,
  940. columnSortable: false,
  941. sortLv: 0,
  942. status: true,
  943. fixed: '',
  944. columnWidth: 119,
  945. },
  946. {
  947. userId: this.$store.state.user.name,
  948. functionId: 101002003,
  949. serialNumber: '101002003Table1PropertiesCode',
  950. tableId: "101002003Table1",
  951. tableName: "点检计划表",
  952. columnProp: 'propertiesCode',
  953. headerAlign: "center",
  954. align: "left",
  955. columnLabel: '点检模板编码',
  956. columnHidden: false,
  957. columnImage: false,
  958. columnSortable: false,
  959. sortLv: 0,
  960. status: true,
  961. fixed: '',
  962. columnWidth: 80,
  963. },
  964. {
  965. userId: this.$store.state.user.name,
  966. functionId: 101002003,
  967. serialNumber: '101002003Table1Status',
  968. tableId: "101002003Table1",
  969. tableName: "点检计划表",
  970. columnProp: 'status',
  971. headerAlign: "center",
  972. align: "center",
  973. columnLabel: '状态',
  974. columnHidden: false,
  975. columnImage: false,
  976. columnSortable: false,
  977. sortLv: 0,
  978. status: true,
  979. fixed: '',
  980. columnWidth: 80,
  981. },
  982. {
  983. userId: this.$store.state.user.name,
  984. functionId: 101002003,
  985. serialNumber: '101002003Table1PlanStartDate',
  986. tableId: "101002003Table1",
  987. tableName: "点检计划表",
  988. columnProp: 'planStartDate',
  989. headerAlign: "center",
  990. align: "center",
  991. columnLabel: '计划开始日期',
  992. columnHidden: false,
  993. columnImage: false,
  994. columnSortable: false,
  995. sortLv: 0,
  996. status: true,
  997. fixed: '',
  998. columnWidth: 82,
  999. },
  1000. {
  1001. userId: this.$store.state.user.name,
  1002. functionId: 101002003,
  1003. serialNumber: '101002003Table1PlanEndDate',
  1004. tableId: "101002003Table1",
  1005. tableName: "点检计划表",
  1006. columnProp: 'planEndDate',
  1007. headerAlign: "center",
  1008. align: "center",
  1009. columnLabel: '计划结束日期',
  1010. columnHidden: false,
  1011. columnImage: false,
  1012. columnSortable: false,
  1013. sortLv: 0,
  1014. status: true,
  1015. fixed: '',
  1016. columnWidth: 82,
  1017. },
  1018. {
  1019. userId: this.$store.state.user.name,
  1020. functionId: 101002003,
  1021. serialNumber: '101002003Table1TaskStartDate',
  1022. tableId: "101002003Table1",
  1023. tableName: "点检计划表",
  1024. columnProp: 'taskStartDate',
  1025. headerAlign: "center",
  1026. align: "center",
  1027. columnLabel: '任务开始时间',
  1028. columnHidden: false,
  1029. columnImage: false,
  1030. columnSortable: false,
  1031. sortLv: 0,
  1032. status: true,
  1033. fixed: '',
  1034. columnWidth: 82,
  1035. },
  1036. {
  1037. userId: this.$store.state.user.name,
  1038. functionId: 101002003,
  1039. serialNumber: '101002003Table1NextWorkDate',
  1040. tableId: "101002003Table1",
  1041. tableName: "点检计划表",
  1042. columnProp: 'nextWorkDate',
  1043. headerAlign: "center",
  1044. align: "center",
  1045. columnLabel: '下次执行日期',
  1046. columnHidden: false,
  1047. columnImage: false,
  1048. columnSortable: false,
  1049. sortLv: 0,
  1050. status: true,
  1051. fixed: '',
  1052. columnWidth: 80,
  1053. },
  1054. {
  1055. userId: this.$store.state.user.name,
  1056. functionId: 101002003,
  1057. serialNumber: '101002003Table1OperatorName',
  1058. tableId: "101002003Table1",
  1059. tableName: "点检计划表",
  1060. columnProp: 'operatorName',
  1061. headerAlign: "center",
  1062. align: "center",
  1063. columnLabel: '计划执行人员',
  1064. columnHidden: false,
  1065. columnImage: false,
  1066. columnSortable: false,
  1067. sortLv: 0,
  1068. status: true,
  1069. fixed: '',
  1070. columnWidth: 82,
  1071. },
  1072. {
  1073. userId: this.$store.state.user.name,
  1074. functionId: 101002003,
  1075. serialNumber: '101002003Table1CheckerName',
  1076. tableId: "101002003Table1",
  1077. tableName: "点检计划表",
  1078. columnProp: 'checkerName',
  1079. headerAlign: "center",
  1080. align: "center",
  1081. columnLabel: '审核人员',
  1082. columnHidden: false,
  1083. columnImage: false,
  1084. columnSortable: false,
  1085. sortLv: 0,
  1086. status: true,
  1087. fixed: '',
  1088. columnWidth: 82,
  1089. },
  1090. {
  1091. userId: this.$store.state.user.name,
  1092. functionId: 101002003,
  1093. serialNumber: '101002003Table1PlanPeriod',
  1094. tableId: "101002003Table1",
  1095. tableName: "点检计划表",
  1096. columnProp: 'planPeriod',
  1097. headerAlign: "center",
  1098. align: "right",
  1099. columnLabel: '点检频率',
  1100. columnHidden: false,
  1101. columnImage: false,
  1102. columnSortable: false,
  1103. sortLv: 0,
  1104. status: true,
  1105. fixed: '',
  1106. columnWidth: 80,
  1107. },
  1108. {
  1109. userId: this.$store.state.user.name,
  1110. functionId: 101002003,
  1111. serialNumber: '101002003Table1PlanCycle',
  1112. tableId: "101002003Table1",
  1113. tableName: "点检计划表",
  1114. columnProp: 'planCycle',
  1115. headerAlign: "center",
  1116. align: "center",
  1117. columnLabel: '点检周期',
  1118. columnHidden: false,
  1119. columnImage: false,
  1120. columnSortable: false,
  1121. sortLv: 0,
  1122. status: true,
  1123. fixed: '',
  1124. columnWidth: 80,
  1125. },
  1126. {
  1127. userId: this.$store.state.user.name,
  1128. functionId: 101002003,
  1129. serialNumber: '101002003Table1CreatedDate',
  1130. tableId: "101002003Table1",
  1131. tableName: "点检计划表",
  1132. columnProp: 'createdDate',
  1133. headerAlign: "center",
  1134. align: "center",
  1135. columnLabel: '创建时间',
  1136. columnHidden: false,
  1137. columnImage: false,
  1138. columnSortable: false,
  1139. sortLv: 0,
  1140. status: true,
  1141. fixed: '',
  1142. columnWidth: 122,
  1143. },
  1144. {
  1145. userId: this.$store.state.user.name,
  1146. functionId: 101002003,
  1147. serialNumber: '101002003Table1CreatedBy',
  1148. tableId: "101002003Table1",
  1149. tableName: "点检计划表",
  1150. columnProp: 'createdBy',
  1151. headerAlign: "center",
  1152. align: "center",
  1153. columnLabel: '创建人',
  1154. columnHidden: false,
  1155. columnImage: false,
  1156. columnSortable: false,
  1157. sortLv: 0,
  1158. status: true,
  1159. fixed: '',
  1160. columnWidth: 70,
  1161. },
  1162. {
  1163. userId: this.$store.state.user.name,
  1164. functionId: 101002003,
  1165. serialNumber: '101002003Table1UpdateDate',
  1166. tableId: "101002003Table1",
  1167. tableName: "点检计划表",
  1168. columnProp: 'updateDate',
  1169. headerAlign: "center",
  1170. align: "center",
  1171. columnLabel: '更新时间',
  1172. columnHidden: false,
  1173. columnImage: false,
  1174. columnSortable: false,
  1175. sortLv: 0,
  1176. status: true,
  1177. fixed: '',
  1178. columnWidth: 122,
  1179. },
  1180. {
  1181. userId: this.$store.state.user.name,
  1182. functionId: 101002003,
  1183. serialNumber: '101002003Table1UpdateBy',
  1184. tableId: "101002003Table1",
  1185. tableName: "点检计划表",
  1186. columnProp: 'updateBy',
  1187. headerAlign: "center",
  1188. align: "center",
  1189. columnLabel: '更新人',
  1190. columnHidden: false,
  1191. columnImage: false,
  1192. columnSortable: false,
  1193. sortLv: 0,
  1194. status: true,
  1195. fixed: '',
  1196. columnWidth: 70,
  1197. },
  1198. {
  1199. userId: this.$store.state.user.name,
  1200. functionId: 101002003,
  1201. serialNumber: '101002003Table1Remark',
  1202. tableId: "101002003Table1",
  1203. tableName: "点检计划表",
  1204. columnProp: 'remark',
  1205. headerAlign: "center",
  1206. align: "center",
  1207. columnLabel: '备注',
  1208. columnHidden: false,
  1209. columnImage: false,
  1210. columnSortable: false,
  1211. sortLv: 0,
  1212. status: true,
  1213. fixed: '',
  1214. columnWidth: 80,
  1215. },
  1216. ],
  1217. //项目清单
  1218. addDetailModalFlag: false,
  1219. detailData: {
  1220. site: '',
  1221. buNo: '',
  1222. planID: '',
  1223. codeNo: '',
  1224. codeDesc: '',
  1225. functionType: 'A',
  1226. itemNo: '',
  1227. itemDesc: '',
  1228. itemType: 'A',
  1229. objectID: '',
  1230. objectDesc: '',
  1231. userId: this.$store.state.user.name
  1232. },
  1233. detailModelFlag: false,
  1234. detailList: [],
  1235. columnDetailList: [
  1236. {
  1237. userId: this.$store.state.user.name,
  1238. functionId: 101002003,
  1239. serialNumber: '101002003Table2ItemNo',
  1240. tableId: "101002003Table2",
  1241. tableName: "点检项目表",
  1242. columnProp: 'itemNo',
  1243. headerAlign: "center",
  1244. align: "center",
  1245. columnLabel: '点检项目编码',
  1246. columnHidden: false,
  1247. columnImage: false,
  1248. columnSortable: false,
  1249. sortLv: 0,
  1250. status: true,
  1251. fixed: '',
  1252. columnWidth: 90,
  1253. },
  1254. {
  1255. userId: this.$store.state.user.name,
  1256. functionId: 101002003,
  1257. serialNumber: '101002003Table2ItemDesc',
  1258. tableId: "101002003Table2",
  1259. tableName: "点检项目表",
  1260. columnProp: 'itemDesc',
  1261. headerAlign: "center",
  1262. align: "center",
  1263. columnLabel: '点检项目名称',
  1264. columnHidden: false,
  1265. columnImage: false,
  1266. columnSortable: false,
  1267. sortLv: 0,
  1268. status: true,
  1269. fixed: '',
  1270. columnWidth: 90,
  1271. },
  1272. {
  1273. userId: this.$store.state.user.name,
  1274. functionId: 101002003,
  1275. serialNumber: '101002003Table2ItemRemark',
  1276. tableId: "101002003Table2",
  1277. tableName: "点检项目表",
  1278. columnProp: 'itemRemark',
  1279. headerAlign: "center",
  1280. align: "center",
  1281. columnLabel: '点检方法说明',
  1282. columnHidden: false,
  1283. columnImage: false,
  1284. columnSortable: false,
  1285. sortLv: 0,
  1286. status: true,
  1287. fixed: '',
  1288. columnWidth: 120,
  1289. },
  1290. {
  1291. userId: this.$store.state.user.name,
  1292. functionId: 101002003,
  1293. serialNumber: '101002003Table2ValueType',
  1294. tableId: "101002003Table2",
  1295. tableName: "点检项目表",
  1296. columnProp: 'valueType',
  1297. headerAlign: "center",
  1298. align: "center",
  1299. columnLabel: '检测值类型',
  1300. columnHidden: false,
  1301. columnImage: false,
  1302. columnSortable: false,
  1303. sortLv: 0,
  1304. status: true,
  1305. fixed: '',
  1306. columnWidth: 70,
  1307. },
  1308. {
  1309. userId: this.$store.state.user.name,
  1310. functionId: 101002003,
  1311. serialNumber: '101002003Table2DefaultValue',
  1312. tableId: "101002003Table2",
  1313. tableName: "点检项目表",
  1314. columnProp: 'defaultValue',
  1315. headerAlign: "center",
  1316. align: "center",
  1317. columnLabel: '参照值',
  1318. columnHidden: false,
  1319. columnImage: false,
  1320. columnSortable: false,
  1321. sortLv: 0,
  1322. status: true,
  1323. fixed: '',
  1324. columnWidth: 70,
  1325. },
  1326. {
  1327. userId: this.$store.state.user.name,
  1328. functionId: 101002003,
  1329. serialNumber: '101002003Table2MaxValue',
  1330. tableId: "101002003Table2",
  1331. tableName: "点检项目表",
  1332. columnProp: 'maxValue',
  1333. headerAlign: "center",
  1334. align: "center",
  1335. columnLabel: '最大值',
  1336. columnHidden: false,
  1337. columnImage: false,
  1338. columnSortable: false,
  1339. sortLv: 0,
  1340. status: true,
  1341. fixed: '',
  1342. columnWidth: 70,
  1343. },
  1344. {
  1345. userId: this.$store.state.user.name,
  1346. functionId: 101002003,
  1347. serialNumber: '101002003Table2MinValue',
  1348. tableId: "101002003Table2",
  1349. tableName: "点检项目表",
  1350. columnProp: 'minValue',
  1351. headerAlign: "center",
  1352. align: "center",
  1353. columnLabel: '最小值',
  1354. columnHidden: false,
  1355. columnImage: false,
  1356. columnSortable: false,
  1357. sortLv: 0,
  1358. status: true,
  1359. fixed: '',
  1360. columnWidth: 70,
  1361. },
  1362. {
  1363. userId: this.$store.state.user.name,
  1364. functionId: 101002003,
  1365. serialNumber: '101002003TableValueChooseFlag',
  1366. tableId: "101002003Table",
  1367. tableName: "common",
  1368. columnProp: 'valueChooseFlag',
  1369. headerAlign: "center",
  1370. align: "center",
  1371. columnLabel: '是否值可选',
  1372. columnHidden: false,
  1373. columnImage: false,
  1374. columnSortable: false,
  1375. sortLv: 0,
  1376. status: true,
  1377. fixed: '',
  1378. columnWidth: 70,
  1379. },
  1380. ],
  1381. itemModalData: {
  1382. site: '',
  1383. planID: '',
  1384. flag: '',
  1385. itemNo: '',
  1386. itemDesc: '',
  1387. valueTypeDb: '',
  1388. defaultValue: '',
  1389. valueChooseFlag: '',
  1390. createdBy: this.$store.state.user.name,
  1391. maxValue: '',
  1392. minValue: '',
  1393. itemRemark: '',
  1394. itemType: 'A',
  1395. },
  1396. itemModalFlag: false,
  1397. itemModalDisableFlag: false,
  1398. itemFlag: 'text',
  1399. chooseModalFlag: false,
  1400. chooseModalData: {
  1401. site: '',
  1402. buNo: '',
  1403. planID: '',
  1404. itemNo: '',
  1405. itemDesc: '',
  1406. itemType: 'A',
  1407. valueTypeDb: '',
  1408. },
  1409. chooseTableData: [],
  1410. itemData: {
  1411. site: '',
  1412. buNo: '',
  1413. planID: '',
  1414. itemNo: '',
  1415. valueNo: '',
  1416. availableValue: '',
  1417. itemType: 'A',
  1418. createdBy: this.$store.state.user.name
  1419. },
  1420. itemAddModalFlag: false,
  1421. operatorList: [],
  1422. checkerList: [],
  1423. operatorModelFlag: false,
  1424. checkerModelFlag: false,
  1425. operatorDetailList: [
  1426. {
  1427. columnProp: 'adminID',
  1428. headerAlign: "center",
  1429. align: "center",
  1430. columnLabel: '用户账号',
  1431. columnHidden: false,
  1432. columnImage: false,
  1433. columnSortable: false,
  1434. sortLv: 0,
  1435. status: true,
  1436. fixed: '',
  1437. },
  1438. {
  1439. columnProp: 'adminName',
  1440. headerAlign: "center",
  1441. align: "center",
  1442. columnLabel: '用户名称',
  1443. columnHidden: false,
  1444. columnImage: false,
  1445. columnSortable: false,
  1446. sortLv: 0,
  1447. status: true,
  1448. fixed: '',
  1449. },
  1450. {
  1451. columnProp: 'email',
  1452. headerAlign: "center",
  1453. align: "center",
  1454. columnLabel: '邮箱',
  1455. columnHidden: false,
  1456. columnImage: false,
  1457. columnSortable: false,
  1458. sortLv: 0,
  1459. status: true,
  1460. fixed: '',
  1461. },
  1462. {
  1463. columnProp: 'phone',
  1464. headerAlign: "center",
  1465. align: "center",
  1466. columnLabel: '手机号',
  1467. columnHidden: false,
  1468. columnImage: false,
  1469. columnSortable: false,
  1470. sortLv: 0,
  1471. status: true,
  1472. fixed: '',
  1473. },
  1474. ],
  1475. checkerDetailList: [
  1476. {
  1477. columnProp: 'adminID',
  1478. headerAlign: "center",
  1479. align: "center",
  1480. columnLabel: '人员编码',
  1481. columnHidden: false,
  1482. columnImage: false,
  1483. columnSortable: false,
  1484. sortLv: 0,
  1485. status: true,
  1486. fixed: '',
  1487. },
  1488. {
  1489. columnProp: 'adminName',
  1490. headerAlign: "center",
  1491. align: "center",
  1492. columnLabel: '人员名称',
  1493. columnHidden: false,
  1494. columnImage: false,
  1495. columnSortable: false,
  1496. sortLv: 0,
  1497. status: true,
  1498. fixed: '',
  1499. },
  1500. {
  1501. columnProp: 'email',
  1502. headerAlign: "center",
  1503. align: "center",
  1504. columnLabel: '邮箱',
  1505. columnHidden: false,
  1506. columnImage: false,
  1507. columnSortable: false,
  1508. sortLv: 0,
  1509. status: true,
  1510. fixed: '',
  1511. },
  1512. {
  1513. columnProp: 'phone',
  1514. headerAlign: "center",
  1515. align: "center",
  1516. columnLabel: '手机号',
  1517. columnHidden: false,
  1518. columnImage: false,
  1519. columnSortable: false,
  1520. sortLv: 0,
  1521. status: true,
  1522. fixed: '',
  1523. }
  1524. ],
  1525. dataListSelections2: [],
  1526. dataListSelections3: [],
  1527. objectSelections1: [],
  1528. objectSelections2: [],
  1529. roleList: [],
  1530. operatorData: {
  1531. site: this.$store.state.user.site,
  1532. bu: '',
  1533. adminID: '',
  1534. adminName: '',
  1535. roleID: '',
  1536. roleName: '机修人员',
  1537. },
  1538. checkerData: {
  1539. site: this.$store.state.user.site,
  1540. bu: '',
  1541. adminID: '',
  1542. adminName: '',
  1543. roleID: '',
  1544. roleName: '机修人员',
  1545. },
  1546. updateDetailData: {
  1547. site: '',
  1548. buNo: '',
  1549. planID: '',
  1550. objectID: '',
  1551. objectDesc: '',
  1552. },
  1553. // 快速添加
  1554. fastAddFlag: false,
  1555. objectList1: [],
  1556. objectList2: [],
  1557. objectListRow1: {},
  1558. objectListRow2: {},
  1559. updateObjectList: [],
  1560. updateModalFlag: false,
  1561. options: [],
  1562. rules: {
  1563. planDescType: [
  1564. {
  1565. required: true,
  1566. message: ' ',
  1567. trigger: 'change'
  1568. }
  1569. ],
  1570. propertiesCodeType: [
  1571. {
  1572. required: true,
  1573. message: ' ',
  1574. trigger: 'change'
  1575. }
  1576. ],
  1577. propertiesDescType: [
  1578. {
  1579. required: true,
  1580. message: ' ',
  1581. trigger: 'change'
  1582. }
  1583. ],
  1584. planStartDateType: [
  1585. {
  1586. required: true,
  1587. message: ' ',
  1588. trigger: 'change'
  1589. }
  1590. ],
  1591. planEndDateType: [
  1592. {
  1593. required: true,
  1594. message: ' ',
  1595. trigger: 'change'
  1596. }
  1597. ],
  1598. planPeriodType: [
  1599. {
  1600. required: true,
  1601. message: ' ',
  1602. trigger: 'change'
  1603. }
  1604. ],
  1605. operatorNameType: [
  1606. {
  1607. required: true,
  1608. message: ' ',
  1609. trigger: 'change'
  1610. }
  1611. ],
  1612. checkerNameType: [
  1613. {
  1614. required: true,
  1615. message: ' ',
  1616. trigger: 'change'
  1617. }
  1618. ],
  1619. taskStartDateType: [
  1620. {
  1621. required: true,
  1622. message: ' ',
  1623. trigger: 'change'
  1624. }
  1625. ]
  1626. },
  1627. message: {
  1628. name: "周末",
  1629. id: 'A'
  1630. },
  1631. pickerOptions: {
  1632. disabledDate (time) {
  1633. let curDate = new Date().getTime()
  1634. let curD = new Date()
  1635. /* 获取当前月份 */
  1636. let curMonth = curD.getMonth()
  1637. /* 生成实际的月份: 由于curMonth会比实际月份小1, 故需加1 */
  1638. curD.setMonth(curMonth + 1)
  1639. /* 将日期设置为0, 这里为什么要这样设置, 我不知道原因, 这是从网上学来的 */
  1640. curD.setDate(0)
  1641. /* 返回当月的天数 */
  1642. let days = curD.getDate()
  1643. let three = days * 24 * 3600 * 1000
  1644. let threeMonths = curDate - three
  1645. return time.getTime() > Date.now() || time.getTime() < threeMonths
  1646. },
  1647. },
  1648. pickerOptions2: {
  1649. disabledDate (time) {
  1650. return time.getTime() < Date.now() - 8.64e7
  1651. },
  1652. },
  1653. saveLoading: false,
  1654. updateLoading: false,
  1655. userBuList: []
  1656. }
  1657. },
  1658. mounted () {
  1659. this.$nextTick(() => {
  1660. this.height = window.innerHeight - 210
  1661. })
  1662. },
  1663. created () {
  1664. // 获取用户的 site 和 bu
  1665. this.getSiteAndBuByUserName()
  1666. // 校验用户是否收藏
  1667. this.favoriteIsOk()
  1668. // 获取数据列表
  1669. this.getDataList()
  1670. // 动态列
  1671. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  1672. this.getTableUserColumn(this.$route.meta.menuId+'table2',2)
  1673. },
  1674. methods: {
  1675. // 获取用户的bu
  1676. getSiteAndBuByUserName () {
  1677. let tempData = {
  1678. username: this.$store.state.user.name,
  1679. }
  1680. getSiteAndBuByUserName(tempData).then(({data}) => {
  1681. if (data.code === 0) {
  1682. this.userBuList = data.rows
  1683. }
  1684. })
  1685. },
  1686. // 时间处理函数
  1687. getStandTime (data) {
  1688. let value =
  1689. data.getFullYear() +
  1690. "-" +
  1691. this.checkTime(data.getMonth() + 1) +
  1692. "-" +
  1693. this.checkTime(data.getDate()) +
  1694. " " +
  1695. this.checkTime(data.getHours()) +
  1696. ":" +
  1697. this.checkTime(data.getMinutes()) +
  1698. ":" +
  1699. this.checkTime(data.getSeconds())
  1700. return value
  1701. },
  1702. // 时间处理,如果时间小于10 ,则再前面加一个'0'
  1703. checkTime (i) {
  1704. if (i < 10) {
  1705. i = "0" + i
  1706. }
  1707. return i
  1708. },
  1709. // 日期时间选择器改变
  1710. handleChangeTime () {
  1711. // 当选择的时间大于当前时间,自动填充为当前时间
  1712. // 设备开始时间
  1713. let start = (new Date(this.modalData.planStartDate) * 1000) / 1000;
  1714. if (start < Date.now()) {
  1715. this.modalData.planStartDate = this.getStandTime(new Date())
  1716. this.$message({
  1717. message: "时间超出范围!",
  1718. type: "warning",
  1719. })
  1720. }
  1721. // 设备结束时间
  1722. let end = (new Date(this.modalData.planEndDate) * 1000) / 1000;
  1723. if (end < Date.now()) {
  1724. this.modalData.planEndDate = this.getStandTime(new Date())
  1725. this.$message({
  1726. message: "时间超出范围!",
  1727. type: "warning",
  1728. })
  1729. }
  1730. // 结束时间小于开始时间
  1731. if (start > end) {
  1732. this.modalData.planEndDate = this.modalData.planStartDate;
  1733. this.$message({
  1734. message: "结束时间小于开始时间!",
  1735. type: "warning",
  1736. })
  1737. }
  1738. },
  1739. // 点击行选中复选框
  1740. // 机修人员
  1741. operatorClickRow (row) {
  1742. this.$refs.operatorTable.toggleRowSelection(row)
  1743. },
  1744. // 审核人员
  1745. checkerClickRow (row) {
  1746. this.$refs.checkerTable.toggleRowSelection(row)
  1747. },
  1748. // 点击行选中复选框
  1749. objectClickRow (row) {
  1750. this.$refs.objectTable.toggleRowSelection(row)
  1751. },
  1752. // 可选设备
  1753. objectClickRow1 (row) {
  1754. this.$refs.objectTable1.toggleRowSelection(row)
  1755. },
  1756. // 已有设备
  1757. objectClickRow2 (row) {
  1758. this.$refs.objectTable2.toggleRowSelection(row)
  1759. },
  1760. // 设备名内容改变事件
  1761. objectChange () {
  1762. searchPlanItems(this.detailData).then(({data}) => {
  1763. this.detailList = data.rows
  1764. })
  1765. },
  1766. // 新增计划中的设备
  1767. addPlanDetail () {
  1768. this.objectListRow2 = null
  1769. this.objectListRow1 = null
  1770. getObjList(this.updateDetailData).then(({data}) => {
  1771. this.objectList1 = data.row1
  1772. this.objectList2 = data.row2
  1773. })
  1774. this.fastAddFlag = true
  1775. },
  1776. // 添加设备
  1777. addObject () {
  1778. if (this.objectSelections1.length === 0) {
  1779. this.$alert('请勾选要添加的设备!', '错误', {
  1780. confirmButtonText: '确定'
  1781. })
  1782. return false
  1783. }
  1784. let newData = this.objectList1.filter(
  1785. (a) => !this.objectSelections1.some((b) => a.objectID === b.objectID)
  1786. )
  1787. this.objectList1 = newData
  1788. for (let i = 0; i < this.objectSelections1.length; i++) {
  1789. this.objectList2.push(this.objectSelections1[i])
  1790. }
  1791. },
  1792. // 删除设备
  1793. delObject () {
  1794. if (this.objectSelections2.length === 0) {
  1795. this.$alert('请勾选要删除的设备!', '错误', {
  1796. confirmButtonText: '确定'
  1797. })
  1798. return false
  1799. }
  1800. let newData = this.objectList2.filter(
  1801. (a) => !this.objectSelections2.some((b) => a.objectID === b.objectID)
  1802. )
  1803. this.objectList2 = newData
  1804. for (let i = 0; i < this.objectSelections2.length; i++) {
  1805. this.objectList1.push(this.objectSelections2[i])
  1806. }
  1807. },
  1808. getNewPlanDetailList () {
  1809. this.updateObjectList = this.objectList2
  1810. },
  1811. // 删除计划中的设备
  1812. delPlanDetail (row) {
  1813. let tempData = {
  1814. site: this.$store.state.user.site,
  1815. planID: row.planID,
  1816. objectID: row.objectID,
  1817. }
  1818. delPlanDetail(tempData).then(({data}) => {
  1819. if (data && data.code === 0) {
  1820. this.getPlanDetailList()
  1821. this.$message({
  1822. message: '操作成功',
  1823. type: 'success',
  1824. duration: 1500,
  1825. onClose: () => {}
  1826. })
  1827. } else {
  1828. this.$alert(data.msg, '错误', {
  1829. confirmButtonText: '确定'
  1830. })
  1831. }
  1832. })
  1833. },
  1834. // 获取计划设备明细
  1835. getPlanDetailList () {
  1836. getPlanDetailList(this.updateDetailData).then(({data}) => {
  1837. if (data && data.code === 0) {
  1838. this.updateObjectList = data.rows
  1839. } else {
  1840. this.$alert(data.msg, '错误', {
  1841. confirmButtonText: '确定'
  1842. })
  1843. }
  1844. })
  1845. },
  1846. // 获取机修人员列表
  1847. getOperatorList () {
  1848. this.operatorData.bu = this.modalData.bu
  1849. this.operatorData.site = this.$store.state.user.site
  1850. this.getRoleNameList()
  1851. getOperatorList(this.operatorData).then(({data}) => {
  1852. if (data && data.code === 0) {
  1853. this.operatorList = data.rows
  1854. this.modalData.operatorName = ''
  1855. this.modalData.operator = ''
  1856. this.operatorModelFlag = true;
  1857. } else {
  1858. this.$alert(data.msg, '错误', {
  1859. confirmButtonText: '确定'
  1860. })
  1861. }
  1862. })
  1863. },
  1864. // 获取数据列表
  1865. getRoleNameList () {
  1866. this.dataListLoading = true
  1867. this.$http({
  1868. url: this.$http.adornUrl('/sys/role/list2'),
  1869. method: 'get',
  1870. params: this.$http.adornParams({
  1871. 'page': this.pageIndex,
  1872. 'limit': this.pageSize,
  1873. })
  1874. }).then(({data}) => {
  1875. let temp = []
  1876. if (data && data.code === 0) {
  1877. this.roleList = data.page.list
  1878. temp = this.roleList[0]
  1879. this.roleList[0] = this.roleList[1]
  1880. this.roleList[1] = temp
  1881. this.totalPage = data.page.totalCount
  1882. } else {
  1883. this.roleList = []
  1884. this.totalPage = 0
  1885. }
  1886. this.dataListLoading = false
  1887. })
  1888. },
  1889. // 获取审核人员
  1890. getCheckerList () {
  1891. this.checkerData.bu = this.modalData.bu
  1892. this.getRoleNameList()
  1893. getCheckerList(this.checkerData).then(({data}) => {
  1894. if (data && data.code === 0) {
  1895. this.checkerList = data.rows
  1896. this.modalData.checkerName = ''
  1897. this.modalData.checker = ''
  1898. this.checkerModelFlag = true
  1899. } else {
  1900. this.$alert(data.msg, '错误', {
  1901. confirmButtonText: '确定'
  1902. })
  1903. }
  1904. })
  1905. },
  1906. // 多选
  1907. selectionChangeHandle2 (val) {
  1908. this.dataListSelections2 = val
  1909. },
  1910. selectionChangeHandle3 (val) {
  1911. this.dataListSelections3 = val
  1912. },
  1913. selectionObject1(val){
  1914. this.objectSelections1 = val
  1915. },
  1916. selectionObject2(val){
  1917. this.objectSelections2 = val
  1918. },
  1919. selectFlag(){
  1920. return true
  1921. },
  1922. // 确认多选机修人员
  1923. confirmOperator () {
  1924. if(this.dataListSelections2.length === 0){
  1925. this.$message.warning("请勾选人员!")
  1926. return
  1927. }
  1928. for (let i = 0; i < this.dataListSelections2.length; i++) {
  1929. this.modalData.operatorName = this.modalData.operatorName + ";" + this.dataListSelections2[i].adminName
  1930. this.modalData.operator = this.modalData.operator + ";" + this.dataListSelections2[i].adminID
  1931. }
  1932. this.modalData.operator = this.modalData.operator.substring(1)
  1933. this.modalData.operatorName = this.modalData.operatorName.substring(1)
  1934. this.operatorModelFlag = false
  1935. },
  1936. // 确认多选审核人员
  1937. confirmOperator2 () {
  1938. if (this.dataListSelections3.length === 0) {
  1939. this.$message.warning("请勾选人员!")
  1940. return
  1941. }
  1942. for (let i = 0; i < this.dataListSelections3.length; i++) {
  1943. this.modalData.checkerName = this.modalData.checkerName + ";" + this.dataListSelections3[i].adminName
  1944. this.modalData.checker = this.modalData.checker + ";" + this.dataListSelections3[i].adminID
  1945. }
  1946. this.modalData.checker = this.modalData.checker.substring(1)
  1947. this.modalData.checkerName = this.modalData.checkerName.substring(1)
  1948. this.checkerModelFlag = false
  1949. },
  1950. // 获取基础数据列表S
  1951. getBaseList (val,type) {
  1952. this.tagNo = val
  1953. this.$nextTick(() => {
  1954. let strVal = ''
  1955. let conSql = ''
  1956. if (val === 200 && this.modalDisableFlag != true) {
  1957. strVal = this.modalData.objectID
  1958. this.$refs.baseList.init(val, strVal)
  1959. }
  1960. if (val === 31) {
  1961. strVal = this.modalData.propertiesCode
  1962. if (this.modalData.bu === null || this.modalData.bu === '') {
  1963. this.$message.warning("请选择BU!")
  1964. return
  1965. } else {
  1966. conSql = " and bu_no = '" + this.modalData.bu.split('_')[1] + "'"
  1967. this.$refs.baseList.init(val, strVal, conSql)
  1968. }
  1969. }
  1970. if (val === 201) {
  1971. strVal = this.modalData.operator
  1972. this.$refs.baseList.init(val, strVal)
  1973. }
  1974. })
  1975. },
  1976. // 列表方法的回调
  1977. getBaseData (val) {
  1978. if (this.tagNo === 200) {
  1979. this.modalData.objectID = val.ObjectID
  1980. this.modalData.objectDesc = val.ObjectDesc
  1981. }
  1982. if (this.tagNo === 31) {
  1983. this.modalData.propertiesCode = val.Code_No
  1984. this.modalData.propertiesDesc = val.Code_Desc
  1985. }
  1986. if (this.tagNo === 201) {
  1987. this.modalData.operator = val.AdminID
  1988. }
  1989. },
  1990. //导出excel
  1991. async createExportData () {
  1992. this.searchData.limit = -1
  1993. this.searchData.page = 1
  1994. await eamWorkPlanOverviewSearch(this.searchData).then(({data}) => {
  1995. this.exportList= data.page.list
  1996. })
  1997. return this.exportList
  1998. },
  1999. startDownload() {},
  2000. finishDownload() {},
  2001. fields() {
  2002. let json = "{"
  2003. this.columnList.forEach((item, index) => {
  2004. if (index == this.columnList.length - 1) {
  2005. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  2006. } else {
  2007. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  2008. }
  2009. })
  2010. json += "}"
  2011. let s = eval("(" + json + ")")
  2012. return s
  2013. },
  2014. // 获取数据列表
  2015. getDataList () {
  2016. this.searchData.limit = this.pageSize
  2017. this.searchData.page = this.pageIndex
  2018. eamWorkPlanOverviewSearch(this.searchData).then(({data}) => {
  2019. if (data.code === 0) {
  2020. this.dataList = data.page.list
  2021. this.pageIndex = data.page.currPage
  2022. this.pageSize = data.page.pageSize
  2023. this.totalPage = data.page.totalCount
  2024. }
  2025. })
  2026. },
  2027. // 每页数
  2028. sizeChangeHandle (val) {
  2029. this.pageSize = val
  2030. this.pageIndex = 1
  2031. this.getDataList()
  2032. },
  2033. // 当前页
  2034. currentChangeHandle (val) {
  2035. this.pageIndex = val
  2036. this.getDataList()
  2037. },
  2038. // 多选
  2039. selectionChangeHandle (val) {
  2040. this.dataListSelections = val
  2041. },
  2042. addModal () {
  2043. this.modalData = {
  2044. flag: '1',
  2045. objectList: [],
  2046. functionType: 'A',
  2047. site: '',
  2048. bu: this.userBuList[0].buNo,
  2049. planID: '',
  2050. planDesc: '',
  2051. objectID: '',
  2052. objectDesc: '',
  2053. propertiesCode: '',
  2054. propertiesDesc: '',
  2055. operator: '',
  2056. operatorName: '',
  2057. checker: '',
  2058. checkerName: '',
  2059. planPeriod: '',
  2060. status: '',
  2061. planStartDate: '',
  2062. planEndDate: '',
  2063. userId: this.$store.state.user.name,
  2064. createdBy: this.$store.state.user.name,
  2065. updateBy: this.$store.state.user.name,
  2066. remark: '',
  2067. workOrderRule: '',
  2068. planCycle: '天',
  2069. taskStartDate: '',
  2070. autoRenewal: ''
  2071. }
  2072. this.modalDisableFlag = false
  2073. this.objectList = []
  2074. this.modalFlag = true
  2075. },
  2076. updateModal (row) {
  2077. this.modalData = {
  2078. flag: '2',
  2079. objectList: [],
  2080. functionType: 'A',
  2081. site: row.site,
  2082. bu: row.site + '_' + row.buNo,
  2083. planID: row.planID,
  2084. planDesc: row.planDesc,
  2085. objectID: row.objectID,
  2086. objectDesc: row.objectID,
  2087. propertiesCode: row.propertiesCode,
  2088. propertiesDesc: row.codeDesc,
  2089. operator: row.operator,
  2090. operatorName: row.operatorName,
  2091. checker: row.checker,
  2092. checkerName: row.checkerName,
  2093. planPeriod: row.planPeriod,
  2094. status: row.status,
  2095. planStartDate: row.planStartDate,
  2096. planEndDate: row.planEndDate,
  2097. userId: this.$store.state.user.name,
  2098. createdBy: this.$store.state.user.name,
  2099. updateBy: this.$store.state.user.name,
  2100. remark: row.remark,
  2101. workOrderRule: row.workOrderRule,
  2102. planCycle: row.planCycle,
  2103. taskStartDate: row.taskStartDate,
  2104. autoRenewal: row.autoRenewal
  2105. }
  2106. this.updateObjectList = []
  2107. this.updateDetailData = {}
  2108. this.updateDetailData.site = row.site
  2109. this.updateDetailData.buNo = row.buNo
  2110. this.updateDetailData.planID = row.planID
  2111. if (this.modalData.workOrderRule != null && this.modalData.workOrderRule.split(",").includes('A')) {
  2112. this.modalData.workOrderRule = 'A'
  2113. } else {
  2114. this.modalData.workOrderRule = ''
  2115. }
  2116. if (this.modalData.autoRenewal != null && this.modalData.autoRenewal.split(",").includes('Y')) {
  2117. this.modalData.autoRenewal = 'Y'
  2118. } else {
  2119. this.modalData.autoRenewal = ''
  2120. }
  2121. getPlanDetailList(this.updateDetailData).then(({data}) => {
  2122. if (data && data.code === 0) {
  2123. this.updateObjectList = data.rows
  2124. this.modalDisableFlag = true
  2125. this.updateModalFlag = true
  2126. } else {
  2127. this.$alert(data.msg, '错误', {
  2128. confirmButtonText: '确定'
  2129. })
  2130. }
  2131. })
  2132. },
  2133. deletePlan (row) {
  2134. this.$confirm(`是否删除这个点检计划?`, '提示', {
  2135. confirmButtonText: '确定',
  2136. cancelButtonText: '取消',
  2137. type: 'warning'
  2138. }).then(() => {
  2139. eamWorkPlanDelete(row).then(({data}) => {
  2140. if (data && data.code === 0) {
  2141. this.getDataList()
  2142. this.$message({
  2143. message: '操作成功',
  2144. type: 'success',
  2145. duration: 1500,
  2146. onClose: () => {}
  2147. })
  2148. } else {
  2149. this.$alert(data.msg, '错误', {
  2150. confirmButtonText: '确定'
  2151. })
  2152. }
  2153. })
  2154. }).catch(() => {
  2155. })
  2156. },
  2157. saveData () {
  2158. if (this.modalData.bu === '' || this.modalData.bu == null) {
  2159. this.$message.warning('请选择BU!')
  2160. return
  2161. }
  2162. if (this.modalData.planDesc === '' || this.modalData.planDesc == null) {
  2163. this.$message.warning('请输入计划描述!')
  2164. return
  2165. }
  2166. if (this.modalData.operator === '' || this.modalData.operator == null) {
  2167. this.$message.warning('请选择机修人员!')
  2168. return
  2169. }
  2170. if (this.modalData.checker === '' || this.modalData.checker == null) {
  2171. this.$message.warning('请选择审核人员!')
  2172. return
  2173. }
  2174. if (this.modalData.propertiesCode === '' || this.modalData.propertiesCode == null) {
  2175. this.$message.warning('请选择点检模板!')
  2176. return
  2177. }
  2178. if (this.modalData.planPeriod === '' || this.modalData.planPeriod == null) {
  2179. this.$message.warning('选择点检频率!')
  2180. return
  2181. }
  2182. if (this.modalData.planCycle === '' || this.modalData.planCycle == null) {
  2183. this.$message.warning('选择点检周期!')
  2184. return
  2185. }
  2186. if (this.modalData.planStartDate === '' || this.modalData.planStartDate == null) {
  2187. this.$message.warning('请选择开始日期!')
  2188. return
  2189. }
  2190. if (this.modalData.planEndDate === '' || this.modalData.planEndDate == null) {
  2191. this.$message.warning('请选择结束日期!')
  2192. return
  2193. }
  2194. if (this.modalData.planEndDate < this.dayjs().format("YYYY-MM-DD")) {
  2195. this.$message.warning('计划结束日期不能小于今天!')
  2196. return
  2197. }
  2198. if (this.modalData.planStartDate > this.modalData.planEndDate) {
  2199. this.$message.warning('计划开始日期不能小于结束日期!')
  2200. return
  2201. }
  2202. if (this.modalData.taskStartDate === '' || this.modalData.taskStartDate == null) {
  2203. this.$message.warning('请选择任务开始时间!')
  2204. return
  2205. }
  2206. if (this.modalData.flag === '1') {
  2207. if (this.dataListSelections.length === 0) {
  2208. this.$message.warning('请勾选设备!')
  2209. return
  2210. }
  2211. this.saveLoading = true
  2212. this.modalData.objectList = this.dataListSelections
  2213. // 周日
  2214. // let obj = document.getElementsByName('addWorkOrderRule')
  2215. // let s = ''
  2216. // for (let i = 0; i < obj.length; i++) {
  2217. // if (obj[i].checked) {
  2218. // s += obj[i].value + ','
  2219. // }
  2220. // }
  2221. // s = s.substring(0, s.length - 1)
  2222. // this.modalData.workOrderRule = s
  2223. // // 自动生成
  2224. // let obj2 = document.getElementsByName('addAutoRenewalRule')
  2225. // let s2 = ''
  2226. // for (let i = 0; i < obj2.length; i++) {
  2227. // if (obj2[i].checked) {
  2228. // s2 += obj2[i].value + ','
  2229. // }
  2230. // }
  2231. // s2 = s2.substring(0, s2.length - 1)
  2232. // this.modalData.autoRenewal = s2
  2233. eamWorkPlanSave(this.modalData).then(({data}) => {
  2234. if (data && data.code === 0) {
  2235. this.getDataList()
  2236. this.modalFlag = false
  2237. this.$message({
  2238. message: '操作成功',
  2239. type: 'success',
  2240. duration: 1500,
  2241. onClose: () => {}
  2242. })
  2243. } else {
  2244. this.$alert(data.msg, '错误', {
  2245. confirmButtonText: '确定'
  2246. })
  2247. }
  2248. this.saveLoading = false
  2249. })
  2250. } else {
  2251. this.updateLoading = true
  2252. this.modalData.objectList = this.updateObjectList
  2253. // let obj = document.getElementsByName('updateWorkOrderRule')
  2254. // let s = ''
  2255. // for (let i = 0; i < obj.length; i++) {
  2256. // if (obj[i].checked) {
  2257. // s += obj[i].value + ','
  2258. // }
  2259. // }
  2260. // s = s.substring(0,s.length-1)
  2261. // this.modalData.workOrderRule = s
  2262. // // 自动生成
  2263. // let obj2 = document.getElementsByName('updateAutoRenewalRule')
  2264. // let s2 = ''
  2265. // for (let i = 0; i < obj2.length; i++) {
  2266. // if (obj2[i].checked) {
  2267. // s2 += obj2[i].value + ','
  2268. // }
  2269. // }
  2270. // s2 = s2.substring(0, s2.length - 1)
  2271. // this.modalData.autoRenewal = s2
  2272. eamWorkPlanEdit(this.modalData).then(({data}) => {
  2273. if (data && data.code === 0) {
  2274. this.getDataList()
  2275. this.updateModalFlag = false
  2276. this.$message({
  2277. message: '操作成功',
  2278. type: 'success',
  2279. duration: 1500,
  2280. onClose: () => {
  2281. }
  2282. })
  2283. } else {
  2284. this.$alert(data.msg, '错误', {
  2285. confirmButtonText: '确定'
  2286. })
  2287. }
  2288. this.updateLoading = false
  2289. })
  2290. }
  2291. },
  2292. //----------项目清单----------------start
  2293. //打开项目清单
  2294. itemModal (row) {
  2295. this.options = []
  2296. this.detailData.objectID = ''
  2297. this.detailData.site = row.site
  2298. this.detailData.buNo = row.buNo
  2299. this.detailData.planID = row.planID
  2300. this.detailData.codeNo = row.propertiesCode
  2301. this.detailData.codeDesc = row.codeDesc
  2302. this.planObjectSearch()
  2303. searchPlanItems(this.detailData).then(({data}) => {
  2304. this.detailList = data.rows
  2305. })
  2306. this.detailModelFlag = true
  2307. },
  2308. // 查询该计划的设备
  2309. planObjectSearch () {
  2310. let tempData = {
  2311. site: this.detailData.site,
  2312. buNo: this.detailData.buNo,
  2313. planID: this.detailData.planID,
  2314. }
  2315. planObjectSearch(tempData).then(({data}) => {
  2316. if (data.code === 0) {
  2317. this.options = data.rows
  2318. }
  2319. })
  2320. },
  2321. updateItemModal (row) {
  2322. this.itemModalData = {
  2323. flag: '2',
  2324. site: row.site,
  2325. buNo: row.buNo,
  2326. planID: row.planID,
  2327. itemNo: row.itemNo,
  2328. itemDesc: row.itemDesc,
  2329. valueTypeDb: row.valueTypeDb,
  2330. defaultValue: row.defaultValue,
  2331. valueChooseFlag: row.valueChooseFlag,
  2332. createdBy:this.$store.state.user.name,
  2333. maxValue: row.maxValue,
  2334. minValue: row.minValue,
  2335. itemRemark: row.itemRemark,
  2336. itemType: 'A',
  2337. objectID: row.objectID
  2338. }
  2339. this.itemModalDisableFlag = true
  2340. this.itemModalFlag = true
  2341. },
  2342. itemSaveData () {
  2343. if (this.itemModalData.itemNo === '' || this.itemModalData.itemNo == null) {
  2344. this.$message.warning('请输入点检项目编码!')
  2345. return
  2346. }
  2347. if (this.itemModalData.itemDesc === '' || this.itemModalData.itemDesc == null) {
  2348. this.$message.warning('请输入点检项目名称!')
  2349. return
  2350. }
  2351. if (this.itemModalData.flag === '1') {
  2352. // eamPropertiesItemSave(this.itemModalData).then(({data}) => {
  2353. // if (data && data.code == '0') {
  2354. // searchPlanItems(this.detailData).then(({data}) => {
  2355. // this.detailList = data.rows
  2356. // })
  2357. // this.itemModalFlag=false
  2358. // this.$message({
  2359. // message: '操作成功',
  2360. // type: 'success',
  2361. // duration: 1500,
  2362. // onClose: () => {
  2363. // }
  2364. // })
  2365. // } else {
  2366. // this.$alert(data.msg, '错误', {
  2367. // confirmButtonText: '确定'
  2368. // })
  2369. // }
  2370. // })
  2371. } else {
  2372. updatePlanItems(this.itemModalData).then(({data}) => {
  2373. if (data && data.code === 0) {
  2374. searchPlanItems(this.detailData).then(({data}) => {
  2375. this.detailList = data.rows
  2376. })
  2377. this.itemModalFlag = false
  2378. this.$message({
  2379. message: '操作成功',
  2380. type: 'success',
  2381. duration: 1500,
  2382. onClose: () => {}
  2383. })
  2384. } else {
  2385. this.$alert(data.msg, '错误', {
  2386. confirmButtonText: '确定'
  2387. })
  2388. }
  2389. })
  2390. }
  2391. },
  2392. //----------项目可选值----------------start
  2393. chooseModal (row) {
  2394. this.chooseModalData.site = row.site
  2395. this.chooseModalData.buNo = row.buNo
  2396. this.chooseModalData.planID = row.planID
  2397. this.chooseModalData.itemNo = row.itemNo
  2398. this.chooseModalData.itemDesc = row.itemDesc
  2399. this.chooseModalData.valueTypeDb = row.valueTypeDb
  2400. this.chooseModalData.objectID = row.objectID
  2401. searchPlanItemAvailable(this.chooseModalData).then(({data}) => {
  2402. this.chooseTableData = data.rows
  2403. })
  2404. this.chooseModalFlag = true
  2405. },
  2406. addChooseModal () {
  2407. this.itemFlag = this.chooseModalData.valueTypeDb === 'T' ? 'text' : 'number';
  2408. this.itemData = {
  2409. site: this.chooseModalData.site,
  2410. buNo: this.chooseModalData.buNo,
  2411. planID: this.chooseModalData.planID,
  2412. itemNo: this.chooseModalData.itemNo,
  2413. objectID: this.chooseModalData.objectID,
  2414. valueNo: 0,
  2415. availableValue: '',
  2416. itemType: 'A',
  2417. createdBy: this.$store.state.user.name
  2418. }
  2419. this.itemAddModalFlag = true
  2420. },
  2421. updateChooseModal (row) {
  2422. this.itemFlag = this.chooseModalData.valueTypeDb === 'T' ? 'text' : 'number'
  2423. this.itemData = {
  2424. site: this.chooseModalData.site,
  2425. buNo: this.chooseModalData.buNo,
  2426. planID: this.chooseModalData.planID,
  2427. itemNo: this.chooseModalData.itemNo,
  2428. objectID: this.chooseModalData.objectID,
  2429. valueNo: row.valueNo,
  2430. availableValue: row.availableValue,
  2431. itemType: 'A',
  2432. createdBy: this.$store.state.user.name
  2433. }
  2434. this.itemAddModalFlag = true
  2435. },
  2436. saveItemAvailable () {
  2437. if (this.itemData.availableValue === '' || this.itemData.availableValue == null) {
  2438. this.$message.warning('请输入可选值!')
  2439. return
  2440. }
  2441. savePlanItemAvailable(this.itemData).then(({data}) => {
  2442. if (data && data.code === 0) {
  2443. searchPlanItemAvailable(this.chooseModalData).then(({data}) => {
  2444. this.chooseTableData = data.rows
  2445. })
  2446. this.itemAddModalFlag = false
  2447. this.$message({
  2448. message: '操作成功',
  2449. type: 'success',
  2450. duration: 1500,
  2451. onClose: () => {}
  2452. })
  2453. } else {
  2454. this.$alert(data.msg, '错误', {
  2455. confirmButtonText: '确定'
  2456. })
  2457. }
  2458. })
  2459. },
  2460. deleteItemAvailable (row) {
  2461. this.$confirm(`是否删除这个可选值?`, '提示', {
  2462. confirmButtonText: '确定',
  2463. cancelButtonText: '取消',
  2464. type: 'warning'
  2465. }).then(() => {
  2466. deletePlanItemAvailable(row).then(({data}) => {
  2467. if (data && data.code === 0) {
  2468. searchPlanItemAvailable(this.chooseModalData).then(({data}) => {
  2469. this.chooseTableData = data.rows
  2470. })
  2471. this.$message({
  2472. message: '操作成功',
  2473. type: 'success',
  2474. duration: 1500,
  2475. onClose: () => {}
  2476. })
  2477. } else {
  2478. this.$alert(data.msg, '错误', {
  2479. confirmButtonText: '确定'
  2480. })
  2481. }
  2482. })
  2483. }).catch(() => {
  2484. })
  2485. },
  2486. // 下达
  2487. createOrder (row) {
  2488. let tempData = {
  2489. site: row.site,
  2490. buNo: row.buNo,
  2491. planID: row.planID,
  2492. functionType: row.functionType,
  2493. userId: this.$store.state.user.name,
  2494. objectList: []
  2495. }
  2496. getPlanDetailList(row).then(({data}) => {
  2497. if (data && data.code === 0) {
  2498. tempData.objectList = data.rows
  2499. } else {
  2500. this.$alert(data.msg, '错误', {
  2501. confirmButtonText: '确定'
  2502. })
  2503. }
  2504. })
  2505. if (row.planStartDate < this.dayjs().format("YYYY-MM-DD")) {
  2506. this.$alert('计划开始日期小于今天!请修改开始日期', '错误', {
  2507. confirmButtonText: '确定'
  2508. })
  2509. return false
  2510. }
  2511. this.$confirm(`是否下达点检工单?`, '提示', {
  2512. confirmButtonText: '确定',
  2513. cancelButtonText: '取消',
  2514. type: 'warning'
  2515. }).then(() => {
  2516. this.dataListLoading = true
  2517. createEamWorkOrder(tempData).then(({data}) => {
  2518. if (data && data.code === 0) {
  2519. this.getDataList()
  2520. this.$message({
  2521. message: '操作成功',
  2522. type: 'success',
  2523. duration: 1500,
  2524. onClose: () => {}
  2525. })
  2526. } else {
  2527. this.$alert(data.msg, '错误', {
  2528. confirmButtonText: '确定'
  2529. })
  2530. }
  2531. this.dataListLoading = false
  2532. })
  2533. }).catch(() => {
  2534. })
  2535. },
  2536. objectIDBlur () {
  2537. let inData = {
  2538. site: this.$store.state.user.site,
  2539. objectID: this.modalData.objectID
  2540. }
  2541. objectIDBlur(inData).then(({data}) => {
  2542. if (data.rows.length > 0) {
  2543. this.modalData.objectDesc = data.rows[0].objectDesc
  2544. } else {
  2545. this.modalData.objectDesc = ''
  2546. }
  2547. })
  2548. },
  2549. modalCodeBlur () {
  2550. let inData = {
  2551. functionType: 'A',
  2552. codeNo: this.modalData.propertiesCode
  2553. }
  2554. modalCodeBlur(inData).then(({data}) => {
  2555. if (data.rows.length > 0) {
  2556. this.modalData.propertiesDesc = data.rows[0].codeDesc
  2557. } else {
  2558. this.modalData.propertiesDesc = ''
  2559. }
  2560. })
  2561. },
  2562. getObjectList () {
  2563. this.objectData.bu = this.modalData.bu
  2564. getObjectList(this.objectData).then(({data}) => {
  2565. this.objectList = data.rows
  2566. })
  2567. },
  2568. planOrder (row) {
  2569. row.userId = this.$store.state.user.name
  2570. this.$confirm(`是否把进行中的计划变为已计划并取消未完成的工单?`, '提示', {
  2571. confirmButtonText: '确定',
  2572. cancelButtonText: '取消',
  2573. type: 'warning'
  2574. }).then(() => {
  2575. planOrder(row).then(({data}) => {
  2576. if (data && data.code === 0) {
  2577. this.getDataList()
  2578. this.$message({
  2579. message: '操作成功',
  2580. type: 'success',
  2581. duration: 1500,
  2582. onClose: () => {}
  2583. })
  2584. } else {
  2585. this.$alert(data.msg, '错误', {
  2586. confirmButtonText: '确定'
  2587. })
  2588. }
  2589. })
  2590. }).catch(() => {
  2591. })
  2592. },
  2593. cancelPlan (row) {
  2594. row.userId = this.$store.state.user.name
  2595. this.$confirm(`是否取消计划?`, '提示', {
  2596. confirmButtonText: '确定',
  2597. cancelButtonText: '取消',
  2598. type: 'warning'
  2599. }).then(() => {
  2600. cancelPlan(row).then(({data}) => {
  2601. if (data && data.code === 0) {
  2602. this.getDataList()
  2603. this.$message({
  2604. message: '操作成功',
  2605. type: 'success',
  2606. duration: 1500,
  2607. onClose: () => {}
  2608. })
  2609. } else {
  2610. this.$alert(data.msg, '错误', {
  2611. confirmButtonText: '确定'
  2612. })
  2613. }
  2614. })
  2615. }).catch(() => {
  2616. })
  2617. },
  2618. // 校验用户是否收藏
  2619. favoriteIsOk () {
  2620. let userFavorite = {
  2621. userId: this.$store.state.user.id,
  2622. languageCode: this.$i18n.locale
  2623. }
  2624. userFavoriteList(userFavorite).then(({data}) => {
  2625. for (let i = 0; i < data.list.length; i++) {
  2626. if(this.$route.meta.menuId === data.list[i].menuId){
  2627. this.favorite = true
  2628. }
  2629. }
  2630. })
  2631. },
  2632. // 收藏 OR 取消收藏
  2633. favoriteFunction () {
  2634. let userFavorite = {
  2635. userId: this.$store.state.user.id,
  2636. functionId: this.$route.meta.menuId,
  2637. }
  2638. if (this.favorite) {
  2639. removeUserFavorite(userFavorite).then(({data}) => {
  2640. this.$message.success(data.msg)
  2641. this.favorite = false
  2642. })
  2643. } else {
  2644. // 收藏
  2645. saveUserFavorite(userFavorite).then(({data}) => {
  2646. this.$message.success(data.msg)
  2647. this.favorite = true
  2648. })
  2649. }
  2650. },
  2651. closeDialog () {
  2652. this.operatorData = {
  2653. site: '',
  2654. adminName: '',
  2655. adminID: '',
  2656. roleName: '机修人员',
  2657. }
  2658. },
  2659. // 动态列开始 获取 用户保存的 格式列
  2660. async getTableUserColumn (tableId, columnId) {
  2661. let queryTableUser = {
  2662. userId: this.$store.state.user.name,
  2663. functionId: this.$route.meta.menuId,
  2664. tableId: tableId,
  2665. status: true,
  2666. languageCode: this.$i18n.locale
  2667. }
  2668. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  2669. if (data.rows.length > 0) {
  2670. //this.columnList1 = []
  2671. switch (columnId) {
  2672. case 1:
  2673. this.columnList = data.rows
  2674. break;
  2675. case 2:
  2676. this.columnDetailList = data.rows
  2677. break;
  2678. // case 3:
  2679. // this.columnList2 = data.rows
  2680. // break;
  2681. // case 4:
  2682. // this.columnList3 = data.rows
  2683. // break;
  2684. }
  2685. } else {
  2686. this.getColumnList(tableId, columnId)
  2687. }
  2688. })
  2689. },
  2690. // 获取 tableDefault 列
  2691. async getColumnList (tableId, columnId) {
  2692. let queryTable = {
  2693. functionId: this.$route.meta.menuId,
  2694. tableId: tableId,
  2695. languageCode: this.$i18n.locale
  2696. }
  2697. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  2698. if (!data.rows.length == 0) {
  2699. switch (columnId) {
  2700. case 1:
  2701. this.columnList = data.rows
  2702. break;
  2703. case 2:
  2704. this.columnDetailList = data.rows
  2705. break;
  2706. // case 3:
  2707. // this.columnList2 = data.rows
  2708. // break;
  2709. // case 4:
  2710. // this.columnList3 = data.rows
  2711. // break;
  2712. }
  2713. } else {
  2714. // this.showDefault = true.
  2715. }
  2716. })
  2717. },
  2718. }
  2719. }
  2720. </script>
  2721. <style scoped>
  2722. </style>