提交 205ccecf 编写于 作者: 张平's avatar 张平

Merge branch 'dev-check-serve-20201103' into 'release'

Dev check serve 20201103 新建商品 增加检测服务类型

Dev check serve 20201103  新建商品 增加检测服务类型

See merge request !232
......@@ -310,6 +310,9 @@ export default [{
{
path: '/create-good',
component: createGood,
meta: {
keepAlive: false //页面不需要缓存
},
},
{
path: '/order-detail',
......
......@@ -56,7 +56,7 @@ service.interceptors.request.use(config => {
// console.log('环境变量>>>> ', process.env.BUILD_ENV);
// config.headers['token'] = 'BFD804F3A3194FBBBE113962222839F6';
// config.headers['token'] = 'F8209898391C40A0B8DBC1ED9E157291';
config.headers['token'] = 'AAAA3AA4233E45CCBE5CABD476C9D6F8';
config.headers['token'] = '00AB2FF7626D4F5FB627399EDF23F5DC';
}else{
config.headers['token'] = localStorage.getItem('storageToken')
}
......
......@@ -54,8 +54,8 @@ service.interceptors.request.use(config => {
}
if( process.env.BUILD_ENV == "development" ){ // 本地开发环境qgit
// console.log('环境变量>>>> ', process.env.BUILD_ENV);
config.headers['token'] = 'C5172D7D7825463CA46752A894236AC2';
// config.headers['token'] = localStorage.getItem('storageToken')
// config.headers['token'] = '00AB2FF7626D4F5FB627399EDF23F5DC';
config.headers['token'] = localStorage.getItem('storageToken')
}else{
config.headers['token'] = localStorage.getItem('storageToken')
}
......
......@@ -13,6 +13,14 @@ export const getGoodsList = (params) => {
description: '商品列表查询',
})
};
export const getGoodDetails = (goodsId) => {
return fetch({
headers,
url: getBaseUrl(`store/goods/medical/service/detail/${goodsId}/-1`),
method: 'get',
description: '商品详情查询',
})
}
export const uploadExcel = data => {
// return utils.checkAuth(()=>{
return fetch({
......@@ -43,6 +51,15 @@ export const updateGoods = (params) => {
description: '创建/更新商品',
})
};
export const updateGoodsV2 = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/goods/medical/service/upsert`),
method: 'post',
data: params,
description: '创建/更新商品',
})
};
///dosage/all
export const dosageAll = (parm) => {
return fetch({
......@@ -75,3 +92,14 @@ export const updateStock = (parm) => {
description: '增加/减少库存',
})
};
// http://dev-sc.yunqueyi.com/store/getHospitalInfoByStoreId?storeId=85
// GET header:token
export const getHospitalInfoByStoreId = (storeId) => {
return fetch({
headers,
url: getBaseUrl(`store/getHospitalInfoByStoreId?storeId=${storeId}`),
method: 'get',
description: '',
})
};
\ No newline at end of file
......@@ -39,7 +39,6 @@
<el-input
type="textarea"
rows="4"
size="small"
v-model="formData.goodsDescription"
placeholder="请输入商品介绍"
......@@ -83,10 +82,11 @@
v-model="formData.goodsType"
placeholder="请选择商品类型"
size="small"
:disabled="isEdit"
@change="getGoodsTypes(formData.goodsType,2)">
<el-option
v-for="(item,index) in oneLever"
:key="index"
:key="item.categoryName+'-'+index"
:label="item.categoryName"
:value="item.id"
></el-option>
......@@ -94,17 +94,26 @@
</el-form-item>
<!-- <p class="upload-message" v-if="uploadImgMessage1">请上传商品头图</p> -->
</div>
</el-form>
<div class="basic-item-icon" v-if="isMedic">
<el-form
ref="formData1"
: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>
<el-form-item label="条形码" prop="barCode">
<el-col :span="18">
<el-input
size="small"
v-model="formData.barCode"
v-model="formData1.barCode"
placeholder="请输入条形码"
></el-input>
<span class="fast-opt" @click="fastInput">快速录入</span>
<span class="fast-opt" @click="fastInput(1)">快速录入</span>
<span class="word-num">(点击可快速录入下面的药品信息)</span>
</el-col>
</el-form-item>
......@@ -112,7 +121,7 @@
<el-col :span="18">
<el-input
size="small"
v-model="formData.approvalNumber"
v-model="formData1.approvalNumber"
placeholder="请输入批准文号"
style="width:50%;"
></el-input>
......@@ -123,7 +132,7 @@
<el-col :span="13">
<el-input
size="small"
v-model="formData.medicCommonName"
v-model="formData1.medicCommonName"
placeholder="请输入药品通用名称"
style="width:70%;"
maxlength="60"
......@@ -137,7 +146,7 @@
<el-col :span="13">
<el-input
size="small"
v-model="formData.medicGoodsName"
v-model="formData1.medicGoodsName"
placeholder="请输入药品商品名称"
maxlength="60"
......@@ -151,7 +160,7 @@
<el-col :span="13">
<el-input
size="small"
v-model="formData.size"
v-model="formData1.size"
placeholder="请输入药品规格"
style="width:70%;"
></el-input>
......@@ -162,13 +171,13 @@
<div class="inline">
<el-form-item label="是否是处方药" prop="otc1">
<el-col :span="24">
<el-radio size="mini" v-model="formData.otc1" label="1">处方药</el-radio>
<el-radio v-model="formData.otc1" label="0">非处方药</el-radio>
<el-radio size="mini" v-model="formData1.otc1" label="1">处方药</el-radio>
<el-radio v-model="formData1.otc1" label="0">非处方药</el-radio>
</el-col>
</el-form-item>
<el-form-item label="剂型" prop="dosageId">
<el-select
v-model="formData.dosageId"
v-model="formData1.dosageId"
placeholder="请选择药品剂型"
size="small"
clearable>
......@@ -185,7 +194,7 @@
<el-col :span="13">
<el-input
size="small"
v-model="formData.usage"
v-model="formData1.usage"
placeholder="请输入用法用量"
style="width:70%;"
></el-input>
......@@ -196,10 +205,10 @@
<el-form-item label="药品类型" prop="categoryIdLevel2">
<el-select
v-model="formData.categoryIdLevel2"
v-model="formData1.categoryIdLevel2"
placeholder="请选择药品类型"
size="small"
@change="getLever(formData.categoryIdLevel2,3)"
@change="getLever(formData1.categoryIdLevel2,3)"
clearable
>
<el-option
......@@ -213,10 +222,10 @@
<div class="inline">
<el-form-item label="一级类目" prop="categoryIdLevel3" >
<el-select
v-model="formData.categoryIdLevel3"
v-model="formData1.categoryIdLevel3"
placeholder="请选择一级类目"
size="small"
@change="getLever(formData.categoryIdLevel3,4)"
@change="getLever(formData1.categoryIdLevel3,4)"
>
<el-option
v-for="(item,index) in threeLever"
......@@ -228,10 +237,10 @@
</el-form-item>
<el-form-item label="二级类目" prop="categoryIdLevel4" >
<el-select
v-model="formData.categoryIdLevel4"
v-model="formData1.categoryIdLevel4"
placeholder="请选择二级类目"
size="small"
@change="getLever(formData.categoryIdLevel4,5)"
@change="getLever(formData1.categoryIdLevel4,5)"
>
<el-option
v-for="(item,index) in fourLever"
......@@ -243,7 +252,7 @@
</el-form-item>
<el-form-item label="三级级类目" prop="categoryIdLevel5">
<el-select
v-model="formData.categoryIdLevel5"
v-model="formData1.categoryIdLevel5"
placeholder="请选择三级类目"
size="small"
>
......@@ -260,7 +269,7 @@
<el-col :span="13">
<el-input
size="small"
v-model="formData.manufacturer"
v-model="formData1.manufacturer"
placeholder="请输入生产厂家"
style="width:70%;"
></el-input>
......@@ -272,7 +281,7 @@
<el-form-item label="适用科室" prop="department">
<el-input
size="small"
v-model="formData.department"
v-model="formData1.department"
placeholder="请输入适用科室"
></el-input>
......@@ -294,7 +303,7 @@
<el-col :span="24">
<el-input
size="small"
v-model="formData.treatDisease"
v-model="formData1.treatDisease"
placeholder="请输入治疗疾病"
></el-input>
......@@ -308,7 +317,7 @@
<el-col :span="13">
<el-input
size="small"
v-model="formData.expiredTime"
v-model="formData1.expiredTime"
placeholder="请输入有效期"
style="width:70%;"
></el-input>
......@@ -355,13 +364,285 @@
<p class="upload-message" v-if="!isSpecification_url">请上传药品说明书</p>
</el-form-item>
</div>
</el-form>
<!-- =========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start========================================================= -->
<el-form
ref="formData2"
: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>
<el-form-item label="条形码" prop="barCode">
<el-col :span="18">
<el-input
size="small"
v-model="formData2.barCode"
placeholder="请输入条形码"
></el-input>
<!-- <span class="fast-opt" @click="fastInput(2)">快速录入</span>
<span class="word-num">(点击可快速录入下面的药品信息)</span> -->
</el-col>
</el-form-item>
<el-form-item label="检测登记表" prop="checkPackageId">
<el-select
v-model="formData.checkPackageId"
placeholder="请选择"
size="small"
>
<el-option label="其他" value="''">其他</el-option>
</el-select>
</el-form-item>
<el-form-item label="检测名称" prop="checkName">
<el-col :span="13">
<el-input
size="small"
v-model="formData2.checkName"
placeholder="请输入检测名称"
show-word-limit
maxlength="60"
></el-input>
</el-col>
</el-form-item>
<el-form-item label="医疗机构名称" prop="hospitalName">
<el-col :span="13">
<el-input
size="small"
v-model="formData2.hospitalName"
placeholder="请输入医疗机构名称"
show-word-limit
></el-input>
</el-col>
</el-form-item>
<el-form-item label="医疗机构类型" prop="hospitalType">
<el-select
v-model="formData2.hospitalType"
placeholder="请选择"
size="small"
>
<el-option
v-for="(item,index) in hospitalTypeList"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="检测项目" prop="checkItem">
<el-col :span="13">
<el-input
type="textarea"
rows="4"
size="small"
v-model="formData2.checkItem"
placeholder="请输入检测项目"
maxlength="400"
show-word-limit
></el-input>
</el-col>
</el-form-item>
<el-form-item label="检测指标" prop="checkStandard">
<el-col :span="13">
<el-input
type="textarea"
rows="4"
size="small"
v-model="formData2.checkStandard"
placeholder="请输入检测指标"
maxlength="400"
show-word-limit
></el-input>
</el-col>
</el-form-item>
<el-form-item label="使用人数" prop="useCount" class="required-label">
<el-col :span="20">
<div class="stock-com">
<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">
<el-input
type="number"
rows="4"
size="small"
v-model="formData2.useCount"
placeholder="请输入使用人数"
></el-input>
<!-- <input style="text-align:center;width:100%;height:100%;border:none;outline:none;" v-model="formData.useCount" type="text" placeholder="0"> -->
</span>
<span class="sp sp-r" @click="formData2.useCount++"><i class="el-icon-plus"></i></span>
</div>
<!-- <p class="error-message" v-if="formData.useCount<=0">使用人数必须大于0</p> -->
</el-col>
</el-form-item>
<el-form-item label="检测类型" prop="checkType">
<el-select
v-model="formData2.checkType"
placeholder="请选择"
size="small"
>
<el-option
v-for="(item,index) in checkTypeList"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="适用人群" prop="suitableArr">
<el-select
v-model="formData2.suitableArr"
:multiple="true"
placeholder="请选择"
size="small"
>
<el-option
v-for="(item,index) in suitableList"
:key="item+'_'+index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="附加服务" prop="accessorialService">
<el-col :span="13">
<el-input
type="textarea"
rows="4"
size="small"
v-model="formData2.accessorialService"
placeholder="请输入附加服务"
maxlength="400"
show-word-limit
></el-input>
</el-col>
</el-form-item>
<el-form-item label="商品使用日期" prop="endTime" class="required-label">
<el-date-picker
v-model="formData2.endTime"
size="small"
type="datetime"
placeholder="请选择商品使用日期"
value-format="yyyy-MM-dd HH:mm:ss.SSS"
format="yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
<!-- <el-form-item label="商品使用日期" prop="endTime">
<el-col :span="13">
<el-input
size="small"
v-model="formData2.endTime"
placeholder="请输入商品使用日期"
style="width:70%;"
></el-input>
<span class="word-num"></span>
</el-col>
</el-form-item> -->
<el-form-item label="检测说明" >
<el-upload
:file-list="goodsCheckList"
class="bg-uploader"
:show-file-list="isShowFileList"
action="#"
:before-upload="beforeUploadPic2"
>
<div class="file-pics" :key="index" v-for="(item,index) in goodsCheckList">
<img :src="item.url" @mouseover.stop="headIndex=index" class="bg-img"/>
<div
class="img-delete"
v-if="headIndex==index"
@click.stop="deleteImg(item,goodsCheckList)"
@mouseout.stop="headIndex=-1"
>
<i class="el-icon-delete"></i>
</div>
</div>
<img class="bg-img" src="../../assets/image/small.png" v-if="goodsCheckList.length <10"/>
<div class="limit-text">
<p>尺寸:686 * 高度不变</p>
<p>支持jpeg, png格式</p>
</div>
</el-upload>
<p class="upload-message" v-if="!isgoodsImages">请上传检测说明图</p>
</el-form-item>
</div>
</el-form>
<!-- =========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start=========================================================
=========================================================调试新增检测服务 start========================================================= -->
<el-form
ref="formData"
:model="formData"
:rules="rules"
label-width="150px"
label-suffix=":"
class="basic-form"
>
<div class="basic-item-icon">
<div class="part-tit">销售信息</div>
<div class="inline">
<el-form-item label="零售价" prop="optPrice">
<el-col :span="20">
<el-input
@input="$forceUpdate();"
size="small"
v-model="formData.optPrice"
placeholder="请输入零售价"
......@@ -443,33 +724,20 @@
let vm = null;
import { openLoading, closeLoading } from "../../utils/utils";
import { doUpload, getFilePath } from "../../utils/qiniu-util";
import { updateGoods ,updateStock,dosageAll,getDeparts,getGoodsList} from '@/utils/goods';
import { updateGoods ,updateStock,dosageAll,getDeparts,getGoodsList, getGoodDetails, updateGoodsV2, getHospitalInfoByStoreId } from '@/utils/goods';
import Cropper from '@/components/common/cropper.vue'
import { mapGetters } from "vuex";
import { originRules1, originRules2, originRules } from './rules';
import { originForm1, originForm2, originForm } from './forms';
export default {
components: {
BreadCrumb,
Cropper
},
data(){
let checkProjectStr = (rule, value, callback) => {
if (value.indexOf("\\") != -1) {
//存在
callback(new Error("请勿输入字符“ \\ "));
} else if (value.indexOf(".") != -1) {
callback(new Error("请勿输入字符“ . "));
} else {
callback();
}
};
const checkBarcode = (rule, value, cb) => {
const valedBarcode = new RegExp("[\\u4E00-\\u9FFF]+","g");
if(value && valedBarcode.test(value)) cb(new Error('条形码不能输入中文'));
cb();
}
return{
isEdit: false,
stock:{
title:'减少库存',
type:1,
......@@ -478,6 +746,7 @@
},
doseAll:[],
fileGoodsList:[],
goodsCheckList: [],
fileIntrList:[],
intrIndex:-1,
isShowFileList:false,
......@@ -516,44 +785,26 @@
label: '其他',
value: '3',
}],
formData: {
medicationId: 0,
optPrice:0,
id:'',
categoryId:'',
categoryIdLevel2: '',
categoryIdLevel3: '',
categoryIdLevel4: '',
categoryIdLevel5: '',
goodsName:'',
goodsDescription:'',
goodsImages:[],
goodsType:'',
medicCommonName:'',
medicGoodsName:'',
size:'',
dosageId:null,
usage:'',
otc:false,
otc1:'1',
approvalNumber:'',
manufacturer:'',
department:'',
expiredTime:'',
specification_url:'',
treatDisease:'',
barCode:'',
discountPrice:'',
stock:0,
goodsStock:0,
specificationImages:[],
goodsId:'',
costPrice:'',
decrStock:'',//减少库存
incrStock:'',//增加库存
checkPackageList: [], // 检测登记表
hospitalTypeList: [{label:'村卫生室',value:1},{label:'乡镇卫生院/中心',value:2}], // 医疗机构类型
checkTypeList: [{label:'常规检测',value:1}], // 检测类型
suitableList: [{label:'儿童',value:'1'},{label:'青年',value:'2'},{label:'中年',value:'4'},{label:'老年',value:'8'}], // 适用人群
// 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段
formData: JSON.parse(JSON.stringify(originForm)),
formData1: JSON.parse(JSON.stringify(originForm1)),
formData2: JSON.parse(JSON.stringify(originForm2)),
rules: {},
rules1: {},
rules2: {},
goodsId: 0, // 新增时传0,更新时必需>0
goodsType: '',
storeId: '',
externalGoodsCode: '',
},
// 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段
showCropper: false,
currentOption: {
offset_x: 120,
......@@ -572,93 +823,30 @@
slide2: {
oriUrl: '', // 原图
},
rules: {
goodsName: [
{ required: true, message: "请输入商品名称", trigger: "blur" },
{
// min: 2,
// max: 14,
//message: "输入长度为2-14的内容,可包含中英文、数字及特殊符号",
trigger: "blur"
},
{ validator: checkProjectStr, trigger: "blur" }
],
introduce: [
{ required: true, message: "请输入圈子介绍", trigger: "blur" },
{
min: 2,
max: 40,
message: "输入长度为2-40的内容,可包含中英文、数字及特殊符号",
trigger: "blur"
},
{ validator: checkProjectStr, trigger: "blur" }
],
goodsImages: [
{ required: true, message: "请上传商品头图", trigger: "blur" }
],
goodsType:[
{ required: true, message: "请选择商品类型", trigger: "change" }
],
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" }
],
otc:[
{ required: true, message: "请选择是否是处方", trigger: "blur" }
],
specification_url:[
{ required: true, message: "请上传药品说明书", trigger: "blur" }
],
barCode: [
{ required: false, message: "请输入条形码", trigger: "blur" },
{ validator: checkBarcode, trigger: "blur" }
],
optPrice: [
{ required: true, message: "请输入零售价", trigger: "blur" },
],
dynamicFlag: [
{ required: true, message: "请选择内容发布权", trigger: "blur" },
]
},
imgMouseOver1: false,
uploadImgMessage1: false,//未上传图片,校验提示语
isMedic:false,
isMedic:false, // 商品类型选择【药品】时!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
isCheckServe: false, // 商品类型选择【检测服务】时!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
},
computed: {
...mapGetters(["goodsInfo"])
},
created() {
vm = this;
const { id, storeId, goodsType } = this.$route.query;
this.goodsType = goodsType;
this.storeId = storeId;
// this.formData = originForm;
// this.formData1 = originForm1;
// this.formData2 = originForm2;
this.rules = originRules;
this.rules1 = originRules1;
this.rules2 = originRules2;
this.rules2.barCode = originRules.barCode;
const {id, storeId} = this.$route.query
this.jumPathThird = '/goods-manage?storeId='+storeId
//this.jumPathThird = '/create-good?id=add&storeId=46'
this.title = id == 'add' ? '新增商品' : '编辑商品'
this.curmbThird = this.title
this.title = id == 'add' ? '新增商品' : '编辑商品';
this.isEdit = id != 'add';
this.curmbThird = this.title;
this.formData.storeId = Number(storeId) || '';
this.getLever(0,1)
dosageAll().then((res)=>{
......@@ -669,25 +857,58 @@
this.allDeparts = res.data
})
if(id != 'add'){
// let goods = Object.assign(this.goodsInfo,{})
// this.formData = {...goods}
// console.log(goods)
this.getDetailByEdit(id)
this.getDetailByEdit(id, goodsType);
}
},
methods: {
//eidt状态
getDetailByEdit(id){
let parm = {
async getDetailByEdit(id, goodsType){
this.goodsId = id ;
if(goodsType == 337){
this.isCheckServe = true;
const res = await getGoodDetails(id);
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.formData = {...this.formData, ...goodsInfo};
this.formData2 = medicalService;
this.formData = { ...this.formData, ...this.formData2 };
this.$set(this.formData2, 'suitableArr', this.formData.suitable.split(','));
this.$set(this.formData, 'suitableArr', this.formData.suitable.split(','));
this.formData.optPrice = this.formData.costPrice/100;
this.formData.stock = this.formData.goodsStock;
this.fileGoodsList = this.getImges(goodsInfo.goodsHeaderImages,1);
this.goodsCheckList = this.getImges(medicalService.goodsCheckImages, goodsType);
this.rules = {
...this.rules,
...originRules
};
}else{
this.isMedic = true;
const res = await getGoodsList({
goodsIdList:[id],
goodsName :'',
goodsType :'',
pageNo:1,
pageSize: 10,
}
getGoodsList(parm).then((res)=>{
});
if(res.code != '000000'){
return this.$message({
message: res.message,
......@@ -697,18 +918,16 @@
closeLoading(this);
if(res.data == null){
return this.$message({
message: '数据加载失败',
type: 'error'
});
}
const {goodsList} = res.data
this.formData = Object.assign(this.formData,{...goodsList[0]})
const {goodsList} = res.data;
this.formData1 = goodsList[0];
this.formData = goodsList[0];
this.formData.optPrice = this.formData.costPrice/100;
this.fileGoodsList = this.getImges(goodsList[0].goodsImgList,1)
this.fileIntrList = this.getImges(goodsList[0].medicImgList,2)
this.isMedic = this.formData.goodsType == 5 ? true : false
this.formData.stock = this.formData.goodsStock
console.log(this.formData.otc)
this.fileGoodsList = this.getImges(goodsList[0].goodsImgList,1);
this.fileIntrList = this.getImges(goodsList[0].medicImgList,2);
this.formData.stock = this.formData.goodsStock;
this.formData.otc1 = this.formData.otc ? '1' : '0'
if(this.isMedic){
this.getLever(5,2,1)
......@@ -723,12 +942,16 @@
if(categoryIdLevel4 != -1){
this.getLever(categoryIdLevel4,5,1)
}
console.log(this.formData)
//this.totalRows = res.data.totalCount
})
},
this.rules = {
...this.rules,
...originRules
};
}
console.log(this.formData);
},
getImges(d,type){
let a = [];
if(d.length > 0){
......@@ -736,17 +959,18 @@
a.push({
url: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,
imageSort: d[i].imageSort,
imgSort: d[i].imgSort,
imageType: type == 1 ? d[i].imgType : d[i].imageType,
})
}
}
return a;
},
//快速录入
fastInput(){
fastInput(type){
///medications/query/{approvalnumber}
if(this.formData.barCode == ''){
this.$refs.formData.validateField("barCode")
......@@ -817,13 +1041,23 @@
});
},
getGoodsTypes(id,type){
if(id == 5 ){
getGoodsTypes(goodsType,type){
this.goodsType = goodsType;
if(goodsType == 5){
this.isMedic = true;
this.getLever(id,type)
this.isCheckServe = false;
this.getLever(goodsType,type);
} else if(goodsType == 337){
this.isMedic = false;
this.isCheckServe = true;
getHospitalInfoByStoreId(this.storeId).then(({code,message,data})=>{
this.formData2.hospitalName = data.hospital;
})
}else{
this.isMedic = false;
}
this.isCheckServe = false;
};
console.log(this.formData);
},
defaultArr(){
let a = [
......@@ -834,7 +1068,6 @@
]
return a
},
//获取分类
getLever(id,type,parm){
......@@ -849,7 +1082,7 @@
//this.twoLever = res.data || this.defaultArr()
res.data = res.data.length > 0 ? res.data.concat([{categoryName: "其他",id:-1}]) : this.defaultArr()
this.twoLever = res.data
console.log(this.twoLever)
// console.log(this.twoLever)
}else if(type == 3){
// res.data = res.data.push({categoryName: "其他",id:-1})
res.data = res.data.length > 0 ? res.data.concat([{categoryName: "其他",id:-1}]) : this.defaultArr()
......@@ -877,7 +1110,6 @@
}
});
},
updateStock(){
let r = /^\+?[1-9][0-9]*$/;
//造假 接口来了删掉
......@@ -912,8 +1144,6 @@
//this.formData.goodsStock = this.formData.stock
this.stockDio = false
},
changeStock(type){
if(this.formData.stock == 0 && type == 1){
return;
......@@ -929,16 +1159,16 @@
}
this.stockDio = true
},
complete() {
let formName = "formData";
// let goodsImgList = this.fileGoodsList.map((item, index) => {
// item.imageSort = index+1;
// })
// console.log(this.fileGoodsList)
// let specificationImgList = this.fileIntrList.map((item, index) => {
// item.imageSort = index+1;
// })
let formNameList = ['formData', 'formData1', 'formData2'];
// let formName = "formData";
if(this.goodsType == 337 ){
formNameList = ['formData', 'formData2'];
this.formData = { ...this.formData, ...this.formData2 };
}else{
formNameList = ['formData', 'formData1'];
this.formData = { ...this.formData, ...this.formData1 };
}
for(let i=0;i<this.fileGoodsList.length;i++){
this.fileGoodsList[i].imageSort = i+1
}
......@@ -946,52 +1176,73 @@
this.fileIntrList[j].imageSort = j+1
}
this.formData.goodsImages = this.fileGoodsList;
this.formData.specificationImages = this.fileIntrList;
this.isgoodsImages = this.formData.goodsImages.length == 0 ? false :true;
// this.isSpecification_url = this.formData.specificationImages.length == 0 ? false : true
this.formData.categoryId = this.formData.goodsType
this.formData.otc = this.formData.otc1 == 1 ? true : false
this.isgoodStock = this.formData.stock > 0 ? true : false
console.log(this.isgoodStock)
this.formData.goodsId = this.goodsId;
// 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.isgoodsImages){
return;
}
// if(!this.isSpecification_url){
// return;
// }
}
// 如果是【检测服务】类型的商品
if(this.isCheckServe){
this.formData.goodsCheckImages = this.goodsCheckList;
const { suitableArr } = this.formData2;
this.formData2.suitable = this.formData.suitable = suitableArr.join(',');
this.formData.medicalServiceId = this.formData.medicationId;
}
if(!this.isgoodStock){
return;
}
this.$refs[formName].validate((valid) => {
if (valid) {
//alert('submit!');
this.updateGoodsInfo();
} else {
console.log('error submit!!');
let isTrue = false;
formNameList.map(item=>{
this.$refs[item].validate((valid) => {
isTrue = valid;
if (!valid) return false;
});
});
if(!isTrue){
return false;
}else{
this.formData.costPrice = this.formData.optPrice*100
this.formData.hasChanged = true;
this.updateGoodsInfo();
}
});
},
// this.$refs[formName].validate((valid) => {
// if (valid) {
// //alert('submit!');
// this.formData.costPrice = this.formData.optPrice*100
// this.formData.hasChanged = true;
// this.updateGoodsInfo();
// } else {
// console.log('error submit!!');
// return false;
// }
// });
},
//更新商品
updateGoodsInfo(){
//this.formData.incrStock = 1000
this.formData.costPrice = this.formData.optPrice*100
this.formData.hasChanged = true;
console.log('提交值',this.formData);
updateGoods(this.formData).then((res)=>{
const submieFn = this.isCheckServe ? updateGoodsV2 : updateGoods;
submieFn(this.formData).then((res)=>{
if (res.code !== '000000') {
// return this.$message.error(res.message);
return this.$message({
message: res.message,
type: 'error'
});
}
vm.$message.success("操作成功");
this.$router.push({
path: '/goods-manage',
......@@ -1012,12 +1263,7 @@
const isLt200k = file.size / 1024 < 200;
if (picTypes.indexOf(file.type) == -1) {
return this.$message.error("请上传jpeg或png格式的图片");
}
// if (!isLt200k) {
// return vm.$message.error("图片大小请控制在200kb以内");
// }
let _img = new FileReader();
_img.readAsDataURL(file);
......@@ -1028,39 +1274,50 @@
image.onload = function () {
let _this = this;
console.log(_this.width,_this.height)
// if (_this.width != fileLimit.width || _this.height != fileLimit.height) {
//if (_this.width == 750 && _this.height == 420) {
openLoading(vm);
doUpload(vm, file, getFilePath(file, null), "preview4", "progress1", 1).then(function (path) {
closeLoading(vm);
console.log('上传成功后路径', path);
// if (fileLimit.show == "uploadImgMessage1") {
// vm.uploadImgMessage1 = false;
// } else if (fileLimit.show == "uploadImgMessage2") {
// vm.uploadImgMessage2 = false;
// }
let len = vm.fileGoodsList.length;
vm.fileGoodsList.push({url:path.fullPath,imageUrl:path.fullPath,imageName:'',imageSort: len+1,imageType: 2,id: null,})
//vm.formData.goodsImages = path.fullPath
vm.fileGoodsList.push({ url: path.fullPath, goodsImgUrl: path.fullPath,imageUrl:path.fullPath, imgSort: len+1,imageSort: 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("上传成功");
});
// } else {
// return vm.$message.error("图片尺寸不符合规范,请根据规范上传图片");
// }
};
};
// openLoading(vm);
// doUpload(vm, file, getFilePath(file, null), "preview4", "progress1", 1).then(function (path) {
// closeLoading(vm);
// console.log('上传成功后路径', path);
// vm.formData.goodsImages = path.fullPath
// vm.$message.success("上传成功");
// });
},
// 上传检测说明图
beforeUploadPic2(file) {
if(this.fileGoodsList.length > 10){
return ;
}
let vm = this;
let picTypes = ['image/jpeg','image/png']
const isLt200k = file.size / 1024 < 200;
if (picTypes.indexOf(file.type) == -1) {
return this.$message.error("请上传jpeg或png格式的图片");
}
let _img = new FileReader();
_img.readAsDataURL(file);
_img.onload = function (theFile) {
let image = new Image()
image.src = theFile.target.result
vm.slide2.oriUrl = theFile.target.result;
image.onload = function () {
let _this = this;
console.log(_this.width,_this.height)
openLoading(vm);
doUpload(vm, file, getFilePath(file, null), "preview4", "progress1", 1).then(function (path) {
closeLoading(vm);
console.log('上传成功后路径', path);
let len = vm.goodsCheckList.length;
vm.goodsCheckList.push({ url: path.fullPath, imageUrl: path.fullPath, imageSort: len+1, id: vm.formData.goodsId });
vm.$message.success("上传成功");
});
};
};
},
//上传药品说明
beforeUploadPic1(file,type) {
......
const form1 = {
categoryIdLevel2: '',
categoryIdLevel3: '',
categoryIdLevel4: '',
categoryIdLevel5: '',
medicCommonName:'',
medicGoodsName:'',
size:'',
dosageId:null,
usage:'',
otc1:'1',
approvalNumber:'',
manufacturer:'',
department:'',
expiredTime:'',
specification_url:'',
treatDisease:'',
barCode: '',
}
const form2 = {
checkPackageId: '', // 检测登记表,暂无,先隐藏!!!!!!!!!!!
checkName: '',
hospitalName: '',
hospitalType: '',
hospitalId: 0,
medicalServiceId: 0, // 新增时传0,更新时必需>0
goodsCheckImages: [],
checkItem: '',
checkStandard: '',
useCount: 1,
checkType: '',
suitable: '',
suitableArr: '',
accessorialService: '',
endTime: '',
barCode: '',
// medicalServiceId: ''
}
const form = {
// medicationId: 0,
// categoryId:'',
// otc:false,
// discountPrice:'',
// specificationImages:[],
// goodsId: 0, // 新增时传0,更新时必需>0
id: 0,
goodsName:'',
goodsDescription:'',
goodsHeaderImages:[],
goodsType:'',
barCode: '',
costPrice:0,
decrStock:0,//减少库存
incrStock:'',//增加库存
storeId: '',
optPrice:'',
goodsStock:0,
stock: 0,
externalGoodsCode: ''
};
export const originForm1 = form1;
export const originForm2 = form2;
export const originForm = form;
\ No newline at end of file
......@@ -192,7 +192,10 @@
},{
categoryName: "药品",
id: 5,
}]
},{
categoryName: "检测服务",
id: 337,
}];
export default {
components: {
BreadCrumb
......@@ -413,13 +416,14 @@
}
},
edit(row){
const { goodsType } = row;
let url = ''
if(row == 'add'){
url = `/create-good?id=add&storeId=${this.searchForm.storeId}`
}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({
path: url
})
......
......@@ -213,7 +213,7 @@
@close="showTuiDialog = false"
width="385px"
>
<el-form ref="tuiForm" :model="tuiForm" label-width="120px">
<el-form ref="tuiForm" :rules="rules" :model="tuiForm" label-width="120px">
<el-form-item label="退款退货方式:">
<el-select v-model="tuiForm.type" placeholder="请选择退货方式">
<el-option
......@@ -228,6 +228,15 @@
<el-form-item label="退款金额" prop="name">
<el-input v-model="tuiForm.money" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="退款对象" prop="userName">
<el-select v-model="userType" placeholder="请选择退款对象">
<el-option
v-for="item in userTypes"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" type="primary" @click="confirmTui">完成</el-button>
......@@ -286,6 +295,9 @@
orderNum: [
{ required: true, message: '请输入快递单号', trigger: "blur"},
],
userName: [
{ required: true, message: '请选择退款对象', trigger: "blur"},
],
},
showTuiDialog: false,
tuiForm: {
......@@ -309,10 +321,22 @@
value: 2,
disabled: true
}
],
userType: "", // 1.开单医生, 2.支付用户
userTypes: [
{
label: '开单医生',
value: 1,
},
{
label: '支付用户',
value: 2,
},
]
}
},
created() {
console.log("order created() : enter");
this.searchForm.storeId = this.$route.query.storeId || 0,
this.searchList();
},
......@@ -481,7 +505,11 @@
this.showTuiDialog = true;
},
confirmTui() {
refundApply({ orderId: this.tuiForm.order.id }).then(res => {
if (this.userType == null || this.userType == "") {
this.$message.error("请选择退款对象");
return;
}
refundApply({ orderId: this.tuiForm.order.id, userType: this.userType }).then(res => {
if (res.code == '000000') {
this.$message.success('操作成功');
this.showTuiDialog = false;
......
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 = {
barCode: [
{ required: true, message: "请输入条形码", trigger: "submit" },
{ validator: checkBarcode, trigger: "submit" }
],
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" }],
suitableArr: [{ 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 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册