liuwb пре 2 месеци
родитељ
комит
6de79154ac

+ 2 - 2
yudao-module-qms/src/main/java/cn/iocoder/yudao/module/qms/controller/admin/iqc/vo/IqcInspectBillMainRespVO.java

@@ -37,7 +37,7 @@ public class IqcInspectBillMainRespVO {
     private BigDecimal bhgsl;
 
     @Schema(description = "合格数量")
-    private BigDecimal jyhgsl;
+    private BigDecimal dhsl;
 
     @Schema(description = "处理方式")
     private String clfs;
@@ -49,7 +49,7 @@ public class IqcInspectBillMainRespVO {
     private BigDecimal phsl;
 
     @Schema(description = "主表判断")
-    private String jgpd;
+    private String pd;
 
     @Schema(description = "附件")
     private String fj;

+ 2 - 2
yudao-module-qms/src/main/java/cn/iocoder/yudao/module/qms/controller/admin/iqc/vo/IqcInspectBillSaveReqVO.java

@@ -41,7 +41,7 @@ public class IqcInspectBillSaveReqVO {
     private BigDecimal bhgsl;
 
     @Schema(description = "合格数量")
-    private BigDecimal jyhgsl;
+    private BigDecimal dhsl;
 
     @Schema(description = "处理方式")
     private String clfs;
@@ -53,7 +53,7 @@ public class IqcInspectBillSaveReqVO {
     private BigDecimal phsl;
 
     @Schema(description = "主表判断")
-    private String jgpd;
+    private String pd;
 
     @Schema(description = "附件")
     private String fj;

+ 4 - 4
yudao-module-qms/src/main/java/cn/iocoder/yudao/module/qms/dal/mysql/iqc/IqcTaskMapper.java

@@ -65,11 +65,11 @@ public interface IqcTaskMapper {
                                @Param("jyr") String jyr,
                                @Param("jysl") java.math.BigDecimal jysl,
                                @Param("bhgsl") java.math.BigDecimal bhgsl,
-                               @Param("jyhgsl") java.math.BigDecimal jyhgsl,
+                               @Param("dhsl") java.math.BigDecimal dhsl,
                                @Param("clfs") String clfs,
                                @Param("lysl") java.math.BigDecimal lysl,
                                @Param("phsl") java.math.BigDecimal phsl,
-                               @Param("jgpd") String jgpd,
+                               @Param("pd") String pd,
                                @Param("fj") String fj,
                                @Param("creatorId") Long creatorId);
 
@@ -86,11 +86,11 @@ public interface IqcTaskMapper {
                                @Param("jyr") String jyr,
                                @Param("jysl") java.math.BigDecimal jysl,
                                @Param("bhgsl") java.math.BigDecimal bhgsl,
-                               @Param("jyhgsl") java.math.BigDecimal jyhgsl,
+                               @Param("dhsl") java.math.BigDecimal dhsl,
                                @Param("clfs") String clfs,
                                @Param("lysl") java.math.BigDecimal lysl,
                                @Param("phsl") java.math.BigDecimal phsl,
-                               @Param("jgpd") String jgpd,
+                               @Param("pd") String pd,
                                @Param("fj") String fj,
                                @Param("modifierId") Long modifierId);
 

+ 4 - 4
yudao-module-qms/src/main/java/cn/iocoder/yudao/module/qms/service/iqc/IqcTaskServiceImpl.java

@@ -86,15 +86,15 @@ public class IqcTaskServiceImpl implements IqcTaskService {
             billId = IdUtil.getSnowflakeNextId();
             iqcTaskMapper.insertInspectBillMain(billId, reqVO.getTaskId(),
                     reqVO.getBdbh(), reqVO.getBb(), reqVO.getSxrq(), reqVO.getJgbh(), reqVO.getJgbb(),
-                    reqVO.getJyr(), reqVO.getJysl(), reqVO.getBhgsl(), reqVO.getJyhgsl(),
-                    reqVO.getClfs(), reqVO.getLysl(), reqVO.getPhsl(), reqVO.getJgpd(),
+                    reqVO.getJyr(), reqVO.getJysl(), reqVO.getBhgsl(), reqVO.getDhsl(),
+                    reqVO.getClfs(), reqVO.getLysl(), reqVO.getPhsl(), reqVO.getPd(),
                     reqVO.getFj(), userId);
         } else {
             billId = main.getBillId();
             iqcTaskMapper.updateInspectBillMain(billId,
                     reqVO.getBdbh(), reqVO.getBb(), reqVO.getSxrq(), reqVO.getJgbh(), reqVO.getJgbb(),
-                    reqVO.getJyr(), reqVO.getJysl(), reqVO.getBhgsl(), reqVO.getJyhgsl(),
-                    reqVO.getClfs(), reqVO.getLysl(), reqVO.getPhsl(), reqVO.getJgpd(),
+                    reqVO.getJyr(), reqVO.getJysl(), reqVO.getBhgsl(), reqVO.getDhsl(),
+                    reqVO.getClfs(), reqVO.getLysl(), reqVO.getPhsl(), reqVO.getPd(),
                     reqVO.getFj(), userId);
         }
 

+ 8 - 8
yudao-module-qms/src/main/resources/mapper/iqc/IqcTaskMapper.xml

@@ -126,11 +126,11 @@
             b.jyr AS jyr,
             b.jysl AS jysl,
             b.bhgsl AS bhgsl,
-            b.jyhgsl AS jyhgsl,
+            b.dhsl AS dhsl,
             b.clfs AS clfs,
             b.lysl AS lysl,
             b.phsl AS phsl,
-            b.jgpd AS jgpd,
+            b.pd AS pd,
             b.fj AS fj
         FROM qms_qcp_inspbill b
         WHERE b.hid = #{taskId}
@@ -150,11 +150,11 @@
             jyr,
             jysl,
             bhgsl,
-            jyhgsl,
+            dhsl,
             clfs,
             lysl,
             phsl,
-            jgpd,
+            pd,
             fj,
             FCREATORID,
             FCREATETIME
@@ -169,11 +169,11 @@
             #{jyr},
             #{jysl},
             #{bhgsl},
-            #{jyhgsl},
+            #{dhsl},
             #{clfs},
             #{lysl},
             #{phsl},
-            #{jgpd},
+            #{pd},
             #{fj},
             #{creatorId},
             NOW()
@@ -191,11 +191,11 @@
             jyr = #{jyr},
             jysl = #{jysl},
             bhgsl = #{bhgsl},
-            jyhgsl = #{jyhgsl},
+            dhsl = #{dhsl},
             clfs = #{clfs},
             lysl = #{lysl},
             phsl = #{phsl},
-            jgpd = #{jgpd},
+            pd = #{pd},
             fj = #{fj},
             FMODIFIERID = #{modifierId},
             FMODIFYTIME = NOW()

+ 4 - 4
yudao-ui/yudao-ui-admin-vue3/src/api/qms/iqc/task/index.ts

@@ -80,11 +80,11 @@ export interface IqcInspectBillMainRespVO {
   jyr?: string
   jysl?: number | string
   bhgsl?: number | string
-  jyhgsl?: number | string
+  dhsl?: number | string
   clfs?: string
   lysl?: number | string
   phsl?: number | string
-  jgpd?: string
+  pd?: string
   fj?: string
 }
 
@@ -98,11 +98,11 @@ export interface IqcInspectBillSaveReqVO {
   jyr?: string
   jysl?: number | string
   bhgsl?: number | string
-  jyhgsl?: number | string
+  dhsl?: number | string
   clfs?: string
   lysl?: number | string
   phsl?: number | string
-  jgpd?: string
+  pd?: string
   fj?: string
   details?: Array<{
     id?: number | string

+ 69 - 18
yudao-ui/yudao-ui-admin-vue3/src/store/modules/qms/inspectBill.ts

@@ -16,11 +16,11 @@ type InspectBillMain = {
   jyr: string
   jysl: number | string
   bhgsl: number | string
-  jyhgsl: number | string
+  dhsl: number | string
   clfs: string
   lysl: number | string
   phsl: number | string
-  jgpd: string
+  pd: string
   fj: string
   billId?: number | string
 }
@@ -42,15 +42,15 @@ const createEmptyMain = (): InspectBillMain => ({
   jyr: '',
   jysl: 0,
   bhgsl: 0,
-  jyhgsl: '',
+  dhsl: '',
   clfs: '',
   lysl: '',
   phsl: '',
-  jgpd: '',
+  pd: '',
   fj: ''
 })
 
-const createEmptyRow = (): IqcInspectBillDetailItemRespVO => ({
+const createEmptyRow = (partial: Partial<IqcInspectBillDetailItemRespVO> = {}): IqcInspectBillDetailItemRespVO => ({
   sampleCount: '',
   jyxm: '',
   bz: '',
@@ -76,9 +76,60 @@ const createEmptyRow = (): IqcInspectBillDetailItemRespVO => ({
   j17: '',
   j18: '',
   j19: '',
-  j20: ''
+  j20: '',
+  ...partial
 })
 
+const DEFAULT_DETAIL_ITEMS: Array<{ jyxm: string; bz: string }> = [
+  { jyxm: '尺寸A', bz: '1.1±0.05' },
+  { jyxm: '尺寸B', bz: '77.55 +0.3/-0.1' },
+  { jyxm: '尺寸C', bz: '1.9 +0.05/0' },
+  { jyxm: '尺寸D', bz: '0.39±0.04' },
+  { jyxm: '尺寸E', bz: '3.1+0.15/-0.1' },
+  { jyxm: '尺寸F', bz: '22.24+0.09/-0.05' },
+  { jyxm: '尺寸G', bz: '56±0.05' },
+  { jyxm: '尺寸J', bz: '0.75±0.05' },
+  { jyxm: '尺寸K', bz: '3.8±0.05' },
+  { jyxm: '尺寸L', bz: '11.6±0.15' },
+  { jyxm: '尺寸M', bz: '1.175±0.05' },
+  { jyxm: '尺寸N', bz: '2.35±0.05' },
+  { jyxm: '硬度', bz: '抵钉座:HV130-180;抵钉座上盖:HRC41-45' },
+  { jyxm: '材质', bz: '供方提供材质证明,化学成分符合以下要求。;抵钉座上盖30Cr13:;0.26≤C≤0.35;Si≤1;Mn≤1;P≤0.04;S≤0.03;Ni≤0.6;12≤Cr≤14。;抵钉座06Cr17Ni12Mo2:;C≤0.08;Si≤1;Mn≤2;P≤0.045;S≤0.03;10≤Ni≤14;16≤Cr≤18;2≤Mo≤3' },
+  { jyxm: '外观', bz: '零件外观无破损、裂纹、氧化、严重碰伤,夹杂物及毛刺,重要型面无碰伤,无多余焊料、漏焊;打标清晰' },
+  { jyxm: '镀层', bz: '厚度:0.003-0.005mm     材质:镍特氟龙3400A+plus' },
+  { jyxm: '粗糙度', bz: '表面粗糙度Ra≤0.8μm' },
+  { jyxm: '耐腐蚀性', bz: '符合YY/T 0149沸水实验法,试验后零件表面不低于b级规定。' }
+]
+
+const createDefaultRows = (): IqcInspectBillDetailItemRespVO[] =>
+  DEFAULT_DETAIL_ITEMS.map((item) => createEmptyRow({ jyxm: item.jyxm, bz: item.bz }))
+
+const emptyToNull = <T>(value: T) => {
+  if (value === '' || value === undefined) return null
+  return value
+}
+
+const mapClfs = (value: any) => {
+  if (value === '' || value === undefined || value === null) return null
+  if (value === 0 || value === 1 || value === 2) return value
+  if (value === '0' || value === '1' || value === '2') return Number(value)
+  const text = String(value)
+  if (text === '退货') return 0
+  if (text === '挑选') return 1
+  if (text === '让步接收') return 2
+  return null
+}
+
+const mapPd = (value: any) => {
+  if (value === '' || value === undefined || value === null) return null
+  if (value === 0 || value === 1) return value
+  if (value === '0' || value === '1') return Number(value)
+  const text = String(value)
+  if (text === '合格') return 1
+  if (text === '不合格') return 0
+  return null
+}
+
 export const useIqcInspectBillStore = defineStore('iqcInspectBill', {
   state: () => ({
     drafts: {} as Record<string, { main: InspectBillMain; details: IqcInspectBillDetailItemRespVO[] }>
@@ -88,7 +139,7 @@ export const useIqcInspectBillStore = defineStore('iqcInspectBill', {
       if (!this.drafts[taskId]) {
         this.drafts[taskId] = {
           main: createEmptyMain(),
-          details: [createEmptyRow()]
+          details: createDefaultRows()
         }
       }
       return this.drafts[taskId]
@@ -99,7 +150,7 @@ export const useIqcInspectBillStore = defineStore('iqcInspectBill', {
     },
     setDetails(taskId: string, details: IqcInspectBillDetailItemRespVO[]) {
       const draft = this.ensureDraft(taskId)
-      draft.details = details && details.length ? details : [createEmptyRow()]
+      draft.details = details && details.length ? details : createDefaultRows()
     },
     addDetailRow(taskId: string) {
       const draft = this.ensureDraft(taskId)
@@ -129,11 +180,11 @@ export const useIqcInspectBillStore = defineStore('iqcInspectBill', {
         jyr: main?.jyr || '',
         jysl: main?.jysl ?? 0,
         bhgsl: main?.bhgsl ?? 0,
-        jyhgsl: main?.jyhgsl ?? '',
+        dhsl: main?.dhsl ?? '',
         clfs: main?.clfs || '',
         lysl: main?.lysl ?? '',
         phsl: main?.phsl ?? '',
-        jgpd: main?.jgpd || '',
+        pd: main?.pd || '',
         fj: main?.fj || '',
         billId: main?.billId
       }
@@ -167,7 +218,7 @@ export const useIqcInspectBillStore = defineStore('iqcInspectBill', {
           j19: item.j19 || '',
           j20: item.j20 || ''
         }))
-        : [createEmptyRow()]
+        : createDefaultRows()
       return draft
     },
     async save(taskId: string) {
@@ -180,13 +231,13 @@ export const useIqcInspectBillStore = defineStore('iqcInspectBill', {
         jgbh: draft.main.jgbh,
         jgbb: draft.main.jgbb,
         jyr: draft.main.jyr,
-        jysl: draft.main.jysl,
-        bhgsl: draft.main.bhgsl,
-        jyhgsl: draft.main.jyhgsl,
-        clfs: draft.main.clfs,
-        lysl: draft.main.lysl,
-        phsl: draft.main.phsl,
-        jgpd: draft.main.jgpd,
+        jysl: emptyToNull(draft.main.jysl),
+        bhgsl: emptyToNull(draft.main.bhgsl),
+        dhsl: emptyToNull(draft.main.dhsl),
+        clfs: mapClfs(draft.main.clfs),
+        lysl: emptyToNull(draft.main.lysl),
+        phsl: emptyToNull(draft.main.phsl),
+        pd: mapPd(draft.main.pd),
         fj: draft.main.fj,
         details: draft.details.map((item) => ({
           id: item.id,

+ 28 - 16
yudao-ui/yudao-ui-admin-vue3/src/views/qms/iqc/task/InspectBillEdit.vue

@@ -47,9 +47,9 @@
           <el-col :span="8">
             <el-form-item label="合格数量">
               <el-input
-                :model-value="mainForm.jyhgsl"
+                :model-value="mainForm.dhsl"
                 placeholder="请输入合格数量"
-                @update:model-value="(val) => (mainForm.jyhgsl = sanitizeInt(val))"
+                @update:model-value="(val) => (mainForm.dhsl = sanitizeInt(val))"
               />
             </el-form-item>
           </el-col>
@@ -65,9 +65,9 @@
           <el-col :span="8">
             <el-form-item label="处理方式">
               <el-select v-model="mainForm.clfs" placeholder="请选择处理方式" style="width: 100%">
-                <el-option label="退货" value="退货" />
-                <el-option label="挑选" value="挑选" />
-                <el-option label="让步接收" value="让步接收" />
+                <el-option label="退货" :value="0" />
+                <el-option label="挑选" :value="1" />
+                <el-option label="让步接收" :value="2" />
               </el-select>
             </el-form-item>
           </el-col>
@@ -96,9 +96,9 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="判断">
-              <el-select v-model="mainForm.jgpd" placeholder="请选择判断" style="width: 100%">
-                <el-option label="合格" value="合格" />
-                <el-option label="不合格" value="不合格" />
+              <el-select v-model="mainForm.pd" placeholder="请选择判断" style="width: 100%">
+                <el-option label="合格" :value="1" />
+                <el-option label="不合格" :value="0" />
               </el-select>
             </el-form-item>
           </el-col>
@@ -123,12 +123,24 @@
         </el-table-column>
         <el-table-column label="检验项目" min-width="200">
           <template #default="{ row }">
-            <el-input v-model="row.jyxm" placeholder="请输入检验项目" disabled />
+            <el-input
+              v-model="row.jyxm"
+              type="textarea"
+              :autosize="{ minRows: 1, maxRows: 3 }"
+              placeholder="请输入检验项目"
+              disabled
+            />
           </template>
         </el-table-column>
         <el-table-column label="检验标准" min-width="200">
           <template #default="{ row }">
-            <el-input v-model="row.bz" placeholder="请输入检验标准" disabled />
+            <el-input
+              v-model="row.bz"
+              type="textarea"
+              :autosize="{ minRows: 1, maxRows: 3 }"
+              placeholder="请输入检验标准"
+              disabled
+            />
           </template>
         </el-table-column>
         <el-table-column label="上限" width="140">
@@ -418,13 +430,13 @@ const toNumber = (value: any) => {
   return Number.isNaN(num) ? undefined : num
 }
 
-const syncComplement = (changedKey: 'jyhgsl' | 'bhgsl') => {
+const syncComplement = (changedKey: 'dhsl' | 'bhgsl') => {
   if (isSyncing.value) return
   const total = toNumber(mainForm.value.jysl)
   if (total === undefined) return
   const current = toNumber(mainForm.value[changedKey])
   if (current === undefined) return
-  const otherKey = changedKey === 'jyhgsl' ? 'bhgsl' : 'jyhgsl'
+  const otherKey = changedKey === 'dhsl' ? 'bhgsl' : 'dhsl'
   const next = Math.max(0, total - current)
   isSyncing.value = true
   mainForm.value[otherKey] = Number.isNaN(next) ? '' : String(next)
@@ -436,7 +448,7 @@ const fetchData = async () => {
   loading.value = true
   try {
     await inspectBillStore.load(taskId.value)
-    if (!mainForm.value.jyr) {
+    if (!String(mainForm.value.jyr || '').trim()) {
       mainForm.value.jyr = userStore.getUser.nickname || ''
     }
     const result = await getIqcTaskDetail(taskId.value)
@@ -445,8 +457,8 @@ const fetchData = async () => {
       && detail?.quantity !== undefined && detail?.quantity !== null) {
       mainForm.value.jysl = detail.quantity
     }
-    if (mainForm.value.jyhgsl) {
-      syncComplement('jyhgsl')
+    if (mainForm.value.dhsl) {
+      syncComplement('dhsl')
     } else if (mainForm.value.bhgsl) {
       syncComplement('bhgsl')
     }
@@ -526,7 +538,7 @@ const handleBack = async () => {
 
 watch(taskId, () => { fetchData() }, { immediate: true })
 
-watch(() => mainForm.value.jyhgsl, () => { syncComplement('jyhgsl') })
+watch(() => mainForm.value.dhsl, () => { syncComplement('dhsl') })
 watch(() => mainForm.value.bhgsl, () => { syncComplement('bhgsl') })
 watch(detailRows, () => { refreshMaxSampleCount() }, { deep: true })
 </script>