|
@@ -528,7 +528,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">
|
|
@@ -559,11 +559,11 @@
|
|
|
</el-row>
|
|
</el-row>
|
|
|
|
|
|
|
|
<el-row>
|
|
<el-row>
|
|
|
- <el-col :span="12">
|
|
|
|
|
- <el-form-item :label="isMedicalDeviceCategory ? '生产批号/序列号' : '批号'" prop="batchNumber">
|
|
|
|
|
- <el-input v-model="form.batchNumber" placeholder="请输入批号"/>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </el-col>
|
|
|
|
|
|
|
+<!-- <el-col :span="12" v-if="!isMedicalDeviceCategory">-->
|
|
|
|
|
+<!-- <el-form-item :label="isMedicalDeviceCategory ? '生产批号/序列号' : '批号'" prop="batchNumber">-->
|
|
|
|
|
+<!-- <el-input v-model="form.batchNumber" placeholder="请输入批号"/>-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
|
+<!-- </el-col>-->
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="规格/型号" prop="prescribeSpec">
|
|
<el-form-item label="规格/型号" prop="prescribeSpec">
|
|
|
<el-input v-model="form.prescribeSpec" placeholder="请输入规格"/>
|
|
<el-input v-model="form.prescribeSpec" placeholder="请输入规格"/>
|
|
@@ -1273,11 +1273,34 @@ export default {
|
|
|
businessArr:function(val) {
|
|
businessArr:function(val) {
|
|
|
this.form.business = val.join(',');
|
|
this.form.business = val.join(',');
|
|
|
},
|
|
},
|
|
|
- //药品成分
|
|
|
|
|
|
|
+ // 商品名称监听
|
|
|
|
|
+ 'form.productName': {
|
|
|
|
|
+ handler(newVal) {
|
|
|
|
|
+ if (newVal) {
|
|
|
|
|
+ this.checkForbiddenKeywords('productName', newVal);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ immediate: false
|
|
|
|
|
+ },
|
|
|
|
|
+ // 成分监听
|
|
|
'form.ingredient': {
|
|
'form.ingredient': {
|
|
|
handler(newVal) {
|
|
handler(newVal) {
|
|
|
if (newVal) {
|
|
if (newVal) {
|
|
|
- this.checkForbiddenKeywords(newVal);
|
|
|
|
|
|
|
+ this.checkForbiddenKeywords('ingredient', newVal);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ immediate: false
|
|
|
|
|
+ },
|
|
|
|
|
+ // 商品分类监听
|
|
|
|
|
+ 'form.productType': {
|
|
|
|
|
+ handler(newVal) {
|
|
|
|
|
+ // 检查是否为II类或III类器械分类
|
|
|
|
|
+ const cateName = this.cateIdToNameMap[this.form.cateId];
|
|
|
|
|
+ const isMedicalDevice = cateName !== undefined && (cateName.includes('III类器械') || cateName.includes('II类器械'));
|
|
|
|
|
+
|
|
|
|
|
+ // 只有当是II类或III类器械且器械编码不为空时才调用检查接口
|
|
|
|
|
+ if (isMedicalDevice && this.form.medicalDeviceCode) {
|
|
|
|
|
+ this.checkMedicalDeviceLicense(this.form.cateId, this.form.medicalDeviceCode);
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
immediate: false
|
|
immediate: false
|
|
@@ -1301,9 +1324,9 @@ export default {
|
|
|
this.rules.drugRegCertNo = [
|
|
this.rules.drugRegCertNo = [
|
|
|
{ required: true, message: "注册证号/备案凭证编号不能为空", trigger: "blur" }
|
|
{ required: true, message: "注册证号/备案凭证编号不能为空", trigger: "blur" }
|
|
|
];
|
|
];
|
|
|
- this.rules.batchNumber = [
|
|
|
|
|
- { required: true, message: "生产批号/序列号不能为空", trigger: "blur" }
|
|
|
|
|
- ];
|
|
|
|
|
|
|
+ // this.rules.batchNumber = [
|
|
|
|
|
+ // { required: true, message: "生产批号/序列号不能为空", trigger: "blur" }
|
|
|
|
|
+ // ];
|
|
|
|
|
|
|
|
} else {
|
|
} else {
|
|
|
this.rules.indications = [{ required: true, message: "适应范围/适应症不能为空", trigger: "blur" }];
|
|
this.rules.indications = [{ required: true, message: "适应范围/适应症不能为空", trigger: "blur" }];
|
|
@@ -1372,11 +1395,12 @@ export default {
|
|
|
},
|
|
},
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
|
|
+ isIngredientValid: true, // 成分是否有效
|
|
|
|
|
+ isProductNameValid: true, // 商品名称是否有效
|
|
|
// 溯源码弹窗相关
|
|
// 溯源码弹窗相关
|
|
|
titleVisible:'溯源管理:',
|
|
titleVisible:'溯源管理:',
|
|
|
verifyDialogVisible: false, // 溯源码弹窗显示状态
|
|
verifyDialogVisible: false, // 溯源码弹窗显示状态
|
|
|
currentProductId: null, // 当前选中的商品ID
|
|
currentProductId: null, // 当前选中的商品ID
|
|
|
- isIngredientValid: true, // 成分是否有效
|
|
|
|
|
isLicenseValid: true, // 许可证是否有效
|
|
isLicenseValid: true, // 许可证是否有效
|
|
|
authVisible:false,
|
|
authVisible:false,
|
|
|
auditLogs:[],
|
|
auditLogs:[],
|
|
@@ -1422,7 +1446,7 @@ export default {
|
|
|
{dictValue: "1", dictLabel: "是"}
|
|
{dictValue: "1", dictLabel: "是"}
|
|
|
],
|
|
],
|
|
|
|
|
|
|
|
- // 药品展示图
|
|
|
|
|
|
|
+ // 头图展示
|
|
|
drugImageArr: [],
|
|
drugImageArr: [],
|
|
|
|
|
|
|
|
//首营资质上传图
|
|
//首营资质上传图
|
|
@@ -1690,23 +1714,50 @@ export default {
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
methods: {
|
|
methods: {
|
|
|
- // 检查违禁关键词
|
|
|
|
|
- checkForbiddenKeywords(ingredient) {
|
|
|
|
|
- selectForbiddenKeywords(ingredient).then(response => {
|
|
|
|
|
|
|
+ // 检查违禁关键词(整合商品名称和成分检查)
|
|
|
|
|
+ checkForbiddenKeywords(field, value) {
|
|
|
|
|
+ // 根据检查的字段类型设置不同的参数和状态变量
|
|
|
|
|
+ const isProductNameCheck = field === 'productName';
|
|
|
|
|
+ const isIngredientCheck = field === 'ingredient';
|
|
|
|
|
+ if (!isProductNameCheck && !isIngredientCheck) {
|
|
|
|
|
+ return; // 只处理商品名称和成分字段
|
|
|
|
|
+ }
|
|
|
|
|
+ // 构造参数 - API只需要keywords参数
|
|
|
|
|
+ selectForbiddenKeywords(value).then(response => {
|
|
|
if (response.data === false) {
|
|
if (response.data === false) {
|
|
|
- this.$message.error(response.msg || '包含违禁词');
|
|
|
|
|
- this.isIngredientValid = false;
|
|
|
|
|
|
|
+ const errorMsg = isProductNameCheck
|
|
|
|
|
+ ? (response.msg || '商品名称包含违禁词')
|
|
|
|
|
+ : (response.msg || '成分包含违禁词');
|
|
|
|
|
+ this.$message.error(errorMsg);
|
|
|
|
|
+ // 更新对应的状态变量
|
|
|
|
|
+ if (isProductNameCheck) {
|
|
|
|
|
+ this.isProductNameValid = false;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.isIngredientValid = false;
|
|
|
|
|
+ }
|
|
|
} else {
|
|
} else {
|
|
|
- this.isIngredientValid = true;
|
|
|
|
|
|
|
+ // 检查通过,更新状态变量
|
|
|
|
|
+ if (isProductNameCheck) {
|
|
|
|
|
+ this.isProductNameValid = true;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.isIngredientValid = true;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}).catch(error => {
|
|
}).catch(error => {
|
|
|
- this.$message.error('违禁词检查异常');
|
|
|
|
|
- this.isIngredientValid = false;
|
|
|
|
|
|
|
+ const errorMsg = isProductNameCheck
|
|
|
|
|
+ ? '商品名称违禁词检查异常'
|
|
|
|
|
+ : '成分违禁词检查异常';
|
|
|
|
|
+ this.$message.error(errorMsg);
|
|
|
|
|
+ // 出现异常时,标记为无效
|
|
|
|
|
+ if (isProductNameCheck) {
|
|
|
|
|
+ this.isProductNameValid = false;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.isIngredientValid = false;
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
|
- // 检查店铺药品许可证
|
|
|
|
|
|
|
+
|
|
|
// 检查店铺药品许可证
|
|
// 检查店铺药品许可证
|
|
|
checkStoreDrugLicense(cateId) {
|
|
checkStoreDrugLicense(cateId) {
|
|
|
checkStoreDrugLicense({ cateId: cateId }).then(response => {
|
|
checkStoreDrugLicense({ cateId: cateId }).then(response => {
|
|
@@ -1730,7 +1781,7 @@ export default {
|
|
|
|
|
|
|
|
// 只有当是II类或III类器械且器械编码不为空时才调用接口
|
|
// 只有当是II类或III类器械且器械编码不为空时才调用接口
|
|
|
if (isMedicalDevice && medicalDeviceCode) {
|
|
if (isMedicalDevice && medicalDeviceCode) {
|
|
|
- checkStoreDrugLicense({ cateId: cateId, medicalDeviceCode: medicalDeviceCode }).then(response => {
|
|
|
|
|
|
|
+ checkStoreDrugLicense({ cateId: cateId, medicalDeviceCode: medicalDeviceCode, productType: this.form.productType }).then(response => {
|
|
|
if (response.data.flag === false) {
|
|
if (response.data.flag === false) {
|
|
|
this.$message.error(response.data.message || '医疗器械许可证检查失败');
|
|
this.$message.error(response.data.message || '医疗器械许可证检查失败');
|
|
|
this.isLicenseValid = false;
|
|
this.isLicenseValid = false;
|
|
@@ -2066,7 +2117,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, // 剂型
|
|
@@ -2326,6 +2377,11 @@ export default {
|
|
|
},
|
|
},
|
|
|
/** 提交按钮 */
|
|
/** 提交按钮 */
|
|
|
submitForm() {
|
|
submitForm() {
|
|
|
|
|
+ // 检查商品名称是否有效
|
|
|
|
|
+ if (!this.isProductNameValid) {
|
|
|
|
|
+ this.$message.warning('商品名称包含违禁词,请修改后重新提交');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
// 检查成分是否有效
|
|
// 检查成分是否有效
|
|
|
if (!this.isIngredientValid) {
|
|
if (!this.isIngredientValid) {
|
|
|
this.$message.warning('成分包含违禁词,请修改后重新提交');
|
|
this.$message.warning('成分包含违禁词,请修改后重新提交');
|