浏览代码

Merge remote-tracking branch 'origin/yjb_ScrmStores' into yjb_ScrmStores

yjwang 5 天之前
父节点
当前提交
7c3ab1bc1c
共有 2 个文件被更改,包括 43 次插入82 次删除
  1. 38 16
      src/views/hisStore/storeProduct/index.vue
  2. 5 66
      src/views/hisStore/storeProductAudit/index.vue

+ 38 - 16
src/views/hisStore/storeProduct/index.vue

@@ -551,7 +551,7 @@
         </el-row>
         </el-row>
         <el-row :gutter="10">
         <el-row :gutter="10">
           <el-col :span="12">
           <el-col :span="12">
-            <el-form-item label="是否药品" prop="isDrug">
+            <el-form-item label="是否药品" prop="isDrug" v-if="!isMedicalDeviceCategory">
               <el-radio-group v-model="form.isDrug">
               <el-radio-group v-model="form.isDrug">
                 <el-radio
                 <el-radio
                   v-for="item in isDrugOptions"
                   v-for="item in isDrugOptions"
@@ -564,18 +564,18 @@
           </el-col>
           </el-col>
         </el-row>
         </el-row>
         <div v-if="form.isDrug === '1' ">
         <div v-if="form.isDrug === '1' ">
-          <el-form-item label="药品展示图" prop="drugImage">
+          <el-form-item label="头图展示" prop="drugImage">
             <Material v-model="drugImageArr" type="image" :num="1" :width="150" :height="150"/>
             <Material v-model="drugImageArr" type="image" :num="1" :width="150" :height="150"/>
           </el-form-item>
           </el-form-item>
           <div v-if="medicalMallConfig.isMedicalMall">
           <div v-if="medicalMallConfig.isMedicalMall">
             <el-row>
             <el-row>
               <el-col :span="12">
               <el-col :span="12">
-                <el-form-item label="药品注册证书编号" prop="drugRegCertNo">
-                  <el-input v-model="form.drugRegCertNo" placeholder="请输入药品注册证书编号"/>
+                <el-form-item :label="isMedicalDeviceCategory ? '注册证号/备案凭证号' : '批准文号'" prop="drugRegCertNo">
+                  <el-input v-model="form.drugRegCertNo" :placeholder="isMedicalDeviceCategory ?'请输入注册证号/备案凭证号' : '请输入批准文号'"/>
                 </el-form-item>
                 </el-form-item>
               </el-col>
               </el-col>
               <el-col :span="12">
               <el-col :span="12">
-                <el-form-item label="通用名称" prop="commonName">
+                <el-form-item label="通用名称" prop="commonName" v-if="!isMedicalDeviceCategory">
                   <el-input v-model="form.commonName" placeholder="请输入通用名称"/>
                   <el-input v-model="form.commonName" placeholder="请输入通用名称"/>
                 </el-form-item>
                 </el-form-item>
               </el-col>
               </el-col>
@@ -583,7 +583,7 @@
 
 
             <el-row>
             <el-row>
               <el-col :span="12">
               <el-col :span="12">
-                <el-form-item label="剂型" prop="dosageForm">
+                <el-form-item label="剂型" prop="dosageForm" v-if="!isMedicalDeviceCategory">
                   <el-input v-model="form.dosageForm" placeholder="请输入剂型"/>
                   <el-input v-model="form.dosageForm" placeholder="请输入剂型"/>
                 </el-form-item>
                 </el-form-item>
               </el-col>
               </el-col>
@@ -632,13 +632,14 @@
                 </el-form-item>
                 </el-form-item>
               </el-col>
               </el-col>
             </el-row>
             </el-row>
+
             <el-collapse v-model="activeValue" accordion>
             <el-collapse v-model="activeValue" accordion>
               <el-collapse-item title="" name="1">
               <el-collapse-item title="" name="1">
-                <el-form-item label="功能主治" prop="indications">
+                <el-form-item label="功能主治" prop="indications" v-if="!isMedicalDeviceCategory">
                   <el-input v-model="form.indications" type="textarea" placeholder="请输入功能主治"/>
                   <el-input v-model="form.indications" type="textarea" placeholder="请输入功能主治"/>
                 </el-form-item>
                 </el-form-item>
 
 
