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.

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