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.

1067 lines
34 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
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. <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="'检验模板编码'">
  12. <el-input v-model="searchData.codeNo" style="width: 120px"></el-input>
  13. </el-form-item>
  14. <el-form-item :label="'检验模板名称'">
  15. <el-input v-model="searchData.codeDesc" style="width: 120px"></el-input>
  16. </el-form-item>
  17. <el-form-item :label="'物料分类名称'">
  18. <el-input v-model="searchData.familyName" style="width: 120px"></el-input>
  19. </el-form-item>
  20. <el-form-item :label="'检验类型名称'">
  21. <el-input v-model="searchData.inspectionTypeName" style="width: 120px"></el-input>
  22. </el-form-item>
  23. <el-form-item :label="'是否在用'">
  24. <el-select filterable v-model="searchData.active" style="width: 130px">
  25. <el-option label="请选择" value=""></el-option>
  26. <el-option label="是" value="Y"></el-option>
  27. <el-option label="否" value="N"></el-option>
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item :label="' '">
  31. <el-button @click="doEmpty()">清空</el-button>
  32. <el-button type="primary" @click="getDataList()">查询</el-button>
  33. <el-button type="primary" @click="addModal()">新增</el-button>
  34. <download-excel
  35. :fields="fields()"
  36. :data="exportData"
  37. type="xls"
  38. :name="exportName"
  39. :header="exportHeader"
  40. :footer="exportFooter"
  41. :fetch="createExportData"
  42. :before-generate="startDownload"
  43. :before-finish="finishDownload"
  44. worksheet="导出信息"
  45. class="el-button el-button--primary el-button--medium">
  46. {{ "导出" }}
  47. </download-excel>
  48. </el-form-item>
  49. </el-form>
  50. <!-- 展示列表 -->
  51. <el-table
  52. :height="height"
  53. :data="dataList"
  54. border
  55. v-loading="dataListLoading"
  56. style="width: 100%;">
  57. <el-table-column
  58. v-for="(item,index) in columnList" :key="index"
  59. :sortable="item.columnSortable"
  60. :prop="item.columnProp"
  61. :header-align="item.headerAlign"
  62. :show-overflow-tooltip="item.showOverflowTooltip"
  63. :align="item.align"
  64. :fixed="item.fixed==''?false:item.fixed"
  65. :min-width="item.columnWidth"
  66. :label="item.columnLabel">
  67. <template slot-scope="scope">
  68. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  69. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  70. </template>
  71. </el-table-column>
  72. <el-table-column
  73. fixed="right"
  74. header-align="center"
  75. align="center"
  76. width="160"
  77. label="操作">
  78. <template slot-scope="scope">
  79. <a type="text" size="small" @click="updateModal(scope.row)">修改</a>
  80. <a type="text" size="small" @click="detailModal(scope.row)">检验项目</a>
  81. <a type="text" size="small" @click="deletePropertiesModel(scope.row)">删除</a>
  82. </template>
  83. </el-table-column>
  84. </el-table>
  85. <!-- 分页栏 -->
  86. <el-pagination
  87. @size-change="sizeChangeHandle"
  88. @current-change="currentChangeHandle"
  89. :current-page="pageIndex"
  90. :page-sizes="[20, 50, 100, 1000]"
  91. :page-size="pageSize"
  92. :total="totalPage"
  93. layout="total, sizes, prev, pager, next, jumper">
  94. </el-pagination>
  95. <!-- 检验模板新增/修改 -->
  96. <el-dialog title="检验模板" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="430px">
  97. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  98. <el-form-item label="检验模板名称:">
  99. <el-input v-model="modalData.codeDesc" style="width: 120px"></el-input>
  100. </el-form-item>
  101. <el-form-item label="是否在用:">
  102. <el-select filterable v-model="modalData.active" style="width: 120px">
  103. <el-option label="是" value="Y"></el-option>
  104. <el-option label="否" value="N"></el-option>
  105. </el-select>
  106. </el-form-item>
  107. </el-form>
  108. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  109. <el-form-item >
  110. <span slot="label" style="" @click="getBaseList(1042)"><a herf="#">物料分类编码</a></span>
  111. <el-input v-model="modalData.familyID" style="width: 120px"></el-input>
  112. </el-form-item>
  113. <el-form-item label="物料分类名称:">
  114. <el-input v-model="modalData.familyName" disabled style="width: 120px"></el-input>
  115. </el-form-item>
  116. </el-form>
  117. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  118. <el-form-item >
  119. <span slot="label" style="" @click="getBaseList(1045)"><a herf="#">检验类型编码</a></span>
  120. <el-input v-model="modalData.inspectionTypeNo" style="width: 120px"></el-input>
  121. </el-form-item>
  122. <el-form-item label="检验类型名称:">
  123. <el-input v-model="modalData.inspectionTypeName" disabled style="width: 120px"></el-input>
  124. </el-form-item>
  125. </el-form>
  126. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  127. <el-button type="primary" @click="saveData()">保存</el-button>
  128. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  129. </el-footer>
  130. </el-dialog>
  131. <!-- 检验项目 -->
  132. <el-dialog title="检验项目清单" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="830px">
  133. <el-form :inline="true" label-position="top" @keyup.enter.native="getDataList()">
  134. <el-form-item :label="'检验模板编码'">
  135. <el-input v-model="detailData.codeNo" readonly style="width: 120px"></el-input>
  136. </el-form-item>
  137. <el-form-item :label="'检验模板名称'">
  138. <el-input v-model="detailData.codeDesc" readonly style="width: 120px"></el-input>
  139. </el-form-item>
  140. <el-form-item :label="' '">
  141. <el-button type="primary" @click="addDetailModal()">新增</el-button>
  142. <el-button type="primary" @click="addFastModal()">快速新增</el-button>
  143. </el-form-item>
  144. </el-form>
  145. <!-- 检验项目展示列表 -->
  146. <el-table
  147. :height="300"
  148. :data="detailList"
  149. border
  150. v-loading="dataListLoading"
  151. style="width: 100%;">
  152. <el-table-column
  153. v-for="(item,index) in columnDetailList" :key="index"
  154. :sortable="item.columnSortable"
  155. :prop="item.columnProp"
  156. :header-align="item.headerAlign"
  157. :show-overflow-tooltip="item.showOverflowTooltip"
  158. :align="item.align"
  159. :fixed="item.fixed==''?false:item.fixed"
  160. :min-width="item.columnWidth"
  161. :label="item.columnLabel">
  162. <template slot-scope="scope">
  163. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  164. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  165. </template>
  166. </el-table-column>
  167. <el-table-column
  168. fixed="right"
  169. header-align="center"
  170. align="center"
  171. width="100"
  172. label="操作">
  173. <template slot-scope="scope">
  174. <a type="text" size="small" @click="deleteModalDetails(scope.row)">删除项目</a>
  175. </template>
  176. </el-table-column>
  177. </el-table>
  178. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  179. <el-button type="primary" @click="detailModelFlag = false">关闭</el-button>
  180. </el-footer>
  181. </el-dialog>
  182. <!-- 检验项目->新增 -->
  183. <el-dialog title="添加项目" :close-on-click-modal="false" v-drag :visible.sync="addDetailModalFlag" width="300px">
  184. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  185. <el-form-item >
  186. <span slot="label" style="" @click="getBaseList(1034)"><a herf="#">检验项目编码</a></span>
  187. <el-input v-model="detailData.itemNo" @blur="itemNoBlur" style="width: 120px"></el-input>
  188. </el-form-item>
  189. <el-form-item label="检验项目名称:">
  190. <el-input v-model="detailData.itemDesc" disabled style="width: 120px"></el-input>
  191. </el-form-item>
  192. </el-form>
  193. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  194. <el-button type="primary" @click="saveModalDetails()">保存</el-button>
  195. <el-button type="primary" @click="addDetailModalFlag = false">关闭</el-button>
  196. </el-footer>
  197. </el-dialog>
  198. <!-- 检验项目->快速新增 -->
  199. <el-dialog title="快速添加" @close="refreshDetailList" :close-on-click-modal="false" v-drag :visible.sync="fastAddFlag" width="800px">
  200. <div style="font-size: 12px">
  201. 检验模板编码<el-input v-model="detailData.codeNo" readonly style="width: 120px"></el-input>
  202. 检验模板名称<el-input v-model="detailData.codeDesc" readonly style="width: 120px"></el-input>
  203. </div>
  204. <el-container style="margin-top: -12px;">
  205. <el-main style="width: 300px">
  206. <span style="font-size: 12px" >可选项目</span>
  207. <el-table
  208. height="300px"
  209. :data="itemList1"
  210. border
  211. @row-click="clickItem1"
  212. highlight-current-row
  213. v-loading="dataListLoading"
  214. style="width: 100%">
  215. <el-table-column
  216. prop="itemNo"
  217. header-align="center"
  218. align="left"
  219. min-width="110"
  220. label="项目编码">
  221. </el-table-column>
  222. <el-table-column
  223. prop="itemDesc"
  224. header-align="center"
  225. align="left"
  226. min-width="170"
  227. label="项目名称">
  228. </el-table-column>
  229. </el-table>
  230. </el-main>
  231. <el-main style="width: 100px">
  232. <div style="margin-top: 100px">
  233. <el-button type="primary" @click="addItem()">添加>></el-button>
  234. </div>
  235. <div style="margin-top: 20px">
  236. <el-button type="primary" @click="deleteItem()">删除<<</el-button>
  237. </div>
  238. </el-main>
  239. <el-main style="width: 300px">
  240. <span style="font-size: 12px" >已有项目</span>
  241. <el-table
  242. height="300px"
  243. :data="itemList2"
  244. border
  245. @row-click="clickItem2"
  246. highlight-current-row
  247. v-loading="dataListLoading"
  248. style="width: 100%">
  249. <el-table-column
  250. prop="itemNo"
  251. header-align="center"
  252. align="left"
  253. min-width="110"
  254. label="项目编码">
  255. </el-table-column>
  256. <el-table-column
  257. prop="itemDesc"
  258. header-align="center"
  259. align="left"
  260. min-width="170"
  261. label="项目名称">
  262. </el-table-column>
  263. </el-table>
  264. </el-main>
  265. </el-container>
  266. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  267. <el-button type="primary" @click="fastAddFlag = false">关闭</el-button>
  268. </el-footer>
  269. </el-dialog>
  270. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  271. </div>
  272. </template>
  273. <script>
  274. import {
  275. qcCheckOutModelSearch,
  276. qcCheckOutModelSave,
  277. qcCheckOutModelUpdate,
  278. qcCheckOutModelDelete,
  279. // searchItemAvailable,
  280. searchModalDetails,
  281. saveModalDetails,
  282. deleteModalDetails,
  283. qcCheckOutItemSearch, // 搜索项目
  284. getItemLists // 获取项目列表
  285. } from "@/api/qc/qc.js"
  286. import Chooselist from '@/views/modules/common/Chooselist_eam'
  287. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  288. export default {
  289. components: {
  290. Chooselist
  291. },
  292. watch: {
  293. searchData: {
  294. deep: true,
  295. handler: function (newV, oldV) {
  296. this.searchData.codeNo = this.searchData.codeNo.toUpperCase()
  297. }
  298. },
  299. itemData: {
  300. deep: true,
  301. handler: function (newV, oldV) {
  302. this.itemData.itemNo = this.itemData.itemNo.toUpperCase()
  303. }
  304. },
  305. modalData: {
  306. deep: true,
  307. handler: function (newV, oldV) {
  308. this.modalData.codeNo = this.modalData.codeNo.toUpperCase()
  309. }
  310. },
  311. detailData: {
  312. deep: true,
  313. handler: function (newV, oldV) {
  314. this.detailData.codeNo = this.detailData.codeNo.toUpperCase()
  315. this.detailData.itemNo = this.detailData.itemNo.toUpperCase()
  316. }
  317. }
  318. },
  319. data () {
  320. return {
  321. // 是否收藏
  322. favorite: false,
  323. // 导出 start
  324. exportData: [],
  325. exportName: "根据分类设置检验模板" + this.dayjs().format('YYYYMMDDHHmmss'),
  326. exportHeader: ["根据分类设置检验模板"],
  327. exportFooter: [],
  328. exportList:[],
  329. // 导出 end
  330. tagNo:'',
  331. searchData: {
  332. codeNo: '',
  333. codeDesc: '',
  334. active:'',
  335. familyName:'',
  336. functionType:'D',
  337. inspectionTypeName:'',
  338. page: 1,
  339. limit: 10,
  340. },
  341. height: 200,
  342. pageIndex: 1,
  343. pageSize: 100,
  344. totalPage: 0,
  345. addDetailModalFlag:false,
  346. modalFlag:false,
  347. modalDisableFlag:false,
  348. modalData:{
  349. flag:'',
  350. codeNo:'',
  351. codeDesc:'',
  352. familyID:'',
  353. familyName:'',
  354. active:'',
  355. functionType:'D',
  356. inspectionTypeNo:'',
  357. inspectionTypeName:'',
  358. createdBy:this.$store.state.user.name
  359. },
  360. detailData:{
  361. codeNo:'',
  362. codeDesc:'',
  363. functionType:'D',
  364. itemNo:'',
  365. itemDesc:'',
  366. itemType:'D',
  367. createdBy:this.$store.state.user.name
  368. },
  369. columnList: [
  370. {
  371. userId: this.$store.state.user.name,
  372. functionId: 301003,
  373. serialNumber: '301003TableCodeNo',
  374. tableId: "301003Table",
  375. tableName: "检验模板表",
  376. columnProp: 'codeNo',
  377. headerAlign: "center",
  378. align: "left",
  379. columnLabel: '检验模板编码',
  380. columnHidden: false,
  381. columnImage: false,
  382. columnSortable: false,
  383. sortLv: 0,
  384. status: true,
  385. fixed: '',
  386. columnWidth: 120,
  387. },
  388. {
  389. userId: this.$store.state.user.name,
  390. functionId: 301003,
  391. serialNumber: '301003TableCodeDesc',
  392. tableId: "301003Table",
  393. tableName: "检验模板表",
  394. columnProp: 'codeDesc',
  395. headerAlign: "center",
  396. align: "left",
  397. columnLabel: '检验模板名称',
  398. columnHidden: false,
  399. columnImage: false,
  400. columnSortable: false,
  401. sortLv: 0,
  402. status: true,
  403. fixed: '',
  404. columnWidth: 140,
  405. },
  406. {
  407. userId: this.$store.state.user.name,
  408. functionId: 301003,
  409. serialNumber: '301003TableActive',
  410. tableId: "301003Table",
  411. tableName: "检验模板表",
  412. columnProp: 'familyName',
  413. headerAlign: "center",
  414. align: "left",
  415. columnLabel: '物料分类名称',
  416. columnHidden: false,
  417. columnImage: false,
  418. columnSortable: false,
  419. sortLv: 0,
  420. status: true,
  421. fixed: '',
  422. columnWidth: 140,
  423. },
  424. {
  425. userId: this.$store.state.user.name,
  426. functionId: 301003,
  427. serialNumber: '301003TableCodeDesc',
  428. tableId: "301003Table",
  429. tableName: "检验模板表",
  430. columnProp: 'inspectionTypeName',
  431. headerAlign: "center",
  432. align: "left",
  433. columnLabel: '检验类型名称',
  434. columnHidden: false,
  435. columnImage: false,
  436. columnSortable: false,
  437. sortLv: 0,
  438. status: true,
  439. fixed: '',
  440. columnWidth: 140,
  441. },
  442. {
  443. userId: this.$store.state.user.name,
  444. functionId: 301003,
  445. serialNumber: '301003TableActive',
  446. tableId: "301003Table",
  447. tableName: "检验模板表",
  448. columnProp: 'active',
  449. headerAlign: "center",
  450. align: "left",
  451. columnLabel: '在用',
  452. columnHidden: false,
  453. columnImage: false,
  454. columnSortable: false,
  455. sortLv: 0,
  456. status: true,
  457. fixed: '',
  458. columnWidth: 40,
  459. },
  460. ],
  461. detailModelFlag:false,
  462. detailList: [],
  463. dataListLoading: false,
  464. dataListSelections: [],
  465. itemFlag:'text',
  466. itemData:{
  467. itemNo:'',
  468. valueNo:'',
  469. availableValue:'',
  470. itemType:'D',
  471. createdBy: this.$store.state.user.name
  472. },
  473. dataList:[],
  474. departmentList:[],
  475. // 展示列集
  476. columnDetailList: [
  477. {
  478. userId: this.$store.state.user.name,
  479. functionId: 301003,
  480. serialNumber: '301003Table2EamPropertiesItemID',
  481. tableId: "301003Table2",
  482. tableName: "检验项目表",
  483. columnProp: 'itemNo',
  484. headerAlign: "center",
  485. align: "left",
  486. columnLabel: '检验项目编码',
  487. columnHidden: false,
  488. columnImage: false,
  489. columnSortable: false,
  490. sortLv: 0,
  491. status: true,
  492. fixed: '',
  493. columnWidth: 90,
  494. },
  495. {
  496. userId: this.$store.state.user.name,
  497. functionId: 301003,
  498. serialNumber: '301003Table2EamPropertiesItemDesc',
  499. tableId: "301003Table2",
  500. tableName: "检验项目表",
  501. columnProp: 'itemDesc',
  502. headerAlign: "center",
  503. align: "left",
  504. columnLabel: '检验项目名称',
  505. columnHidden: false,
  506. columnImage: false,
  507. columnSortable: false,
  508. sortLv: 0,
  509. status: true,
  510. fixed: '',
  511. columnWidth: 90,
  512. },
  513. {
  514. userId: this.$store.state.user.name,
  515. functionId: 301003,
  516. serialNumber: '301003Table2ValueType',
  517. tableId: "301003Table2",
  518. tableName: "检验项目表",
  519. columnProp: 'valueType',
  520. headerAlign: "center",
  521. align: "left",
  522. columnLabel: '检测值类型',
  523. columnHidden: false,
  524. columnImage: false,
  525. columnSortable: false,
  526. sortLv: 0,
  527. status: true,
  528. fixed: '',
  529. columnWidth: 70,
  530. },
  531. {
  532. userId: this.$store.state.user.name,
  533. functionId: 301003,
  534. serialNumber: '301003Table2DefaultValue',
  535. tableId: "301003Table2",
  536. tableName: "检验项目表",
  537. columnProp: 'defaultValue',
  538. headerAlign: "center",
  539. align: "left",
  540. columnLabel: '参照值',
  541. columnHidden: false,
  542. columnImage: false,
  543. columnSortable: false,
  544. sortLv: 0,
  545. status: true,
  546. fixed: '',
  547. columnWidth: 70,
  548. },
  549. {
  550. userId: this.$store.state.user.name,
  551. functionId: 301003,
  552. serialNumber: '301003Table2MaxValue',
  553. tableId: "301003Table2",
  554. tableName: "检验项目表",
  555. columnProp: 'maxValue',
  556. headerAlign: "center",
  557. align: "left",
  558. columnLabel: '最大值',
  559. columnHidden: false,
  560. columnImage: false,
  561. columnSortable: false,
  562. sortLv: 0,
  563. status: true,
  564. fixed: '',
  565. columnWidth: 70,
  566. },
  567. {
  568. userId: this.$store.state.user.name,
  569. functionId: 301003,
  570. serialNumber: '301003Table2MinValue',
  571. tableId: "301003Table2",
  572. tableName: "检验项目表",
  573. columnProp: 'minValue',
  574. headerAlign: "center",
  575. align: "left",
  576. columnLabel: '最小值',
  577. columnHidden: false,
  578. columnImage: false,
  579. columnSortable: false,
  580. sortLv: 0,
  581. status: true,
  582. fixed: '',
  583. columnWidth: 70,
  584. },
  585. ],
  586. // 快速添加
  587. fastAddFlag:false,
  588. itemList1:[],
  589. itemList2:[],
  590. itemListRow1:{},
  591. itemListRow2:{},
  592. }
  593. },
  594. mounted () {
  595. this.$nextTick(() => {
  596. this.height = window.innerHeight - 210
  597. })
  598. },
  599. created () {
  600. this.getDataList()
  601. this.favoriteIsOk()
  602. },
  603. methods: {
  604. // 清空搜索栏
  605. doEmpty(){
  606. this.searchData = {
  607. codeNo: '',
  608. codeDesc: '',
  609. active:'',
  610. familyName:'',
  611. functionType:'D',
  612. inspectionTypeName:'',
  613. page: 1,
  614. limit: 10,
  615. }
  616. },
  617. // 获取基础数据列表S
  618. getBaseList (val,type) {
  619. this.tagNo = val
  620. this.$nextTick(() => {
  621. let strVal = ''
  622. if (val === 1034) {
  623. strVal = this.detailData.itemNo
  624. this.$refs.baseList.init(val, strVal)
  625. }
  626. if (val === 1042) {
  627. strVal = this.modalData.familyID
  628. this.$refs.baseList.init(val, strVal)
  629. }
  630. if (val === 1045) {
  631. strVal = this.modalData.inspectionTypeNo
  632. this.$refs.baseList.init(val, strVal)
  633. }
  634. })
  635. },
  636. /* 列表方法的回调 */
  637. getBaseData (val) {
  638. if (this.tagNo === 1034) {
  639. this.detailData.itemNo = val.ItemNo
  640. this.detailData.itemDesc = val.ItemDesc
  641. }
  642. if (this.tagNo === 1042) {
  643. this.modalData.familyID = val.FamilyID
  644. this.modalData.familyName = val.FamilyName
  645. }
  646. if (this.tagNo === 1045) {
  647. this.modalData.inspectionTypeNo = val.inspection_type_no
  648. this.modalData.inspectionTypeName = val.inspection_type_name
  649. }
  650. },
  651. // 获取数据列表
  652. getDataList () {
  653. this.searchData.limit = this.pageSize
  654. this.searchData.page = this.pageIndex
  655. qcCheckOutModelSearch(this.searchData).then(({data}) => {
  656. if (data.code == 0) {
  657. this.dataList = data.page.list
  658. this.pageIndex = data.page.currPage
  659. this.pageSize = data.page.pageSize
  660. this.totalPage = data.page.totalCount
  661. }
  662. this.dataListLoading = false
  663. })
  664. },
  665. // 每页数
  666. sizeChangeHandle (val) {
  667. this.pageSize = val
  668. this.pageIndex = 1
  669. this.getDataList()
  670. },
  671. // 当前页
  672. currentChangeHandle (val) {
  673. this.pageIndex = val
  674. this.getDataList()
  675. },
  676. addModal(){
  677. this.modalData={
  678. flag:'1',
  679. codeNo:'',
  680. codeDesc:'',
  681. active: '',
  682. functionType:'D',
  683. inspectionTypeNo:'',
  684. inspectionTypeName:'',
  685. createdBy:this.$store.state.user.name
  686. };
  687. this.modalDisableFlag = false;
  688. this.modalFlag = true;
  689. },
  690. updateModal(row){
  691. this.modalData={
  692. flag:'2',
  693. codeNo:row.codeNo,
  694. codeDesc:row.codeDesc,
  695. active:row.active,
  696. familyID: row.familyID,
  697. familyName: row.familyName,
  698. inspectionTypeNo: row.inspectionTypeNo,
  699. inspectionTypeName:row.inspectionTypeName,
  700. functionType:'D',
  701. createdBy:this.$store.state.user.name
  702. };
  703. this.modalDisableFlag = true;
  704. this.modalFlag = true;
  705. },
  706. // 删除
  707. deletePropertiesModel (row) {
  708. this.$confirm(`是否删除这个检验模板?`, '提示', {
  709. confirmButtonText: '确定',
  710. cancelButtonText: '取消',
  711. type: 'warning'
  712. }).then(() => {
  713. qcCheckOutModelDelete(row).then(({data}) => {
  714. if (data && data.code === 0) {
  715. this.getDataList()
  716. this.$message({
  717. message: '操作成功',
  718. type: 'success',
  719. duration: 1500,
  720. onClose: () => {
  721. }
  722. })
  723. } else {
  724. this.$alert(data.msg, '错误', {
  725. confirmButtonText: '确定'
  726. })
  727. }
  728. })
  729. }).catch(() => {
  730. })
  731. },
  732. saveData(){
  733. if (this.modalData.codeDesc == '' || this.modalData.codeDesc == null) {
  734. this.$alert('请输入检验模板名称!', '错误', {
  735. confirmButtonText: '确定'
  736. })
  737. return false
  738. }
  739. if (this.modalData.familyID == '' || this.modalData.familyID == null) {
  740. this.$alert('请选择物料分类编码!', '错误', {
  741. confirmButtonText: '确定'
  742. })
  743. return false
  744. }
  745. if (this.modalData.inspectionTypeNo == '' || this.modalData.inspectionTypeNo == null) {
  746. this.$alert('请选择检验类型!', '错误', {
  747. confirmButtonText: '确定'
  748. })
  749. return false
  750. }
  751. if (this.modalData.active == '' || this.modalData.active == null) {
  752. this.$alert('选择是否在用!', '错误', {
  753. confirmButtonText: '确定'
  754. })
  755. return false
  756. }
  757. if(this.modalData.flag=='1'){
  758. qcCheckOutModelSave(this.modalData).then(({data}) => {
  759. if (data && data.code === 0) {
  760. this.getDataList()
  761. this.modalFlag=false
  762. this.$message({
  763. message: '操作成功',
  764. type: 'success',
  765. duration: 1500,
  766. onClose: () => {
  767. }
  768. })
  769. } else {
  770. this.$alert(data.msg, '错误', {
  771. confirmButtonText: '确定'
  772. })
  773. }
  774. })
  775. }else {
  776. qcCheckOutModelUpdate(this.modalData).then(({data}) => {
  777. if (data && data.code === 0) {
  778. this.getDataList()
  779. this.modalFlag = false
  780. this.$message({
  781. message: '操作成功',
  782. type: 'success',
  783. duration: 1500,
  784. onClose: () => {
  785. }
  786. })
  787. } else {
  788. this.$alert(data.msg, '错误', {
  789. confirmButtonText: '确定'
  790. })
  791. }
  792. })
  793. }
  794. },
  795. //打开检验项目清单
  796. detailModal(row){
  797. this.detailData.codeNo = row.codeNo
  798. this.detailData.codeDesc = row.codeDesc
  799. searchModalDetails(this.detailData).then(({data}) => {
  800. this.detailList = data.rows
  801. })
  802. this.detailModelFlag = true;
  803. },
  804. // 普通新增
  805. addDetailModal(){
  806. this.detailData.itemNo = '';
  807. this.detailData.itemDesc = '';
  808. this.addDetailModalFlag = true;
  809. },
  810. // 快速新增
  811. addFastModal(){
  812. this.itemListRow2 = null
  813. this.itemListRow1 = null
  814. getItemLists(this.detailData).then(({data}) => {
  815. this.itemList1 = data.row1;
  816. this.itemList2 = data.row2;
  817. })
  818. this.fastAddFlag = true;
  819. },
  820. clickItem1(row){
  821. this.itemListRow1 = JSON.parse(JSON.stringify(row));
  822. },
  823. clickItem2(row){
  824. this.itemListRow2 = JSON.parse(JSON.stringify(row));
  825. },
  826. // 添加项目
  827. addItem(){
  828. if(this.itemListRow1==null){
  829. this.$alert("请选择可选项目!", '错误', {
  830. confirmButtonText: '确定'
  831. })
  832. return false;
  833. }
  834. let inData={
  835. codeNo:this.detailData.codeNo,
  836. codeDesc:this.detailData.codeDesc,
  837. functionType:this.detailData.functionType,
  838. itemNo: this.itemListRow1.itemNo,
  839. itemDesc:this.itemListRow1.itemDesc,
  840. itemType:this.detailData.itemType,
  841. createdBy:this.$store.state.user.name
  842. }
  843. saveModalDetails(inData).then(({data}) => {
  844. if (data && data.code == 0) {
  845. getItemLists(this.detailData).then(({data}) => {
  846. this.itemList1=data.row1;
  847. this.itemList2=data.row2;
  848. })
  849. this.itemListRow1=null
  850. } else {
  851. this.$alert(data.msg, '错误', {
  852. confirmButtonText: '确定'
  853. })
  854. }
  855. })
  856. },
  857. // 删除项目
  858. deleteItem(){
  859. if(this.itemListRow2 == null){
  860. this.$alert("请选择已选项目!", '错误', {
  861. confirmButtonText: '确定'
  862. })
  863. return false;
  864. }
  865. let inData = {
  866. codeNo:this.detailData.codeNo,
  867. codeDesc:this.detailData.codeDesc,
  868. functionType:this.detailData.functionType,
  869. itemNo: this.itemListRow2.itemNo,
  870. itemDesc:this.itemListRow2.itemDesc,
  871. itemType:this.detailData.itemType,
  872. createdBy:this.$store.state.user.name
  873. }
  874. deleteModalDetails(inData).then(({data}) => {
  875. if (data && data.code === 0) {
  876. getItemLists(this.detailData).then(({data}) => {
  877. this.itemList1 = data.row1;
  878. this.itemList2 = data.row2;
  879. })
  880. this.itemListRow2 = null
  881. } else {
  882. this.$alert(data.msg, '错误', {
  883. confirmButtonText: '确定'
  884. })
  885. }
  886. })
  887. },
  888. // 关闭后刷新列表
  889. refreshDetailList(){
  890. searchModalDetails(this.detailData).then(({data}) => {
  891. this.detailList = data.rows
  892. })
  893. },
  894. // 保存模板中的项目明细
  895. saveModalDetails(){
  896. if(this.detailData.itemNo == "" || this.detailData.itemNo == null){
  897. this.$alert('请选择检验项目编码!', '错误', {
  898. confirmButtonText: '确定'
  899. })
  900. return false
  901. }
  902. saveModalDetails(this.detailData).then(({data}) => {
  903. if (data && data.code == 0) {
  904. searchModalDetails(this.detailData).then(({data}) => {
  905. this.detailList = data.rows
  906. })
  907. this.addDetailModalFlag=false;
  908. this.$message({
  909. message: '操作成功',
  910. type: 'success',
  911. duration: 1500,
  912. onClose: () => {
  913. }
  914. })
  915. } else {
  916. this.$alert(data.msg, '错误', {
  917. confirmButtonText: '确定'
  918. })
  919. }
  920. })
  921. },
  922. itemNoBlur(){
  923. let inData={
  924. itemType:'D',
  925. itemNo:this.detailData.itemNo
  926. }
  927. qcCheckOutItemSearch(inData).then(({data}) => {
  928. if(data.rows.length>0){
  929. this.detailData.itemDesc = data.rows[0].itemDesc
  930. }else {
  931. this.detailData.itemDesc=''
  932. }
  933. })
  934. },
  935. // 删除模板中的项目
  936. deleteModalDetails(row){
  937. console.log(row)
  938. this.$confirm(`是否删除这个检验项目?`, '提示', {
  939. confirmButtonText: '确定',
  940. cancelButtonText: '取消',
  941. type: 'warning'
  942. }).then(() => {
  943. deleteModalDetails(row).then(({data}) => {
  944. if (data && data.code === 0) {
  945. searchModalDetails(this.detailData).then(({data}) => {
  946. this.detailList = data.rows
  947. })
  948. this.$message({
  949. message: '操作成功',
  950. type: 'success',
  951. duration: 1500,
  952. onClose: () => {
  953. }
  954. })
  955. } else {
  956. this.$alert(data.msg, '错误', {
  957. confirmButtonText: '确定'
  958. })
  959. }
  960. })
  961. }).catch(() => {
  962. })
  963. },
  964. // 校验用户是否收藏
  965. favoriteIsOk() {
  966. let userFavorite = {
  967. userId: this.$store.state.user.id,
  968. languageCode: this.$i18n.locale
  969. }
  970. console.log(this.$route.meta.menuId)
  971. userFavoriteList(userFavorite).then(({data}) => {
  972. for (let i = 0; i < data.list.length; i++) {
  973. // let flag=false;
  974. if(this.$route.meta.menuId==data.list[i].menuId){
  975. this.favorite = true
  976. // flag=true;
  977. }
  978. }
  979. })
  980. },
  981. // 收藏 OR 取消收藏
  982. favoriteFunction() {
  983. let userFavorite = {
  984. userId: this.$store.state.user.id,
  985. functionId: this.$route.meta.menuId,
  986. }
  987. if (this.favorite) {
  988. // 取消收藏
  989. this.$confirm(`确定取消收藏`, '提示', {
  990. confirmButtonText: '确定',
  991. cancelButtonText: '取消',
  992. type: 'warning'
  993. }).then(() => {
  994. removeUserFavorite(userFavorite).then(({data}) => {
  995. this.$message.success(data.msg)
  996. this.favorite = false
  997. })
  998. })
  999. } else {
  1000. // 收藏
  1001. saveUserFavorite(userFavorite).then(({data}) => {
  1002. this.$message.success(data.msg)
  1003. this.favorite = true
  1004. })
  1005. }
  1006. },
  1007. //导出excel
  1008. async createExportData() {
  1009. this.searchData.limit = -1
  1010. this.searchData.page = 1
  1011. await qcCheckOutModelSearch(this.searchData).then(({data}) => {
  1012. this.exportList= data.rows;
  1013. })
  1014. return this.exportList;
  1015. },
  1016. startDownload() {
  1017. // this.exportData = this.dataList
  1018. },
  1019. finishDownload() {
  1020. },
  1021. fields() {
  1022. let json = "{"
  1023. this.columnList.forEach((item, index) => {
  1024. if (index == this.columnList.length - 1) {
  1025. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1026. } else {
  1027. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1028. }
  1029. })
  1030. json += "}"
  1031. let s = eval("(" + json + ")")
  1032. return s
  1033. },
  1034. // 导出 end
  1035. }
  1036. }
  1037. </script>