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.

1783 lines
62 KiB

  1. <template>
  2. <div class="mod-config">
  3. <!-- 条件查询 -->
  4. <el-form :inline="true" label-position="top" :model="searchData">
  5. <el-form-item label="BU">
  6. <el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 80px">
  7. <el-option
  8. v-for = "i in userBuList"
  9. :key = "i.buNo"
  10. :label = "i.buDesc"
  11. :value = "i.buDesc">
  12. </el-option>
  13. </el-select>
  14. </el-form-item>
  15. <el-form-item label="项目编码">
  16. <el-input v-model="searchData.itemNo" clearable style="width: 120px"></el-input>
  17. </el-form-item>
  18. <el-form-item label="项目名称">
  19. <el-input v-model="searchData.itemDesc" clearable style="width: 200px"></el-input>
  20. </el-form-item>
  21. <!-- <el-form-item label="检验类型">-->
  22. <!-- <el-select v-model="searchData.inspectionTypeNo" placeholder="请选择" style="width: 100px">-->
  23. <!-- <el-option label="全部" value=""></el-option>-->
  24. <!-- <el-option-->
  25. <!-- v-for = "i in options"-->
  26. <!-- :key = "i.inspectionTypeNo"-->
  27. <!-- :label = "i.inspectionTypeName"-->
  28. <!-- :value = "i.inspectionTypeNo">-->
  29. <!-- </el-option>-->
  30. <!-- </el-select>-->
  31. <!-- </el-form-item>-->
  32. <el-form-item label=" ">
  33. <el-button v-if="authSearch" type="primary" @click="getDataList()">查询</el-button>
  34. <el-button v-if="authSave" type="primary" @click="addModal()">新增</el-button>
  35. </el-form-item>
  36. <el-form-item label=" ">
  37. <!-- <el-button type="primary" icon="el-icon-upload" @click="qcUpload()">导入</el-button>-->
  38. <download-excel
  39. :fields="fields()"
  40. :data="exportData"
  41. type="xls"
  42. :name="exportName"
  43. :header="exportHeader"
  44. :footer="exportFooter"
  45. :fetch="createExportData"
  46. :before-generate="startDownload"
  47. :before-finish="finishDownload"
  48. worksheet="导出信息"
  49. class="el-button el-button--primary el-button--medium">
  50. {{ "导出" }}
  51. </download-excel>
  52. </el-form-item>
  53. </el-form>
  54. <!-- 展示列表 -->
  55. <el-table
  56. :height="height"
  57. :data="dataList"
  58. border
  59. style="width: 100%;">
  60. <el-table-column
  61. v-for="(item,index) in columnList" :key="index"
  62. :sortable="item.columnSortable"
  63. :prop="item.columnProp"
  64. :header-align="item.headerAlign"
  65. :show-overflow-tooltip="item.showOverflowTooltip"
  66. :align="item.align"
  67. :fixed="item.fixed == '' ? false : item.fixed"
  68. :min-width="item.columnWidth"
  69. :label="item.columnLabel">
  70. <template slot-scope="scope">
  71. <span v-if="!item.columnHidden">
  72. <span v-if="columnsProp.includes(item.columnProp)">{{ scope.row[`${item.columnProp}Desc`] }}</span>
  73. <span v-else>
  74. {{ scope.row[item.columnProp] }}
  75. </span>
  76. </span>
  77. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  78. </template>
  79. </el-table-column>
  80. <el-table-column
  81. fixed="right"
  82. header-align="center"
  83. align="center"
  84. width="160"
  85. label="操作">
  86. <template slot-scope="scope">
  87. <a v-if="authUpdate" type="text" size="small" @click="updateModal(scope.row)">编辑</a>
  88. <a v-if="authDelete" type="text" size="small" @click="deleteModal(scope.row)">删除</a>
  89. <a type="text" size="small" v-if="scope.row.valueChooseFlag=='Y'" @click="chooseModal(scope.row)">可选值</a>
  90. <!-- <a type="text" size="small" @click="itemObjectModal(scope.row)">采集设备配置</a>-->
  91. </template>
  92. </el-table-column>
  93. </el-table>
  94. <el-pagination
  95. @size-change="sizeChangeHandle"
  96. @current-change="currentChangeHandle"
  97. :current-page="pageIndex"
  98. :page-sizes="[20, 50, 100, 200, 500]"
  99. :page-size="pageSize"
  100. :total="totalPage"
  101. layout="total, sizes, prev, pager, next, jumper">
  102. </el-pagination>
  103. <!-- 新增和修改 -->
  104. <el-dialog title="检验项目" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="500px">
  105. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  106. <el-form-item label="BU" prop="bu" :rules="rules.bu">
  107. <el-select v-model="modalData.bu" placeholder="请选择" disabled @change="buChangeFunction" style="width: 456px">
  108. <el-option
  109. v-for = "i in userBuList"
  110. :key = "i.buNo"
  111. :label = "i.sitename"
  112. :value = "i.buNo">
  113. <span style="float: left;width: 100px">{{ i.sitename }}</span>
  114. <span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
  115. {{ i.buDesc }}
  116. </span>
  117. </el-option>
  118. </el-select>
  119. </el-form-item>
  120. </el-form>
  121. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  122. <el-form-item label="项目名称" prop="itemDesc" :rules="rules.itemDescType">
  123. <el-input v-model="modalData.itemDesc" style="width: 143px"></el-input>
  124. </el-form-item>
  125. <el-form-item label="检验值类型" prop="valueTypeDb" :rules="rules.valueTypeDbType">
  126. <el-select filterable v-model="modalData.valueTypeDb" style="width: 143px">
  127. <el-option label="文本" value="T"></el-option>
  128. <el-option label="数字" value="N"></el-option>
  129. </el-select>
  130. </el-form-item>
  131. <el-form-item :label="'是否值可选'" prop="valueChooseFlag">
  132. <el-select v-model="modalData.valueChooseFlag" style="width: 143px">
  133. <el-option label="是" value="Y"></el-option>
  134. <el-option label="否" value="N"></el-option>
  135. </el-select>
  136. </el-form-item>
  137. <!-- <el-form-item label="检验类型" prop="inspectionTypeNo" :rules="rules.inspectionTypeNoType">-->
  138. <!-- <el-select v-model="modalData.inspectionTypeNo" placeholder="请选择" style="width: 143px">-->
  139. <!-- <el-option-->
  140. <!-- v-for = "i in options"-->
  141. <!-- :key = "i.inspectionTypeNo"-->
  142. <!-- :label = "i.inspectionTypeName"-->
  143. <!-- :value = "i.inspectionTypeNo">-->
  144. <!-- </el-option>-->
  145. <!-- </el-select>-->
  146. <!-- </el-form-item>-->
  147. </el-form>
  148. <!-- <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">-->
  149. <!-- <el-form-item prop="methodNo" :rules="rules.methodNoType">-->
  150. <!-- <span slot="label" @click="queryMethodList"><a>方法编码</a></span>-->
  151. <!-- <el-input v-model="modalData.methodNo" style="width: 143px"></el-input>-->
  152. <!-- </el-form-item>-->
  153. <!-- <el-form-item label="方法名称" prop="methodName" :rules="rules.methodNameType">-->
  154. <!-- <el-input v-model="modalData.methodName" disabled style="width: 300px"></el-input>-->
  155. <!-- </el-form-item>-->
  156. <!-- </el-form>-->
  157. <!-- <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">-->
  158. <!-- <el-form-item>-->
  159. <!-- <span slot="label" @click="getBaseList(207)"><a herf="#">抽样方案编码</a></span>-->
  160. <!-- <el-input v-model="modalData.samplingProgrammeNo" style="width: 143px"></el-input>-->
  161. <!-- </el-form-item>-->
  162. <!-- <el-form-item label="抽样方案名称">-->
  163. <!-- <el-input v-model="modalData.samplingProgrammeDesc" disabled style="width: 300px"></el-input>-->
  164. <!-- </el-form-item>-->
  165. <!-- </el-form>-->
  166. <!-- <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">-->
  167. <!-- <el-form-item>-->
  168. <!-- <span slot="label" @click="getBaseList(208)"><a herf="#">检验水平编码</a></span>-->
  169. <!-- <el-input v-model="modalData.samplingLevelNo" style="width: 143px"></el-input>-->
  170. <!-- </el-form-item>-->
  171. <!-- <el-form-item label="检验水平名称">-->
  172. <!-- <el-input v-model="modalData.samplingLevelDesc" disabled style="width: 300px"></el-input>-->
  173. <!-- </el-form-item>-->
  174. <!-- </el-form>-->
  175. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
  176. <el-form-item label="参照值">
  177. <el-input v-model="modalData.defaultValue" style="width: 143px"></el-input>
  178. </el-form-item>
  179. <el-form-item label="最大值">
  180. <el-input v-if="modalData.valueTypeDb === 'T'" v-model="modalData.maxValue" type="number" disabled style="width: 143px"></el-input>
  181. <el-input v-if="modalData.valueTypeDb === 'N'" v-model="modalData.maxValue" type="number" style="width: 143px"></el-input>
  182. </el-form-item>
  183. <el-form-item label="最小值">
  184. <el-input v-if="modalData.valueTypeDb === 'T'" v-model="modalData.minValue" type="number" disabled style="width: 143px"></el-input>
  185. <el-input v-if="modalData.valueTypeDb === 'N'" v-model="modalData.minValue" type="number" style="width: 143px"></el-input>
  186. </el-form-item>
  187. </el-form>
  188. <!-- <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">-->
  189. <!-- <el-form-item label="抽样数量">-->
  190. <!-- <el-input v-model="modalData.itemSamplingQuantity" type="number" style="width: 143px"></el-input>-->
  191. <!-- </el-form-item>-->
  192. <!-- <el-form-item label="抽样比例%">-->
  193. <!-- <el-input v-model="modalData.defaultSamplingProportion" type="number" style="width: 143px"></el-input>-->
  194. <!-- </el-form-item>-->
  195. <!-- <el-form-item label=" " style="margin-left: 30px">-->
  196. <!-- <el-checkbox v-model="modalData.collectionFlag" true-label="Y">采集标记</el-checkbox>-->
  197. <!-- </el-form-item>-->
  198. <!-- </el-form>-->
  199. <!-- <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">-->
  200. <!-- <el-form-item label="采集数据来源">-->
  201. <!-- <el-select multiple collapse-tags v-model="modalData.collectionSourceList" style="width: 220px">-->
  202. <!-- <el-option label="采集数据01" value="value0"></el-option>-->
  203. <!-- <el-option label="采集数据02" value="value1"></el-option>-->
  204. <!-- <el-option label="采集数据03" value="value2"></el-option>-->
  205. <!-- <el-option label="采集数据04" value="value3"></el-option>-->
  206. <!-- <el-option label="采集数据05" value="value4"></el-option>-->
  207. <!-- <el-option label="采集数据06" value="value5"></el-option>-->
  208. <!-- <el-option label="采集数据07" value="value6"></el-option>-->
  209. <!-- <el-option label="采集数据08" value="value7"></el-option>-->
  210. <!-- <el-option label="采集数据09" value="value8"></el-option>-->
  211. <!-- <el-option label="采集数据10" value="value9"></el-option>-->
  212. <!-- <el-option label="图片采集" value="photo_value1"></el-option>-->
  213. <!-- <el-option label="文件采集" value="file_value1"></el-option>-->
  214. <!-- </el-select>-->
  215. <!-- </el-form-item>-->
  216. <!-- <el-form-item label="采集数据方式">-->
  217. <!-- <el-select multiple collapse-tags v-model="modalData.collectionMethodList" style="width: 220px">-->
  218. <!-- <el-option label="PLC数据" value="plc"></el-option>-->
  219. <!-- <el-option label="RS232" value="RS232"></el-option>-->
  220. <!-- <el-option label="文件数据" value="file"></el-option>-->
  221. <!-- <el-option label="图片路径" value="image"></el-option>-->
  222. <!-- <el-option label="文件路径" value="fileUrl"></el-option>-->
  223. <!-- </el-select>-->
  224. <!-- </el-form-item>-->
  225. <!-- </el-form>-->
  226. <!-- <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">-->
  227. <!-- <el-form-item label="采集条件路径">-->
  228. <!-- <el-select multiple v-model="modalData.collectionConditionList" style="width: 260px">-->
  229. <!-- <el-option-->
  230. <!-- v-for = "i in equipmentNoList"-->
  231. <!-- :key = "i.equipmentNo"-->
  232. <!-- :label = "i.equipmentNo"-->
  233. <!-- :value = "i.equipmentNo">-->
  234. <!-- </el-option>-->
  235. <!-- </el-select>-->
  236. <!-- </el-form-item>-->
  237. <!-- <el-form-item label="采集数据内容">-->
  238. <!-- <el-select v-model="modalData.collectionDataContent" clearable style="width: 456px">-->
  239. <!-- <el-option-->
  240. <!-- v-for = "i in dataContentList"-->
  241. <!-- :key = "i.contentDesc"-->
  242. <!-- :label = "i.contentDesc"-->
  243. <!-- :value = "i.contentDesc">-->
  244. <!-- </el-option>-->
  245. <!-- </el-select>-->
  246. <!-- </el-form-item>-->
  247. <!-- </el-form>-->
  248. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  249. <el-button type="primary" @click="saveData()">保存</el-button>
  250. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  251. </el-footer>
  252. </el-dialog>
  253. <!-- 检验方法 -->
  254. <el-dialog title="检验方法清单" :close-on-click-modal="false" v-drag :visible.sync="methodModelFlag" width="520px">
  255. <div class="rq">
  256. <el-form :inline="true" label-position="top" :model="methodData">
  257. <el-form-item :label="'方法编码'">
  258. <el-input v-model="methodData.methodNo" clearable style="width: 120px"></el-input>
  259. </el-form-item>
  260. <el-form-item :label="'方法名称'">
  261. <el-input v-model="methodData.methodName" clearable style="width: 120px"></el-input>
  262. </el-form-item>
  263. <!-- <el-form-item :label="'检验类型'">-->
  264. <!-- <el-select v-model="methodData.inspectionTypeNo" style="width: 100px">-->
  265. <!-- <el-option-->
  266. <!-- v-for = "i in options"-->
  267. <!-- :key = "i.inspectionTypeNo"-->
  268. <!-- :label = "i.inspectionTypeName"-->
  269. <!-- :value = "i.inspectionTypeNo">-->
  270. <!-- </el-option>-->
  271. <!-- </el-select>-->
  272. <!-- </el-form-item>-->
  273. <el-form-item :label="' '">
  274. <el-button type="primary" @click="queryMethodList">查询</el-button>
  275. </el-form-item>
  276. </el-form>
  277. <el-table
  278. :height="300"
  279. :data="methodList"
  280. @row-dblclick="getRowData"
  281. border
  282. style="width: 100%;">
  283. <el-table-column
  284. v-for="(item,index) in methodDetailList" :key="index"
  285. :sortable="item.columnSortable"
  286. :prop="item.columnProp"
  287. :header-align="item.headerAlign"
  288. :show-overflow-tooltip="item.showOverflowTooltip"
  289. :align="item.align"
  290. :fixed="item.fixed==''?false:item.fixed"
  291. :min-width="item.columnWidth"
  292. :label="item.columnLabel">
  293. <template slot-scope="scope">
  294. <span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
  295. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  296. </template>
  297. </el-table-column>
  298. </el-table>
  299. </div>
  300. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  301. <el-button type="primary" @click="methodModelFlag = false">关闭</el-button>
  302. </el-footer>
  303. </el-dialog>
  304. <!-- 设备-> 快速新增 -->
  305. <el-dialog title="新增" :close-on-click-modal="false" v-drag :visible.sync="objectModelFlag" width="900px">
  306. <div style="font-size: 12px">
  307. <el-form :inline="true" label-position="top" :model="objectData">
  308. <el-form-item :label="'设备编码'">
  309. <el-input v-model="objectData.objectID" clearable style="width: 120px"></el-input>
  310. </el-form-item>
  311. <el-form-item :label="'设备名称'">
  312. <el-input v-model="objectData.objectDesc" clearable style="width: 120px"></el-input>
  313. </el-form-item>
  314. <el-form-item :label="' '">
  315. <el-button type="primary" @click="getObjectList">查询</el-button>
  316. </el-form-item>
  317. </el-form>
  318. </div>
  319. <el-container style="margin-top: 0px;">
  320. <el-main style="width: 350px; padding: 1px">
  321. <span style="font-size: 12px" >可选设备:</span>
  322. <el-table
  323. height="400px"
  324. :data="objectList1"
  325. border
  326. ref="objectTable1"
  327. @row-click="objectClickRow1"
  328. @selection-change="selectionObject1"
  329. highlight-current-row
  330. style="width: 100%">
  331. <el-table-column
  332. type="selection"
  333. header-align="center"
  334. align="center"
  335. width="50">
  336. </el-table-column>
  337. <el-table-column
  338. prop="objectID"
  339. header-align="center"
  340. align="center"
  341. min-width="80"
  342. label="设备编码">
  343. </el-table-column>
  344. <el-table-column
  345. prop="objectDesc"
  346. header-align="center"
  347. align="center"
  348. min-width="120"
  349. label="设备名称">
  350. </el-table-column>
  351. </el-table>
  352. </el-main>
  353. <el-main style="width: 111px;padding: -1px">
  354. <div style="margin-top: 182px;margin-left: 18px">
  355. <el-button type="primary" @click="addObject">添加>></el-button>
  356. </div>
  357. <div style="margin-top: 15px;margin-left: 18px">
  358. <el-button type="primary" @click="deleteObject">删除<<</el-button>
  359. </div>
  360. </el-main>
  361. <el-main style="width: 350px;padding: 1px">
  362. <span style="font-size: 12px" >已有设备:</span>
  363. <el-table
  364. height="400px"
  365. :data="objectList2"
  366. border
  367. ref="objectTable2"
  368. @row-click="objectClickRow2"
  369. @selection-change="selectionObject2"
  370. highlight-current-row
  371. style="width: 100%">
  372. <el-table-column
  373. type="selection"
  374. header-align="center"
  375. align="center"
  376. width="50">
  377. </el-table-column>
  378. <el-table-column
  379. prop="objectID"
  380. header-align="center"
  381. align="center"
  382. min-width="80"
  383. label="设备编码">
  384. </el-table-column>
  385. <el-table-column
  386. prop="objectDesc"
  387. header-align="center"
  388. align="center"
  389. min-width="120"
  390. label="设备名称">
  391. </el-table-column>
  392. <el-table-column
  393. header-align="center"
  394. align="center"
  395. min-width="50"
  396. label="默认">
  397. <template slot-scope="{row}">
  398. <el-checkbox v-model="row.defaultFlag" true-label="Y" @change="(val)=>defaultChange(row)" false-label="N"></el-checkbox>
  399. </template>
  400. </el-table-column>
  401. </el-table>
  402. </el-main>
  403. </el-container>
  404. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  405. <el-button type="primary" @click="updateItemObject">保存</el-button>
  406. <el-button type="primary" @click="objectModelFlag = false">关闭</el-button>
  407. </el-footer>
  408. </el-dialog>
  409. <el-dialog title="可选值" :close-on-click-modal="false" v-drag :visible.sync="chooseModalFlag" width="430px">
  410. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  411. <el-form-item label="点检项目名称:">
  412. <el-input v-model="chooseModalData.itemDesc" disabled style="width: 120px"></el-input>
  413. </el-form-item>
  414. <el-form-item :label="'检测值类型'">
  415. <el-select filterable v-model="chooseModalData.valueTypeDb" disabled style="width: 120px">
  416. <el-option label="文本" value="T"></el-option>
  417. <el-option label="数字" value="N"></el-option>
  418. </el-select>
  419. </el-form-item>
  420. <el-form-item :label="' '">
  421. <el-button type="primary" @click="addChooseModal()">新增</el-button>
  422. </el-form-item>
  423. </el-form>
  424. <el-table
  425. :height="300"
  426. :data="chooseTableData"
  427. border
  428. style="width: 100%">
  429. <el-table-column
  430. prop="availableValue"
  431. header-align="center"
  432. align="left"
  433. min-width="200"
  434. label="属性值">
  435. </el-table-column>
  436. <el-table-column
  437. prop=""
  438. header-align="center"
  439. align="center"
  440. min-width="100"
  441. label="操作">
  442. <template slot-scope="scope">
  443. <a type="text" size="small" @click="updateChooseModal(scope.row)">修改</a>
  444. <a type="text" size="small" @click="deleteItemAvailable(scope.row)">删除</a>
  445. </template>
  446. </el-table-column>
  447. </el-table>
  448. </el-dialog>
  449. <el-dialog title="可选值维护" :close-on-click-modal="false" v-drag :visible.sync="itemModalFlag" width="215px" >
  450. <el-form :inline="true" label-position="top" style="margin-left: 22px;margin-top: -5px;" @submit.native.prevent>
  451. <el-form-item :label="'可选值:'">
  452. <el-input v-model="itemData.availableValue" :type="itemFlag" style="width: 130px;"></el-input>
  453. </el-form-item>
  454. </el-form>
  455. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  456. <el-button type="primary" @click="saveItemAvailable()">保存</el-button>
  457. <el-button type="primary" @click="itemModalFlag = false">关闭</el-button>
  458. </el-footer>
  459. </el-dialog>
  460. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  461. <!-- 导入 -->
  462. <qcUpload ref="qcUpload" @refreshPageTables="getDataList()" v-drag></qcUpload>
  463. </div>
  464. </template>
  465. <script>
  466. import {
  467. qcItemSearch, // 查询项目
  468. qcItemSave, // 新增项目
  469. qcItemUpdate, // 修改项目
  470. qcItemDelete, // 删除项目
  471. inspectionTypeSearch, // 查询检验类型
  472. queryMethodList, // 查询检验方法
  473. getSiteAndBuByUserName,
  474. getEquipmentNoList, // 获取采集条件路径
  475. getDataContentList, // 获取采集数据内容
  476. getObjectList, // 获取设备列表
  477. getObjectListBy,
  478. addItemObject, // 新增项目设备
  479. deleteItemObject, // 删除项目设备
  480. updateItemObject, // 修改项目设备
  481. } from "@/api/qc/qc.js"
  482. import {getTableDefaultListLanguage, getTableUserListLanguage} from "@/api/table.js"
  483. import Chooselist from '@/views/modules/common/Chooselist_eam'
  484. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  485. import qcUpload from "./qc_upload"
  486. import {deleteItemAvailable, saveItemAvailable, searchItemAvailable} from "../../../api/eam/eam";
  487. export default {
  488. components: {
  489. Chooselist,
  490. qcUpload
  491. },
  492. watch: {
  493. searchData: {
  494. deep: true,
  495. handler: function (newV, oldV) {
  496. this.searchData.itemNo = this.searchData.itemNo.toUpperCase()
  497. }
  498. },
  499. modalData: {
  500. deep: true,
  501. handler: function (newV, oldV) {
  502. this.modalData.itemNo = this.modalData.itemNo.toUpperCase()
  503. }
  504. },
  505. },
  506. data () {
  507. return {
  508. columnsProp:['createdBy', 'updateBy'],
  509. // 是否收藏
  510. favorite: false,
  511. // 导出 start
  512. exportData: [],
  513. exportName: "检验项目" + this.dayjs().format('YYYYMMDDHHmmss'),
  514. exportHeader: ["检验项目"],
  515. exportFooter: [],
  516. exportList: [],
  517. // 导出 end
  518. searchData: {
  519. site: '',
  520. userName: this.$store.state.user.name,
  521. itemNo: '',
  522. itemDesc: '',
  523. itemType: '***',
  524. inspectionTypeNo: '',
  525. buDesc: '',
  526. page: 1,
  527. limit: 10,
  528. },
  529. pageIndex: 1,
  530. pageSize: 20,
  531. totalPage: 0,
  532. height: 200,
  533. dataList: [],
  534. modalFlag: false,
  535. modalDisableFlag: false,
  536. chooseModalFlag: false,
  537. chooseTableData: [],
  538. chooseModalData: {
  539. site: '',
  540. buNo: '',
  541. itemNo: '',
  542. itemDesc: '',
  543. itemType: 'A',
  544. valueTypeDb: '',
  545. },
  546. itemFlag: 'text',
  547. itemModalFlag: false,
  548. itemData: {
  549. site: '',
  550. buNo: '',
  551. itemNo: '',
  552. valueNo: '',
  553. availableValue: '',
  554. itemType: 'A',
  555. createdBy: this.$store.state.user.name
  556. },
  557. modalData: {
  558. site: '',
  559. bu: '',
  560. flag: '',
  561. itemNo: '',
  562. itemDesc: '',
  563. valueTypeDb: '',
  564. defaultValue: '',
  565. createdBy: this.$store.state.user.name,
  566. maxValue: '',
  567. minValue: '',
  568. itemRemark: '',
  569. itemType: 'D',
  570. methodNo: '',
  571. methodName: '',
  572. updateBy: '',
  573. inspectionTypeNo: '',
  574. itemSamplingQuantity: '',
  575. samplingProgrammeNo: '',
  576. samplingProgrammeDesc: '',
  577. samplingLevelNo: '',
  578. samplingLevelDesc: '',
  579. defaultSamplingProportion: '',
  580. collectionFlag: '',
  581. collectionSource: '',
  582. collectionSourceList: [],
  583. collectionMethod: '',
  584. collectionMethodList: [],
  585. collectionCondition: '',
  586. collectionConditionList: [],
  587. collectionDataContent: ''
  588. },
  589. // 检验项目展示标头
  590. columnList: [
  591. {
  592. userId: this.$store.state.user.name,
  593. functionId: 301002,
  594. serialNumber: '301002TableBuDesc',
  595. tableId: "301002Table",
  596. tableName: "检验项目维护表",
  597. columnProp: 'buDesc',
  598. headerAlign: 'center',
  599. align: "center",
  600. columnLabel: 'BU',
  601. columnHidden: false,
  602. columnImage: false,
  603. columnSortable: false,
  604. sortLv: 0,
  605. status: true,
  606. fixed: '',
  607. columnWidth: 100,
  608. },
  609. {
  610. userId: this.$store.state.user.name,
  611. functionId: 301002,
  612. serialNumber: '301002TableItemNo',
  613. tableId: "301002Table",
  614. tableName: "检验项目维护表",
  615. columnProp: 'itemNo',
  616. headerAlign: 'center',
  617. align: "center",
  618. columnLabel: '检验项目编码',
  619. columnHidden: false,
  620. columnImage: false,
  621. columnSortable: false,
  622. sortLv: 0,
  623. status: true,
  624. fixed: '',
  625. columnWidth: 120,
  626. },
  627. {
  628. userId: this.$store.state.user.name,
  629. functionId: 301002,
  630. serialNumber: '301002TableItemDesc',
  631. tableId: "301002Table",
  632. tableName: "检验项目维护表",
  633. columnProp: 'itemDesc',
  634. headerAlign: 'center',
  635. align: "left",
  636. columnLabel: '检验项目名称',
  637. columnHidden: false,
  638. columnImage: false,
  639. columnSortable: false,
  640. sortLv: 0,
  641. status: true,
  642. fixed: '',
  643. columnWidth: 200,
  644. },
  645. // {
  646. // userId: this.$store.state.user.name,
  647. // functionId: 301002,
  648. // serialNumber: '301002TableMethodName',
  649. // tableId: "301002Table",
  650. // tableName: "检验项目维护表",
  651. // columnProp: 'methodName',
  652. // headerAlign: 'center',
  653. // align: "left",
  654. // columnLabel: '检验方法',
  655. // columnHidden: false,
  656. // columnImage: false,
  657. // columnSortable: false,
  658. // sortLv: 0,
  659. // status: true,
  660. // fixed: '',
  661. // columnWidth: 200,
  662. // },
  663. // {
  664. // userId: this.$store.state.user.name,
  665. // functionId: 301002,
  666. // serialNumber: '301002TableMethodRemark',
  667. // tableId: "301002Table",
  668. // tableName: "检验项目维护表",
  669. // columnProp: 'methodRemark',
  670. // headerAlign: 'center',
  671. // align: "left",
  672. // columnLabel: '检验方法说明',
  673. // columnHidden: false,
  674. // columnImage: false,
  675. // columnSortable: false,
  676. // sortLv: 0,
  677. // status: true,
  678. // fixed: '',
  679. // columnWidth: 200,
  680. // },
  681. {
  682. userId: this.$store.state.user.name,
  683. functionId: 301002,
  684. serialNumber: '301002TableValueType',
  685. tableId: "301002Table",
  686. tableName: "检验项目维护表",
  687. columnProp: 'valueType',
  688. headerAlign: 'center',
  689. align: "center",
  690. columnLabel: '检验值类型',
  691. columnHidden: false,
  692. columnImage: false,
  693. columnSortable: false,
  694. sortLv: 0,
  695. status: true,
  696. fixed: '',
  697. columnWidth: 100,
  698. },
  699. // {
  700. // userId: this.$store.state.user.name,
  701. // functionId: 301002,
  702. // serialNumber: '301002TableInspectionTypeName',
  703. // tableId: "301002Table",
  704. // tableName: "检验项目维护表",
  705. // columnProp: 'inspectionTypeName',
  706. // headerAlign: 'center',
  707. // align: "center",
  708. // columnLabel: '检验类型',
  709. // columnHidden: false,
  710. // columnImage: false,
  711. // columnSortable: false,
  712. // sortLv: 0,
  713. // status: true,
  714. // fixed: '',
  715. // columnWidth: 100,
  716. // },
  717. {
  718. userId: this.$store.state.user.name,
  719. functionId: 301002,
  720. serialNumber: '301002TableDefaultValue',
  721. tableId: "301002Table",
  722. tableName: "检验项目维护表",
  723. columnProp: 'defaultValue',
  724. headerAlign: 'center',
  725. align: "right",
  726. columnLabel: '标准值',
  727. columnHidden: false,
  728. columnImage: false,
  729. columnSortable: false,
  730. sortLv: 0,
  731. status: true,
  732. fixed: '',
  733. columnWidth: 100,
  734. },
  735. {
  736. userId: this.$store.state.user.name,
  737. functionId: 301002,
  738. serialNumber: '301002TableMaxValue',
  739. tableId: "301002Table",
  740. tableName: "检验项目维护表",
  741. columnProp: 'maxValue',
  742. headerAlign: 'center',
  743. align: "right",
  744. columnLabel: '最大值',
  745. columnHidden: false,
  746. columnImage: false,
  747. columnSortable: false,
  748. sortLv: 0,
  749. status: true,
  750. fixed: '',
  751. columnWidth: 100,
  752. },
  753. {
  754. userId: this.$store.state.user.name,
  755. functionId: 301002,
  756. serialNumber: '301002TableMinValue',
  757. tableId: "301002Table",
  758. tableName: "检验项目维护表",
  759. columnProp: 'minValue',
  760. headerAlign: 'center',
  761. align: "right",
  762. columnLabel: '最小值',
  763. columnHidden: false,
  764. columnImage: false,
  765. columnSortable: false,
  766. sortLv: 0,
  767. status: true,
  768. fixed: '',
  769. columnWidth: 100,
  770. },
  771. // {
  772. // userId: this.$store.state.user.name,
  773. // functionId: 301002,
  774. // serialNumber: '301002TableSamplingProgrammeDesc',
  775. // tableId: "301002Table",
  776. // tableName: "检验项目维护表",
  777. // columnProp: 'samplingProgrammeDesc',
  778. // headerAlign: 'center',
  779. // align: "left",
  780. // columnLabel: '抽样方案',
  781. // columnHidden: false,
  782. // columnImage: false,
  783. // columnSortable: false,
  784. // sortLv: 0,
  785. // status: true,
  786. // fixed: '',
  787. // columnWidth: 120,
  788. // },
  789. // {
  790. // userId: this.$store.state.user.name,
  791. // functionId: 301002,
  792. // serialNumber: '301002TableSamplingLevelDesco',
  793. // tableId: "301002Table",
  794. // tableName: "检验项目维护表",
  795. // columnProp: 'samplingLevelDesc',
  796. // headerAlign: 'center',
  797. // align: "left",
  798. // columnLabel: '检验水平',
  799. // columnHidden: false,
  800. // columnImage: false,
  801. // columnSortable: false,
  802. // sortLv: 0,
  803. // status: true,
  804. // fixed: '',
  805. // columnWidth: 120,
  806. // },
  807. // {
  808. // userId: this.$store.state.user.name,
  809. // functionId: 301002,
  810. // serialNumber: '301002TableItemSamplingQuantity',
  811. // tableId: "301002Table",
  812. // tableName: "检验项目维护表",
  813. // columnProp: 'itemSamplingQuantity',
  814. // headerAlign: 'center',
  815. // align: "right",
  816. // columnLabel: '抽样数量',
  817. // columnHidden: false,
  818. // columnImage: false,
  819. // columnSortable: false,
  820. // sortLv: 0,
  821. // status: true,
  822. // fixed: '',
  823. // columnWidth: 100,
  824. // },
  825. // {
  826. // userId: this.$store.state.user.name,
  827. // functionId: 301002,
  828. // serialNumber: '301002TableDefaultSamplingProportion',
  829. // tableId: "301002Table",
  830. // tableName: "检验项目维护表",
  831. // columnProp: 'defaultSamplingProportion',
  832. // headerAlign: 'center',
  833. // align: "right",
  834. // columnLabel: '抽样比例',
  835. // columnHidden: false,
  836. // columnImage: false,
  837. // columnSortable: false,
  838. // sortLv: 0,
  839. // status: true,
  840. // fixed: '',
  841. // columnWidth: 100,
  842. // },
  843. {
  844. userId: this.$store.state.user.name,
  845. functionId: 301002,
  846. serialNumber: '301002TableCreatedDate',
  847. tableId: "301002Table",
  848. tableName: "检验项目维护表",
  849. columnProp: 'createdDate',
  850. headerAlign: 'center',
  851. align: "center",
  852. columnLabel: '创建时间',
  853. columnHidden: false,
  854. columnImage: false,
  855. columnSortable: false,
  856. sortLv: 0,
  857. status: true,
  858. fixed: '',
  859. columnWidth: 170,
  860. },
  861. {
  862. userId: this.$store.state.user.name,
  863. functionId: 301002,
  864. serialNumber: '301002TableCreatedBy',
  865. tableId: "301002Table",
  866. tableName: "检验项目维护表",
  867. columnProp: 'createdBy',
  868. headerAlign: 'center',
  869. align: "center",
  870. columnLabel: '创建人',
  871. columnHidden: false,
  872. columnImage: false,
  873. columnSortable: false,
  874. sortLv: 0,
  875. status: true,
  876. fixed: '',
  877. columnWidth: 100,
  878. },
  879. {
  880. userId: this.$store.state.user.name,
  881. functionId: 301002,
  882. serialNumber: '301002TableUpdateDate',
  883. tableId: "301002Table",
  884. tableName: "检验项目维护表",
  885. columnProp: 'updateDate',
  886. headerAlign: 'center',
  887. align: "center",
  888. columnLabel: '更新时间',
  889. columnHidden: false,
  890. columnImage: false,
  891. columnSortable: false,
  892. sortLv: 0,
  893. status: true,
  894. fixed: '',
  895. columnWidth: 170,
  896. },
  897. {
  898. userId: this.$store.state.user.name,
  899. functionId: 301002,
  900. serialNumber: '301002TableUpdateBy',
  901. tableId: "301002Table",
  902. tableName: "检验项目维护表",
  903. columnProp: 'updateBy',
  904. headerAlign: 'center',
  905. align: "center",
  906. columnLabel: '更新人',
  907. columnHidden: false,
  908. columnImage: false,
  909. columnSortable: false,
  910. sortLv: 0,
  911. status: true,
  912. fixed: '',
  913. columnWidth: 100,
  914. },
  915. ],
  916. rules: {
  917. itemDescType:[
  918. {
  919. required: true,
  920. message: ' ',
  921. trigger: ['blur','change']
  922. }
  923. ],
  924. valueTypeDbType:[
  925. {
  926. required: true,
  927. message: ' ',
  928. trigger: ['blur','change']
  929. }
  930. ],
  931. methodNoType:[
  932. {
  933. required: true,
  934. message: ' ',
  935. trigger: ['blur','change']
  936. }
  937. ],
  938. methodNameType:[
  939. {
  940. required: true,
  941. message: ' ',
  942. trigger: ['blur','change']
  943. }
  944. ],
  945. inspectionTypeNoType:[
  946. {
  947. required: true,
  948. message: ' ',
  949. trigger: ['blur','change']
  950. }
  951. ],
  952. bu:[
  953. {
  954. required: true,
  955. message: ' ',
  956. trigger: ['blur','change']
  957. }
  958. ]
  959. },
  960. options: [],
  961. methodData: {
  962. site: '',
  963. bu: '',
  964. methodNo: '',
  965. methodName: '',
  966. inspectionTypeNo: '',
  967. inspectionTypeName: ''
  968. },
  969. methodList: [],
  970. methodModelFlag: false,
  971. methodDetailList: [
  972. {
  973. columnProp: 'methodNo',
  974. headerAlign: "center",
  975. align: "center",
  976. columnLabel: '方法编码',
  977. columnHidden: false,
  978. columnImage: false,
  979. columnSortable: false,
  980. sortLv: 0,
  981. status: true,
  982. fixed: '',
  983. },
  984. {
  985. columnProp: 'methodName',
  986. headerAlign: "center",
  987. align: "center",
  988. columnLabel: '方法名称',
  989. columnHidden: false,
  990. columnImage: false,
  991. columnSortable: false,
  992. sortLv: 0,
  993. status: true,
  994. fixed: '',
  995. },
  996. {
  997. columnProp: 'inspectionTypeName',
  998. headerAlign: "center",
  999. align: "center",
  1000. columnLabel: '检验类型',
  1001. columnHidden: false,
  1002. columnImage: false,
  1003. columnSortable: false,
  1004. sortLv: 0,
  1005. status: true,
  1006. fixed: '',
  1007. },
  1008. ],
  1009. userBuList: [],
  1010. equipmentNoList: [],
  1011. authSearch: false,
  1012. authSave: false,
  1013. authUpdate: false,
  1014. authDelete: false,
  1015. menuId: this.$route.meta.menuId,
  1016. dataContentList: [],
  1017. objectSelections1: [],
  1018. objectSelections2: [],
  1019. objectList1: [],
  1020. objectList2: [],
  1021. objectData: {
  1022. site: '',
  1023. buNo: '',
  1024. itemNo: '',
  1025. objectID: '',
  1026. objectDesc: '',
  1027. },
  1028. objectModelFlag: false
  1029. }
  1030. },
  1031. mounted () {
  1032. this.$nextTick(() => {
  1033. this.height = window.innerHeight - 180
  1034. })
  1035. },
  1036. created () {
  1037. // 按钮控制
  1038. this.getButtonAuthData()
  1039. // 获取用户的 site 和 bu
  1040. this.getSiteAndBuByUserName()
  1041. // 校验用户是否收藏
  1042. this.favoriteIsOk()
  1043. // 获取检验类型
  1044. this.inspectionTypeSearch()
  1045. // 动态列
  1046. this.getTableUserColumn(this.$route.meta.menuId+'table',1)
  1047. if (this.authSearch) {
  1048. // 获取数据列表
  1049. this.getDataList()
  1050. }
  1051. },
  1052. methods: {
  1053. // 默认设备
  1054. defaultChange (row) {
  1055. this.objectList2 = this.objectList2.map(val => {
  1056. if (val.objectID === row.objectID) {
  1057. return val
  1058. }
  1059. val.defaultFlag = 'N'
  1060. return val
  1061. })
  1062. },
  1063. // 绑定项目的设备
  1064. itemObjectModal (row) {
  1065. this.objectSelections1 = null
  1066. this.objectSelections2 = null
  1067. getObjectList(row).then(({data}) => {
  1068. this.objectList1 = data.row1
  1069. this.objectList2 = data.row2
  1070. })
  1071. this.objectData = {
  1072. site: row.site,
  1073. buNo: row.buNo,
  1074. itemNo: row.itemNo,
  1075. objectID: '',
  1076. objectDesc: '',
  1077. }
  1078. this.objectModelFlag = true
  1079. },
  1080. // 选择设备
  1081. getObjectList () {
  1082. // 查询所有设备
  1083. getObjectListBy(this.objectData).then(({data}) => {
  1084. if (data && data.code === 0) {
  1085. this.objectList1 = data.rows
  1086. } else {
  1087. this.objectList1 = []
  1088. }
  1089. })
  1090. },
  1091. // 可选设备
  1092. objectClickRow1 (row) {
  1093. this.$refs.objectTable1.toggleRowSelection(row)
  1094. },
  1095. // 已有设备
  1096. objectClickRow2 (row) {
  1097. this.$refs.objectTable2.toggleRowSelection(row)
  1098. },
  1099. selectionObject1 (val) {
  1100. this.objectSelections1 = val
  1101. },
  1102. selectionObject2 (val) {
  1103. this.objectSelections2 = val
  1104. },
  1105. // 新增项目设备
  1106. addObject () {
  1107. if (this.objectSelections1 == null || this.objectSelections1.length === 0) {
  1108. this.$message.warning('请选择可选设备!')
  1109. return
  1110. }
  1111. let inData = {
  1112. site: this.objectData.site,
  1113. buNo: this.objectData.buNo,
  1114. itemNo: this.objectData.itemNo,
  1115. objectList: this.objectSelections1
  1116. }
  1117. addItemObject(inData).then(({data}) => {
  1118. if (data && data.code === 0) {
  1119. getObjectList(this.objectData).then(({data}) => {
  1120. this.objectList1 = data.row1
  1121. this.objectList2 = data.row2
  1122. })
  1123. this.objectSelections1 = []
  1124. } else {
  1125. this.$alert(data.msg, '错误', {
  1126. confirmButtonText: '确定'
  1127. })
  1128. }
  1129. })
  1130. },
  1131. // 删除项目设备
  1132. deleteObject () {
  1133. if(this.objectSelections2 == null || this.objectSelections2.length === 0){
  1134. this.$message.warning('请选择已有代理商!')
  1135. return
  1136. }
  1137. let inData = {
  1138. site: this.objectData.site,
  1139. buNo: this.objectData.buNo,
  1140. itemNo: this.objectData.itemNo,
  1141. objectList: this.objectSelections2
  1142. }
  1143. deleteItemObject(inData).then(({data}) => {
  1144. if (data && data.code === 0) {
  1145. getObjectList(this.objectData).then(({data}) => {
  1146. this.objectList1 = data.row1
  1147. this.objectList2 = data.row2
  1148. })
  1149. this.objectSelections2 = []
  1150. } else {
  1151. this.$alert(data.msg, '错误', {
  1152. confirmButtonText: '确定'
  1153. })
  1154. }
  1155. })
  1156. },
  1157. // 修改项目设备
  1158. updateItemObject () {
  1159. let inData = {
  1160. site: this.objectData.site,
  1161. buNo: this.objectData.buNo,
  1162. itemNo: this.objectData.itemNo,
  1163. objectList: this.objectList2
  1164. }
  1165. updateItemObject(inData).then(({data}) => {
  1166. if (data && data.code === 0) {
  1167. this.getDataList()
  1168. this.$message({
  1169. message: '操作成功',
  1170. type: 'success',
  1171. duration: 1500,
  1172. onClose: () => {}
  1173. })
  1174. this.objectModelFlag = false
  1175. } else {
  1176. this.$alert(data.msg, '错误', {
  1177. confirmButtonText: '确定'
  1178. })
  1179. }
  1180. })
  1181. },
  1182. // 获取用户的bu
  1183. getSiteAndBuByUserName () {
  1184. let tempData = {
  1185. username: this.$store.state.user.name,
  1186. }
  1187. getSiteAndBuByUserName(tempData).then(({data}) => {
  1188. if (data.code === 0) {
  1189. this.userBuList = data.rows
  1190. }
  1191. })
  1192. },
  1193. // bu改变事件
  1194. buChangeFunction () {
  1195. //this.modalData.collectionConditionList = []
  1196. this.modalData.collectionDataContent = ''
  1197. //this.getEquipmentNoList()
  1198. this.getDataContentList()
  1199. },
  1200. // 获取采集条件路径
  1201. getEquipmentNoList () {
  1202. let tempData = {
  1203. bu: this.modalData.bu
  1204. }
  1205. getEquipmentNoList(tempData).then(({data}) => {
  1206. if (data.code === 0) {
  1207. this.equipmentNoList = data.rows
  1208. }
  1209. })
  1210. },
  1211. // 获取采集数据内容
  1212. getDataContentList () {
  1213. let tempData = {
  1214. bu: this.modalData.bu
  1215. }
  1216. getDataContentList(tempData).then(({data}) => {
  1217. if (data.code === 0) {
  1218. this.dataContentList = data.rows
  1219. }
  1220. })
  1221. },
  1222. // 获取基础数据列表S
  1223. getBaseList (val,type) {
  1224. this.tagNo = val
  1225. this.$nextTick(() => {
  1226. let strVal = ''
  1227. let conSql = ''
  1228. if (this.modalData.bu === null || this.modalData.bu === '') {
  1229. this.$message.warning("请选择BU!")
  1230. return
  1231. } else {
  1232. conSql = " and site = '" + this.modalData.bu.split('_')[0] + "'" + " and bu_no = '" + this.modalData.bu.split('_')[1] + "'"
  1233. }
  1234. if (val === 207) {
  1235. strVal = this.modalData.samplingProgrammeNo
  1236. }
  1237. if (val === 208) {
  1238. strVal = this.modalData.samplingLevelNo
  1239. }
  1240. if (val === 1036) {
  1241. strVal = this.modalData.methodNo
  1242. conSql = ''
  1243. }
  1244. this.$refs.baseList.init(val, strVal, conSql)
  1245. })
  1246. },
  1247. // 每页数
  1248. sizeChangeHandle (val) {
  1249. this.pageSize = val
  1250. this.pageIndex = 1
  1251. this.getDataList()
  1252. },
  1253. // 当前页
  1254. currentChangeHandle (val) {
  1255. this.pageIndex = val
  1256. this.getDataList()
  1257. },
  1258. // 查询检验类型
  1259. inspectionTypeSearch () {
  1260. let tempData = {
  1261. site: this.$store.state.user.site
  1262. }
  1263. inspectionTypeSearch(tempData).then(({data}) => {
  1264. if (data.code === 0) {
  1265. this.options = data.rows
  1266. }
  1267. })
  1268. },
  1269. // 列表方法的回调
  1270. getBaseData (val) {
  1271. if (this.tagNo === 1036) {
  1272. this.modalData.methodNo = val.method_no
  1273. this.modalData.methodName = val.method_name
  1274. }
  1275. if (this.tagNo === 207) {
  1276. this.modalData.samplingProgrammeNo = val.sampling_programme_no
  1277. this.modalData.samplingProgrammeDesc = val.sampling_programme_desc
  1278. }
  1279. if (this.tagNo === 208) {
  1280. this.modalData.samplingLevelNo = val.sampling_level_no
  1281. this.modalData.samplingLevelDesc = val.sampling_level_desc
  1282. }
  1283. },
  1284. addChooseModal () {
  1285. this.itemFlag = this.chooseModalData.valueTypeDb === 'T' ? 'text' : 'number'
  1286. this.itemData = {
  1287. site: this.chooseModalData.site,
  1288. buNo: this.chooseModalData.buNo,
  1289. itemNo: this.chooseModalData.itemNo,
  1290. valueNo: 0,
  1291. availableValue: '',
  1292. itemType: '***',
  1293. createdBy: this.$store.state.user.name
  1294. }
  1295. this.itemModalFlag = true
  1296. },
  1297. updateChooseModal (row) {
  1298. this.itemFlag = this.chooseModalData.valueTypeDb === 'T' ? 'text' : 'number'
  1299. this.itemData = {
  1300. site: row.site,
  1301. buNo: row.buNo,
  1302. itemNo: this.chooseModalData.itemNo,
  1303. valueNo: row.valueNo,
  1304. availableValue: row.availableValue,
  1305. itemType: '***',
  1306. createdBy: row.createdBy
  1307. }
  1308. this.itemModalFlag = true
  1309. },
  1310. deleteItemAvailable (row) {
  1311. this.$confirm(`是否删除这个可选值?`, '提示', {
  1312. confirmButtonText: '确定',
  1313. cancelButtonText: '取消',
  1314. type: 'warning'
  1315. }).then(() => {
  1316. deleteItemAvailable(row).then(({data}) => {
  1317. if (data && data.code === 0) {
  1318. searchItemAvailable(this.chooseModalData).then(({data}) => {
  1319. this.chooseTableData = data.rows
  1320. })
  1321. this.$message({
  1322. message: '操作成功',
  1323. type: 'success',
  1324. duration: 1500,
  1325. onClose: () => {}
  1326. })
  1327. } else {
  1328. this.$alert(data.msg, '错误', {
  1329. confirmButtonText: '确定'
  1330. })
  1331. }
  1332. })
  1333. })
  1334. },
  1335. saveItemAvailable () {
  1336. if (this.itemData.availableValue === '' || this.itemData.availableValue == null) {
  1337. this.$message.warning('请输入可选值!')
  1338. return
  1339. }
  1340. saveItemAvailable(this.itemData).then(({data}) => {
  1341. if (data && data.code === 0) {
  1342. searchItemAvailable(this.chooseModalData).then(({data}) => {
  1343. this.chooseTableData = data.rows
  1344. })
  1345. this.itemModalFlag = false
  1346. this.$message({
  1347. message: '操作成功',
  1348. type: 'success',
  1349. duration: 1500,
  1350. onClose: () => {}
  1351. })
  1352. } else {
  1353. this.$alert(data.msg, '错误', {
  1354. confirmButtonText: '确定'
  1355. })
  1356. }
  1357. })
  1358. },
  1359. // 获取数据列表
  1360. getDataList () {
  1361. this.searchData.site = '***'
  1362. this.searchData.limit = this.pageSize
  1363. this.searchData.page = this.pageIndex
  1364. qcItemSearch(this.searchData).then(({data}) => {
  1365. this.dataList = data.page.list
  1366. this.pageIndex = data.page.currPage
  1367. this.pageSize = data.page.pageSize
  1368. this.totalPage = data.page.totalCount
  1369. })
  1370. },
  1371. addModal () {
  1372. this.modalData = {
  1373. flag: '1',
  1374. site: '***',
  1375. bu: '***_***',
  1376. createdBy: this.$store.state.user.name,
  1377. itemNo: '',
  1378. itemDesc: '',
  1379. valueTypeDb: 'T',
  1380. defaultValue: '',
  1381. valueChooseFlag: 'N',
  1382. maxValue: '',
  1383. minValue: '',
  1384. itemRemark: '',
  1385. itemType: '***',
  1386. methodNo: 'IPQC-0001',
  1387. methodName: '',
  1388. updateBy: '',
  1389. inspectionTypeNo: 'PF',
  1390. itemSamplingQuantity: '',
  1391. samplingProgrammeNo: '',
  1392. samplingProgrammeDesc: '',
  1393. samplingLevelNo: '',
  1394. samplingLevelDesc: '',
  1395. defaultSamplingProportion: '',
  1396. collectionFlag: '',
  1397. collectionSource: '',
  1398. collectionSourceList: [],
  1399. collectionMethod: '',
  1400. collectionMethodList: [],
  1401. collectionCondition: '',
  1402. collectionConditionList: [],
  1403. collectionDataContent: ''
  1404. }
  1405. // 获取采集条件路径
  1406. // this.getEquipmentNoList()
  1407. // 获取采集数据内容
  1408. // this.getDataContentList()
  1409. this.modalDisableFlag = false
  1410. this.modalFlag = true
  1411. },
  1412. updateModal (row) {
  1413. this.modalData = {
  1414. flag: '2',
  1415. bu: row.site + '_' + row.buNo,
  1416. site: row.site,
  1417. itemNo: row.itemNo,
  1418. itemDesc: row.itemDesc,
  1419. valueTypeDb: row.valueTypeDb,
  1420. valueChooseFlag: row.valueChooseFlag,
  1421. defaultValue: row.defaultValue,
  1422. createdBy: this.$store.state.user.name,
  1423. maxValue: row.maxValue,
  1424. minValue: row.minValue,
  1425. itemRemark: row.itemRemark,
  1426. itemType: '***',
  1427. methodNo: row.methodNo,
  1428. methodName: row.methodName,
  1429. updateBy: this.$store.state.user.name,
  1430. inspectionTypeNo: row.inspectionTypeNo,
  1431. itemSamplingQuantity: row.itemSamplingQuantity,
  1432. samplingProgrammeNo: row.samplingProgrammeNo,
  1433. samplingProgrammeDesc: row.samplingProgrammeDesc,
  1434. samplingLevelNo: row.samplingLevelNo,
  1435. samplingLevelDesc: row.samplingLevelDesc,
  1436. defaultSamplingProportion: row.defaultSamplingProportion,
  1437. collectionFlag: row.collectionFlag,
  1438. collectionSource: row.collectionSource,
  1439. collectionSourceList: row.collectionSource == null || row.collectionSource === '' ? [] : row.collectionSource.split(','),
  1440. collectionMethod: row.collectionMethod,
  1441. collectionMethodList: row.collectionMethod == null || row.collectionMethod === '' ? [] : row.collectionMethod.split(','),
  1442. collectionCondition: row.collectionCondition,
  1443. collectionConditionList: row.collectionCondition == null || row.collectionCondition === '' ? [] : row.collectionCondition.split(','),
  1444. collectionDataContent: row.collectionDataContent
  1445. }
  1446. // 获取采集条件路径
  1447. // this.getEquipmentNoList()
  1448. // 获取采集数据内容
  1449. // this.getDataContentList()
  1450. this.modalDisableFlag = true
  1451. this.modalFlag = true
  1452. },
  1453. // 删除
  1454. deleteModal (row) {
  1455. this.$confirm(`是否删除这个检验项目?`, '提示', {
  1456. confirmButtonText: '确定',
  1457. cancelButtonText: '取消',
  1458. type: 'warning'
  1459. }).then(() => {
  1460. qcItemDelete(row).then(({data}) => {
  1461. if (data && data.code === 0) {
  1462. this.getDataList()
  1463. this.$message({
  1464. message: '操作成功',
  1465. type: 'success',
  1466. duration: 1500,
  1467. onClose: () => {}
  1468. })
  1469. } else {
  1470. this.$alert(data.msg, '错误', {
  1471. confirmButtonText: '确定'
  1472. })
  1473. }
  1474. })
  1475. }).catch(() => {
  1476. })
  1477. },
  1478. chooseModal (row) {
  1479. this.chooseModalData.site = row.site
  1480. this.chooseModalData.buNo = row.buNo
  1481. this.chooseModalData.itemNo = row.itemNo
  1482. this.chooseModalData.itemDesc = row.itemDesc
  1483. this.chooseModalData.valueTypeDb = row.valueTypeDb
  1484. this.chooseModalData.itemType = '***'
  1485. searchItemAvailable(this.chooseModalData).then(({data}) => {
  1486. this.chooseTableData = data.rows
  1487. })
  1488. this.chooseModalFlag = true
  1489. },
  1490. saveData () {
  1491. if (this.modalData.bu === '' || this.modalData.bu == null) {
  1492. this.$message.warning('请选择BU!')
  1493. return
  1494. }
  1495. if (this.modalData.itemDesc === '' || this.modalData.itemDesc == null) {
  1496. this.$message.warning('请输入检验项目名称!')
  1497. return
  1498. }
  1499. if (this.modalData.valueTypeDb === '' || this.modalData.valueTypeDb == null) {
  1500. this.$message.warning('请选择检验值类型!')
  1501. return
  1502. }
  1503. if (this.modalData.inspectionTypeNo === '' || this.modalData.inspectionTypeNo == null) {
  1504. this.$message.warning('请选择检验类型!')
  1505. return
  1506. }
  1507. // if (this.modalData.methodNo === '' || this.modalData.methodNo == null) {
  1508. // this.$message.warning('请选择检验方法!')
  1509. // return
  1510. // }
  1511. if ((this.modalData.samplingProgrammeNo !== '' && this.modalData.samplingProgrammeNo != null) && (this.modalData.samplingLevelNo === '' || this.modalData.samplingLevelNo == null)) {
  1512. this.$message.warning('请选择检验水平!')
  1513. return
  1514. }
  1515. // if (this.modalData.collectionFlag === 'Y' && (this.modalData.collectionSourceList == null || this.modalData.collectionSourceList.length === 0)) {
  1516. // this.$message.warning('请选择采集数据来源!')
  1517. // return
  1518. // }
  1519. // if (this.modalData.collectionFlag === 'Y' && (this.modalData.collectionMethodList == null || this.modalData.collectionMethodList.length === 0)) {
  1520. // this.$message.warning('请选择采集数据方式!')
  1521. // return
  1522. // }
  1523. // if (this.modalData.collectionFlag === 'Y' && (this.modalData.collectionMethodList.some(value => value === 'file') && this.modalData.collectionMethodList.some(value => value === 'plc'))) {
  1524. // this.$message.warning('文件数据采集和PLC数据采集只能选一个!')
  1525. // return
  1526. // }
  1527. this.modalData.collectionSource = this.modalData.collectionSourceList.join(',')
  1528. this.modalData.collectionMethod = this.modalData.collectionMethodList.join(',')
  1529. //this.modalData.collectionCondition = this.modalData.collectionConditionList.join(',')
  1530. if (this.modalData.flag === '1') {
  1531. qcItemSave(this.modalData).then(({data}) => {
  1532. if (data && data.code === 0) {
  1533. this.getDataList()
  1534. this.modalFlag = false
  1535. this.$message({
  1536. message: '操作成功',
  1537. type: 'success',
  1538. duration: 1500,
  1539. onClose: () => {}
  1540. })
  1541. } else {
  1542. this.$alert(data.msg, '错误', {
  1543. confirmButtonText: '确定'
  1544. })
  1545. }
  1546. })
  1547. } else {
  1548. qcItemUpdate(this.modalData).then(({data}) => {
  1549. if (data && data.code === 0) {
  1550. this.getDataList()
  1551. this.modalFlag = false
  1552. this.$message({
  1553. message: '操作成功',
  1554. type: 'success',
  1555. duration: 1500,
  1556. onClose: () => {}
  1557. })
  1558. } else {
  1559. this.$alert(data.msg, '错误', {
  1560. confirmButtonText: '确定'
  1561. })
  1562. }
  1563. })
  1564. }
  1565. },
  1566. // 获取检验方法列表
  1567. queryMethodList () {
  1568. this.methodData.bu = this.modalData.bu
  1569. this.methodData.inspectionTypeNo = this.modalData.inspectionTypeNo
  1570. queryMethodList(this.methodData).then(({data}) => {
  1571. if (data && data.code === 0) {
  1572. this.methodList = data.rows
  1573. this.methodModelFlag = true
  1574. } else {
  1575. this.$alert(data.msg, '错误', {
  1576. confirmButtonText: '确定'
  1577. })
  1578. }
  1579. })
  1580. },
  1581. // 选中检验方法
  1582. getRowData (row) {
  1583. this.modalData.methodNo = row.methodNo
  1584. this.modalData.methodName = row.methodName
  1585. this.methodModelFlag = false
  1586. },
  1587. // 校验用户是否收藏
  1588. favoriteIsOk () {
  1589. let userFavorite = {
  1590. userId: this.$store.state.user.id,
  1591. languageCode: this.$i18n.locale
  1592. }
  1593. userFavoriteList(userFavorite).then(({data}) => {
  1594. for (let i = 0; i < data.list.length; i++) {
  1595. if (this.$route.meta.menuId === data.list[i].menuId) {
  1596. this.favorite = true
  1597. }
  1598. }
  1599. })
  1600. },
  1601. // 收藏 OR 取消收藏
  1602. favoriteFunction () {
  1603. let userFavorite = {
  1604. userId: this.$store.state.user.id,
  1605. functionId: this.$route.meta.menuId,
  1606. }
  1607. if (this.favorite) {
  1608. removeUserFavorite(userFavorite).then(({data}) => {
  1609. this.$message.success(data.msg)
  1610. this.favorite = false
  1611. })
  1612. } else {
  1613. // 收藏
  1614. saveUserFavorite(userFavorite).then(({data}) => {
  1615. this.$message.success(data.msg)
  1616. this.favorite = true
  1617. })
  1618. }
  1619. },
  1620. //导出excel
  1621. async createExportData() {
  1622. this.searchData.limit = -1
  1623. this.searchData.page = 1
  1624. await qcItemSearch(this.searchData).then(({data}) => {
  1625. this.exportList= data.page.list;
  1626. })
  1627. return this.exportList;
  1628. },
  1629. startDownload() {},
  1630. finishDownload() {},
  1631. fields () {
  1632. let json = "{"
  1633. this.columnList.forEach((item, index) => {
  1634. if (index == this.columnList.length - 1) {
  1635. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1636. } else {
  1637. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1638. }
  1639. })
  1640. json += "}"
  1641. let s = eval("(" + json + ")")
  1642. return s
  1643. },
  1644. // 导入
  1645. qcUpload () {
  1646. let currentData = {
  1647. flag: 'item',
  1648. createBy: this.$store.state.user.name,
  1649. site: this.$store.state.user.site,
  1650. }
  1651. //打开组件 去做新增业务
  1652. this.$nextTick(() => {
  1653. this.$refs.qcUpload.init(currentData)
  1654. })
  1655. },
  1656. // 动态列开始 获取 用户保存的 格式列
  1657. async getTableUserColumn (tableId, columnId) {
  1658. let queryTableUser = {
  1659. userId: this.$store.state.user.name,
  1660. functionId: this.$route.meta.menuId,
  1661. tableId: tableId,
  1662. status: true,
  1663. languageCode: this.$i18n.locale
  1664. }
  1665. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  1666. if (data.rows.length > 0) {
  1667. //this.columnList1 = []
  1668. switch (columnId) {
  1669. case 1:
  1670. this.columnList = data.rows
  1671. break;
  1672. // case 2:
  1673. // this.columnDetailList = data.rows
  1674. // break;
  1675. // case 3:
  1676. // this.columnList2 = data.rows
  1677. // break;
  1678. // case 4:
  1679. // this.columnList3 = data.rows
  1680. // break;
  1681. }
  1682. } else {
  1683. this.getColumnList(tableId, columnId)
  1684. }
  1685. })
  1686. },
  1687. // 获取 tableDefault 列
  1688. async getColumnList (tableId, columnId) {
  1689. let queryTable = {
  1690. functionId: this.$route.meta.menuId,
  1691. tableId: tableId,
  1692. languageCode: this.$i18n.locale
  1693. }
  1694. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  1695. if (!data.rows.length == 0) {
  1696. switch (columnId) {
  1697. case 1:
  1698. this.columnList = data.rows
  1699. break;
  1700. // case 2:
  1701. // this.columnDetailList = data.rows
  1702. // break;
  1703. // case 3:
  1704. // this.columnList2 = data.rows
  1705. // break;
  1706. // case 4:
  1707. // this.columnList3 = data.rows
  1708. // break;
  1709. }
  1710. } else {
  1711. // this.showDefault = true.
  1712. }
  1713. })
  1714. },
  1715. //获取按钮的权限数据
  1716. getButtonAuthData () {
  1717. let searchFlag = this.isAuth(this.menuId+":search")
  1718. let saveFlag = this.isAuth(this.menuId+":save")
  1719. let updateFlag = this.isAuth(this.menuId+":update")
  1720. let deleteFlag = this.isAuth(this.menuId+":delete")
  1721. //处理页面的权限数据
  1722. this.authSearch = searchFlag
  1723. this.authSave = saveFlag
  1724. this.authUpdate = updateFlag
  1725. this.authDelete = deleteFlag
  1726. },
  1727. }
  1728. }
  1729. </script>
  1730. <style scoped>
  1731. .el-table /deep/ .cell{
  1732. height: auto;
  1733. line-height: 1.5;
  1734. }
  1735. </style>