提交 0c488269 编写于 作者: tao.wu's avatar tao.wu

检测服务联调

上级 b1469a82
...@@ -13,6 +13,14 @@ export const getGoodsList = (params) => { ...@@ -13,6 +13,14 @@ export const getGoodsList = (params) => {
description: '商品列表查询', description: '商品列表查询',
}) })
}; };
export const getGoodDetails = (goodsId) => {
return fetch({
headers,
url: getBaseUrl(`store/goods/medical/service/detail/${goodsId}/-1`),
method: 'get',
description: '商品详情查询',
})
}
export const uploadExcel = data => { export const uploadExcel = data => {
// return utils.checkAuth(()=>{ // return utils.checkAuth(()=>{
return fetch({ return fetch({
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
:rules="rules" :rules="rules"
label-width="150px" label-width="150px"
label-suffix=":" label-suffix=":"
class="basic-form" class="basic-form"
> >
...@@ -84,10 +83,11 @@ ...@@ -84,10 +83,11 @@
v-model="formData.goodsType" v-model="formData.goodsType"
placeholder="请选择商品类型" placeholder="请选择商品类型"
size="small" size="small"
:disabled="isEdit"
@change="getGoodsTypes(formData.goodsType,2)"> @change="getGoodsTypes(formData.goodsType,2)">
<el-option <el-option
v-for="(item,index) in oneLever" v-for="(item,index) in oneLever"
:key="index" :key="item.categoryName+'-'+index"
:label="item.categoryName" :label="item.categoryName"
:value="item.id" :value="item.id"
></el-option> ></el-option>
...@@ -95,14 +95,23 @@ ...@@ -95,14 +95,23 @@
</el-form-item> </el-form-item>
<!-- <p class="upload-message" v-if="uploadImgMessage1">请上传商品头图</p> --> <!-- <p class="upload-message" v-if="uploadImgMessage1">请上传商品头图</p> -->
</div> </div>
</el-form>
<div class="basic-item-icon" v-if="isMedic && !isCheckServe"> <el-form
ref="formData"
:model="formData1"
:rules="rules1"
label-width="150px"
label-suffix=":"
class="basic-form"
>
<div class="basic-item-icon" v-show="isMedic && !isCheckServe">
<div class="part-tit">药品信息</div> <div class="part-tit">药品信息</div>
<el-form-item label="条形码" prop="barCode"> <el-form-item label="条形码" prop="barCode">
<el-col :span="18"> <el-col :span="18">
<el-input <el-input
size="small" size="small"
v-model="formData.barCode" v-model="formData1.barCode"
placeholder="请输入条形码" placeholder="请输入条形码"
></el-input> ></el-input>
<span class="fast-opt" @click="fastInput">快速录入</span> <span class="fast-opt" @click="fastInput">快速录入</span>
...@@ -113,7 +122,7 @@ ...@@ -113,7 +122,7 @@
<el-col :span="18"> <el-col :span="18">
<el-input <el-input
size="small" size="small"
v-model="formData.approvalNumber" v-model="formData1.approvalNumber"
placeholder="请输入批准文号" placeholder="请输入批准文号"
style="width:50%;" style="width:50%;"
></el-input> ></el-input>
...@@ -124,7 +133,7 @@ ...@@ -124,7 +133,7 @@
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
v-model="formData.medicCommonName" v-model="formData1.medicCommonName"
placeholder="请输入药品通用名称" placeholder="请输入药品通用名称"
style="width:70%;" style="width:70%;"
maxlength="60" maxlength="60"
...@@ -138,7 +147,7 @@ ...@@ -138,7 +147,7 @@
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
v-model="formData.medicGoodsName" v-model="formData1.medicGoodsName"
placeholder="请输入药品商品名称" placeholder="请输入药品商品名称"
maxlength="60" maxlength="60"
...@@ -152,7 +161,7 @@ ...@@ -152,7 +161,7 @@
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
v-model="formData.size" v-model="formData1.size"
placeholder="请输入药品规格" placeholder="请输入药品规格"
style="width:70%;" style="width:70%;"
></el-input> ></el-input>
...@@ -163,13 +172,13 @@ ...@@ -163,13 +172,13 @@
<div class="inline"> <div class="inline">
<el-form-item label="是否是处方药" prop="otc1"> <el-form-item label="是否是处方药" prop="otc1">
<el-col :span="24"> <el-col :span="24">
<el-radio size="mini" v-model="formData.otc1" label="1">处方药</el-radio> <el-radio size="mini" v-model="formData1.otc1" label="1">处方药</el-radio>
<el-radio v-model="formData.otc1" label="0">非处方药</el-radio> <el-radio v-model="formData1.otc1" label="0">非处方药</el-radio>
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="剂型" prop="dosageId"> <el-form-item label="剂型" prop="dosageId">
<el-select <el-select
v-model="formData.dosageId" v-model="formData1.dosageId"
placeholder="请选择药品剂型" placeholder="请选择药品剂型"
size="small" size="small"
clearable> clearable>
...@@ -186,7 +195,7 @@ ...@@ -186,7 +195,7 @@
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
v-model="formData.usage" v-model="formData1.usage"
placeholder="请输入用法用量" placeholder="请输入用法用量"
style="width:70%;" style="width:70%;"
></el-input> ></el-input>
...@@ -197,10 +206,10 @@ ...@@ -197,10 +206,10 @@
<el-form-item label="药品类型" prop="categoryIdLevel2"> <el-form-item label="药品类型" prop="categoryIdLevel2">
<el-select <el-select
v-model="formData.categoryIdLevel2" v-model="formData1.categoryIdLevel2"
placeholder="请选择药品类型" placeholder="请选择药品类型"
size="small" size="small"
@change="getLever(formData.categoryIdLevel2,3)" @change="getLever(formData1.categoryIdLevel2,3)"
clearable clearable
> >
<el-option <el-option
...@@ -214,10 +223,10 @@ ...@@ -214,10 +223,10 @@
<div class="inline"> <div class="inline">
<el-form-item label="一级类目" prop="categoryIdLevel3" > <el-form-item label="一级类目" prop="categoryIdLevel3" >
<el-select <el-select
v-model="formData.categoryIdLevel3" v-model="formData1.categoryIdLevel3"
placeholder="请选择一级类目" placeholder="请选择一级类目"
size="small" size="small"
@change="getLever(formData.categoryIdLevel3,4)" @change="getLever(formData1.categoryIdLevel3,4)"
> >
<el-option <el-option
v-for="(item,index) in threeLever" v-for="(item,index) in threeLever"
...@@ -229,10 +238,10 @@ ...@@ -229,10 +238,10 @@
</el-form-item> </el-form-item>
<el-form-item label="二级类目" prop="categoryIdLevel4" > <el-form-item label="二级类目" prop="categoryIdLevel4" >
<el-select <el-select
v-model="formData.categoryIdLevel4" v-model="formData1.categoryIdLevel4"
placeholder="请选择二级类目" placeholder="请选择二级类目"
size="small" size="small"
@change="getLever(formData.categoryIdLevel4,5)" @change="getLever(formData1.categoryIdLevel4,5)"
> >
<el-option <el-option
v-for="(item,index) in fourLever" v-for="(item,index) in fourLever"
...@@ -244,7 +253,7 @@ ...@@ -244,7 +253,7 @@
</el-form-item> </el-form-item>
<el-form-item label="三级级类目" prop="categoryIdLevel5"> <el-form-item label="三级级类目" prop="categoryIdLevel5">
<el-select <el-select
v-model="formData.categoryIdLevel5" v-model="formData1.categoryIdLevel5"
placeholder="请选择三级类目" placeholder="请选择三级类目"
size="small" size="small"
> >
...@@ -261,7 +270,7 @@ ...@@ -261,7 +270,7 @@
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
v-model="formData.manufacturer" v-model="formData1.manufacturer"
placeholder="请输入生产厂家" placeholder="请输入生产厂家"
style="width:70%;" style="width:70%;"
></el-input> ></el-input>
...@@ -273,7 +282,7 @@ ...@@ -273,7 +282,7 @@
<el-form-item label="适用科室" prop="department"> <el-form-item label="适用科室" prop="department">
<el-input <el-input
size="small" size="small"
v-model="formData.department" v-model="formData1.department"
placeholder="请输入适用科室" placeholder="请输入适用科室"
></el-input> ></el-input>
...@@ -295,7 +304,7 @@ ...@@ -295,7 +304,7 @@
<el-col :span="24"> <el-col :span="24">
<el-input <el-input
size="small" size="small"
v-model="formData.treatDisease" v-model="formData1.treatDisease"
placeholder="请输入治疗疾病" placeholder="请输入治疗疾病"
></el-input> ></el-input>
...@@ -309,7 +318,7 @@ ...@@ -309,7 +318,7 @@
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
v-model="formData.expiredTime" v-model="formData1.expiredTime"
placeholder="请输入有效期" placeholder="请输入有效期"
style="width:70%;" style="width:70%;"
></el-input> ></el-input>
...@@ -356,6 +365,7 @@ ...@@ -356,6 +365,7 @@
<p class="upload-message" v-if="!isSpecification_url">请上传药品说明书</p> <p class="upload-message" v-if="!isSpecification_url">请上传药品说明书</p>
</el-form-item> </el-form-item>
</div> </div>
</el-form>
...@@ -382,14 +392,21 @@ ...@@ -382,14 +392,21 @@
=========================================================调试新增检测服务 start========================================================= --> =========================================================调试新增检测服务 start========================================================= -->
<el-form
<div class="basic-item-icon" v-if="!isMedic && isCheckServe"> ref="formData"
:model="formData2"
:rules="rules2"
label-width="150px"
label-suffix=":"
class="basic-form"
>
<div class="basic-item-icon" v-show="!isMedic && isCheckServe">
<div class="part-tit">服务信息</div> <div class="part-tit">服务信息</div>
<el-form-item label="条形码" prop="barCode"> <el-form-item label="条形码" prop="barCode">
<el-col :span="18"> <el-col :span="18">
<el-input <el-input
size="small" size="small"
v-model="formData.barCode" v-model="formData2.barCode"
placeholder="请输入条形码" placeholder="请输入条形码"
></el-input> ></el-input>
<span class="fast-opt" @click="fastInput">快速录入</span> <span class="fast-opt" @click="fastInput">快速录入</span>
...@@ -408,7 +425,7 @@ ...@@ -408,7 +425,7 @@
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
v-model="formData.checkName" v-model="formData2.checkName"
placeholder="请输入检测名称" placeholder="请输入检测名称"
show-word-limit show-word-limit
maxlength="60" maxlength="60"
...@@ -419,7 +436,7 @@ ...@@ -419,7 +436,7 @@
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
v-model="formData.hospitalName" v-model="formData2.hospitalName"
placeholder="请输入医疗机构名称" placeholder="请输入医疗机构名称"
show-word-limit show-word-limit
></el-input> ></el-input>
...@@ -427,7 +444,7 @@ ...@@ -427,7 +444,7 @@
</el-form-item> </el-form-item>
<el-form-item label="医疗机构类型" prop="hospitalType"> <el-form-item label="医疗机构类型" prop="hospitalType">
<el-select <el-select
v-model="formData.hospitalType" v-model="formData2.hospitalType"
placeholder="请选择" placeholder="请选择"
size="small" size="small"
> >
...@@ -445,7 +462,7 @@ ...@@ -445,7 +462,7 @@
type="textarea" type="textarea"
rows="4" rows="4"
size="small" size="small"
v-model="formData.checkItem" v-model="formData2.checkItem"
placeholder="请输入检测项目" placeholder="请输入检测项目"
maxlength="400" maxlength="400"
show-word-limit show-word-limit
...@@ -458,7 +475,7 @@ ...@@ -458,7 +475,7 @@
type="textarea" type="textarea"
rows="4" rows="4"
size="small" size="small"
v-model="formData.checkStandard" v-model="formData2.checkStandard"
placeholder="请输入检测指标" placeholder="请输入检测指标"
maxlength="400" maxlength="400"
show-word-limit show-word-limit
...@@ -468,25 +485,25 @@ ...@@ -468,25 +485,25 @@
<el-form-item label="使用人数" prop="useCount" class="required-label"> <el-form-item label="使用人数" prop="useCount" class="required-label">
<el-col :span="20"> <el-col :span="20">
<div class="stock-com"> <div class="stock-com">
<span class="sp sp-l" @click="formData.useCount>0?formData.useCount--:''" :class="{'opac':formData.useCount == 0}"><i class="el-icon-minus"></i></span> <span class="sp sp-l" @click="formData2.useCount>0?formData2.useCount--:''" :class="{'opac':formData2.useCount == 0}"><i class="el-icon-minus"></i></span>
<span class="sp sp-c"> <span class="sp sp-c">
<el-input <el-input
type="number" type="number"
rows="4" rows="4"
size="small" size="small"
v-model="formData.useCount" v-model="formData2.useCount"
placeholder="请输入使用人数" placeholder="请输入使用人数"
></el-input> ></el-input>
<!-- <input style="text-align:center;width:100%;height:100%;border:none;outline:none;" v-model="formData.useCount" type="text" placeholder="0"> --> <!-- <input style="text-align:center;width:100%;height:100%;border:none;outline:none;" v-model="formData.useCount" type="text" placeholder="0"> -->
</span> </span>
<span class="sp sp-r" @click="formData.useCount++"><i class="el-icon-plus"></i></span> <span class="sp sp-r" @click="formData2.useCount++"><i class="el-icon-plus"></i></span>
</div> </div>
<!-- <p class="error-message" v-if="formData.useCount<=0">使用人数必须大于0</p> --> <!-- <p class="error-message" v-if="formData.useCount<=0">使用人数必须大于0</p> -->
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="检测类型" prop="checkType"> <el-form-item label="检测类型" prop="checkType">
<el-select <el-select
v-model="formData.checkType" v-model="formData2.checkType"
placeholder="请选择" placeholder="请选择"
size="small" size="small"
> >
...@@ -498,16 +515,16 @@ ...@@ -498,16 +515,16 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="适用人群" prop="suitableStr"> <el-form-item label="适用人群" prop="suitableArr">
<el-select <el-select
v-model="formData.suitableStr" v-model="formData2.suitableArr"
:multiple="true" :multiple="true"
placeholder="请选择" placeholder="请选择"
size="small" size="small"
> >
<el-option <el-option
v-for="(item,index) in suitableList" v-for="(item,index) in suitableList"
:key="index" :key="item+'_'+index"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
></el-option> ></el-option>
...@@ -519,7 +536,7 @@ ...@@ -519,7 +536,7 @@
type="textarea" type="textarea"
rows="4" rows="4"
size="small" size="small"
v-model="formData.accessorialService" v-model="formData2.accessorialService"
placeholder="请输入附加服务" placeholder="请输入附加服务"
maxlength="400" maxlength="400"
show-word-limit show-word-limit
...@@ -528,7 +545,7 @@ ...@@ -528,7 +545,7 @@
</el-form-item> </el-form-item>
<el-form-item label="商品使用日期" prop="endTime" class="required-label"> <el-form-item label="商品使用日期" prop="endTime" class="required-label">
<el-date-picker <el-date-picker
v-model="formData.endTime" v-model="formData2.endTime"
size="small" size="small"
type="datetime" type="datetime"
placeholder="请选择商品使用日期" placeholder="请选择商品使用日期"
...@@ -564,6 +581,7 @@ ...@@ -564,6 +581,7 @@
<p class="upload-message" v-if="!isgoodsImages">请上传检测说明图</p> <p class="upload-message" v-if="!isgoodsImages">请上传检测说明图</p>
</el-form-item> </el-form-item>
</div> </div>
</el-form>
...@@ -597,7 +615,14 @@ ...@@ -597,7 +615,14 @@
<el-form
ref="formData"
:model="formData"
:rules="rules"
label-width="150px"
label-suffix=":"
class="basic-form"
>
<div class="basic-item-icon"> <div class="basic-item-icon">
<div class="part-tit">销售信息</div> <div class="part-tit">销售信息</div>
<div class="inline"> <div class="inline">
...@@ -674,197 +699,12 @@ ...@@ -674,197 +699,12 @@
let vm = null; let vm = null;
import { openLoading, closeLoading } from "../../utils/utils"; import { openLoading, closeLoading } from "../../utils/utils";
import { doUpload, getFilePath } from "../../utils/qiniu-util"; import { doUpload, getFilePath } from "../../utils/qiniu-util";
import { updateGoods ,updateStock,dosageAll,getDeparts,getGoodsList, updateGoodsV2} from '@/utils/goods'; import { updateGoods ,updateStock,dosageAll,getDeparts,getGoodsList, getGoodDetails, updateGoodsV2} from '@/utils/goods';
import Cropper from '@/components/common/cropper.vue' import Cropper from '@/components/common/cropper.vue'
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import { originRules1, originRules2, originRules } from './rules';
const checkBarcode = (rule, value, cb) => { import { originForm1, originForm2, originForm } from './forms';
const valedBarcode = new RegExp("[\\u4E00-\\u9FFF]+","g");
if(value && valedBarcode.test(value)) cb(new Error('条形码不能输入中文'));
cb();
}
const checkNumber = (rule, value, cb) => {
const val = String(value);
const isInt = /^([1-9][0-9]*)$/;
if(val && !isInt.test(val)) cb(new Error('请输入正整数'));
cb();
}
const checkProjectStr = (rule, value, callback) => {
if (value.indexOf("\\") != -1) {
//存在
callback(new Error("请勿输入字符“ \\ "));
} else if (value.indexOf(".") != -1) {
callback(new Error("请勿输入字符“ . "));
} else {
callback();
}
};
const form1 = {
categoryIdLevel2: '',
categoryIdLevel3: '',
categoryIdLevel4: '',
categoryIdLevel5: '',
medicCommonName:'',
medicGoodsName:'',
size:'',
dosageId:null,
usage:'',
otc1:'1',
approvalNumber:'',
manufacturer:'',
department:'',
expiredTime:'',
specification_url:'',
treatDisease:'',
}
const rules1 = {
medicCommonName:[
{ required: true, message: "请输入商品通用名称", trigger: "blur" }
],
size:[
{ required: true, message: "请输入商品规格", trigger: "blur" }
],
manufacturer:[
{ required: true, message: "请输入生产厂家", trigger: "blur" }
],
approvalNumber:[
{ required: true, message: "请输入批准文号", trigger: "blur" }
],
dosageId:[
{ required: true, message: "请选择剂型", trigger: "change" }
],
categoryIdLevel2:[
{ required: true, message: "请选择药品类型", trigger: "blur" }
],
categoryIdLevel3:[
{ required: true, message: "请选择一级类目", trigger: "blur" }
],
categoryIdLevel4:[
{ required: true, message: "请选择二级类目", trigger: "blur" }
],
categoryIdLevel5:[
{ required: true, message: "请选择三级类目", trigger: "blur" }
],
specification_url:[
{ required: true, message: "请上传药品说明书", trigger: "blur" }
],
// barCode: [
// { required: true, message: "请输入条形码", trigger: "blur" },
// { validator: checkBarcode, trigger: "blur" }
// ],
otc:[
{ required: true, message: "请选择是否是处方", trigger: "blur" }
],
dynamicFlag: [
{ required: true, message: "请选择内容发布权", trigger: "blur" },
],
}
const form2 = {
// checkPackageId: '', // 检测登记表,暂无,先隐藏!!!!!!!!!!!
checkName: '',
hospitalName: '',
hospitalType: '',
hospitalId: 0,
goodsId: 0, // 新增时传0,更新时必需>0
medicalServiceId: 0, // 新增时传0,更新时必需>0
goodsCheckImages: [],
checkItem: '',
checkStandard: '',
useCount: 0,
checkType: '',
suitable: '',
suitableStr: '',
accessorialService: '',
endTime: '',
goodsStock:0,
stock: 0
}
const rules2 = {
checkName: [{ required: true, message: "请输入检测名称", trigger: "blur" }],
hospitalName: [{ required: true, message: "请输入医疗机构名称", trigger: "blur" }],
hospitalType: [{ required: true, message: "请选择医疗机构类型", trigger: "blur" }],
checkItem: [{ required: true, message: "请输入检测项目", trigger: "blur" }],
checkStandard: [{ required: true, message: "请输入检测指标", trigger: "blur" }],
useCount: [{ required: true, message: "请输入使用人数", trigger: "blur" },{validator: checkNumber, trigger: "blur"}],
checkType: [{ required: true, message: "请选择检测类型", trigger: "blur" }],
suitableStr: [{ required: true, message: "请选择适用人群", trigger: "blur" }],
endTime: [{ required: true, message: "请选择商品使用日期", trigger: "blur" }],
// goodsCheckImages: [
// { required: true, message: "请上传检测说明图", trigger: "blur" }
// ],
}
const form = {
// medicationId: 0,
id: 0,
// categoryId:'',
goodsName:'',
goodsDescription:'',
goodsHeaderImages:[],
goodsType:'',
barCode: '',
// otc:false,
// discountPrice:'',
// stock:0,
// goodsStock:0,
// specificationImages:[],
costPrice:0,
decrStock:0,//减少库存
incrStock:'',//增加库存
storeId: '',
optPrice:0,
};
const rules = {
barCode: [
{ required: true, message: "请输入条形码", trigger: "blur" },
{ validator: checkBarcode, trigger: "blur" }
],
goodsName: [
{ required: true, message: "请输入商品名称", trigger: "blur" },
{ validator: checkProjectStr, trigger: "blur" }
],
goodsHeaderImages: [
{ required: true, message: "请上传商品头图", trigger: "blur" }
],
goodsType:[
{ required: true, message: "请选择商品类型", trigger: "change" }
],
optPrice: [
{ required: true, message: "请输入零售价", trigger: "blur" },
],
// introduce: [
// { required: true, message: "请输入圈子介绍", trigger: "blur" },
// {
// min: 2,
// max: 40,
// message: "输入长度为2-40的内容,可包含中英文、数字及特殊符号",
// trigger: "blur"
// },
// { validator: checkProjectStr, trigger: "blur" }
// ],
}
const originForm1 = JSON.parse(JSON.stringify(form1));
const originRules1 = JSON.parse(JSON.stringify(rules1));
const originForm2 = JSON.parse(JSON.stringify(form2));
const originRules2 = JSON.parse(JSON.stringify(rules2));
const originForm = JSON.parse(JSON.stringify(form));
const originRules = JSON.parse(JSON.stringify(rules));
export default { export default {
components: { components: {
...@@ -872,22 +712,8 @@ ...@@ -872,22 +712,8 @@
Cropper Cropper
}, },
data(){ data(){
let checkProjectStr = (rule, value, callback) => {
if (value.indexOf("\\") != -1) {
//存在
callback(new Error("请勿输入字符“ \\ "));
} else if (value.indexOf(".") != -1) {
callback(new Error("请勿输入字符“ . "));
} else {
callback();
}
};
return{ return{
isEdit: false,
stock:{ stock:{
title:'减少库存', title:'减少库存',
type:1, type:1,
...@@ -936,19 +762,19 @@ ...@@ -936,19 +762,19 @@
value: '3', value: '3',
}], }],
checkPackageList: [], // 检测登记表 checkPackageList: [], // 检测登记表
hospitalTypeList: [{label:'村卫生室',value:'1'},{label:'乡镇卫生院/中心',value:'2'}], // 医疗机构类型 hospitalTypeList: [{label:'村卫生室',value:1},{label:'乡镇卫生院/中心',value:2}], // 医疗机构类型
checkTypeList: [{label:'常规检测',value:'1'}], // 检测类型 checkTypeList: [{label:'常规检测',value:1}], // 检测类型
suitableList: [{label:'儿童',value:'1'},{label:'青年',value:'2'},{label:'中年',value:'3'},{label:'老年',value:'4'}], // 适用人群 suitableList: [{label:'儿童',value:'1'},{label:'青年',value:'2'},{label:'中年',value:'3'},{label:'老年',value:'4'}], // 适用人群
// 不同类型服务的表单通用字段 // 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段 // 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段 // 不同类型服务的表单通用字段
formData: { formData: {},
formData1: {},
}, formData2: {},
rules: { rules: {},
rules1: {},
}, rules2: {},
// 不同类型服务的表单通用字段 // 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段 // 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段 // 不同类型服务的表单通用字段
...@@ -981,15 +807,22 @@ ...@@ -981,15 +807,22 @@
}, },
created() { created() {
vm = this; vm = this;
const { id, storeId, goodsType } = this.$route.query;
this.formData = originForm; this.formData = originForm;
this.formData1 = originForm1;
this.formData2 = originForm2;
this.rules = originRules; this.rules = originRules;
this.rules1 = originRules1;
this.rules2 = originRules2;
const {id, storeId} = this.$route.query;
this.jumPathThird = '/goods-manage?storeId='+storeId this.jumPathThird = '/goods-manage?storeId='+storeId
//this.jumPathThird = '/create-good?id=add&storeId=46' //this.jumPathThird = '/create-good?id=add&storeId=46'
this.title = id == 'add' ? '新增商品' : '编辑商品' this.title = id == 'add' ? '新增商品' : '编辑商品';
this.curmbThird = this.title this.isEdit = id != 'add';
this.curmbThird = this.title;
this.formData.storeId = Number(storeId) || ''; this.formData.storeId = Number(storeId) || '';
this.getLever(0,1) this.getLever(0,1)
dosageAll().then((res)=>{ dosageAll().then((res)=>{
...@@ -1004,14 +837,13 @@ ...@@ -1004,14 +837,13 @@
// this.formData = {...goods} // this.formData = {...goods}
// console.log(goods) // console.log(goods)
this.formData.goodsId = id; this.formData.goodsId = id;
this.getDetailByEdit(id) this.getDetailByEdit(id, goodsType);
} }
}, },
methods: { methods: {
//eidt状态 //eidt状态
getDetailByEdit(id){ getDetailByEdit(id, goodsType){
let parm = { let parm = {
goodsIdList:[id], goodsIdList:[id],
goodsName :'', goodsName :'',
...@@ -1019,6 +851,53 @@ ...@@ -1019,6 +851,53 @@
pageNo:1, pageNo:1,
pageSize: 10, pageSize: 10,
} }
// this.isMedic = this.formData.goodsType == 5 ? true : false
// this.isCheckServe = this.formData.goodsType == 337 ? true : false
if(goodsType == 5){
this.isMedic = true;
}else if(goodsType == 337){
this.isCheckServe = true;
}
if(goodsType == 337){
getGoodDetails(id).then((res)=>{
console.log(`========================>`, res);
if(res.code != '000000'){
return this.$message({
message: res.message,
type: 'error'
});
};
closeLoading(this);
if(res.data == null){
return this.$message({
type: 'error'
});
};
const { goodsInfo, medicalService } = res.data;
this.formData1 = goodsInfo;
this.formData2 = medicalService;
// this.formData = Object.assign(goodsInfo, medicalService);
this.formData = { ...goodsInfo, ...medicalService };
this.formData.suitableArr = this.formData.suitable.split(',');
this.formData.optPrice = this.formData.costPrice/100;
this.formData.stock = this.formData.goodsStock;
// this.formData.checkType;
// this.formData.otc1 = this.formData.otc ? '1' : '0'
this.fileGoodsList = this.getImges(goodsInfo.goodsHeaderImages,1);
this.goodsCheckList = this.getImges(medicalService.goodsCheckImages, goodsType);
this.rules = {
...this.rules,
...originRules
};
});
}else{
getGoodsList(parm).then((res)=>{ getGoodsList(parm).then((res)=>{
if(res.code != '000000'){ if(res.code != '000000'){
return this.$message({ return this.$message({
...@@ -1029,19 +908,16 @@ ...@@ -1029,19 +908,16 @@
closeLoading(this); closeLoading(this);
if(res.data == null){ if(res.data == null){
return this.$message({ return this.$message({
message: '数据加载失败',
type: 'error' type: 'error'
}); });
} }
const {goodsList} = res.data const {goodsList} = res.data;
this.formData = Object.assign(this.formData,{...goodsList[0]}) this.formData = Object.assign(this.formData,{...goodsList[0]})
this.formData.optPrice = this.formData.costPrice/100; this.formData.optPrice = this.formData.costPrice/100;
this.fileGoodsList = this.getImges(goodsList[0].goodsImgList,1) this.fileGoodsList = this.getImges(goodsList[0].goodsImgList,1);
this.fileIntrList = this.getImges(goodsList[0].medicImgList,2) this.fileIntrList = this.getImges(goodsList[0].medicImgList,2);
this.isMedic = this.formData.goodsType == 5 ? true : false this.formData.stock = this.formData.goodsStock;
// this.isCheckServe = this.formData.goodsType == 337 ? true : false // console.log(this.formData.otc)
this.formData.stock = this.formData.goodsStock
console.log(this.formData.otc)
this.formData.otc1 = this.formData.otc ? '1' : '0' this.formData.otc1 = this.formData.otc ? '1' : '0'
if(this.isMedic){ if(this.isMedic){
this.getLever(5,2,1) this.getLever(5,2,1)
...@@ -1056,10 +932,19 @@ ...@@ -1056,10 +932,19 @@
if(categoryIdLevel4 != -1){ if(categoryIdLevel4 != -1){
this.getLever(categoryIdLevel4,5,1) this.getLever(categoryIdLevel4,5,1)
} }
console.log(this.formData)
//this.totalRows = res.data.totalCount //this.totalRows = res.data.totalCount
})
this.rules = {
...this.rules,
...originRules
};
});
}
console.log(this.formData);
}, },
getImges(d,type){ getImges(d,type){
...@@ -1069,8 +954,10 @@ ...@@ -1069,8 +954,10 @@
a.push({ a.push({
url:type==1 ?d[i].goodsImgUrl :d[i].imageUrl, url:type==1 ?d[i].goodsImgUrl :d[i].imageUrl,
imageUrl:type==1 ?d[i].goodsImgUrl :d[i].imageUrl, imageUrl:type==1 ?d[i].goodsImgUrl :d[i].imageUrl,
goodsImgUrl:type==1 ?d[i].goodsImgUrl :d[i].imageUrl,
id: d[i].id, id: d[i].id,
imageSort: d[i].imageSort, imageSort: d[i].imageSort,
imgSort: d[i].imgSort,
imageType: type == 1 ? d[i].imgType : d[i].imageType, imageType: type == 1 ? d[i].imgType : d[i].imageType,
}) })
} }
...@@ -1150,58 +1037,39 @@ ...@@ -1150,58 +1037,39 @@
}); });
}, },
getGoodsTypes(id,type){ getGoodsTypes(goodsType,type){
this.formData = originForm; // this.formData = {};
this.rules = originRules; // this.formData = this.comFormData;
// this.rules = this.comRuleData;
if(id == 5 ){ // this.rules = {};
if(goodsType == 5){
this.isMedic = true; this.isMedic = true;
this.isCheckServe = false; this.isCheckServe = false;
this.getLever(goodsType,type);
this.formData = {
...this.formData, // this.formData = { ...originForm, ...originForm1 };
...originForm1 // this.rules = { ...originForm, ...originRules1 };
}; // // this.formData1 = originForm1;
this.rules = { // // this.formData2 = originForm2;
...this.rules, // this.rules = originRules;
...originRules1 // this.rules1 = originRules1;
}; // this.rules2 = originRules2;
this.getLever(id,type)
} else if( id == 337 ){ // Object.assign(this.formData, {...originForm1});
// Object.assign(this.rules, {...originRules1});
} else if(goodsType == 337){
this.isMedic = false; this.isMedic = false;
this.isCheckServe = true; this.isCheckServe = true;
// Object.assign(this.formData, {...originForm2});
this.formData = { // Object.assign(this.rules, {...originRules2});
...this.formData,
...originForm2
};
this.rules = {
...this.rules,
...originRules2
};
console.log(`=========================================================调试新增检测服务 start=========================================================`);
console.log(this.formData);
console.log(this.rules);
console.log(`=========================================================调试新增检测服务 end=========================================================`);
}else{ }else{
this.isMedic = false; this.isMedic = false;
this.isCheckServe = false; this.isCheckServe = false;
// Object.assign(this.formData, {...originForm});
this.formData = { // Object.assign(this.rules, originRules);
...this.formData,
...originForm1
}; };
this.rules = { // this.$forceUpdate();
...this.rules, console.log(this.formData);
...originRules1
};
}
}, },
...@@ -1230,7 +1098,7 @@ ...@@ -1230,7 +1098,7 @@
//this.twoLever = res.data || this.defaultArr() //this.twoLever = res.data || this.defaultArr()
res.data = res.data.length > 0 ? res.data.concat([{categoryName: "其他",id:-1}]) : this.defaultArr() res.data = res.data.length > 0 ? res.data.concat([{categoryName: "其他",id:-1}]) : this.defaultArr()
this.twoLever = res.data this.twoLever = res.data
console.log(this.twoLever) // console.log(this.twoLever)
}else if(type == 3){ }else if(type == 3){
// res.data = res.data.push({categoryName: "其他",id:-1}) // res.data = res.data.push({categoryName: "其他",id:-1})
res.data = res.data.length > 0 ? res.data.concat([{categoryName: "其他",id:-1}]) : this.defaultArr() res.data = res.data.length > 0 ? res.data.concat([{categoryName: "其他",id:-1}]) : this.defaultArr()
...@@ -1309,6 +1177,10 @@ ...@@ -1309,6 +1177,10 @@
}, },
complete() { complete() {
let formName = "formData"; let formName = "formData";
this.formData = {...this.formData, ...this.formData1, ...this.formData2 };
for(let i=0;i<this.fileGoodsList.length;i++){ for(let i=0;i<this.fileGoodsList.length;i++){
this.fileGoodsList[i].imageSort = i+1 this.fileGoodsList[i].imageSort = i+1
} }
...@@ -1316,16 +1188,21 @@ ...@@ -1316,16 +1188,21 @@
this.fileIntrList[j].imageSort = j+1 this.fileIntrList[j].imageSort = j+1
} }
this.formData.goodsHeaderImages = this.fileGoodsList; // this.formData.goodsHeaderImages = this.fileGoodsList;
this.formData.specificationImages = this.fileIntrList; // this.formData.specificationImages = this.fileIntrList;
this.isgoodsImages = this.formData.goodsHeaderImages.length == 0 ? false :true; // this.isgoodsImages = this.formData.goodsHeaderImages.length == 0 ? false :true;
// this.isSpecification_url = this.formData.specificationImages.length == 0 ? false : true // this.isSpecification_url = this.formData.specificationImages.length == 0 ? false : true
this.formData.categoryId = this.formData.goodsType this.formData.categoryId = this.formData.goodsType
this.formData.otc = this.formData.otc1 == 1 ? true : false this.formData.otc = this.formData.otc1 == 1 ? true : false
this.isgoodStock = this.formData.stock > 0 ? true : false this.isgoodStock = this.formData.stock > 0 ? true : false
console.log(this.isgoodStock); console.log(this.isgoodStock);
this.formData.goodsImages = this.fileGoodsList;
this.formData.goodsHeaderImages = this.fileGoodsList;
this.formData.specificationImages = this.fileIntrList;
this.isgoodsImages = this.formData.goodsImages.length == 0 ? false :true;
// 如果是【药品】类型的商品 // 如果是【药品】类型的商品
if(this.isMedic){ if(this.isMedic){
if(!this.isgoodsImages){ if(!this.isgoodsImages){
return; return;
} }
...@@ -1333,8 +1210,9 @@ ...@@ -1333,8 +1210,9 @@
// 如果是【检测服务】类型的商品 // 如果是【检测服务】类型的商品
if(this.isCheckServe){ if(this.isCheckServe){
this.formData.goodsCheckImages = this.goodsCheckList; this.formData.goodsCheckImages = this.goodsCheckList;
const { suitableStr } = this.formData; const { suitableArr } = this.formData;
this.formData.suitable = suitableStr.join(','); this.formData.suitable = suitableArr.join(',');
this.formData.medicalServiceId = this.formData.medicationId;
} }
if(!this.isgoodStock){ if(!this.isgoodStock){
...@@ -1402,6 +1280,7 @@ ...@@ -1402,6 +1280,7 @@
console.log('上传成功后路径', path); console.log('上传成功后路径', path);
let len = vm.fileGoodsList.length; let len = vm.fileGoodsList.length;
vm.fileGoodsList.push({ url: path.fullPath, goodsImgUrl: path.fullPath, imgSort: len+1, goodsId: vm.formData.goodsId }); vm.fileGoodsList.push({ url: path.fullPath, goodsImgUrl: path.fullPath, imgSort: len+1, goodsId: vm.formData.goodsId });
// vm.fileGoodsList.push({url:path.fullPath,goodsImgUrl: path.fullPath,imageUrl:path.fullPath,imageName:'',imageSort: len+1,imageType: 2,id: null,})
vm.$message.success("上传成功"); vm.$message.success("上传成功");
}); });
}; };
......
const form1 = {
categoryIdLevel2: '',
categoryIdLevel3: '',
categoryIdLevel4: '',
categoryIdLevel5: '',
medicCommonName:'',
medicGoodsName:'',
size:'',
dosageId:null,
usage:'',
otc1:'1',
approvalNumber:'',
manufacturer:'',
department:'',
expiredTime:'',
specification_url:'',
treatDisease:'',
}
const form2 = {
// checkPackageId: '', // 检测登记表,暂无,先隐藏!!!!!!!!!!!
barCode: '',
checkName: '',
hospitalName: '',
hospitalType: '',
hospitalId: 0,
goodsId: 0, // 新增时传0,更新时必需>0
medicalServiceId: 0, // 新增时传0,更新时必需>0
goodsCheckImages: [],
checkItem: '',
checkStandard: '',
useCount: 0,
checkType: '',
suitable: '',
suitableStr: '',
accessorialService: '',
endTime: '',
medicalServiceId: ''
}
const form = {
// medicationId: 0,
// categoryId:'',
// otc:false,
// discountPrice:'',
// stock:0,
// goodsStock:0,
// specificationImages:[],
id: 0,
goodsName:'',
goodsDescription:'',
goodsHeaderImages:[],
goodsType:'',
barCode: '',
costPrice:0,
decrStock:0,//减少库存
incrStock:'',//增加库存
storeId: '',
optPrice:'',
goodsStock:0,
stock: 0
};
export const originForm1 = form1;
export const originForm2 = form2;
export const originForm = form;
\ No newline at end of file
...@@ -191,7 +191,10 @@ ...@@ -191,7 +191,10 @@
},{ },{
categoryName: "药品", categoryName: "药品",
id: 5, id: 5,
}] },{
categoryName: "检测服务",
id: 337,
}];
export default { export default {
components: { components: {
BreadCrumb BreadCrumb
...@@ -412,11 +415,12 @@ ...@@ -412,11 +415,12 @@
} }
}, },
edit(row){ edit(row){
const { goodsType } = row;
let url = '' let url = ''
if(row == 'add'){ if(row == 'add'){
url = `/create-good?id=add&storeId=${this.searchForm.storeId}` url = `/create-good?id=add&storeId=${this.searchForm.storeId}`
}else{ }else{
url = `/create-good?id=${row.goodsId}&storeId=${this.searchForm.storeId}` url = `/create-good?id=${row.goodsId}&storeId=${this.searchForm.storeId}&goodsType=${goodsType}`
} }
this.$store.dispatch('goodsManage/changeGoodsInfo', {...row}); this.$store.dispatch('goodsManage/changeGoodsInfo', {...row});
this.$router.push({ this.$router.push({
......
const checkBarcode = (rule, value, cb) => {
const valedBarcode = new RegExp("[\\u4E00-\\u9FFF]+","g");
if(value && valedBarcode.test(value)) cb(new Error('条形码不能输入中文'));
cb();
};
const checkNumber = (rule, value, cb) => {
const val = String(value);
const isInt = /^([1-9][0-9]*)$/;
if(val && !isInt.test(val)) cb(new Error('请输入正整数'));
cb();
};
const checkProjectStr = (rule, value, callback) => {
if (value.indexOf("\\") != -1) {
//存在
callback(new Error("请勿输入字符“ \\ "));
} else if (value.indexOf(".") != -1) {
callback(new Error("请勿输入字符“ . "));
} else {
callback();
}
};
const rules1 = {
medicCommonName:[
{ required: true, message: "请输入商品通用名称", trigger: "blur" }
],
size:[
{ required: true, message: "请输入商品规格", trigger: "blur" }
],
manufacturer:[
{ required: true, message: "请输入生产厂家", trigger: "blur" }
],
approvalNumber:[
{ required: true, message: "请输入批准文号", trigger: "blur" }
],
dosageId:[
{ required: true, message: "请选择剂型", trigger: "change" }
],
categoryIdLevel2:[
{ required: true, message: "请选择药品类型", trigger: "blur" }
],
categoryIdLevel3:[
{ required: true, message: "请选择一级类目", trigger: "blur" }
],
categoryIdLevel4:[
{ required: true, message: "请选择二级类目", trigger: "blur" }
],
categoryIdLevel5:[
{ required: true, message: "请选择三级类目", trigger: "blur" }
],
specification_url:[
{ required: true, message: "请上传药品说明书", trigger: "blur" }
],
// otc:[
// { required: true, message: "请选择是否是处方", trigger: "blur" }
// ],
dynamicFlag: [
{ required: true, message: "请选择内容发布权", trigger: "blur" },
],
}
const rules2 = {
barCode: [
{ required: true, message: "请输入条形码", trigger: "submit" },
{ validator: checkBarcode, trigger: "submit" }
],
checkName: [{ required: true, message: "请输入检测名称", trigger: "blur" }],
hospitalName: [{ required: true, message: "请输入医疗机构名称", trigger: "blur" }],
hospitalType: [{ required: true, message: "请选择医疗机构类型", trigger: "blur" }],
checkItem: [{ required: true, message: "请输入检测项目", trigger: "blur" }],
checkStandard: [{ required: true, message: "请输入检测指标", trigger: "blur" }],
useCount: [{ required: true, message: "请输入使用人数", trigger: "submit" },{validator: checkNumber, trigger: "submit"}],
checkType: [{ required: true, message: "请选择检测类型", trigger: "blur" }],
suitableStr: [{ required: true, message: "请选择适用人群", trigger: "blur" }],
endTime: [{ required: true, message: "请选择商品使用日期", trigger: "blur" }],
// goodsCheckImages: [
// { required: true, message: "请上传检测说明图", trigger: "blur" }
// ],
}
const rules = {
barCode: [
{ required: true, message: "请输入条形码", trigger: "submit" },
{ validator: checkBarcode, trigger: "submit" }
],
goodsName: [
{ required: true, message: "请输入商品名称", trigger: "submit" },
{ validator: checkProjectStr, trigger: "submit" }
],
goodsHeaderImages: [
{ required: true, message: "请上传商品头图", trigger: "blur" }
],
goodsType:[
{ required: true, message: "请选择商品类型", trigger: "change" }
],
optPrice: [
{ required: true, message: "请输入零售价", trigger: "blur" },
],
// introduce: [
// { required: true, message: "请输入圈子介绍", trigger: "blur" },
// {
// min: 2,
// max: 40,
// message: "输入长度为2-40的内容,可包含中英文、数字及特殊符号",
// trigger: "blur"
// },
// { validator: checkProjectStr, trigger: "blur" }
// ],
}
export const originRules1 = rules1;
export const originRules2 = rules2;
export const originRules = rules;
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册