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.

1526 lines
52 KiB

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