-                <el-form-item label="成分" prop="ingredient" v-if="!displayDemo">
+                <el-form-item label="成分" prop="ingredient" v-if="!isMedicalDeviceCategory">
                   <el-input
                   <el-input
                     v-model="form.ingredient"
                     v-model="form.ingredient"
                     type="textarea"
                     type="textarea"
@@ -649,19 +650,19 @@
                   <div v-if="ingredientError" class="el-form-item__error">{{ ingredientError }}</div>
                   <div v-if="ingredientError" class="el-form-item__error">{{ ingredientError }}</div>
                 </el-form-item>
                 </el-form-item>
 
 
-                <el-form-item label="用法用量" prop="dosage">
+                <el-form-item label="用法用量" prop="dosage" v-if="!isMedicalDeviceCategory">
                   <el-input v-model="form.dosage" type="textarea" placeholder="请输入用法用量"/>
                   <el-input v-model="form.dosage" type="textarea" placeholder="请输入用法用量"/>
                 </el-form-item>
                 </el-form-item>
 
 
-                <el-form-item label="不良反应" prop="adverseReactions">
+                <el-form-item label="不良反应" prop="adverseReactions" v-if="!isMedicalDeviceCategory">
                   <el-input v-model="form.adverseReactions" type="textarea" placeholder="请输入不良反应"/>
                   <el-input v-model="form.adverseReactions" type="textarea" placeholder="请输入不良反应"/>
                 </el-form-item>
                 </el-form-item>
 
 
-                <el-form-item label="禁忌" prop="contraindications">
+                <el-form-item label="禁忌" prop="contraindications" v-if="!isMedicalDeviceCategory">
                   <el-input v-model="form.contraindications" type="textarea" placeholder="请输入禁忌"/>
                   <el-input v-model="form.contraindications" type="textarea" placeholder="请输入禁忌"/>
                 </el-form-item>
                 </el-form-item>
 
 
-                <el-form-item label="注意事项" prop="precautions">
+                <el-form-item label="注意事项" prop="precautions" v-if="!isMedicalDeviceCategory">
                   <el-input v-model="form.precautions" type="textarea" placeholder="请输入注意事项"/>
                   <el-input v-model="form.precautions" type="textarea" placeholder="请输入注意事项"/>
                 </el-form-item>
                 </el-form-item>
               </el-collapse-item>
               </el-collapse-item>
@@ -1208,7 +1209,6 @@ export default {
     Treeselect,
     Treeselect,
     Editor,
     Editor,
     Material,
     Material,
-    singleImg,
     VerifyCode,
     VerifyCode,
     singleImg
     singleImg
   },
   },
