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.

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