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.

2888 lines
98 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
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
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
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
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
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
3 years ago
  1. <template>
  2. <div class="mod-config">
  3. <div>
  4. <span @click="favoriteFunction()">
  5. <icon-svg :name="favorite?'xiangqufill':'xiangqu'" class="sl-svg"></icon-svg>
  6. </span>
  7. </div>
  8. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList">
  9. <el-form-item :label="'BU'">
  10. <el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 130px">
  11. <el-option
  12. v-for = "i in userBuList"
  13. :key = "i.buNo"
  14. :label = "i.buDesc"
  15. :value = "i.buDesc">
  16. </el-option>
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item :label="'计划编码'">
  20. <el-input v-model="searchData.planID" clearable style="width: 120px"></el-input>
  21. </el-form-item>
  22. <el-form-item :label="'计划描述'">
  23. <el-input v-model="searchData.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 v-if="!authSearch" @click="getDataList()">查询</el-button>
  57. <el-button v-if="!authSave" 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 === '已计划' && !authRelease" @click="createOrder(scope.row)">下达</a>
  103. <a type="text" size="small" v-if="scope.row.status === '进行中' && !authPlan" @click="planOrder(scope.row)">计划</a>
  104. <a type="text" size="small" v-if="scope.row.status !== '已结束' && scope.row.status !== '已取消' && !authCancel" @click="cancelPlan(scope.row)">取消</a>
  105. <a type="text" size="small" v-if="scope.row.status === '已计划' && !authUpdate" @click="updateModal(scope.row)">编辑</a>
  106. <a type="text" size="small" v-if="scope.row.status !== '进行中' && !authDelete" @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.sitename"
  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 v-model="operatorData.roleId" placeholder="请选择" style="width: 120px">
  583. <el-option
  584. v-for = "i in roleList"
  585. :key = "i.roleId"
  586. :label = "i.roleName"
  587. :value = "i.roleId">
  588. </el-option>
  589. </el-select>
  590. </el-form-item>
  591. <el-form-item :label="'用户账号'">
  592. <el-input v-model="operatorData.adminID" clearable style="width: 120px"></el-input>
  593. </el-form-item>
  594. <el-form-item :label="'用户名称'">
  595. <el-input v-model="operatorData.adminName" clearable style="width: 120px"></el-input>
  596. </el-form-item>
  597. <el-form-item :label="' '">
  598. <el-button type="primary" @click="getOperatorList2">查询</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 v-model="checkerData.roleId" placeholder="请选择" style="width: 120px">
  644. <el-option
  645. v-for = "i in roleList"
  646. :key = "i.roleId"
  647. :label = "i.roleName"
  648. :value = "i.roleId">
  649. </el-option>
  650. </el-select>
  651. </el-form-item>
  652. <el-form-item :label="'人员编码'">
  653. <el-input v-model="checkerData.adminID" clearable style="width: 120px"></el-input>
  654. </el-form-item>
  655. <el-form-item :label="'人员姓名'">
  656. <el-input v-model="checkerData.adminName" clearable style="width: 120px"></el-input>
  657. </el-form-item>
  658. <el-form-item :label="' '">
  659. <el-button type="primary" @click="getCheckerList2">查询</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. getUserRoleList
  812. } from "@/api/eam/eam.js"
  813. import {getTableDefaultListLanguage, getTableUserListLanguage} from "@/api/table.js"
  814. import Chooselist from '@/views/modules/common/Chooselist_eam'
  815. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  816. export default {
  817. components: {
  818. Chooselist
  819. },
  820. data () {
  821. return {
  822. // 是否收藏
  823. favorite: false,
  824. // 导出 start
  825. exportData: [],
  826. exportName: "点检计划" + this.dayjs().format('YYYYMMDDHHmmss'),
  827. exportHeader: ["点检计划"],
  828. exportFooter: [],
  829. exportList: [],
  830. // 导出 end
  831. tagNo:'',
  832. searchData: {
  833. site: this.$store.state.user.site,
  834. userName: this.$store.state.user.name,
  835. planID: '',
  836. planDesc: '',
  837. objectID: '',
  838. buDesc: '',
  839. status: '',
  840. startDate: new Date(),
  841. endDate:'',
  842. functionType:'A',
  843. page: 1,
  844. limit: 10,
  845. },
  846. pageIndex: 1,
  847. pageSize: 20,
  848. totalPage: 0,
  849. height: 200,
  850. dataList: [],
  851. dataListLoading: false,
  852. dataListSelections: [],
  853. modalFlag: false,
  854. modalDisableFlag: false,
  855. modalData: {
  856. objectList: [],
  857. flag: '',
  858. bu: '',
  859. functionType: 'A',
  860. site: '',
  861. planID: '',
  862. planDesc: '',
  863. objectID: '',
  864. propertiesCode: '',
  865. propertiesDesc: '',
  866. operator: '',
  867. operatorName: '',
  868. checker: '',
  869. checkerName: '',
  870. planPeriod: '',
  871. status: '',
  872. planStartDate: '',
  873. planEndDate: '',
  874. createdBy: this.$store.state.user.name,
  875. updateBy: this.$store.state.user.name,
  876. userId: '',
  877. remark: '',
  878. workOrderRule: '',
  879. planCycle: '',
  880. taskStartDate: '',
  881. autoRenewal: ''
  882. },
  883. objectData: {
  884. site: '',
  885. bu: '',
  886. objectID: '',
  887. objectDesc: '',
  888. familyID: '',
  889. },
  890. objectList: [],
  891. // 展示列集
  892. columnList: [
  893. {
  894. userId: this.$store.state.user.name,
  895. functionId: 101002003,
  896. serialNumber: '101002003Table1BuDesc',
  897. tableId: "101002003Table1",
  898. tableName: "点检计划表",
  899. columnProp: 'buDesc',
  900. headerAlign: "center",
  901. align: "center",
  902. columnLabel: 'BU',
  903. columnHidden: false,
  904. columnImage: false,
  905. columnSortable: false,
  906. sortLv: 0,
  907. status: true,
  908. fixed: '',
  909. columnWidth: 100,
  910. },
  911. {
  912. userId: this.$store.state.user.name,
  913. functionId: 101002003,
  914. serialNumber: '101002003Table1PlanID',
  915. tableId: "101002003Table1",
  916. tableName: "点检计划表",
  917. columnProp: 'planID',
  918. headerAlign: "center",
  919. align: "center",
  920. columnLabel: '计划编码',
  921. columnHidden: false,
  922. columnImage: false,
  923. columnSortable: false,
  924. sortLv: 0,
  925. status: true,
  926. fixed: '',
  927. columnWidth: 120,
  928. },
  929. {
  930. userId: this.$store.state.user.name,
  931. functionId: 101002003,
  932. serialNumber: '101002003Table1PlanDesc',
  933. tableId: "101002003Table1",
  934. tableName: "点检计划表",
  935. columnProp: 'planDesc',
  936. headerAlign: "center",
  937. align: "left",
  938. columnLabel: '计划描述',
  939. columnHidden: false,
  940. columnImage: false,
  941. columnSortable: false,
  942. sortLv: 0,
  943. status: true,
  944. fixed: '',
  945. columnWidth: 200,
  946. },
  947. {
  948. userId: this.$store.state.user.name,
  949. functionId: 101002003,
  950. serialNumber: '101002003Table1PropertiesCode',
  951. tableId: "101002003Table1",
  952. tableName: "点检计划表",
  953. columnProp: 'propertiesCode',
  954. headerAlign: "center",
  955. align: "center",
  956. columnLabel: '点检模板编码',
  957. columnHidden: false,
  958. columnImage: false,
  959. columnSortable: false,
  960. sortLv: 0,
  961. status: true,
  962. fixed: '',
  963. columnWidth: 120,
  964. },
  965. {
  966. userId: this.$store.state.user.name,
  967. functionId: 101002003,
  968. serialNumber: '101002003Table1Status',
  969. tableId: "101002003Table1",
  970. tableName: "点检计划表",
  971. columnProp: 'status',
  972. headerAlign: "center",
  973. align: "center",
  974. columnLabel: '状态',
  975. columnHidden: false,
  976. columnImage: false,
  977. columnSortable: false,
  978. sortLv: 0,
  979. status: true,
  980. fixed: '',
  981. columnWidth: 100,
  982. },
  983. {
  984. userId: this.$store.state.user.name,
  985. functionId: 101002003,
  986. serialNumber: '101002003Table1PlanStartDate',
  987. tableId: "101002003Table1",
  988. tableName: "点检计划表",
  989. columnProp: 'planStartDate',
  990. headerAlign: "center",
  991. align: "center",
  992. columnLabel: '计划开始日期',
  993. columnHidden: false,
  994. columnImage: false,
  995. columnSortable: false,
  996. sortLv: 0,
  997. status: true,
  998. fixed: '',
  999. columnWidth: 130,
  1000. },
  1001. {
  1002. userId: this.$store.state.user.name,
  1003. functionId: 101002003,
  1004. serialNumber: '101002003Table1PlanEndDate',
  1005. tableId: "101002003Table1",
  1006. tableName: "点检计划表",
  1007. columnProp: 'planEndDate',
  1008. headerAlign: "center",
  1009. align: "center",
  1010. columnLabel: '计划结束日期',
  1011. columnHidden: false,
  1012. columnImage: false,
  1013. columnSortable: false,
  1014. sortLv: 0,
  1015. status: true,
  1016. fixed: '',
  1017. columnWidth: 130,
  1018. },
  1019. {
  1020. userId: this.$store.state.user.name,
  1021. functionId: 101002003,
  1022. serialNumber: '101002003Table1TaskStartDate',
  1023. tableId: "101002003Table1",
  1024. tableName: "点检计划表",
  1025. columnProp: 'taskStartDate',
  1026. headerAlign: "center",
  1027. align: "center",
  1028. columnLabel: '任务开始时间',
  1029. columnHidden: false,
  1030. columnImage: false,
  1031. columnSortable: false,
  1032. sortLv: 0,
  1033. status: true,
  1034. fixed: '',
  1035. columnWidth: 170,
  1036. },
  1037. {
  1038. userId: this.$store.state.user.name,
  1039. functionId: 101002003,
  1040. serialNumber: '101002003Table1NextWorkDate',
  1041. tableId: "101002003Table1",
  1042. tableName: "点检计划表",
  1043. columnProp: 'nextWorkDate',
  1044. headerAlign: "center",
  1045. align: "center",
  1046. columnLabel: '下次执行日期',
  1047. columnHidden: false,
  1048. columnImage: false,
  1049. columnSortable: false,
  1050. sortLv: 0,
  1051. status: true,
  1052. fixed: '',
  1053. columnWidth: 130,
  1054. },
  1055. {
  1056. userId: this.$store.state.user.name,
  1057. functionId: 101002003,
  1058. serialNumber: '101002003Table1OperatorName',
  1059. tableId: "101002003Table1",
  1060. tableName: "点检计划表",
  1061. columnProp: 'operatorName',
  1062. headerAlign: "center",
  1063. align: "left",
  1064. columnLabel: '计划执行人员',
  1065. columnHidden: false,
  1066. columnImage: false,
  1067. columnSortable: false,
  1068. sortLv: 0,
  1069. status: true,
  1070. fixed: '',
  1071. columnWidth: 250,
  1072. },
  1073. {
  1074. userId: this.$store.state.user.name,
  1075. functionId: 101002003,
  1076. serialNumber: '101002003Table1CheckerName',
  1077. tableId: "101002003Table1",
  1078. tableName: "点检计划表",
  1079. columnProp: 'checkerName',
  1080. headerAlign: "center",
  1081. align: "left",
  1082. columnLabel: '审核人员',
  1083. columnHidden: false,
  1084. columnImage: false,
  1085. columnSortable: false,
  1086. sortLv: 0,
  1087. status: true,
  1088. fixed: '',
  1089. columnWidth: 150,
  1090. },
  1091. {
  1092. userId: this.$store.state.user.name,
  1093. functionId: 101002003,
  1094. serialNumber: '101002003Table1PlanPeriod',
  1095. tableId: "101002003Table1",
  1096. tableName: "点检计划表",
  1097. columnProp: 'planPeriod',
  1098. headerAlign: "center",
  1099. align: "right",
  1100. columnLabel: '点检频率',
  1101. columnHidden: false,
  1102. columnImage: false,
  1103. columnSortable: false,
  1104. sortLv: 0,
  1105. status: true,
  1106. fixed: '',
  1107. columnWidth: 100,
  1108. },
  1109. {
  1110. userId: this.$store.state.user.name,
  1111. functionId: 101002003,
  1112. serialNumber: '101002003Table1PlanCycle',
  1113. tableId: "101002003Table1",
  1114. tableName: "点检计划表",
  1115. columnProp: 'planCycle',
  1116. headerAlign: "center",
  1117. align: "center",
  1118. columnLabel: '点检周期',
  1119. columnHidden: false,
  1120. columnImage: false,
  1121. columnSortable: false,
  1122. sortLv: 0,
  1123. status: true,
  1124. fixed: '',
  1125. columnWidth: 100,
  1126. },
  1127. {
  1128. userId: this.$store.state.user.name,
  1129. functionId: 101002003,
  1130. serialNumber: '101002003Table1CreatedDate',
  1131. tableId: "101002003Table1",
  1132. tableName: "点检计划表",
  1133. columnProp: 'createdDate',
  1134. headerAlign: "center",
  1135. align: "center",
  1136. columnLabel: '创建时间',
  1137. columnHidden: false,
  1138. columnImage: false,
  1139. columnSortable: false,
  1140. sortLv: 0,
  1141. status: true,
  1142. fixed: '',
  1143. columnWidth: 170,
  1144. },
  1145. {
  1146. userId: this.$store.state.user.name,
  1147. functionId: 101002003,
  1148. serialNumber: '101002003Table1CreatedBy',
  1149. tableId: "101002003Table1",
  1150. tableName: "点检计划表",
  1151. columnProp: 'createdBy',
  1152. headerAlign: "center",
  1153. align: "center",
  1154. columnLabel: '创建人',
  1155. columnHidden: false,
  1156. columnImage: false,
  1157. columnSortable: false,
  1158. sortLv: 0,
  1159. status: true,
  1160. fixed: '',
  1161. columnWidth: 100,
  1162. },
  1163. {
  1164. userId: this.$store.state.user.name,
  1165. functionId: 101002003,
  1166. serialNumber: '101002003Table1UpdateDate',
  1167. tableId: "101002003Table1",
  1168. tableName: "点检计划表",
  1169. columnProp: 'updateDate',
  1170. headerAlign: "center",
  1171. align: "center",
  1172. columnLabel: '更新时间',
  1173. columnHidden: false,
  1174. columnImage: false,
  1175. columnSortable: false,
  1176. sortLv: 0,
  1177. status: true,
  1178. fixed: '',
  1179. columnWidth: 170,
  1180. },
  1181. {
  1182. userId: this.$store.state.user.name,
  1183. functionId: 101002003,
  1184. serialNumber: '101002003Table1UpdateBy',
  1185. tableId: "101002003Table1",
  1186. tableName: "点检计划表",
  1187. columnProp: 'updateBy',
  1188. headerAlign: "center",
  1189. align: "center",
  1190. columnLabel: '更新人',
  1191. columnHidden: false,
  1192. columnImage: false,
  1193. columnSortable: false,
  1194. sortLv: 0,
  1195. status: true,
  1196. fixed: '',
  1197. columnWidth: 100,
  1198. },
  1199. {
  1200. userId: this.$store.state.user.name,
  1201. functionId: 101002003,
  1202. serialNumber: '101002003Table1Remark',
  1203. tableId: "101002003Table1",
  1204. tableName: "点检计划表",
  1205. columnProp: 'remark',
  1206. headerAlign: "center",
  1207. align: "left",
  1208. columnLabel: '备注',
  1209. columnHidden: false,
  1210. columnImage: false,
  1211. columnSortable: false,
  1212. sortLv: 0,
  1213. status: true,
  1214. fixed: '',
  1215. columnWidth: 200,
  1216. },
  1217. ],
  1218. //项目清单
  1219. addDetailModalFlag: false,
  1220. detailData: {
  1221. site: '',
  1222. buNo: '',
  1223. planID: '',
  1224. codeNo: '',
  1225. codeDesc: '',
  1226. functionType: 'A',
  1227. itemNo: '',
  1228. itemDesc: '',
  1229. itemType: 'A',
  1230. objectID: '',
  1231. objectDesc: '',
  1232. userId: this.$store.state.user.name
  1233. },
  1234. detailModelFlag: false,
  1235. detailList: [],
  1236. columnDetailList: [
  1237. {
  1238. userId: this.$store.state.user.name,
  1239. functionId: 101002003,
  1240. serialNumber: '101002003Table2ItemNo',
  1241. tableId: "101002003Table2",
  1242. tableName: "点检项目表",
  1243. columnProp: 'itemNo',
  1244. headerAlign: "center",
  1245. align: "center",
  1246. columnLabel: '点检项目编码',
  1247. columnHidden: false,
  1248. columnImage: false,
  1249. columnSortable: false,
  1250. sortLv: 0,
  1251. status: true,
  1252. fixed: '',
  1253. columnWidth: 90,
  1254. },
  1255. {
  1256. userId: this.$store.state.user.name,
  1257. functionId: 101002003,
  1258. serialNumber: '101002003Table2ItemDesc',
  1259. tableId: "101002003Table2",
  1260. tableName: "点检项目表",
  1261. columnProp: 'itemDesc',
  1262. headerAlign: "center",
  1263. align: "center",
  1264. columnLabel: '点检项目名称',
  1265. columnHidden: false,
  1266. columnImage: false,
  1267. columnSortable: false,
  1268. sortLv: 0,
  1269. status: true,
  1270. fixed: '',
  1271. columnWidth: 90,
  1272. },
  1273. {
  1274. userId: this.$store.state.user.name,
  1275. functionId: 101002003,
  1276. serialNumber: '101002003Table2ItemRemark',
  1277. tableId: "101002003Table2",
  1278. tableName: "点检项目表",
  1279. columnProp: 'itemRemark',
  1280. headerAlign: "center",
  1281. align: "center",
  1282. columnLabel: '点检方法说明',
  1283. columnHidden: false,
  1284. columnImage: false,
  1285. columnSortable: false,
  1286. sortLv: 0,
  1287. status: true,
  1288. fixed: '',
  1289. columnWidth: 120,
  1290. },
  1291. {
  1292. userId: this.$store.state.user.name,
  1293. functionId: 101002003,
  1294. serialNumber: '101002003Table2ValueType',
  1295. tableId: "101002003Table2",
  1296. tableName: "点检项目表",
  1297. columnProp: 'valueType',
  1298. headerAlign: "center",
  1299. align: "center",
  1300. columnLabel: '检测值类型',
  1301. columnHidden: false,
  1302. columnImage: false,
  1303. columnSortable: false,
  1304. sortLv: 0,
  1305. status: true,
  1306. fixed: '',
  1307. columnWidth: 70,
  1308. },
  1309. {
  1310. userId: this.$store.state.user.name,
  1311. functionId: 101002003,
  1312. serialNumber: '101002003Table2DefaultValue',
  1313. tableId: "101002003Table2",
  1314. tableName: "点检项目表",
  1315. columnProp: 'defaultValue',
  1316. headerAlign: "center",
  1317. align: "center",
  1318. columnLabel: '参照值',
  1319. columnHidden: false,
  1320. columnImage: false,
  1321. columnSortable: false,
  1322. sortLv: 0,
  1323. status: true,
  1324. fixed: '',
  1325. columnWidth: 70,
  1326. },
  1327. {
  1328. userId: this.$store.state.user.name,
  1329. functionId: 101002003,
  1330. serialNumber: '101002003Table2MaxValue',
  1331. tableId: "101002003Table2",
  1332. tableName: "点检项目表",
  1333. columnProp: 'maxValue',
  1334. headerAlign: "center",
  1335. align: "center",
  1336. columnLabel: '最大值',
  1337. columnHidden: false,
  1338. columnImage: false,
  1339. columnSortable: false,
  1340. sortLv: 0,
  1341. status: true,
  1342. fixed: '',
  1343. columnWidth: 70,
  1344. },
  1345. {
  1346. userId: this.$store.state.user.name,
  1347. functionId: 101002003,
  1348. serialNumber: '101002003Table2MinValue',
  1349. tableId: "101002003Table2",
  1350. tableName: "点检项目表",
  1351. columnProp: 'minValue',
  1352. headerAlign: "center",
  1353. align: "center",
  1354. columnLabel: '最小值',
  1355. columnHidden: false,
  1356. columnImage: false,
  1357. columnSortable: false,
  1358. sortLv: 0,
  1359. status: true,
  1360. fixed: '',
  1361. columnWidth: 70,
  1362. },
  1363. {
  1364. userId: this.$store.state.user.name,
  1365. functionId: 101002003,
  1366. serialNumber: '101002003TableValueChooseFlag',
  1367. tableId: "101002003Table",
  1368. tableName: "common",
  1369. columnProp: 'valueChooseFlag',
  1370. headerAlign: "center",
  1371. align: "center",
  1372. columnLabel: '是否值可选',
  1373. columnHidden: false,
  1374. columnImage: false,
  1375. columnSortable: false,
  1376. sortLv: 0,
  1377. status: true,
  1378. fixed: '',
  1379. columnWidth: 70,
  1380. },
  1381. ],
  1382. itemModalData: {
  1383. site: '',
  1384. planID: '',
  1385. flag: '',
  1386. itemNo: '',
  1387. itemDesc: '',
  1388. valueTypeDb: '',
  1389. defaultValue: '',
  1390. valueChooseFlag: '',
  1391. createdBy: this.$store.state.user.name,
  1392. maxValue: '',
  1393. minValue: '',
  1394. itemRemark: '',
  1395. itemType: 'A',
  1396. },
  1397. itemModalFlag: false,
  1398. itemModalDisableFlag: false,
  1399. itemFlag: 'text',
  1400. chooseModalFlag: false,
  1401. chooseModalData: {
  1402. site: '',
  1403. buNo: '',
  1404. planID: '',
  1405. itemNo: '',
  1406. itemDesc: '',
  1407. itemType: 'A',
  1408. valueTypeDb: '',
  1409. },
  1410. chooseTableData: [],
  1411. itemData: {
  1412. site: '',
  1413. buNo: '',
  1414. planID: '',
  1415. itemNo: '',
  1416. valueNo: '',
  1417. availableValue: '',
  1418. itemType: 'A',
  1419. createdBy: this.$store.state.user.name
  1420. },
  1421. itemAddModalFlag: false,
  1422. operatorList: [],
  1423. checkerList: [],
  1424. operatorModelFlag: false,
  1425. checkerModelFlag: false,
  1426. operatorDetailList: [
  1427. {
  1428. columnProp: 'adminID',
  1429. headerAlign: "center",
  1430. align: "center",
  1431. columnLabel: '用户账号',
  1432. columnHidden: false,
  1433. columnImage: false,
  1434. columnSortable: false,
  1435. sortLv: 0,
  1436. status: true,
  1437. fixed: '',
  1438. },
  1439. {
  1440. columnProp: 'adminName',
  1441. headerAlign: "center",
  1442. align: "center",
  1443. columnLabel: '用户名称',
  1444. columnHidden: false,
  1445. columnImage: false,
  1446. columnSortable: false,
  1447. sortLv: 0,
  1448. status: true,
  1449. fixed: '',
  1450. },
  1451. {
  1452. columnProp: 'email',
  1453. headerAlign: "center",
  1454. align: "center",
  1455. columnLabel: '邮箱',
  1456. columnHidden: false,
  1457. columnImage: false,
  1458. columnSortable: false,
  1459. sortLv: 0,
  1460. status: true,
  1461. fixed: '',
  1462. },
  1463. {
  1464. columnProp: 'phone',
  1465. headerAlign: "center",
  1466. align: "center",
  1467. columnLabel: '手机号',
  1468. columnHidden: false,
  1469. columnImage: false,
  1470. columnSortable: false,
  1471. sortLv: 0,
  1472. status: true,
  1473. fixed: '',
  1474. },
  1475. ],
  1476. checkerDetailList: [
  1477. {
  1478. columnProp: 'adminID',
  1479. headerAlign: "center",
  1480. align: "center",
  1481. columnLabel: '人员编码',
  1482. columnHidden: false,
  1483. columnImage: false,
  1484. columnSortable: false,
  1485. sortLv: 0,
  1486. status: true,
  1487. fixed: '',
  1488. },
  1489. {
  1490. columnProp: 'adminName',
  1491. headerAlign: "center",
  1492. align: "center",
  1493. columnLabel: '人员名称',
  1494. columnHidden: false,
  1495. columnImage: false,
  1496. columnSortable: false,
  1497. sortLv: 0,
  1498. status: true,
  1499. fixed: '',
  1500. },
  1501. {
  1502. columnProp: 'email',
  1503. headerAlign: "center",
  1504. align: "center",
  1505. columnLabel: '邮箱',
  1506. columnHidden: false,
  1507. columnImage: false,
  1508. columnSortable: false,
  1509. sortLv: 0,
  1510. status: true,
  1511. fixed: '',
  1512. },
  1513. {
  1514. columnProp: 'phone',
  1515. headerAlign: "center",
  1516. align: "center",
  1517. columnLabel: '手机号',
  1518. columnHidden: false,
  1519. columnImage: false,
  1520. columnSortable: false,
  1521. sortLv: 0,
  1522. status: true,
  1523. fixed: '',
  1524. }
  1525. ],
  1526. dataListSelections2: [],
  1527. dataListSelections3: [],
  1528. objectSelections1: [],
  1529. objectSelections2: [],
  1530. roleList: [],
  1531. operatorData: {
  1532. site: this.$store.state.user.site,
  1533. bu: '',
  1534. adminID: '',
  1535. adminName: '',
  1536. roleId: '',
  1537. roleName: '',
  1538. },
  1539. checkerData: {
  1540. site: this.$store.state.user.site,
  1541. bu: '',
  1542. adminID: '',
  1543. adminName: '',
  1544. roleId: '',
  1545. roleName: '',
  1546. },
  1547. updateDetailData: {
  1548. site: '',
  1549. buNo: '',
  1550. planID: '',
  1551. objectID: '',
  1552. objectDesc: '',
  1553. },
  1554. // 快速添加
  1555. fastAddFlag: false,
  1556. objectList1: [],
  1557. objectList2: [],
  1558. objectListRow1: {},
  1559. objectListRow2: {},
  1560. updateObjectList: [],
  1561. updateModalFlag: false,
  1562. options: [],
  1563. rules: {
  1564. planDescType: [
  1565. {
  1566. required: true,
  1567. message: ' ',
  1568. trigger: 'change'
  1569. }
  1570. ],
  1571. propertiesCodeType: [
  1572. {
  1573. required: true,
  1574. message: ' ',
  1575. trigger: 'change'
  1576. }
  1577. ],
  1578. propertiesDescType: [
  1579. {
  1580. required: true,
  1581. message: ' ',
  1582. trigger: 'change'
  1583. }
  1584. ],
  1585. planStartDateType: [
  1586. {
  1587. required: true,
  1588. message: ' ',
  1589. trigger: 'change'
  1590. }
  1591. ],
  1592. planEndDateType: [
  1593. {
  1594. required: true,
  1595. message: ' ',
  1596. trigger: 'change'
  1597. }
  1598. ],
  1599. planPeriodType: [
  1600. {
  1601. required: true,
  1602. message: ' ',
  1603. trigger: 'change'
  1604. }
  1605. ],
  1606. operatorNameType: [
  1607. {
  1608. required: true,
  1609. message: ' ',
  1610. trigger: 'change'
  1611. }
  1612. ],
  1613. checkerNameType: [
  1614. {
  1615. required: true,
  1616. message: ' ',
  1617. trigger: 'change'
  1618. }
  1619. ],
  1620. taskStartDateType: [
  1621. {
  1622. required: true,
  1623. message: ' ',
  1624. trigger: 'change'
  1625. }
  1626. ]
  1627. },
  1628. message: {
  1629. name: "周末",
  1630. id: 'A'
  1631. },
  1632. pickerOptions: {
  1633. disabledDate (time) {
  1634. let curDate = new Date().getTime()
  1635. let curD = new Date()
  1636. /* 获取当前月份 */
  1637. let curMonth = curD.getMonth()
  1638. /* 生成实际的月份: 由于curMonth会比实际月份小1, 故需加1 */
  1639. curD.setMonth(curMonth + 1)
  1640. /* 将日期设置为0, 这里为什么要这样设置, 我不知道原因, 这是从网上学来的 */
  1641. curD.setDate(0)
  1642. /* 返回当月的天数 */
  1643. let days = curD.getDate()
  1644. let three = days * 24 * 3600 * 1000
  1645. let threeMonths = curDate - three
  1646. return time.getTime() > Date.now() || time.getTime() < threeMonths
  1647. },
  1648. },
  1649. pickerOptions2: {
  1650. disabledDate (time) {
  1651. return time.getTime() < Date.now() - 8.64e7
  1652. },
  1653. },
  1654. saveLoading: false,
  1655. updateLoading: false,
  1656. userBuList: [],
  1657. authSearch: false,
  1658. authSave: false,
  1659. authUpdate: false,
  1660. authDelete: false,
  1661. authRelease: false,
  1662. authPlan: false,
  1663. authCancel: false,
  1664. menuId: this.$route.meta.menuId,
  1665. }
  1666. },
  1667. mounted () {
  1668. this.$nextTick(() => {
  1669. this.height = window.innerHeight - 210
  1670. })
  1671. },
  1672. created () {
  1673. // 按钮控制
  1674. this.getButtonAuthData()
  1675. // 获取用户的 site 和 bu
  1676. this.getSiteAndBuByUserName()
  1677. // 校验用户是否收藏
  1678. this.favoriteIsOk()
  1679. // 动态列
  1680. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  1681. this.getTableUserColumn(this.$route.meta.menuId+'table2',2)
  1682. if (!this.authSearch) {
  1683. // 获取数据列表
  1684. this.getDataList()
  1685. }
  1686. // 获取用户角色
  1687. this.getUserRoleList()
  1688. },
  1689. methods: {
  1690. // 获取用户的bu
  1691. getSiteAndBuByUserName () {
  1692. let tempData = {
  1693. username: this.$store.state.user.name,
  1694. }
  1695. getSiteAndBuByUserName(tempData).then(({data}) => {
  1696. if (data.code === 0) {
  1697. this.userBuList = data.rows
  1698. }
  1699. })
  1700. },
  1701. // 时间处理函数
  1702. getStandTime (data) {
  1703. let value =
  1704. data.getFullYear() +
  1705. "-" +
  1706. this.checkTime(data.getMonth() + 1) +
  1707. "-" +
  1708. this.checkTime(data.getDate()) +
  1709. " " +
  1710. this.checkTime(data.getHours()) +
  1711. ":" +
  1712. this.checkTime(data.getMinutes()) +
  1713. ":" +
  1714. this.checkTime(data.getSeconds())
  1715. return value
  1716. },
  1717. // 时间处理,如果时间小于10 ,则再前面加一个'0'
  1718. checkTime (i) {
  1719. if (i < 10) {
  1720. i = "0" + i
  1721. }
  1722. return i
  1723. },
  1724. // 日期时间选择器改变
  1725. handleChangeTime () {
  1726. // 当选择的时间大于当前时间,自动填充为当前时间
  1727. // 设备开始时间
  1728. let start = (new Date(this.modalData.planStartDate) * 1000) / 1000;
  1729. if (start < Date.now()) {
  1730. this.modalData.planStartDate = this.getStandTime(new Date())
  1731. this.$message({
  1732. message: "时间超出范围!",
  1733. type: "warning",
  1734. })
  1735. }
  1736. // 设备结束时间
  1737. let end = (new Date(this.modalData.planEndDate) * 1000) / 1000;
  1738. if (end < Date.now()) {
  1739. this.modalData.planEndDate = this.getStandTime(new Date())
  1740. this.$message({
  1741. message: "时间超出范围!",
  1742. type: "warning",
  1743. })
  1744. }
  1745. // 结束时间小于开始时间
  1746. if (start > end) {
  1747. this.modalData.planEndDate = this.modalData.planStartDate;
  1748. this.$message({
  1749. message: "结束时间小于开始时间!",
  1750. type: "warning",
  1751. })
  1752. }
  1753. },
  1754. // 点击行选中复选框
  1755. // 机修人员
  1756. operatorClickRow (row) {
  1757. this.$refs.operatorTable.toggleRowSelection(row)
  1758. },
  1759. // 审核人员
  1760. checkerClickRow (row) {
  1761. this.$refs.checkerTable.toggleRowSelection(row)
  1762. },
  1763. // 点击行选中复选框
  1764. objectClickRow (row) {
  1765. this.$refs.objectTable.toggleRowSelection(row)
  1766. },
  1767. // 可选设备
  1768. objectClickRow1 (row) {
  1769. this.$refs.objectTable1.toggleRowSelection(row)
  1770. },
  1771. // 已有设备
  1772. objectClickRow2 (row) {
  1773. this.$refs.objectTable2.toggleRowSelection(row)
  1774. },
  1775. // 设备名内容改变事件
  1776. objectChange () {
  1777. searchPlanItems(this.detailData).then(({data}) => {
  1778. this.detailList = data.rows
  1779. })
  1780. },
  1781. // 新增计划中的设备
  1782. addPlanDetail () {
  1783. this.objectListRow2 = null
  1784. this.objectListRow1 = null
  1785. getObjList(this.updateDetailData).then(({data}) => {
  1786. this.objectList1 = data.row1
  1787. this.objectList2 = data.row2
  1788. })
  1789. this.fastAddFlag = true
  1790. },
  1791. // 添加设备
  1792. addObject () {
  1793. if (this.objectSelections1.length === 0) {
  1794. this.$alert('请勾选要添加的设备!', '错误', {
  1795. confirmButtonText: '确定'
  1796. })
  1797. return false
  1798. }
  1799. let newData = this.objectList1.filter(
  1800. (a) => !this.objectSelections1.some((b) => a.objectID === b.objectID)
  1801. )
  1802. this.objectList1 = newData
  1803. for (let i = 0; i < this.objectSelections1.length; i++) {
  1804. this.objectList2.push(this.objectSelections1[i])
  1805. }
  1806. },
  1807. // 删除设备
  1808. delObject () {
  1809. if (this.objectSelections2.length === 0) {
  1810. this.$alert('请勾选要删除的设备!', '错误', {
  1811. confirmButtonText: '确定'
  1812. })
  1813. return false
  1814. }
  1815. let newData = this.objectList2.filter(
  1816. (a) => !this.objectSelections2.some((b) => a.objectID === b.objectID)
  1817. )
  1818. this.objectList2 = newData
  1819. for (let i = 0; i < this.objectSelections2.length; i++) {
  1820. this.objectList1.push(this.objectSelections2[i])
  1821. }
  1822. },
  1823. getNewPlanDetailList () {
  1824. this.updateObjectList = this.objectList2
  1825. },
  1826. // 删除计划中的设备
  1827. delPlanDetail (row) {
  1828. let tempData = {
  1829. site: this.$store.state.user.site,
  1830. planID: row.planID,
  1831. objectID: row.objectID,
  1832. }
  1833. delPlanDetail(tempData).then(({data}) => {
  1834. if (data && data.code === 0) {
  1835. this.getPlanDetailList()
  1836. this.$message({
  1837. message: '操作成功',
  1838. type: 'success',
  1839. duration: 1500,
  1840. onClose: () => {}
  1841. })
  1842. } else {
  1843. this.$alert(data.msg, '错误', {
  1844. confirmButtonText: '确定'
  1845. })
  1846. }
  1847. })
  1848. },
  1849. // 获取计划设备明细
  1850. getPlanDetailList () {
  1851. getPlanDetailList(this.updateDetailData).then(({data}) => {
  1852. if (data && data.code === 0) {
  1853. this.updateObjectList = data.rows
  1854. } else {
  1855. this.$alert(data.msg, '错误', {
  1856. confirmButtonText: '确定'
  1857. })
  1858. }
  1859. })
  1860. },
  1861. // 获取机修人员列表
  1862. getOperatorList () {
  1863. this.operatorData.bu = this.modalData.bu
  1864. if (this.roleList.length > 0) {
  1865. let filterList = this.roleList.filter(item => item.roleName === '机修人员')
  1866. if (filterList.length > 0) {
  1867. this.operatorData.roleId = filterList[0].roleId
  1868. } else {
  1869. this.operatorData.roleId = this.roleList[0].roleId
  1870. }
  1871. } else {
  1872. this.operatorData.roleId = ''
  1873. }
  1874. getOperatorList(this.operatorData).then(({data}) => {
  1875. if (data && data.code === 0) {
  1876. this.operatorList = data.rows
  1877. this.modalData.operatorName = ''
  1878. this.modalData.operator = ''
  1879. this.operatorModelFlag = true
  1880. } else {
  1881. this.$alert(data.msg, '错误', {
  1882. confirmButtonText: '确定'
  1883. })
  1884. }
  1885. })
  1886. },
  1887. // 查询机修人员列表
  1888. getOperatorList2 () {
  1889. getOperatorList(this.operatorData).then(({data}) => {
  1890. if (data && data.code === 0) {
  1891. this.operatorList = data.rows
  1892. } else {
  1893. this.operatorList = []
  1894. }
  1895. })
  1896. },
  1897. // 获取用户角色
  1898. getUserRoleList () {
  1899. getUserRoleList().then(({data}) => {
  1900. if (data.code === 0) {
  1901. this.roleList = data.rows
  1902. } else {
  1903. this.roleList = []
  1904. }
  1905. })
  1906. },
  1907. // // 获取数据列表
  1908. // getRoleNameList () {
  1909. // this.dataListLoading = true
  1910. // this.$http({
  1911. // url: this.$http.adornUrl('/sys/role/list2'),
  1912. // method: 'get',
  1913. // params: this.$http.adornParams({
  1914. // 'page': this.pageIndex,
  1915. // 'limit': this.pageSize,
  1916. // })
  1917. // }).then(({data}) => {
  1918. // let temp = []
  1919. // if (data && data.code === 0) {
  1920. // this.roleList = data.page.list
  1921. // temp = this.roleList[0]
  1922. // this.roleList[0] = this.roleList[1]
  1923. // this.roleList[1] = temp
  1924. // this.totalPage = data.page.totalCount
  1925. // } else {
  1926. // this.roleList = []
  1927. // this.totalPage = 0
  1928. // }
  1929. // this.dataListLoading = false
  1930. // })
  1931. // },
  1932. // 获取审核人员
  1933. getCheckerList () {
  1934. this.checkerData.bu = this.modalData.bu
  1935. if (this.roleList.length > 0) {
  1936. let filterList = this.roleList.filter(item => item.roleName === '审核人员')
  1937. if (filterList.length > 0) {
  1938. this.checkerData.roleId = filterList[0].roleId
  1939. } else {
  1940. this.checkerData.roleId = this.roleList[0].roleId
  1941. }
  1942. } else {
  1943. this.checkerData.roleId = ''
  1944. }
  1945. getCheckerList(this.checkerData).then(({data}) => {
  1946. if (data && data.code === 0) {
  1947. this.checkerList = data.rows
  1948. this.modalData.checkerName = ''
  1949. this.modalData.checker = ''
  1950. this.checkerModelFlag = true
  1951. } else {
  1952. this.$alert(data.msg, '错误', {
  1953. confirmButtonText: '确定'
  1954. })
  1955. }
  1956. })
  1957. },
  1958. // 查询机修人员列表
  1959. getCheckerList2 () {
  1960. getCheckerList(this.checkerData).then(({data}) => {
  1961. if (data && data.code === 0) {
  1962. this.checkerList = data.rows
  1963. } else {
  1964. this.checkerList = []
  1965. }
  1966. })
  1967. },
  1968. // 多选
  1969. selectionChangeHandle2 (val) {
  1970. this.dataListSelections2 = val
  1971. },
  1972. selectionChangeHandle3 (val) {
  1973. this.dataListSelections3 = val
  1974. },
  1975. selectionObject1(val){
  1976. this.objectSelections1 = val
  1977. },
  1978. selectionObject2(val){
  1979. this.objectSelections2 = val
  1980. },
  1981. selectFlag(){
  1982. return true
  1983. },
  1984. // 确认多选机修人员
  1985. confirmOperator () {
  1986. if(this.dataListSelections2.length === 0){
  1987. this.$message.warning("请勾选人员!")
  1988. return
  1989. }
  1990. for (let i = 0; i < this.dataListSelections2.length; i++) {
  1991. this.modalData.operatorName = this.modalData.operatorName + ";" + this.dataListSelections2[i].adminName
  1992. this.modalData.operator = this.modalData.operator + ";" + this.dataListSelections2[i].adminID
  1993. }
  1994. this.modalData.operator = this.modalData.operator.substring(1)
  1995. this.modalData.operatorName = this.modalData.operatorName.substring(1)
  1996. this.operatorModelFlag = false
  1997. },
  1998. // 确认多选审核人员
  1999. confirmOperator2 () {
  2000. if (this.dataListSelections3.length === 0) {
  2001. this.$message.warning("请勾选人员!")
  2002. return
  2003. }
  2004. for (let i = 0; i < this.dataListSelections3.length; i++) {
  2005. this.modalData.checkerName = this.modalData.checkerName + ";" + this.dataListSelections3[i].adminName
  2006. this.modalData.checker = this.modalData.checker + ";" + this.dataListSelections3[i].adminID
  2007. }
  2008. this.modalData.checker = this.modalData.checker.substring(1)
  2009. this.modalData.checkerName = this.modalData.checkerName.substring(1)
  2010. this.checkerModelFlag = false
  2011. },
  2012. // 获取基础数据列表S
  2013. getBaseList (val,type) {
  2014. this.tagNo = val
  2015. this.$nextTick(() => {
  2016. let strVal = ''
  2017. let conSql = ''
  2018. if (val === 200 && this.modalDisableFlag != true) {
  2019. strVal = this.modalData.objectID
  2020. this.$refs.baseList.init(val, strVal)
  2021. }
  2022. if (val === 31) {
  2023. strVal = this.modalData.propertiesCode
  2024. if (this.modalData.bu === null || this.modalData.bu === '') {
  2025. this.$message.warning("请选择BU!")
  2026. return
  2027. } else {
  2028. conSql = " and site = '" + this.modalData.bu.split('_')[0] + "'" + " and bu_no = '" + this.modalData.bu.split('_')[1] + "'"
  2029. this.$refs.baseList.init(val, strVal, conSql)
  2030. }
  2031. }
  2032. if (val === 201) {
  2033. strVal = this.modalData.operator
  2034. this.$refs.baseList.init(val, strVal)
  2035. }
  2036. })
  2037. },
  2038. // 列表方法的回调
  2039. getBaseData (val) {
  2040. if (this.tagNo === 200) {
  2041. this.modalData.objectID = val.ObjectID
  2042. this.modalData.objectDesc = val.ObjectDesc
  2043. }
  2044. if (this.tagNo === 31) {
  2045. this.modalData.propertiesCode = val.Code_No
  2046. this.modalData.propertiesDesc = val.Code_Desc
  2047. }
  2048. if (this.tagNo === 201) {
  2049. this.modalData.operator = val.AdminID
  2050. }
  2051. },
  2052. //导出excel
  2053. async createExportData () {
  2054. this.searchData.limit = -1
  2055. this.searchData.page = 1
  2056. await eamWorkPlanOverviewSearch(this.searchData).then(({data}) => {
  2057. this.exportList= data.page.list
  2058. })
  2059. return this.exportList
  2060. },
  2061. startDownload() {},
  2062. finishDownload() {},
  2063. fields() {
  2064. let json = "{"
  2065. this.columnList.forEach((item, index) => {
  2066. if (index == this.columnList.length - 1) {
  2067. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  2068. } else {
  2069. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  2070. }
  2071. })
  2072. json += "}"
  2073. let s = eval("(" + json + ")")
  2074. return s
  2075. },
  2076. // 获取数据列表
  2077. getDataList () {
  2078. this.searchData.limit = this.pageSize
  2079. this.searchData.page = this.pageIndex
  2080. eamWorkPlanOverviewSearch(this.searchData).then(({data}) => {
  2081. if (data.code === 0) {
  2082. this.dataList = data.page.list
  2083. this.pageIndex = data.page.currPage
  2084. this.pageSize = data.page.pageSize
  2085. this.totalPage = data.page.totalCount
  2086. }
  2087. })
  2088. },
  2089. // 每页数
  2090. sizeChangeHandle (val) {
  2091. this.pageSize = val
  2092. this.pageIndex = 1
  2093. this.getDataList()
  2094. },
  2095. // 当前页
  2096. currentChangeHandle (val) {
  2097. this.pageIndex = val
  2098. this.getDataList()
  2099. },
  2100. // 多选
  2101. selectionChangeHandle (val) {
  2102. this.dataListSelections = val
  2103. },
  2104. addModal () {
  2105. this.modalData = {
  2106. flag: '1',
  2107. objectList: [],
  2108. functionType: 'A',
  2109. site: '',
  2110. bu: this.userBuList[0].buNo,
  2111. planID: '',
  2112. planDesc: '',
  2113. objectID: '',
  2114. objectDesc: '',
  2115. propertiesCode: '',
  2116. propertiesDesc: '',
  2117. operator: '',
  2118. operatorName: '',
  2119. checker: '',
  2120. checkerName: '',
  2121. planPeriod: '',
  2122. status: '',
  2123. planStartDate: '',
  2124. planEndDate: '',
  2125. userId: this.$store.state.user.name,
  2126. createdBy: this.$store.state.user.name,
  2127. updateBy: this.$store.state.user.name,
  2128. remark: '',
  2129. workOrderRule: '',
  2130. planCycle: '天',
  2131. taskStartDate: '',
  2132. autoRenewal: ''
  2133. }
  2134. this.modalDisableFlag = false
  2135. this.objectList = []
  2136. this.modalFlag = true
  2137. },
  2138. updateModal (row) {
  2139. this.modalData = {
  2140. flag: '2',
  2141. objectList: [],
  2142. functionType: 'A',
  2143. site: row.site,
  2144. bu: row.site + '_' + row.buNo,
  2145. planID: row.planID,
  2146. planDesc: row.planDesc,
  2147. objectID: row.objectID,
  2148. objectDesc: row.objectID,
  2149. propertiesCode: row.propertiesCode,
  2150. propertiesDesc: row.codeDesc,
  2151. operator: row.operator,
  2152. operatorName: row.operatorName,
  2153. checker: row.checker,
  2154. checkerName: row.checkerName,
  2155. planPeriod: row.planPeriod,
  2156. status: row.status,
  2157. planStartDate: row.planStartDate,
  2158. planEndDate: row.planEndDate,
  2159. userId: this.$store.state.user.name,
  2160. createdBy: this.$store.state.user.name,
  2161. updateBy: this.$store.state.user.name,
  2162. remark: row.remark,
  2163. workOrderRule: row.workOrderRule,
  2164. planCycle: row.planCycle,
  2165. taskStartDate: row.taskStartDate,
  2166. autoRenewal: row.autoRenewal
  2167. }
  2168. this.updateObjectList = []
  2169. this.updateDetailData = {}
  2170. this.updateDetailData.site = row.site
  2171. this.updateDetailData.buNo = row.buNo
  2172. this.updateDetailData.planID = row.planID
  2173. if (this.modalData.workOrderRule != null && this.modalData.workOrderRule.split(",").includes('A')) {
  2174. this.modalData.workOrderRule = 'A'
  2175. } else {
  2176. this.modalData.workOrderRule = ''
  2177. }
  2178. if (this.modalData.autoRenewal != null && this.modalData.autoRenewal.split(",").includes('Y')) {
  2179. this.modalData.autoRenewal = 'Y'
  2180. } else {
  2181. this.modalData.autoRenewal = ''
  2182. }
  2183. getPlanDetailList(this.updateDetailData).then(({data}) => {
  2184. if (data && data.code === 0) {
  2185. this.updateObjectList = data.rows
  2186. this.modalDisableFlag = true
  2187. this.updateModalFlag = true
  2188. } else {
  2189. this.$alert(data.msg, '错误', {
  2190. confirmButtonText: '确定'
  2191. })
  2192. }
  2193. })
  2194. },
  2195. deletePlan (row) {
  2196. this.$confirm(`是否删除这个点检计划?`, '提示', {
  2197. confirmButtonText: '确定',
  2198. cancelButtonText: '取消',
  2199. type: 'warning'
  2200. }).then(() => {
  2201. eamWorkPlanDelete(row).then(({data}) => {
  2202. if (data && data.code === 0) {
  2203. this.getDataList()
  2204. this.$message({
  2205. message: '操作成功',
  2206. type: 'success',
  2207. duration: 1500,
  2208. onClose: () => {}
  2209. })
  2210. } else {
  2211. this.$alert(data.msg, '错误', {
  2212. confirmButtonText: '确定'
  2213. })
  2214. }
  2215. })
  2216. }).catch(() => {
  2217. })
  2218. },
  2219. saveData () {
  2220. if (this.modalData.bu === '' || this.modalData.bu == null) {
  2221. this.$message.warning('请选择BU!')
  2222. return
  2223. }
  2224. if (this.modalData.planDesc === '' || this.modalData.planDesc == null) {
  2225. this.$message.warning('请输入计划描述!')
  2226. return
  2227. }
  2228. if (this.modalData.operator === '' || this.modalData.operator == null) {
  2229. this.$message.warning('请选择机修人员!')
  2230. return
  2231. }
  2232. if (this.modalData.checker === '' || this.modalData.checker == null) {
  2233. this.$message.warning('请选择审核人员!')
  2234. return
  2235. }
  2236. if (this.modalData.propertiesCode === '' || this.modalData.propertiesCode == null) {
  2237. this.$message.warning('请选择点检模板!')
  2238. return
  2239. }
  2240. if (this.modalData.planPeriod === '' || this.modalData.planPeriod == null) {
  2241. this.$message.warning('选择点检频率!')
  2242. return
  2243. }
  2244. if (this.modalData.planCycle === '' || this.modalData.planCycle == null) {
  2245. this.$message.warning('选择点检周期!')
  2246. return
  2247. }
  2248. if (this.modalData.planStartDate === '' || this.modalData.planStartDate == null) {
  2249. this.$message.warning('请选择开始日期!')
  2250. return
  2251. }
  2252. if (this.modalData.planEndDate === '' || this.modalData.planEndDate == null) {
  2253. this.$message.warning('请选择结束日期!')
  2254. return
  2255. }
  2256. if (this.modalData.planEndDate < this.dayjs().format("YYYY-MM-DD")) {
  2257. this.$message.warning('计划结束日期不能小于今天!')
  2258. return
  2259. }
  2260. if (this.modalData.planStartDate > this.modalData.planEndDate) {
  2261. this.$message.warning('计划开始日期不能小于结束日期!')
  2262. return
  2263. }
  2264. if (this.modalData.taskStartDate === '' || this.modalData.taskStartDate == null) {
  2265. this.$message.warning('请选择任务开始时间!')
  2266. return
  2267. }
  2268. if (this.modalData.flag === '1') {
  2269. if (this.dataListSelections.length === 0) {
  2270. this.$message.warning('请勾选设备!')
  2271. return
  2272. }
  2273. this.saveLoading = true
  2274. this.modalData.objectList = this.dataListSelections
  2275. // 周日
  2276. // let obj = document.getElementsByName('addWorkOrderRule')
  2277. // let s = ''
  2278. // for (let i = 0; i < obj.length; i++) {
  2279. // if (obj[i].checked) {
  2280. // s += obj[i].value + ','
  2281. // }
  2282. // }
  2283. // s = s.substring(0, s.length - 1)
  2284. // this.modalData.workOrderRule = s
  2285. // // 自动生成
  2286. // let obj2 = document.getElementsByName('addAutoRenewalRule')
  2287. // let s2 = ''
  2288. // for (let i = 0; i < obj2.length; i++) {
  2289. // if (obj2[i].checked) {
  2290. // s2 += obj2[i].value + ','
  2291. // }
  2292. // }
  2293. // s2 = s2.substring(0, s2.length - 1)
  2294. // this.modalData.autoRenewal = s2
  2295. eamWorkPlanSave(this.modalData).then(({data}) => {
  2296. if (data && data.code === 0) {
  2297. this.getDataList()
  2298. this.modalFlag = false
  2299. this.$message({
  2300. message: '操作成功',
  2301. type: 'success',
  2302. duration: 1500,
  2303. onClose: () => {}
  2304. })
  2305. } else {
  2306. this.$alert(data.msg, '错误', {
  2307. confirmButtonText: '确定'
  2308. })
  2309. }
  2310. this.saveLoading = false
  2311. })
  2312. } else {
  2313. this.updateLoading = true
  2314. this.modalData.objectList = this.updateObjectList
  2315. // let obj = document.getElementsByName('updateWorkOrderRule')
  2316. // let s = ''
  2317. // for (let i = 0; i < obj.length; i++) {
  2318. // if (obj[i].checked) {
  2319. // s += obj[i].value + ','
  2320. // }
  2321. // }
  2322. // s = s.substring(0,s.length-1)
  2323. // this.modalData.workOrderRule = s
  2324. // // 自动生成
  2325. // let obj2 = document.getElementsByName('updateAutoRenewalRule')
  2326. // let s2 = ''
  2327. // for (let i = 0; i < obj2.length; i++) {
  2328. // if (obj2[i].checked) {
  2329. // s2 += obj2[i].value + ','
  2330. // }
  2331. // }
  2332. // s2 = s2.substring(0, s2.length - 1)
  2333. // this.modalData.autoRenewal = s2
  2334. eamWorkPlanEdit(this.modalData).then(({data}) => {
  2335. if (data && data.code === 0) {
  2336. this.getDataList()
  2337. this.updateModalFlag = false
  2338. this.$message({
  2339. message: '操作成功',
  2340. type: 'success',
  2341. duration: 1500,
  2342. onClose: () => {
  2343. }
  2344. })
  2345. } else {
  2346. this.$alert(data.msg, '错误', {
  2347. confirmButtonText: '确定'
  2348. })
  2349. }
  2350. this.updateLoading = false
  2351. })
  2352. }
  2353. },
  2354. //----------项目清单----------------start
  2355. //打开项目清单
  2356. itemModal (row) {
  2357. this.options = []
  2358. this.detailData.objectID = ''
  2359. this.detailData.site = row.site
  2360. this.detailData.buNo = row.buNo
  2361. this.detailData.planID = row.planID
  2362. this.detailData.codeNo = row.propertiesCode
  2363. this.detailData.codeDesc = row.codeDesc
  2364. this.planObjectSearch()
  2365. searchPlanItems(this.detailData).then(({data}) => {
  2366. this.detailList = data.rows
  2367. })
  2368. this.detailModelFlag = true
  2369. },
  2370. // 查询该计划的设备
  2371. planObjectSearch () {
  2372. let tempData = {
  2373. site: this.detailData.site,
  2374. buNo: this.detailData.buNo,
  2375. planID: this.detailData.planID,
  2376. }
  2377. planObjectSearch(tempData).then(({data}) => {
  2378. if (data.code === 0) {
  2379. this.options = data.rows
  2380. }
  2381. })
  2382. },
  2383. updateItemModal (row) {
  2384. this.itemModalData = {
  2385. flag: '2',
  2386. site: row.site,
  2387. buNo: row.buNo,
  2388. planID: row.planID,
  2389. itemNo: row.itemNo,
  2390. itemDesc: row.itemDesc,
  2391. valueTypeDb: row.valueTypeDb,
  2392. defaultValue: row.defaultValue,
  2393. valueChooseFlag: row.valueChooseFlag,
  2394. createdBy:this.$store.state.user.name,
  2395. maxValue: row.maxValue,
  2396. minValue: row.minValue,
  2397. itemRemark: row.itemRemark,
  2398. itemType: 'A',
  2399. objectID: row.objectID
  2400. }
  2401. this.itemModalDisableFlag = true
  2402. this.itemModalFlag = true
  2403. },
  2404. itemSaveData () {
  2405. if (this.itemModalData.itemNo === '' || this.itemModalData.itemNo == null) {
  2406. this.$message.warning('请输入点检项目编码!')
  2407. return
  2408. }
  2409. if (this.itemModalData.itemDesc === '' || this.itemModalData.itemDesc == null) {
  2410. this.$message.warning('请输入点检项目名称!')
  2411. return
  2412. }
  2413. if (this.itemModalData.flag === '1') {
  2414. // eamPropertiesItemSave(this.itemModalData).then(({data}) => {
  2415. // if (data && data.code == '0') {
  2416. // searchPlanItems(this.detailData).then(({data}) => {
  2417. // this.detailList = data.rows
  2418. // })
  2419. // this.itemModalFlag=false
  2420. // this.$message({
  2421. // message: '操作成功',
  2422. // type: 'success',
  2423. // duration: 1500,
  2424. // onClose: () => {
  2425. // }
  2426. // })
  2427. // } else {
  2428. // this.$alert(data.msg, '错误', {
  2429. // confirmButtonText: '确定'
  2430. // })
  2431. // }
  2432. // })
  2433. } else {
  2434. updatePlanItems(this.itemModalData).then(({data}) => {
  2435. if (data && data.code === 0) {
  2436. searchPlanItems(this.detailData).then(({data}) => {
  2437. this.detailList = data.rows
  2438. })
  2439. this.itemModalFlag = false
  2440. this.$message({
  2441. message: '操作成功',
  2442. type: 'success',
  2443. duration: 1500,
  2444. onClose: () => {}
  2445. })
  2446. } else {
  2447. this.$alert(data.msg, '错误', {
  2448. confirmButtonText: '确定'
  2449. })
  2450. }
  2451. })
  2452. }
  2453. },
  2454. //----------项目可选值----------------start
  2455. chooseModal (row) {
  2456. this.chooseModalData.site = row.site
  2457. this.chooseModalData.buNo = row.buNo
  2458. this.chooseModalData.planID = row.planID
  2459. this.chooseModalData.itemNo = row.itemNo
  2460. this.chooseModalData.itemDesc = row.itemDesc
  2461. this.chooseModalData.valueTypeDb = row.valueTypeDb
  2462. this.chooseModalData.objectID = row.objectID
  2463. searchPlanItemAvailable(this.chooseModalData).then(({data}) => {
  2464. this.chooseTableData = data.rows
  2465. })
  2466. this.chooseModalFlag = true
  2467. },
  2468. addChooseModal () {
  2469. this.itemFlag = this.chooseModalData.valueTypeDb === 'T' ? 'text' : 'number';
  2470. this.itemData = {
  2471. site: this.chooseModalData.site,
  2472. buNo: this.chooseModalData.buNo,
  2473. planID: this.chooseModalData.planID,
  2474. itemNo: this.chooseModalData.itemNo,
  2475. objectID: this.chooseModalData.objectID,
  2476. valueNo: 0,
  2477. availableValue: '',
  2478. itemType: 'A',
  2479. createdBy: this.$store.state.user.name
  2480. }
  2481. this.itemAddModalFlag = true
  2482. },
  2483. updateChooseModal (row) {
  2484. this.itemFlag = this.chooseModalData.valueTypeDb === 'T' ? 'text' : 'number'
  2485. this.itemData = {
  2486. site: this.chooseModalData.site,
  2487. buNo: this.chooseModalData.buNo,
  2488. planID: this.chooseModalData.planID,
  2489. itemNo: this.chooseModalData.itemNo,
  2490. objectID: this.chooseModalData.objectID,
  2491. valueNo: row.valueNo,
  2492. availableValue: row.availableValue,
  2493. itemType: 'A',
  2494. createdBy: this.$store.state.user.name
  2495. }
  2496. this.itemAddModalFlag = true
  2497. },
  2498. saveItemAvailable () {
  2499. if (this.itemData.availableValue === '' || this.itemData.availableValue == null) {
  2500. this.$message.warning('请输入可选值!')
  2501. return
  2502. }
  2503. savePlanItemAvailable(this.itemData).then(({data}) => {
  2504. if (data && data.code === 0) {
  2505. searchPlanItemAvailable(this.chooseModalData).then(({data}) => {
  2506. this.chooseTableData = data.rows
  2507. })
  2508. this.itemAddModalFlag = false
  2509. this.$message({
  2510. message: '操作成功',
  2511. type: 'success',
  2512. duration: 1500,
  2513. onClose: () => {}
  2514. })
  2515. } else {
  2516. this.$alert(data.msg, '错误', {
  2517. confirmButtonText: '确定'
  2518. })
  2519. }
  2520. })
  2521. },
  2522. deleteItemAvailable (row) {
  2523. this.$confirm(`是否删除这个可选值?`, '提示', {
  2524. confirmButtonText: '确定',
  2525. cancelButtonText: '取消',
  2526. type: 'warning'
  2527. }).then(() => {
  2528. deletePlanItemAvailable(row).then(({data}) => {
  2529. if (data && data.code === 0) {
  2530. searchPlanItemAvailable(this.chooseModalData).then(({data}) => {
  2531. this.chooseTableData = data.rows
  2532. })
  2533. this.$message({
  2534. message: '操作成功',
  2535. type: 'success',
  2536. duration: 1500,
  2537. onClose: () => {}
  2538. })
  2539. } else {
  2540. this.$alert(data.msg, '错误', {
  2541. confirmButtonText: '确定'
  2542. })
  2543. }
  2544. })
  2545. }).catch(() => {
  2546. })
  2547. },
  2548. // 下达
  2549. createOrder (row) {
  2550. if (row.planStartDate < this.dayjs().format("YYYY-MM-DD")) {
  2551. this.$alert('计划开始日期小于今天!请修改开始日期', '错误', {
  2552. confirmButtonText: '确定'
  2553. })
  2554. return false
  2555. }
  2556. let tempData = {
  2557. site: row.site,
  2558. buNo: row.buNo,
  2559. planID: row.planID,
  2560. functionType: row.functionType,
  2561. userId: this.$store.state.user.name,
  2562. objectList: []
  2563. }
  2564. getPlanDetailList(row).then(({data}) => {
  2565. if (data && data.code === 0) {
  2566. tempData.objectList = data.rows
  2567. this.$confirm(`是否下达点检工单?`, '提示', {
  2568. confirmButtonText: '确定',
  2569. cancelButtonText: '取消',
  2570. type: 'warning'
  2571. }).then(() => {
  2572. this.dataListLoading = true
  2573. createEamWorkOrder(tempData).then(({data}) => {
  2574. if (data && data.code === 0) {
  2575. this.getDataList()
  2576. this.$message({
  2577. message: '操作成功',
  2578. type: 'success',
  2579. duration: 1500,
  2580. onClose: () => {}
  2581. })
  2582. } else {
  2583. this.$alert(data.msg, '错误', {
  2584. confirmButtonText: '确定'
  2585. })
  2586. }
  2587. this.dataListLoading = false
  2588. })
  2589. })
  2590. } else {
  2591. this.$alert(data.msg, '错误', {
  2592. confirmButtonText: '确定'
  2593. })
  2594. }
  2595. })
  2596. },
  2597. objectIDBlur () {
  2598. let inData = {
  2599. site: this.$store.state.user.site,
  2600. objectID: this.modalData.objectID
  2601. }
  2602. objectIDBlur(inData).then(({data}) => {
  2603. if (data.rows.length > 0) {
  2604. this.modalData.objectDesc = data.rows[0].objectDesc
  2605. } else {
  2606. this.modalData.objectDesc = ''
  2607. }
  2608. })
  2609. },
  2610. modalCodeBlur () {
  2611. let inData = {
  2612. functionType: 'A',
  2613. codeNo: this.modalData.propertiesCode
  2614. }
  2615. modalCodeBlur(inData).then(({data}) => {
  2616. if (data.rows.length > 0) {
  2617. this.modalData.propertiesDesc = data.rows[0].codeDesc
  2618. } else {
  2619. this.modalData.propertiesDesc = ''
  2620. }
  2621. })
  2622. },
  2623. getObjectList () {
  2624. this.objectData.bu = this.modalData.bu
  2625. getObjectList(this.objectData).then(({data}) => {
  2626. this.objectList = data.rows
  2627. })
  2628. },
  2629. planOrder (row) {
  2630. row.userId = this.$store.state.user.name
  2631. this.$confirm(`是否把进行中的计划变为已计划并取消未完成的工单?`, '提示', {
  2632. confirmButtonText: '确定',
  2633. cancelButtonText: '取消',
  2634. type: 'warning'
  2635. }).then(() => {
  2636. planOrder(row).then(({data}) => {
  2637. if (data && data.code === 0) {
  2638. this.getDataList()
  2639. this.$message({
  2640. message: '操作成功',
  2641. type: 'success',
  2642. duration: 1500,
  2643. onClose: () => {}
  2644. })
  2645. } else {
  2646. this.$alert(data.msg, '错误', {
  2647. confirmButtonText: '确定'
  2648. })
  2649. }
  2650. })
  2651. }).catch(() => {
  2652. })
  2653. },
  2654. cancelPlan (row) {
  2655. row.userId = this.$store.state.user.name
  2656. this.$confirm(`是否取消计划?`, '提示', {
  2657. confirmButtonText: '确定',
  2658. cancelButtonText: '取消',
  2659. type: 'warning'
  2660. }).then(() => {
  2661. cancelPlan(row).then(({data}) => {
  2662. if (data && data.code === 0) {
  2663. this.getDataList()
  2664. this.$message({
  2665. message: '操作成功',
  2666. type: 'success',
  2667. duration: 1500,
  2668. onClose: () => {}
  2669. })
  2670. } else {
  2671. this.$alert(data.msg, '错误', {
  2672. confirmButtonText: '确定'
  2673. })
  2674. }
  2675. })
  2676. }).catch(() => {
  2677. })
  2678. },
  2679. // 校验用户是否收藏
  2680. favoriteIsOk () {
  2681. let userFavorite = {
  2682. userId: this.$store.state.user.id,
  2683. languageCode: this.$i18n.locale
  2684. }
  2685. userFavoriteList(userFavorite).then(({data}) => {
  2686. for (let i = 0; i < data.list.length; i++) {
  2687. if(this.$route.meta.menuId === data.list[i].menuId){
  2688. this.favorite = true
  2689. }
  2690. }
  2691. })
  2692. },
  2693. // 收藏 OR 取消收藏
  2694. favoriteFunction () {
  2695. let userFavorite = {
  2696. userId: this.$store.state.user.id,
  2697. functionId: this.$route.meta.menuId,
  2698. }
  2699. if (this.favorite) {
  2700. removeUserFavorite(userFavorite).then(({data}) => {
  2701. this.$message.success(data.msg)
  2702. this.favorite = false
  2703. })
  2704. } else {
  2705. // 收藏
  2706. saveUserFavorite(userFavorite).then(({data}) => {
  2707. this.$message.success(data.msg)
  2708. this.favorite = true
  2709. })
  2710. }
  2711. },
  2712. closeDialog () {
  2713. this.operatorData = {
  2714. site: '',
  2715. adminName: '',
  2716. adminID: '',
  2717. roleName: '机修人员',
  2718. }
  2719. },
  2720. // 动态列开始 获取 用户保存的 格式列
  2721. async getTableUserColumn (tableId, columnId) {
  2722. let queryTableUser = {
  2723. userId: this.$store.state.user.name,
  2724. functionId: this.$route.meta.menuId,
  2725. tableId: tableId,
  2726. status: true,
  2727. languageCode: this.$i18n.locale
  2728. }
  2729. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  2730. if (data.rows.length > 0) {
  2731. //this.columnList1 = []
  2732. switch (columnId) {
  2733. case 1:
  2734. this.columnList = data.rows
  2735. break;
  2736. case 2:
  2737. this.columnDetailList = data.rows
  2738. break;
  2739. // case 3:
  2740. // this.columnList2 = data.rows
  2741. // break;
  2742. // case 4:
  2743. // this.columnList3 = data.rows
  2744. // break;
  2745. }
  2746. } else {
  2747. this.getColumnList(tableId, columnId)
  2748. }
  2749. })
  2750. },
  2751. // 获取 tableDefault 列
  2752. async getColumnList (tableId, columnId) {
  2753. let queryTable = {
  2754. functionId: this.$route.meta.menuId,
  2755. tableId: tableId,
  2756. languageCode: this.$i18n.locale
  2757. }
  2758. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  2759. if (!data.rows.length == 0) {
  2760. switch (columnId) {
  2761. case 1:
  2762. this.columnList = data.rows
  2763. break;
  2764. case 2:
  2765. this.columnDetailList = data.rows
  2766. break;
  2767. // case 3:
  2768. // this.columnList2 = data.rows
  2769. // break;
  2770. // case 4:
  2771. // this.columnList3 = data.rows
  2772. // break;
  2773. }
  2774. } else {
  2775. // this.showDefault = true.
  2776. }
  2777. })
  2778. },
  2779. //获取按钮的权限数据
  2780. getButtonAuthData () {
  2781. let searchFlag = this.isAuth(this.menuId+":search")
  2782. let saveFlag = this.isAuth(this.menuId+":save")
  2783. let updateFlag = this.isAuth(this.menuId+":update")
  2784. let deleteFlag = this.isAuth(this.menuId+":delete")
  2785. let releaseFlag = this.isAuth(this.menuId+":release")
  2786. let planFlag = this.isAuth(this.menuId+":plan")
  2787. let cancelFlag = this.isAuth(this.menuId+":cancel")
  2788. //处理页面的权限数据
  2789. this.authSearch = !searchFlag
  2790. this.authSave = !saveFlag
  2791. this.authUpdate = !updateFlag
  2792. this.authDelete = !deleteFlag
  2793. this.authRelease = !releaseFlag
  2794. this.authPlan = !planFlag
  2795. this.authCancel = !cancelFlag
  2796. },
  2797. }
  2798. }
  2799. </script>
  2800. <style scoped>
  2801. .el-table /deep/ .cell{
  2802. height: auto;
  2803. line-height: 1.5;
  2804. }
  2805. </style>