QualityContentTabs.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. <template>
  2. <el-row>
  3. <header-title title="质检内容">
  4. <el-button type="primary" :loading="loading" v-if="type != 'detail'"
  5. @click="$emit('batch-quality')">批量质检</el-button>
  6. <el-button type="primary" :loading="loading" v-if="type != 'detail'"
  7. @click="$emit('batch-dispose')">批量处置</el-button>
  8. </header-title>
  9. <el-tabs v-model="activeName" @tab-click="handleClick">
  10. <!-- -->
  11. <el-tab-pane label="来源清单" name="1">
  12. <ele-pro-table ref="sourceTable" :columns="tableColumns1" :datasource="datasource"
  13. @selection-change="handleSelectionChange" :initLoad="false" :pagination="true">
  14. <template v-slot:toolbar v-if="form.qualityMode == 2 && form.qualityType == 2 && type != 'detail'">
  15. <el-dropdown trigger="click" @command="handleSampleNumber">
  16. <el-link type="primary" icon="el-icon-plus">取样</el-link>
  17. <el-dropdown-menu slot="dropdown">
  18. <el-dropdown-item command="1">取整样</el-dropdown-item>
  19. <el-dropdown-item command="2">取小样</el-dropdown-item>
  20. </el-dropdown-menu>
  21. </el-dropdown>
  22. </template>
  23. <template v-slot:toolkit v-if="form.qualityMode == 2 && form.qualityType == 2 ">
  24. <el-row>
  25. <el-form ref="ruleForm" :model="formData" label-width="60px" size="mini" :rules="rules" class="flex"
  26. :show-message="false">
  27. <el-col :span="6" v-if="conditionType == 2">
  28. <el-form-item prop="number" label-width="0" style="margin-bottom: 0;" >
  29. <el-input v-model="formData.number" placeholder="请输入" size="mini"
  30. ></el-input>
  31. </el-form-item>
  32. </el-col>
  33. <el-col :span="6" v-if="conditionType == 2">
  34. <el-form-item prop="sampleUnit" label-width="0" style="margin: 0;" >
  35. <DictSelection dictName="计量单位" clearable v-model="formData.sampleUnit" size="mini"
  36. @change="changeSamUnit">
  37. </DictSelection>
  38. </el-form-item>
  39. </el-col>
  40. <el-col :span="8" v-if=" conditionType == 2">
  41. <el-form-item prop="portion" label="数量" style="margin: 0;">
  42. <el-input v-model="formData.portion" placeholder="请输入" size="mini" ></el-input>
  43. </el-form-item>
  44. </el-col>
  45. <el-col :span="20" v-if="conditionType == 1">
  46. <el-form-item prop="portion" label="数量" style="margin: 0;">
  47. <el-input v-model="formData.portion" placeholder="请输入" size="mini"></el-input>
  48. </el-form-item>
  49. </el-col>
  50. <el-col :span="4" style="text-align: right;" v-if=" conditionType == 2">
  51. <el-button type="primary" size="mini" @click="handleSampleSubmit"
  52. style="margin-right: 12px;">确认</el-button>
  53. </el-col>
  54. <el-col :span="4" style="text-align: right;" v-if="conditionType == 1">
  55. <el-button type="primary" size="mini" @click="handleSampleSubmit"
  56. style="margin-right: 12px;">确认</el-button>
  57. </el-col>
  58. </el-form>
  59. </el-row>
  60. </template>
  61. <template v-slot:materielDesignation="{ row }">
  62. <el-input v-model="row.materielDesignation" placeholder="请输入"></el-input>
  63. </template>
  64. <template v-slot:clientCode="{ row }">
  65. <el-input v-model="row.clientCode" placeholder="请输入"></el-input>
  66. </template>
  67. <template v-slot:engrave="{ row }">
  68. <el-input v-model="row.engrave" placeholder="请输入"></el-input>
  69. </template>
  70. <template v-slot:weight="{ row }">
  71. <el-input v-model="row.weight" placeholder="请输入"></el-input>
  72. </template>
  73. </ele-pro-table>
  74. </el-tab-pane>
  75. <!-- -->
  76. <el-tab-pane label="样品清单" name="2">
  77. <el-table v-if="sampleList.length > 0" ref="showSampleListTable" :data="paginatedSampleList"
  78. tooltip-effect="dark" :max-height="300" border row-key="id">
  79. <el-table-column label="序号" type="index" width="50" align="center" fixed="left"></el-table-column>
  80. <template v-for="column in tableColumns">
  81. <el-table-column :key="column.prop" :label="column.label" :prop="column.prop" :fixed="column.fixed"
  82. :show-overflow-tooltip="true" :width="column.width" :align="column.align">
  83. <template slot-scope="scope">
  84. <template v-if="column.prop === 'categoryCode'">
  85. <el-link type="primary" :underline="false" @click="handleDetail(scope.$index, scope.row, 'detail')">
  86. {{ scope.row.categoryCode }}
  87. </el-link>
  88. </template>
  89. <template v-else-if="column.prop === 'materielDesignation'">
  90. <el-input :disabled="scope.row.isMaterielDesignationEmpty" v-model="scope.row.materielDesignation"
  91. size="mini"></el-input>
  92. </template>
  93. <template v-else-if="column.prop === 'clientCode'">
  94. <el-input :disabled="scope.row.isClientCodeEmpty" v-model="scope.row.clientCode"
  95. size="mini"></el-input>
  96. </template>
  97. <template v-else-if="column.prop === 'engrave'">
  98. <el-input :disabled="scope.row.isEngraveEmpty" v-model="scope.row.engrave" size="mini"></el-input>
  99. </template>
  100. <template v-else-if="column.prop === 'weight'">
  101. <el-input type="number" v-model="scope.row.weight" :min="0"
  102. @input="inputWeight(scope.row, scope.$index)" size="mini"></el-input>
  103. </template>
  104. <template v-else>
  105. {{ scope.row[column.prop] }}
  106. </template>
  107. </template>
  108. </el-table-column>
  109. </template>
  110. <!-- *** fixed="right" -->
  111. <el-table-column label="处置状态" prop="disposalStatus" align="center"
  112. :show-overflow-tooltip="true">
  113. <template slot-scope="scope">
  114. <span v-if="scope.row.disposalStatus == 1 && form.qualityType == 2">返工</span>
  115. <span v-if="scope.row.disposalStatus == 2 && form.qualityType == 2">返修</span>
  116. <span v-if="scope.row.disposalStatus == 3">报废</span>
  117. <span v-if="scope.row.disposalStatus == 4 && form.qualityType == 2">降级使用</span>
  118. <span v-if="scope.row.disposalStatus == 5 && form.qualityType == 2">让步接收</span>
  119. <span v-if="scope.row.disposalStatus == 6">留样</span>
  120. <span v-if="scope.row.disposalStatus == 7">消耗</span>
  121. <span v-if="scope.row.disposalStatus == 8">回用</span>
  122. </template>
  123. </el-table-column>
  124. <!-- *** fixed="right" -->
  125. <el-table-column label="处置时间" prop="disposeTime" align="center"
  126. :show-overflow-tooltip="true">
  127. </el-table-column>
  128. <!-- *** fixed="right" -->
  129. <el-table-column label="质检状态" prop="qualityStatus" align="center"
  130. :show-overflow-tooltip="true">
  131. <template slot-scope="scope">
  132. <span v-if="scope.row.qualityStatus == 0">未检</span>
  133. <span v-if="scope.row.qualityStatus == 1">已检</span>
  134. <span v-if="scope.row.qualityStatus == 2">待检</span>
  135. </template>
  136. </el-table-column>
  137. <el-table-column label="质检结果" prop="qualityResults" align="center" fixed="right"
  138. :show-overflow-tooltip="true">
  139. <template slot-scope="scope">
  140. <el-select @change="selectQualityResultsChange" v-model="scope.row.qualityResults" placeholder="请选择" style="width: 100%;"
  141. :disabled="type == 'detail'" size="mini">
  142. <el-option v-for="item in qualityResultsList" :key="item.value" :label="item.label" :value="item.value">
  143. </el-option>
  144. </el-select>
  145. </template>
  146. </el-table-column>
  147. <el-table-column label="操作" align="center" width="120" fixed="right" v-if="type != 'detail'">
  148. <template slot-scope="scope">
  149. <el-link :type="scope.row.isValid ? 'primary' : 'danger'" :underline="false"
  150. @click="handleDetail(scope.$index, scope.row, 'report')">
  151. 质检
  152. </el-link>
  153. <el-link type='primary' :underline="false" @click="handleDispose(scope.$index, scope.row, 'dispose')">处置
  154. </el-link>
  155. </template>
  156. </el-table-column>
  157. </el-table>
  158. <el-pagination @size-change="handleSampleSizeChange" @current-change="handleSampleCurrentChange"
  159. :current-page="samplePagination.currentPage" :page-sizes="[10, 20, 50, 100]"
  160. :page-size="samplePagination.pageSize" layout="total, sizes, prev, pager, next, jumper"
  161. :total="sampleList.length" />
  162. </el-tab-pane>
  163. <!-- -->
  164. <el-tab-pane label="质检方案" name="3">
  165. <el-table :data="paginatedSchemeList" tooltip-effect="dark" :max-height="300" border row-key="id">
  166. <el-table-column label="序号" type="index" width="50" align="center"></el-table-column>
  167. <el-table-column label="质检方案编码" prop="qualitySchemeTemplateCode" align="center">
  168. </el-table-column>
  169. <el-table-column label="质检方案名称" prop="qualitySchemeTemplateName" align="center"></el-table-column>
  170. <el-table-column label="质检类型" prop="categoryLevelClassName" align="center"></el-table-column>
  171. <el-table-column label="质检项编码" prop="inspectionCode" align="center"></el-table-column>
  172. <el-table-column label="质检项名称" prop="inspectionName" align="center"></el-table-column>
  173. <el-table-column label="工艺参数" prop="defaultValue" align="center">
  174. <!-- <template slot-scope="scope" >
  175. <el-input :disabled="type == 'detail'" v-model="scope.row.defaultValue" placeholder="请输入内容"></el-input>
  176. </template> -->
  177. </el-table-column>
  178. </el-table>
  179. <el-pagination @size-change="handleSchemeSizeChange" @current-change="handleSchemeCurrentChange"
  180. :current-page="schemePagination.currentPage" :page-sizes="[10, 20, 50, 100]"
  181. :page-size="schemePagination.pageSize" layout="total, sizes, prev, pager, next, jumper"
  182. :total="schemeList.length" />
  183. </el-tab-pane>
  184. </el-tabs>
  185. </el-row>
  186. </template>
  187. <script>
  188. import { save, update, getById, exeReportWork, queryQualitySamplContent, queryQualityTempleContent, queryQualityInventory } from '@/api/inspectionWork';
  189. export default {
  190. props: {
  191. type: String,
  192. packingList: Array,
  193. sampleList: Array,
  194. schemeList: Array,
  195. loading: Boolean,
  196. form: Object,
  197. ids: String,
  198. activeName:String
  199. },
  200. data() {
  201. return {
  202. activeName: this.activeName,
  203. samplePagination: { currentPage: 1, pageSize: 10 },
  204. schemePagination: { currentPage: 1, pageSize: 10 },
  205. qualityResultsList: [{
  206. value: 1,
  207. label: '合格'
  208. },
  209. {
  210. value: 2,
  211. label: '不合格'
  212. },
  213. {
  214. value: 3,
  215. label: '让步接收'
  216. },
  217. ],
  218. tableColumns: [
  219. {
  220. label: '样品编码',
  221. prop: 'sampleCode',
  222. width: '200',
  223. align: 'center',
  224. fixed: 'left'
  225. },
  226. {
  227. label: '编码',
  228. prop: 'categoryCode',
  229. align: 'center',
  230. fixed: 'left'
  231. },
  232. {
  233. label: '名称',
  234. prop: 'categoryName',
  235. align: 'center'
  236. },
  237. { label: '批次号', prop: 'batchNo', align: 'center'},
  238. { label: '发货条码', prop: 'barcodes', align: 'center' },
  239. { label: '包装编码', prop: 'packageNo', align: 'center' },
  240. // { label: '包装数量', prop: 'packingQuantity', align: 'center' },
  241. { label: '包装单位', prop: 'packingUnit', align: 'center' },
  242. { label: '计量数量', prop: 'measureQuantity', align: 'center' },
  243. { label: '计量单位', prop: 'measureUnit', align: 'center' },
  244. { label: '供应商名称', prop: 'supplierName', align: 'center', width: '120' },
  245. { label: '供应商代号', prop: 'supplierCode', align: 'center', width: '120' },
  246. { label: '物料代号', prop: 'materielDesignation', align: 'center', slot: 'materielDesignation', width: '120' },
  247. { label: '客户代号', prop: 'clientCode', align: 'center', slot: 'clientCode', width: '120' },
  248. { label: '刻码', prop: 'engrave', align: 'center', slot: 'engrave', width: '120' },
  249. { label: '重量', prop: 'weight', align: 'center', slot: 'weight', width: '120' },
  250. { label: '重量单位', prop: 'weightUnit', align: 'center', width: 100 },
  251. { label: '仓库', prop: 'warehouseName', align: 'center', width: 100 },
  252. { label: '货区', prop: 'areaName', align: 'center' },
  253. { label: '货架', prop: 'goodsShelfName', align: 'center' },
  254. { label: '货位', prop: 'goodsAllocationName', align: 'center' },
  255. { label: '生产日期', prop: 'productionDate', align: 'center' },
  256. { label: '采购日期', prop: 'purchaseDate', align: 'center' },
  257. ],
  258. conditionType: null,
  259. formData: {
  260. number: 1,
  261. sampleUnit: '',
  262. portion: null
  263. },
  264. rules: {
  265. number: [
  266. {
  267. required: true,
  268. message: '请输入',
  269. trigger: 'blur'
  270. },
  271. ],
  272. sampleUnit: [
  273. {
  274. required: true,
  275. message: '请选择样品单位',
  276. trigger: 'change'
  277. }
  278. ],
  279. portion: [
  280. {
  281. required: true,
  282. message: '请输入',
  283. trigger: 'blur'
  284. }
  285. ]
  286. },
  287. }
  288. },
  289. computed: {
  290. tableColumns1() {
  291. let arr = [
  292. // (this.btnType !== 'issued' || this.baseForm.qualityMode === 2)
  293. // ? {
  294. // columnKey: 'selection',
  295. // type: 'selection',
  296. // width: 45,
  297. // align: 'center'
  298. // }
  299. // : null,
  300. {
  301. columnKey: 'selection',
  302. type: 'selection',
  303. width: 45,
  304. align: 'center'
  305. },
  306. {
  307. columnKey: 'index',
  308. label: '序号',
  309. type: 'index',
  310. width: 55,
  311. align: 'center',
  312. fixed: 'left'
  313. },
  314. {
  315. label: '编码',
  316. prop: 'categoryCode',
  317. width: 150,
  318. align: 'center',
  319. showOverflowTooltip: true
  320. },
  321. {
  322. label: '名称',
  323. prop: 'categoryName',
  324. width: '150',
  325. align: 'center',
  326. width: 120,
  327. showOverflowTooltip: true
  328. },
  329. { label: '批次号', prop: 'batchNo', align: 'center', width: 120, },
  330. { label: '发货条码', prop: 'barcodes', align: 'center' },
  331. {
  332. label: '包装编码', prop: 'packageNo', align: 'center',
  333. width: 120,
  334. showOverflowTooltip: true
  335. },
  336. { label: '包装数量', prop: 'packingQuantity', align: 'center' },
  337. { label: '包装单位', prop: 'packingUnit', align: 'center' },
  338. { label: '计量数量', prop: 'measureQuantity', align: 'center' },
  339. { label: '计量单位', prop: 'measureUnit', align: 'center' },
  340. { label: '物料代号', prop: 'materielDesignation', align: 'center' },
  341. { label: '客户代号', prop: 'clientCode', align: 'center' },
  342. { label: '供应商名称', prop: 'supplierName', align: 'center', width: 120, showOverflowTooltip: true },
  343. { label: '供应商代号', prop: 'supplierCode', align: 'center', width: '120' },
  344. { label: '刻码', prop: 'engrave', align: 'center' },
  345. { label: '重量', prop: 'weight', align: 'center' },
  346. { label: '重量单位', prop: 'weightUnit', align: 'center' },
  347. {
  348. label: '仓库', prop: 'warehouseName', align: 'center',
  349. width: 120,
  350. showOverflowTooltip: true
  351. },
  352. { label: '货区', prop: 'areaName', align: 'center' },
  353. { label: '货架', prop: 'goodsShelfName', align: 'center' },
  354. { label: '货位', prop: 'goodsAllocationName', align: 'center' },
  355. {
  356. label: '生产日期', prop: 'productionDate', align: 'center',
  357. width: 120,
  358. showOverflowTooltip: true
  359. },
  360. {
  361. label: '采购日期', prop: 'purchaseDate', align: 'center',
  362. width: 120,
  363. showOverflowTooltip: true
  364. }
  365. ]
  366. return arr
  367. },
  368. // 分页后的样品列表
  369. paginatedSampleList() {
  370. const { currentPage, pageSize } = this.samplePagination;
  371. const start = (currentPage - 1) * pageSize;
  372. const end = start + pageSize;
  373. return this.sampleList?.slice(start, end);
  374. },
  375. // 分页后的质检方案列表
  376. paginatedSchemeList() {
  377. const { currentPage, pageSize } = this.schemePagination;
  378. const start = (currentPage - 1) * pageSize;
  379. const end = start + pageSize;
  380. return this.schemeList?.slice(start, end);
  381. }
  382. },
  383. created() {
  384. this.reload({ qualityWorkerId: this.ids });
  385. },
  386. methods: {
  387. async datasource({ page, limit, where }) {
  388. const res = await queryQualityInventory({ ...where, page, limit });
  389. return res;
  390. },
  391. reload(where) {
  392. this.$nextTick(() => {
  393. if (this.$refs.sourceTable && this.$refs.sourceTable.reload)
  394. this.$refs.sourceTable.reload({ page: 1, where: where });
  395. })
  396. },
  397. tableSelClear() {
  398. console.log('清空勾选')
  399. this.$refs.sourceTable.clearSelection();
  400. },
  401. handleSelectionChange(selection) {
  402. if (this.form.conditionType == 2){
  403. if (this.form.isUnpack == 2){
  404. this.$set(this.form, 'sampleNumber', this.formData.portion);
  405. }else{
  406. this.formData.portion = selection.length;
  407. this.$set(this.form, 'sampleNumber', selection.length);
  408. }
  409. this.formData.sampleUnit = selection[0]?.measureUnit;
  410. this.$set(this.form, 'sampleMeasureUnit', selection[0]?.measureUnit);
  411. }else if (this.form.conditionType == 1){
  412. this.$set(this.form, 'sampleNumber', this.formData.portion);
  413. }
  414. // this.formData.portion = selection.length;
  415. // this.formData.sampleUnit = selection[0]?.measureUnit;
  416. //
  417. // this.$set(this.form, 'sampleNumber', selection.length);
  418. // this.$set(this.form, 'sampleMeasureUnit', selection[0]?.measureUnit);
  419. this.$emit('handleSelectionChange', selection)
  420. },
  421. handleSampleNumber(val) {
  422. console.log('取样方式选择',this.form.isUnpack)
  423. console.log(val, 'val')
  424. this.conditionType = val;
  425. this.form.sampleUnit = ''
  426. this.$emit('getConditionType', val)
  427. //取整样
  428. // let data = this.$refs.sourceTable.getData()
  429. // this.$emit('getSelectedList')
  430. // if (this.selectedList.length == 0) {
  431. // this.$message.warning('请先选择样品!');
  432. // }
  433. // if (val == 1) {
  434. // // this.activeName = '2'
  435. // this.$emit('handleSample1', val, data)
  436. // } else if (val == 2) {
  437. // this.tableSelClear();
  438. // this.$emit('handleSample1', val, data)
  439. // }
  440. },
  441. handleInputNumber(val) {
  442. let packingList = this.$refs.sourceTable.getData()
  443. const maxValue = packingList.length > 1 ? packingList.length : packingList[0].measureQuantity;
  444. if (val > maxValue) {
  445. this.$message.warning('数量不能大于计量数量!');
  446. this.formData.number = maxValue;
  447. return;
  448. }
  449. },
  450. handleInput(val) {
  451. debugger
  452. if (val == 0 || val == '' || val == null) {
  453. this.$refs.sourceTable.clearSelection();
  454. return
  455. }
  456. let packingList = this.$refs.sourceTable.getData();
  457. if (!packingList || packingList.length === 0) {
  458. return;
  459. }
  460. // 计算 packingList 中 measureQuantity 字段的总和
  461. const measureQuantitySum = packingList.reduce((sum, item) => {
  462. const quantity = Number(item.measureQuantity) || 0;
  463. return sum + quantity;
  464. }, 0);
  465. const portion = Number(this.formData.portion);
  466. // 清空当前选中
  467. this.$refs.sourceTable.clearSelection();
  468. debugger
  469. if (this.form.conditionType==2){
  470. // 确保 portion 不超过数据列表长度
  471. const safePortion = Math.min(portion, packingList.length);
  472. if (this.form.isUnpack == 2){
  473. const maxQuantity = Number(packingList[0].measureQuantity);
  474. if (portion > maxQuantity) {
  475. this.$message.warning('取样数量不能大于计量数量!');
  476. this.formData.portion = maxQuantity;
  477. }
  478. }else if (this.form.isUnpack == 1){
  479. if (portion > packingList.length) {
  480. this.$message.warning('取样数量不能大于来源清单数量!');
  481. this.formData.portion = packingList.length;
  482. }
  483. }
  484. packingList.slice(0, safePortion).forEach(row => {
  485. this.$refs.sourceTable.toggleRowSelection(row);
  486. });
  487. }else if (this.form.conditionType==1){
  488. // 确保 portion 不超过数据列表长度
  489. const safePortion = Math.min(portion, measureQuantitySum);
  490. if (portion > measureQuantitySum) {
  491. this.$message.warning('取样数量不能大于计量数量!');
  492. this.formData.portion = measureQuantitySum;
  493. }
  494. // 选中前 safePortion 行
  495. packingList.slice(0, safePortion).forEach(row => {
  496. this.$refs.sourceTable.toggleRowSelection(row, true);
  497. });
  498. }
  499. // if (packingList.length > 1) {
  500. // if (portion > packingList.length) {
  501. // this.$message.warning('取样数量不能大于来源清单数量!');
  502. // this.formData.portion = packingList.length;
  503. // return;
  504. // }
  505. // packingList.slice(0, this.formData.portion).forEach(row => {
  506. // this.$refs.table12.toggleRowSelection(row);
  507. // });
  508. // } else {
  509. // const maxQuantity = Number(packingList[0].measureQuantity);
  510. // if (portion > maxQuantity) {
  511. // this.$message.warning('取样数量不能大于计量数量!');
  512. // this.formData.portion = maxQuantity;
  513. // return;
  514. // }
  515. // }
  516. },
  517. changeSamUnit(val) {
  518. console.log(val, 'dddd')
  519. this.$emit('changeSamUnit', val)
  520. },
  521. handleSampleSubmit() {
  522. this.$refs.ruleForm.validate((valid) => {
  523. if (valid) {
  524. //取小样 赋值右上角单位
  525. this.changeSamUnit(this.formData.sampleUnit)
  526. let params = {
  527. conditionType: this.conditionType,
  528. measureQ: this.formData.number,
  529. sampleUnit: this.formData.sampleUnit,
  530. portion: this.formData.portion
  531. }
  532. this.$emit('handleSampleSubmit', params)
  533. }
  534. })
  535. },
  536. handleClick(tab) {
  537. console.log(tab, 'tab')
  538. this.activeName = tab.name
  539. },
  540. tabsChange(val) {
  541. this.activeName = val
  542. },
  543. tabsConditionType(val) {
  544. this.conditionType = val
  545. },
  546. checkSelectable(row, index) {
  547. // 只有当质检方式为抽检(qualityMode=2)时 类型不是生产检验 才可选
  548. return this.form.qualityType != 2 && this.form.qualityMode === 2;
  549. },
  550. handleDetail(index, row, type) {
  551. this.$emit('handleDetail', index, row, type)
  552. },
  553. inputWeight(row, index) {
  554. this.$emit('inputWeight', row, index)
  555. },
  556. handleDispose(index, row, type) {
  557. this.$emit('handleDispose', index, row, type)
  558. },
  559. handleSampleSizeChange(val) {
  560. this.samplePagination.pageSize = val;
  561. this.samplePagination.currentPage = 1;
  562. },
  563. handleSampleCurrentChange(val) {
  564. this.samplePagination.currentPage = val;
  565. },
  566. handleSchemeSizeChange(val) {
  567. this.schemePagination.pageSize = val;
  568. this.schemePagination.currentPage = 1;
  569. },
  570. handleSchemeCurrentChange(val) {
  571. this.schemePagination.currentPage = val;
  572. },
  573. selectQualityResultsChange() {
  574. this.$emit('countQualityResults')
  575. }
  576. }
  577. }
  578. </script>