祥兆质量前端
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.

1263 lines
42 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div class="mod-config">
  3. <!-- 收藏 -->
  4. <div>
  5. <span @click="favoriteFunction()">
  6. <icon-svg :name="favorite?'xiangqufill':'xiangqu'" class="sl-svg"></icon-svg>
  7. </span>
  8. </div>
  9. <!-- 条件查询 -->
  10. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
  11. <el-form-item :label="'BU'">
  12. <el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 130px">
  13. <el-option
  14. v-for = "i in userBuList"
  15. :key = "i.buNo"
  16. :label = "i.buDesc"
  17. :value = "i.buDesc">
  18. </el-option>
  19. </el-select>
  20. </el-form-item>
  21. <el-form-item :label="'项目编码:'">
  22. <el-input v-model="searchData.itemNo" clearable style="width: 120px"></el-input>
  23. </el-form-item>
  24. <el-form-item :label="'项目名称:'">
  25. <el-input v-model="searchData.itemDesc" clearable style="width: 120px"></el-input>
  26. </el-form-item>
  27. <el-form-item label="检验类型:">
  28. <el-select v-model="searchData.inspectionTypeNo" placeholder="请选择">
  29. <el-option label="全部" value=""></el-option>
  30. <el-option
  31. v-for = "i in options"
  32. :key = "i.inspectionTypeNo"
  33. :label = "i.inspectionTypeName"
  34. :value = "i.inspectionTypeNo">
  35. </el-option>
  36. </el-select>
  37. </el-form-item>
  38. <el-form-item :label="' '">
  39. <el-button v-if="!authSearch" type="primary" @click="getDataList()">查询</el-button>
  40. <el-button v-if="!authSave" type="primary" @click="addModal()">新增</el-button>
  41. </el-form-item>
  42. <el-form-item :label="' '">
  43. <el-button type="primary" icon="el-icon-upload" @click="qcUpload()">导入</el-button>
  44. <download-excel
  45. :fields="fields()"
  46. :data="exportData"
  47. type="xls"
  48. :name="exportName"
  49. :header="exportHeader"
  50. :footer="exportFooter"
  51. :fetch="createExportData"
  52. :before-generate="startDownload"
  53. :before-finish="finishDownload"
  54. worksheet="导出信息"
  55. class="el-button el-button--primary el-button--medium">
  56. {{ "导出" }}
  57. </download-excel>
  58. </el-form-item>
  59. </el-form>
  60. <!-- 展示列表 -->
  61. <el-table
  62. :height="height"
  63. :data="dataList"
  64. border
  65. style="width: 100%;">
  66. <el-table-column
  67. v-for="(item,index) in columnList" :key="index"
  68. :sortable="item.columnSortable"
  69. :prop="item.columnProp"
  70. :header-align="item.headerAlign"
  71. :show-overflow-tooltip="item.showOverflowTooltip"
  72. :align="item.align"
  73. :fixed="item.fixed == '' ? false : item.fixed"
  74. :min-width="item.columnWidth"
  75. :label="item.columnLabel">
  76. <template slot-scope="scope">
  77. <span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
  78. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  79. </template>
  80. </el-table-column>
  81. <el-table-column
  82. fixed="right"
  83. header-align="center"
  84. align="center"
  85. width="160"
  86. label="操作">
  87. <template slot-scope="scope">
  88. <a v-if="!authUpdate" type="text" size="small" @click="updateModal(scope.row)">编辑</a>
  89. <a v-if="!authDelete" type="text" size="small" @click="deleteModal(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" style="width: 456px">
  107. <el-option
  108. v-for = "i in userBuList"
  109. :key = "i.buNo"
  110. :label = "i.buNo"
  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" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  169. <el-form-item prop="defectLevelCode" :rules="rules.defectLevelCodeType">
  170. <span slot="label" @click="getBaseList(211)"><a herf="#">缺陷等级编码</a></span>
  171. <el-input v-model="modalData.defectLevelCode" style="width: 143px"></el-input>
  172. </el-form-item>
  173. <el-form-item label="缺陷等级名称" prop="defectLevelDescription" :rules="rules.defectLevelDescriptionType">
  174. <el-input v-model="modalData.defectLevelDescription" disabled style="width: 300px"></el-input>
  175. </el-form-item>
  176. </el-form>
  177. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
  178. <el-form-item label="参照值">
  179. <el-input v-model="modalData.defaultValue" style="width: 143px"></el-input>
  180. </el-form-item>
  181. <el-form-item label="最大值">
  182. <el-input v-if="modalData.valueTypeDb === 'T'" v-model="modalData.maxValue" type="number" disabled style="width: 143px"></el-input>
  183. <el-input v-if="modalData.valueTypeDb === 'N'" v-model="modalData.maxValue" type="number" style="width: 143px"></el-input>
  184. </el-form-item>
  185. <el-form-item label="最小值">
  186. <el-input v-if="modalData.valueTypeDb === 'T'" v-model="modalData.minValue" type="number" disabled style="width: 143px"></el-input>
  187. <el-input v-if="modalData.valueTypeDb === 'N'" v-model="modalData.minValue" type="number" style="width: 143px"></el-input>
  188. </el-form-item>
  189. </el-form>
  190. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
  191. <el-form-item label="抽样数量">
  192. <el-input v-model="modalData.itemSamplingQuantity" type="number" style="width: 143px"></el-input>
  193. </el-form-item>
  194. <el-form-item label="抽样比例%">
  195. <el-input v-model="modalData.defaultSamplingProportion" type="number" style="width: 143px"></el-input>
  196. </el-form-item>
  197. </el-form>
  198. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  199. <el-button type="primary" @click="saveData()">保存</el-button>
  200. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  201. </el-footer>
  202. </el-dialog>
  203. <!-- 检验方法 -->
  204. <el-dialog title="检验方法清单" :close-on-click-modal="false" v-drag :visible.sync="methodModelFlag" width="520px">
  205. <div class="rq">
  206. <el-form :inline="true" label-position="top" :model="methodData">
  207. <el-form-item :label="'检验方法编码'">
  208. <el-input v-model="methodData.methodNo" clearable style="width: 120px"></el-input>
  209. </el-form-item>
  210. <el-form-item :label="'检验方法名称'">
  211. <el-input v-model="methodData.methodName" clearable style="width: 120px"></el-input>
  212. </el-form-item>
  213. <!-- <el-form-item :label="'检验类型'">-->
  214. <!-- <el-select v-model="methodData.inspectionTypeNo" style="width: 100px">-->
  215. <!-- <el-option-->
  216. <!-- v-for = "i in options"-->
  217. <!-- :key = "i.inspectionTypeNo"-->
  218. <!-- :label = "i.inspectionTypeName"-->
  219. <!-- :value = "i.inspectionTypeNo">-->
  220. <!-- </el-option>-->
  221. <!-- </el-select>-->
  222. <!-- </el-form-item>-->
  223. <el-form-item :label="' '">
  224. <el-button type="primary" @click="queryMethodList">查询</el-button>
  225. </el-form-item>
  226. </el-form>
  227. <el-table
  228. :height="300"
  229. :data="methodList"
  230. @row-dblclick="getRowData"
  231. border
  232. style="width: 100%;">
  233. <el-table-column
  234. v-for="(item,index) in methodDetailList" :key="index"
  235. :sortable="item.columnSortable"
  236. :prop="item.columnProp"
  237. :header-align="item.headerAlign"
  238. :show-overflow-tooltip="item.showOverflowTooltip"
  239. :align="item.align"
  240. :fixed="item.fixed==''?false:item.fixed"
  241. :min-width="item.columnWidth"
  242. :label="item.columnLabel">
  243. <template slot-scope="scope">
  244. <span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
  245. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  246. </template>
  247. </el-table-column>
  248. </el-table>
  249. </div>
  250. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  251. <el-button type="primary" @click="methodModelFlag = false">关闭</el-button>
  252. </el-footer>
  253. </el-dialog>
  254. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  255. <!-- 导入 -->
  256. <qcUpload ref="qcUpload" @refreshPageTables="getDataList()" v-drag></qcUpload>
  257. </div>
  258. </template>
  259. <script>
  260. import {
  261. qcItemSearch, // 查询项目
  262. qcItemSave, // 新增项目
  263. qcItemUpdate, // 修改项目
  264. qcItemDelete, // 删除项目
  265. inspectionTypeSearch, // 查询检验类型
  266. queryMethodList, // 查询检验方法
  267. getSiteAndBuByUserName
  268. } from "@/api/qc/qc.js"
  269. import {getTableDefaultListLanguage, getTableUserListLanguage} from "@/api/table.js"
  270. import Chooselist from '@/views/modules/common/Chooselist_eam'
  271. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  272. import qcUpload from "./qc_upload";
  273. export default {
  274. components: {
  275. Chooselist,
  276. qcUpload
  277. },
  278. watch: {
  279. searchData: {
  280. deep: true,
  281. handler: function (newV, oldV) {
  282. this.searchData.itemNo = this.searchData.itemNo.toUpperCase()
  283. }
  284. },
  285. modalData: {
  286. deep: true,
  287. handler: function (newV, oldV) {
  288. this.modalData.itemNo = this.modalData.itemNo.toUpperCase()
  289. }
  290. },
  291. },
  292. data () {
  293. return {
  294. // 是否收藏
  295. favorite: false,
  296. // 导出 start
  297. exportData: [],
  298. exportName: "检验项目" + this.dayjs().format('YYYYMMDDHHmmss'),
  299. exportHeader: ["检验项目"],
  300. exportFooter: [],
  301. exportList: [],
  302. // 导出 end
  303. searchData: {
  304. site: '',
  305. userName: this.$store.state.user.name,
  306. itemNo: '',
  307. itemDesc: '',
  308. itemType: 'D',
  309. inspectionTypeNo: '',
  310. buDesc: '',
  311. page: 1,
  312. limit: 10,
  313. },
  314. pageIndex: 1,
  315. pageSize: 20,
  316. totalPage: 0,
  317. height: 200,
  318. dataList: [],
  319. modalFlag: false,
  320. modalDisableFlag: false,
  321. modalData: {
  322. site: '',
  323. bu: '',
  324. flag: '',
  325. itemNo: '',
  326. itemDesc: '',
  327. valueTypeDb: '',
  328. defaultValue: '',
  329. createdBy: this.$store.state.user.name,
  330. maxValue: '',
  331. minValue: '',
  332. itemRemark: '',
  333. itemType: 'D',
  334. methodNo: '',
  335. methodName: '',
  336. updateBy: '',
  337. inspectionTypeNo: '',
  338. itemSamplingQuantity: '',
  339. samplingProgrammeNo: '',
  340. samplingProgrammeDesc: '',
  341. samplingLevelNo: '',
  342. samplingLevelDesc: '',
  343. defaultSamplingProportion: '',
  344. defectLevelCode: '',
  345. defectLevelDescription: ''
  346. },
  347. // 检验项目展示标头
  348. columnList: [
  349. {
  350. userId: this.$store.state.user.name,
  351. functionId: 301002,
  352. serialNumber: '301002TableBuDesc',
  353. tableId: "301002Table",
  354. tableName: "检验项目维护表",
  355. columnWidth: 100,
  356. columnProp: 'buDesc',
  357. headerAlign: 'center',
  358. align: "center",
  359. columnLabel: 'BU',
  360. columnHidden: false,
  361. columnImage: false,
  362. columnSortable: false,
  363. sortLv: 0,
  364. status: true,
  365. fixed: '',
  366. },
  367. {
  368. userId: this.$store.state.user.name,
  369. functionId: 301002,
  370. serialNumber: '301002TableItemNo',
  371. tableId: "301002Table",
  372. tableName: "检验项目维护表",
  373. columnWidth: 99,
  374. columnProp: 'itemNo',
  375. headerAlign: 'center',
  376. align: "center",
  377. columnLabel: '检验项目编码',
  378. columnHidden: false,
  379. columnImage: false,
  380. columnSortable: false,
  381. sortLv: 0,
  382. status: true,
  383. fixed: '',
  384. },
  385. {
  386. userId: this.$store.state.user.name,
  387. functionId: 301002,
  388. serialNumber: '301002TableItemDesc',
  389. tableId: "301002Table",
  390. tableName: "检验项目维护表",
  391. columnWidth: 85,
  392. columnProp: 'itemDesc',
  393. headerAlign: 'center',
  394. align: "center",
  395. columnLabel: '检验项目名称',
  396. columnHidden: false,
  397. columnImage: false,
  398. columnSortable: false,
  399. sortLv: 0,
  400. status: true,
  401. fixed: '',
  402. },
  403. {
  404. userId: this.$store.state.user.name,
  405. functionId: 301002,
  406. serialNumber: '301002TableMethodName',
  407. tableId: "301002Table",
  408. tableName: "检验项目维护表",
  409. columnWidth: 85,
  410. columnProp: 'methodName',
  411. headerAlign: 'center',
  412. align: "center",
  413. columnLabel: '检验方法',
  414. columnHidden: false,
  415. columnImage: false,
  416. columnSortable: false,
  417. sortLv: 0,
  418. status: true,
  419. fixed: '',
  420. },
  421. {
  422. userId: this.$store.state.user.name,
  423. functionId: 301002,
  424. serialNumber: '301002TableMethodRemark',
  425. tableId: "301002Table",
  426. tableName: "检验项目维护表",
  427. columnWidth: 85,
  428. columnProp: 'methodRemark',
  429. headerAlign: 'center',
  430. align: "center",
  431. columnLabel: '检验方法说明',
  432. columnHidden: false,
  433. columnImage: false,
  434. columnSortable: false,
  435. sortLv: 0,
  436. status: true,
  437. fixed: '',
  438. },
  439. {
  440. userId: this.$store.state.user.name,
  441. functionId: 301002,
  442. serialNumber: '301002TableValueType',
  443. tableId: "301002Table",
  444. tableName: "检验项目维护表",
  445. columnWidth: 85,
  446. columnProp: 'valueType',
  447. headerAlign: 'center',
  448. align: "center",
  449. columnLabel: '检验值类型',
  450. columnHidden: false,
  451. columnImage: false,
  452. columnSortable: false,
  453. sortLv: 0,
  454. status: true,
  455. fixed: '',
  456. },
  457. {
  458. userId: this.$store.state.user.name,
  459. functionId: 301002,
  460. serialNumber: '301002TableInspectionTypeName',
  461. tableId: "301002Table",
  462. tableName: "检验项目维护表",
  463. columnWidth: 85,
  464. columnProp: 'inspectionTypeName',
  465. headerAlign: 'center',
  466. align: "center",
  467. columnLabel: '检验类型',
  468. columnHidden: false,
  469. columnImage: false,
  470. columnSortable: false,
  471. sortLv: 0,
  472. status: true,
  473. fixed: '',
  474. },
  475. {
  476. userId: this.$store.state.user.name,
  477. functionId: 301002,
  478. serialNumber: '301002TableDefaultValue',
  479. tableId: "301002Table",
  480. tableName: "检验项目维护表",
  481. columnWidth: 85,
  482. columnProp: 'defaultValue',
  483. headerAlign: 'center',
  484. align: "right",
  485. columnLabel: '标准值',
  486. columnHidden: false,
  487. columnImage: false,
  488. columnSortable: false,
  489. sortLv: 0,
  490. status: true,
  491. fixed: '',
  492. },
  493. {
  494. userId: this.$store.state.user.name,
  495. functionId: 301002,
  496. serialNumber: '301002TableMaxValue',
  497. tableId: "301002Table",
  498. tableName: "检验项目维护表",
  499. columnWidth: 85,
  500. columnProp: 'maxValue',
  501. headerAlign: 'center',
  502. align: "right",
  503. columnLabel: '最大值',
  504. columnHidden: false,
  505. columnImage: false,
  506. columnSortable: false,
  507. sortLv: 0,
  508. status: true,
  509. fixed: '',
  510. },
  511. {
  512. userId: this.$store.state.user.name,
  513. functionId: 301002,
  514. serialNumber: '301002TableMinValue',
  515. tableId: "301002Table",
  516. tableName: "检验项目维护表",
  517. columnWidth: 85,
  518. columnProp: 'minValue',
  519. headerAlign: 'center',
  520. align: "right",
  521. columnLabel: '最小值',
  522. columnHidden: false,
  523. columnImage: false,
  524. columnSortable: false,
  525. sortLv: 0,
  526. status: true,
  527. fixed: '',
  528. },
  529. {
  530. userId: this.$store.state.user.name,
  531. functionId: 301002,
  532. serialNumber: '301002TableSamplingProgrammeDesc',
  533. tableId: "301002Table",
  534. tableName: "检验项目维护表",
  535. columnWidth: 85,
  536. columnProp: 'samplingProgrammeDesc',
  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. },
  547. {
  548. userId: this.$store.state.user.name,
  549. functionId: 301002,
  550. serialNumber: '301002TableSamplingLevelDesco',
  551. tableId: "301002Table",
  552. tableName: "检验项目维护表",
  553. columnWidth: 85,
  554. columnProp: 'samplingLevelDesc',
  555. headerAlign: 'center',
  556. align: "center",
  557. columnLabel: '检验水平',
  558. columnHidden: false,
  559. columnImage: false,
  560. columnSortable: false,
  561. sortLv: 0,
  562. status: true,
  563. fixed: '',
  564. },
  565. {
  566. userId: this.$store.state.user.name,
  567. functionId: 301002,
  568. serialNumber: '301002TableItemSamplingQuantity',
  569. tableId: "301002Table",
  570. tableName: "检验项目维护表",
  571. columnWidth: 85,
  572. columnProp: 'itemSamplingQuantity',
  573. headerAlign: 'center',
  574. align: "right",
  575. columnLabel: '抽样数量',
  576. columnHidden: false,
  577. columnImage: false,
  578. columnSortable: false,
  579. sortLv: 0,
  580. status: true,
  581. fixed: '',
  582. },
  583. {
  584. userId: this.$store.state.user.name,
  585. functionId: 301002,
  586. serialNumber: '301002TableDefaultSamplingProportion',
  587. tableId: "301002Table",
  588. tableName: "检验项目维护表",
  589. columnWidth: 85,
  590. columnProp: 'defaultSamplingProportion',
  591. headerAlign: 'center',
  592. align: "right",
  593. columnLabel: '抽样比例',
  594. columnHidden: false,
  595. columnImage: false,
  596. columnSortable: false,
  597. sortLv: 0,
  598. status: true,
  599. fixed: '',
  600. },
  601. {
  602. userId: this.$store.state.user.name,
  603. functionId: 301002,
  604. serialNumber: '301002TableCreatedDate',
  605. tableId: "301002Table",
  606. tableName: "检验项目维护表",
  607. columnWidth: 85,
  608. columnProp: 'createdDate',
  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. },
  619. {
  620. userId: this.$store.state.user.name,
  621. functionId: 301002,
  622. serialNumber: '301002TableCreatedBy',
  623. tableId: "301002Table",
  624. tableName: "检验项目维护表",
  625. columnWidth: 85,
  626. columnProp: 'createdBy',
  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. },
  637. {
  638. userId: this.$store.state.user.name,
  639. functionId: 301002,
  640. serialNumber: '301002TableUpdateDate',
  641. tableId: "301002Table",
  642. tableName: "检验项目维护表",
  643. columnWidth: 85,
  644. columnProp: 'updateDate',
  645. headerAlign: 'center',
  646. align: "center",
  647. columnLabel: '更新时间',
  648. columnHidden: false,
  649. columnImage: false,
  650. columnSortable: false,
  651. sortLv: 0,
  652. status: true,
  653. fixed: '',
  654. },
  655. {
  656. userId: this.$store.state.user.name,
  657. functionId: 301002,
  658. serialNumber: '301002TableUpdateBy',
  659. tableId: "301002Table",
  660. tableName: "检验项目维护表",
  661. columnWidth: 85,
  662. columnProp: 'updateBy',
  663. headerAlign: 'center',
  664. align: "center",
  665. columnLabel: '更新人',
  666. columnHidden: false,
  667. columnImage: false,
  668. columnSortable: false,
  669. sortLv: 0,
  670. status: true,
  671. fixed: '',
  672. },
  673. ],
  674. rules: {
  675. itemDescType:[
  676. {
  677. required: true,
  678. message: ' ',
  679. trigger: ['blur','change']
  680. }
  681. ],
  682. valueTypeDbType:[
  683. {
  684. required: true,
  685. message: ' ',
  686. trigger: ['blur','change']
  687. }
  688. ],
  689. methodNoType:[
  690. {
  691. required: true,
  692. message: ' ',
  693. trigger: ['blur','change']
  694. }
  695. ],
  696. methodNameType:[
  697. {
  698. required: true,
  699. message: ' ',
  700. trigger: ['blur','change']
  701. }
  702. ],
  703. inspectionTypeNoType:[
  704. {
  705. required: true,
  706. message: ' ',
  707. trigger: ['blur','change']
  708. }
  709. ],
  710. bu:[
  711. {
  712. required: true,
  713. message: ' ',
  714. trigger: ['blur','change']
  715. }
  716. ],
  717. defectLevelCodeType:[
  718. {
  719. required: true,
  720. message: ' ',
  721. trigger: ['blur','change']
  722. }
  723. ],
  724. defectLevelDescriptionType:[
  725. {
  726. required: true,
  727. message: ' ',
  728. trigger: ['blur','change']
  729. }
  730. ],
  731. },
  732. options: [],
  733. methodData: {
  734. site: '',
  735. bu: '',
  736. methodNo: '',
  737. methodName: '',
  738. inspectionTypeNo: '',
  739. inspectionTypeName: ''
  740. },
  741. methodList: [],
  742. methodModelFlag: false,
  743. methodDetailList: [
  744. {
  745. columnProp: 'methodNo',
  746. headerAlign: "center",
  747. align: "center",
  748. columnLabel: '方法编码',
  749. columnHidden: false,
  750. columnImage: false,
  751. columnSortable: false,
  752. sortLv: 0,
  753. status: true,
  754. fixed: '',
  755. },
  756. {
  757. columnProp: 'methodName',
  758. headerAlign: "center",
  759. align: "center",
  760. columnLabel: '方法名称',
  761. columnHidden: false,
  762. columnImage: false,
  763. columnSortable: false,
  764. sortLv: 0,
  765. status: true,
  766. fixed: '',
  767. },
  768. {
  769. columnProp: 'inspectionTypeName',
  770. headerAlign: "center",
  771. align: "center",
  772. columnLabel: '检验类型',
  773. columnHidden: false,
  774. columnImage: false,
  775. columnSortable: false,
  776. sortLv: 0,
  777. status: true,
  778. fixed: '',
  779. },
  780. ],
  781. userBuList: [],
  782. authSearch: false,
  783. authSave: false,
  784. authUpdate: false,
  785. authDelete: false,
  786. menuId: this.$route.meta.menuId,
  787. }
  788. },
  789. mounted () {
  790. this.$nextTick(() => {
  791. this.height = window.innerHeight - 180
  792. })
  793. },
  794. created () {
  795. // 按钮控制
  796. this.getButtonAuthData()
  797. // 获取用户的 site 和 bu
  798. this.getSiteAndBuByUserName()
  799. // 校验用户是否收藏
  800. this.favoriteIsOk()
  801. // 获取检验类型
  802. this.inspectionTypeSearch()
  803. // 动态列
  804. this.getTableUserColumn(this.$route.meta.menuId+'table',1)
  805. if (!this.authSearch) {
  806. // 获取数据列表
  807. this.getDataList()
  808. }
  809. },
  810. methods: {
  811. // 获取用户的bu
  812. getSiteAndBuByUserName () {
  813. let tempData = {
  814. username: this.$store.state.user.name,
  815. }
  816. getSiteAndBuByUserName(tempData).then(({data}) => {
  817. if (data.code === 0) {
  818. this.userBuList = data.rows
  819. }
  820. })
  821. },
  822. // 获取基础数据列表S
  823. getBaseList (val,type) {
  824. this.tagNo = val
  825. this.$nextTick(() => {
  826. let strVal = ''
  827. let conSql = ''
  828. if (val === 207) {
  829. strVal = this.modalData.samplingProgrammeNo
  830. if (this.modalData.bu === null || this.modalData.bu === '') {
  831. this.$message.warning("请选择BU!")
  832. return
  833. } else {
  834. conSql = " and bu_no = '" + this.modalData.bu.split('_')[1] + "'"
  835. this.$refs.baseList.init(val, strVal, conSql)
  836. }
  837. }
  838. if (val === 208) {
  839. strVal = this.modalData.samplingLevelNo
  840. if (this.modalData.bu === null || this.modalData.bu === '') {
  841. this.$message.warning("请选择BU!")
  842. return
  843. } else {
  844. conSql = " and bu_no = '" + this.modalData.bu.split('_')[1] + "'"
  845. this.$refs.baseList.init(val, strVal, conSql)
  846. }
  847. }
  848. if (val === 211) {
  849. strVal = this.modalData.defectLevelCode
  850. if (this.modalData.bu === null || this.modalData.bu === '') {
  851. this.$message.warning("请选择BU!")
  852. return
  853. } else {
  854. conSql = " and bu_no = '" + this.modalData.bu.split('_')[1] + "'"
  855. this.$refs.baseList.init(val, strVal, conSql)
  856. }
  857. }
  858. if (val === 1036) {
  859. strVal = this.modalData.methodNo
  860. this.$refs.baseList.init(val, strVal)
  861. }
  862. })
  863. },
  864. // 每页数
  865. sizeChangeHandle (val) {
  866. this.pageSize = val
  867. this.pageIndex = 1
  868. this.getDataList()
  869. },
  870. // 当前页
  871. currentChangeHandle (val) {
  872. this.pageIndex = val
  873. this.getDataList()
  874. },
  875. // 查询检验类型
  876. inspectionTypeSearch () {
  877. let tempData = {
  878. site: this.$store.state.user.site
  879. }
  880. inspectionTypeSearch(tempData).then(({data}) => {
  881. if (data.code === 0) {
  882. this.options = data.rows
  883. }
  884. })
  885. },
  886. // 列表方法的回调
  887. getBaseData (val) {
  888. if (this.tagNo === 1036) {
  889. this.modalData.methodNo = val.method_no
  890. this.modalData.methodName = val.method_name
  891. }
  892. if (this.tagNo === 207) {
  893. this.modalData.samplingProgrammeNo = val.sampling_programme_no
  894. this.modalData.samplingProgrammeDesc = val.sampling_programme_desc
  895. }
  896. if (this.tagNo === 208) {
  897. this.modalData.samplingLevelNo = val.sampling_level_no
  898. this.modalData.samplingLevelDesc = val.sampling_level_desc
  899. }
  900. if (this.tagNo === 211) {
  901. this.modalData.defectLevelCode = val.defect_level_code
  902. this.modalData.defectLevelDescription = val.defect_level_description
  903. }
  904. },
  905. // 获取数据列表
  906. getDataList () {
  907. this.searchData.limit = this.pageSize
  908. this.searchData.page = this.pageIndex
  909. qcItemSearch(this.searchData).then(({data}) => {
  910. this.dataList = data.page.list
  911. this.pageIndex = data.page.currPage
  912. this.pageSize = data.page.pageSize
  913. this.totalPage = data.page.totalCount
  914. })
  915. },
  916. addModal () {
  917. this.modalData = {
  918. flag: '1',
  919. site: '',
  920. bu: this.userBuList[0].buNo,
  921. createdBy: this.$store.state.user.name,
  922. itemNo: '',
  923. itemDesc: '',
  924. valueTypeDb: 'T',
  925. defaultValue: '',
  926. maxValue: '',
  927. minValue: '',
  928. itemRemark: '',
  929. itemType: 'D',
  930. methodNo: '',
  931. methodName: '',
  932. updateBy: '',
  933. inspectionTypeNo: '',
  934. itemSamplingQuantity: '',
  935. samplingProgrammeNo: '',
  936. samplingProgrammeDesc: '',
  937. samplingLevelNo: '',
  938. samplingLevelDesc: '',
  939. defaultSamplingProportion: '',
  940. defectLevelCode: '',
  941. defectLevelDescription: ''
  942. }
  943. this.modalDisableFlag = false
  944. this.modalFlag = true
  945. },
  946. updateModal (row) {
  947. this.modalData = {
  948. flag: '2',
  949. bu: row.site + '_' + row.buNo,
  950. site: row.site,
  951. itemNo: row.itemNo,
  952. itemDesc: row.itemDesc,
  953. valueTypeDb: row.valueTypeDb,
  954. defaultValue: row.defaultValue,
  955. createdBy: this.$store.state.user.name,
  956. maxValue: row.maxValue,
  957. minValue: row.minValue,
  958. itemRemark: row.itemRemark,
  959. itemType: 'D',
  960. methodNo: row.methodNo,
  961. methodName: row.methodName,
  962. updateBy: this.$store.state.user.name,
  963. inspectionTypeNo: row.inspectionTypeNo,
  964. itemSamplingQuantity: row.itemSamplingQuantity,
  965. samplingProgrammeNo: row.samplingProgrammeNo,
  966. samplingProgrammeDesc: row.samplingProgrammeDesc,
  967. samplingLevelNo: row.samplingLevelNo,
  968. samplingLevelDesc: row.samplingLevelDesc,
  969. defaultSamplingProportion: row.defaultSamplingProportion,
  970. defectLevelCode: row.defectLevelCode,
  971. defectLevelDescription: row.defectLevelDescription
  972. }
  973. this.modalDisableFlag = true
  974. this.modalFlag = true
  975. },
  976. // 删除
  977. deleteModal (row) {
  978. this.$confirm(`是否删除这个检验项目?`, '提示', {
  979. confirmButtonText: '确定',
  980. cancelButtonText: '取消',
  981. type: 'warning'
  982. }).then(() => {
  983. qcItemDelete(row).then(({data}) => {
  984. if (data && data.code === 0) {
  985. this.getDataList()
  986. this.$message({
  987. message: '操作成功',
  988. type: 'success',
  989. duration: 1500,
  990. onClose: () => {}
  991. })
  992. } else {
  993. this.$alert(data.msg, '错误', {
  994. confirmButtonText: '确定'
  995. })
  996. }
  997. })
  998. }).catch(() => {
  999. })
  1000. },
  1001. saveData () {
  1002. if (this.modalData.bu === '' || this.modalData.bu == null) {
  1003. this.$message.warning('请选择BU!')
  1004. return
  1005. }
  1006. if (this.modalData.itemDesc === '' || this.modalData.itemDesc == null) {
  1007. this.$message.warning('请输入检验项目名称!')
  1008. return
  1009. }
  1010. if (this.modalData.valueTypeDb === '' || this.modalData.valueTypeDb == null) {
  1011. this.$message.warning('请选择检验值类型!')
  1012. return
  1013. }
  1014. if (this.modalData.inspectionTypeNo === '' || this.modalData.inspectionTypeNo == null) {
  1015. this.$message.warning('请选择检验类型!')
  1016. return
  1017. }
  1018. if (this.modalData.methodNo === '' || this.modalData.methodNo == null) {
  1019. this.$message.warning('请选择检验方法!')
  1020. return
  1021. }
  1022. if ((this.modalData.samplingProgrammeNo !== '' && this.modalData.samplingProgrammeNo != null) && (this.modalData.samplingLevelNo === '' || this.modalData.samplingLevelNo == null)) {
  1023. this.$message.warning('请选择检验水平!')
  1024. return
  1025. }
  1026. if (this.modalData.defectLevelCode === '' || this.modalData.defectLevelCode == null) {
  1027. this.$message.warning('请选择缺陷等级!')
  1028. return
  1029. }
  1030. if (this.modalData.flag === '1') {
  1031. qcItemSave(this.modalData).then(({data}) => {
  1032. if (data && data.code === 0) {
  1033. this.getDataList()
  1034. this.modalFlag = false
  1035. this.$message({
  1036. message: '操作成功',
  1037. type: 'success',
  1038. duration: 1500,
  1039. onClose: () => {}
  1040. })
  1041. } else {
  1042. this.$alert(data.msg, '错误', {
  1043. confirmButtonText: '确定'
  1044. })
  1045. }
  1046. })
  1047. } else {
  1048. qcItemUpdate(this.modalData).then(({data}) => {
  1049. if (data && data.code === 0) {
  1050. this.getDataList()
  1051. this.modalFlag = false
  1052. this.$message({
  1053. message: '操作成功',
  1054. type: 'success',
  1055. duration: 1500,
  1056. onClose: () => {}
  1057. })
  1058. } else {
  1059. this.$alert(data.msg, '错误', {
  1060. confirmButtonText: '确定'
  1061. })
  1062. }
  1063. })
  1064. }
  1065. },
  1066. // 获取检验方法列表
  1067. queryMethodList () {
  1068. this.methodData.bu = this.modalData.bu
  1069. this.methodData.inspectionTypeNo = this.modalData.inspectionTypeNo
  1070. queryMethodList(this.methodData).then(({data}) => {
  1071. if (data && data.code === 0) {
  1072. this.methodList = data.rows
  1073. this.methodModelFlag = true
  1074. } else {
  1075. this.$alert(data.msg, '错误', {
  1076. confirmButtonText: '确定'
  1077. })
  1078. }
  1079. })
  1080. },
  1081. // 选中检验方法
  1082. getRowData (row) {
  1083. this.modalData.methodNo = row.methodNo
  1084. this.modalData.methodName = row.methodName
  1085. this.methodModelFlag = false
  1086. },
  1087. // 校验用户是否收藏
  1088. favoriteIsOk () {
  1089. let userFavorite = {
  1090. userId: this.$store.state.user.id,
  1091. languageCode: this.$i18n.locale
  1092. }
  1093. userFavoriteList(userFavorite).then(({data}) => {
  1094. for (let i = 0; i < data.list.length; i++) {
  1095. if (this.$route.meta.menuId === data.list[i].menuId) {
  1096. this.favorite = true
  1097. }
  1098. }
  1099. })
  1100. },
  1101. // 收藏 OR 取消收藏
  1102. favoriteFunction () {
  1103. let userFavorite = {
  1104. userId: this.$store.state.user.id,
  1105. functionId: this.$route.meta.menuId,
  1106. }
  1107. if (this.favorite) {
  1108. removeUserFavorite(userFavorite).then(({data}) => {
  1109. this.$message.success(data.msg)
  1110. this.favorite = false
  1111. })
  1112. } else {
  1113. // 收藏
  1114. saveUserFavorite(userFavorite).then(({data}) => {
  1115. this.$message.success(data.msg)
  1116. this.favorite = true
  1117. })
  1118. }
  1119. },
  1120. //导出excel
  1121. async createExportData() {
  1122. this.searchData.limit = -1
  1123. this.searchData.page = 1
  1124. await qcItemSearch(this.searchData).then(({data}) => {
  1125. this.exportList= data.rows;
  1126. })
  1127. return this.exportList;
  1128. },
  1129. startDownload() {},
  1130. finishDownload() {},
  1131. fields () {
  1132. let json = "{"
  1133. this.columnList.forEach((item, index) => {
  1134. if (index == this.columnList.length - 1) {
  1135. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1136. } else {
  1137. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1138. }
  1139. })
  1140. json += "}"
  1141. let s = eval("(" + json + ")")
  1142. return s
  1143. },
  1144. // 导入
  1145. qcUpload () {
  1146. let currentData = {
  1147. flag: 'item',
  1148. createBy: this.$store.state.user.name,
  1149. site: this.$store.state.user.site,
  1150. }
  1151. //打开组件 去做新增业务
  1152. this.$nextTick(() => {
  1153. this.$refs.qcUpload.init(currentData)
  1154. })
  1155. },
  1156. // 动态列开始 获取 用户保存的 格式列
  1157. async getTableUserColumn (tableId, columnId) {
  1158. let queryTableUser = {
  1159. userId: this.$store.state.user.name,
  1160. functionId: this.$route.meta.menuId,
  1161. tableId: tableId,
  1162. status: true,
  1163. languageCode: this.$i18n.locale
  1164. }
  1165. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  1166. if (data.rows.length > 0) {
  1167. //this.columnList1 = []
  1168. switch (columnId) {
  1169. case 1:
  1170. this.columnList = data.rows
  1171. break;
  1172. // case 2:
  1173. // this.columnDetailList = data.rows
  1174. // break;
  1175. // case 3:
  1176. // this.columnList2 = data.rows
  1177. // break;
  1178. // case 4:
  1179. // this.columnList3 = data.rows
  1180. // break;
  1181. }
  1182. } else {
  1183. this.getColumnList(tableId, columnId)
  1184. }
  1185. })
  1186. },
  1187. // 获取 tableDefault 列
  1188. async getColumnList (tableId, columnId) {
  1189. let queryTable = {
  1190. functionId: this.$route.meta.menuId,
  1191. tableId: tableId,
  1192. languageCode: this.$i18n.locale
  1193. }
  1194. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  1195. if (!data.rows.length == 0) {
  1196. switch (columnId) {
  1197. case 1:
  1198. this.columnList = data.rows
  1199. break;
  1200. // case 2:
  1201. // this.columnDetailList = data.rows
  1202. // break;
  1203. // case 3:
  1204. // this.columnList2 = data.rows
  1205. // break;
  1206. // case 4:
  1207. // this.columnList3 = data.rows
  1208. // break;
  1209. }
  1210. } else {
  1211. // this.showDefault = true.
  1212. }
  1213. })
  1214. },
  1215. //获取按钮的权限数据
  1216. getButtonAuthData () {
  1217. let searchFlag = this.isAuth(this.menuId+":search")
  1218. let saveFlag = this.isAuth(this.menuId+":save")
  1219. let updateFlag = this.isAuth(this.menuId+":update")
  1220. let deleteFlag = this.isAuth(this.menuId+":delete")
  1221. //处理页面的权限数据
  1222. this.authSearch = !searchFlag
  1223. this.authSave = !saveFlag
  1224. this.authUpdate = !updateFlag
  1225. this.authDelete = !deleteFlag
  1226. },
  1227. }
  1228. }
  1229. </script>