@@ -1268,6 +1268,11 @@ export default {
              this.form.cateId &&
              this.form.cateId &&
              this.cateIdToNameMap[this.form.cateId] &&
              this.cateIdToNameMap[this.form.cateId] &&
              !this.cateIdToNameMap[this.form.cateId].includes('III类器械');
              !this.cateIdToNameMap[this.form.cateId].includes('III类器械');
+    },
+    // 判断当前分类是否为医疗器械分类
+    isMedicalDeviceCategory() {
+      const cateName = this.cateIdToNameMap[this.form.cateId];
+      return cateName !== undefined && cateName.includes('器械');
     }
     }
   },
   },
   watch: {
   watch: {
@@ -1328,10 +1333,13 @@ export default {
       handler(newVal, oldVal) {
       handler(newVal, oldVal) {
         // 分类变化时动态修改验证规则
         // 分类变化时动态修改验证规则
         const cateName = this.cateIdToNameMap[newVal];
         const cateName = this.cateIdToNameMap[newVal];
-
         // 判断是否包含"器械"
         // 判断是否包含"器械"
         if(cateName !== undefined && cateName.includes('器械')){
         if(cateName !== undefined && cateName.includes('器械')){
           this.displayDemo = true;
           this.displayDemo = true;
+          // 当分类包含"器械"时,默认设置为药品
+          if (cateName.includes('器械')) {
+            this.form.isDrug = "1";
+          }
         } else {
         } else {
           this.displayDemo = false;
           this.displayDemo = false;
         }
         }
@@ -1408,6 +1416,20 @@ export default {
         if (newVal && this.form.storeId && this.isFormInitialized) {
         if (newVal && this.form.storeId && this.isFormInitialized) {
           this.debounceCheckStoreLicense();
           this.debounceCheckStoreLicense();
         }
         }
+        // 动态调整批号的验证规则
+        this.$nextTick(() => {
+          if (this.isMedicalDeviceCategory) {
+            // 是器械时,批号为必填
+            if (!this.rules.batchNumber?.some(rule => rule.required)) {
+              this.rules.batchNumber = [{ required: true, message: "批号不能为空", trigger: "blur" }, ...(this.rules.batchNumber || [])];
+            }
+          } else {
+            // 非器械时,移除批号必填规则
+            if (this.rules.batchNumber) {
+              this.rules.batchNumber = this.rules.batchNumber.filter(rule => !rule.required);
+            }
+          }
+        });
       },
       },
       immediate: true
       immediate: true
     },
     },
@@ -1493,7 +1515,7 @@ export default {
         {dictValue: "1", dictLabel: "是"}
         {dictValue: "1", dictLabel: "是"}
       ],
       ],
 
 
-      // 药品展示图
+      // 头图展示
       drugImageArr: [],
       drugImageArr: [],
 
 
       //首营资质上传图
       //首营资质上传图
@@ -2270,7 +2292,7 @@ export default {
         qualificationExpire: null,
         qualificationExpire: null,
         // companyIds:[],
         // companyIds:[],
         isDrug: "1", // 是否药品
         isDrug: "1", // 是否药品
-        drugImage: null, // 药品展示图
+        drugImage: null, // 头图展示
         drugRegCertNo: null, // 药品注册证书编号
         drugRegCertNo: null, // 药品注册证书编号
         commonName: null, // 通用名称
         commonName: null, // 通用名称
         dosageForm: null, // 剂型
         dosageForm: null, // 剂型

+ 5 - 66
src/views/hisStore/storeProductAudit/index.vue

@@ -216,7 +216,7 @@
           </el-col>
           </el-col>
         </el-row>
         </el-row>
         <div v-if="form.isDrug === '1' ">
         <div v-if="form.isDrug === '1' ">
-          <el-form-item label="药品展示图" prop="drugImage">
+          <el-form-item label="头图展示" prop="drugImage">
             <Material v-model="drugImageArr" type="image" :num="1" :width="150" :height="150"/>
             <Material v-model="drugImageArr" type="image" :num="1" :width="150" :height="150"/>
           </el-form-item>
           </el-form-item>
           <div v-if="medicalMallConfig.isMedicalMall">
           <div v-if="medicalMallConfig.isMedicalMall">
@@ -322,22 +322,7 @@
         <el-form-item label="商品图片" prop="image">
         <el-form-item label="商品图片" prop="image">
           <Material v-model="imageArr" type="image" :num="1" :width="150" :height="150"/>
           <Material v-model="imageArr" type="image" :num="1" :width="150" :height="150"/>
         </el-form-item>
         </el-form-item>
-        <!--        <el-form-item label="商品视频" prop="video">
-                  <div>
-                    <el-upload
-                      ref="upload"
-                      class="upload-demo"
-                      :action="uploadUrl"
-                      :on-success="handleSuccess"
-                      :before-upload="beforeUpload"
-                      :limit="1"
-                      :accept="videoAccept"
-                    >
-                      <el-button size="small" type="primary">点击上传视频</el-button>
-                    </el-upload>
-                    <video v-if="form.video" :src="form.video" controls style="max-width: 300px; max-height: 300px; margin-top: 10px"></video>
-                  </div>
-                </el-form-item>-->
+
         <el-form-item label="轮播图" prop="sliderImage">
         <el-form-item label="轮播图" prop="sliderImage">
           <Material v-model="photoArr" type="image" :num="10" :width="150" :height="150"/>
           <Material v-model="photoArr" type="image" :num="10" :width="150" :height="150"/>
         </el-form-item>
         </el-form-item>
@@ -617,16 +602,7 @@
             />
             />
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
-        <!--        <el-form-item label="所属公司">-->
-        <!--          <el-select style="width: 240px" v-model="form.companyIds" multiple placeholder="请选择企业" clearable size="small" >-->
-        <!--            <el-option-->
-        <!--              v-for="item in companyOptions"-->
-        <!--              :key="item.companyId"-->
-        <!--              :label="item.companyName"-->
-        <!--              :value="item.companyId"-->
-        <!--            />-->
-        <!--          </el-select>-->
-        <!--        </el-form-item>-->
+
         <el-form-item label="所属店铺" prop="storeId" v-if="medicalMallConfig.isStores">
         <el-form-item label="所属店铺" prop="storeId" v-if="medicalMallConfig.isStores">
           <el-select style="width: 240px" v-model="form.storeId" placeholder="请选择店铺" clearable size="small">
           <el-select style="width: 240px" v-model="form.storeId" placeholder="请选择店铺" clearable size="small">
             <el-option
             <el-option
@@ -723,43 +699,6 @@
           </el-date-picker>
           </el-date-picker>
         </el-form-item>
         </el-form-item>
 
 
-        <!--        <el-form-item v-if="form.isShow === '1' && displayDemo" label="Ⅰ类Ⅱ类备案凭证" prop="voucher">-->
-        <!--          <Material v-model="voucherArr" type="image" :num="1" :width="150" :height="150"/>-->
-        <!--        </el-form-item>-->
-        <!--        <el-form-item v-if="form.isShow === '1' && voucherArr.length > 0 && displayDemo" prop="voucherExpire">-->
-        <!--          <el-date-picker-->
-        <!--            v-model="form.voucherExpire"-->
-        <!--            type="daterange"-->
-        <!--            value-format="yyyy-MM-dd"-->
-        <!--            range-separator="至"-->
-        <!--            start-placeholder="开始日期"-->
-        <!--            end-placeholder="结束日期">-->
-        <!--          </el-date-picker>-->
-        <!--        </el-form-item>-->
-
-        <el-form-item v-if="form.isShow === '1'" label="GMP/GSP认证证书" prop="gmpAuth">
-          <Material v-model="gmpAuthArr" type="image" :num="1" :width="150" :height="150"/>
-        </el-form-item>
-
-        <el-form-item v-if="form.isShow === '1' && businessArr.length > 0" label="GMP/GSP认证证书是否长期有效" prop="isGmpAuthPermanent">
-          <el-switch
-            @change="switchChange()"
-            v-model="gmpAuthValue"
-            active-color="#13ce66"
-            inactive-color="#ff4949">
-          </el-switch>
-        </el-form-item>
-
-        <el-form-item v-if="form.isShow === '1' && gmpAuthArr.length > 0 && !gmpAuthValue" prop="gmpAuthExpire">
-          <el-date-picker
-            v-model="form.gmpAuthExpire"
-            type="daterange"
-            value-format="yyyy-MM-dd"
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期">
-          </el-date-picker>
-        </el-form-item>
         <el-form-item label="国药准字" v-if="form.productType==2" prop="prescribeCode">
         <el-form-item label="国药准字" v-if="form.productType==2" prop="prescribeCode">
           <el-input v-model="form.prescribeCode" placeholder="请输入国药准字"/>
           <el-input v-model="form.prescribeCode" placeholder="请输入国药准字"/>
         </el-form-item>
         </el-form-item>
@@ -947,7 +886,7 @@ export default {
         { dictValue: "1", dictLabel: "是" }
         { dictValue: "1", dictLabel: "是" }
       ],
       ],
 
 
-      // 药品展示图
+      // 头图展示
       drugImageArr: [],
       drugImageArr: [],
       //首营资质上传图
       //首营资质上传图
       qualificationArr: [],
       qualificationArr: [],
@@ -1438,7 +1377,7 @@ export default {
         isDisplay:"1",
         isDisplay:"1",
         // companyIds:[],
         // companyIds:[],
         isDrug: "0", // 是否药品
         isDrug: "0", // 是否药品
-        drugImage: null, // 药品展示图
+        drugImage: null, // 头图展示
         drugRegCertNo: null, // 药品注册证书编号
         drugRegCertNo: null, // 药品注册证书编号
         commonName: null, // 通用名称
         commonName: null, // 通用名称
         dosageForm: null, // 剂型
         dosageForm: null, // 剂型