提交 e3e42d99 编写于 作者: chendeli's avatar chendeli

接口联调

上级 ad17dc8a
import fetch from '../fetch';
import { getBaseUrl } from '@/utils/index'
let headers = {
'Content-Type': 'application/json;charset=UTF-8',
token: localStorage.getItem('storageToken'),
};
export const getGoodsList = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/goods/query`),
method: 'post',
data: params,
description: '商品列表查询',
})
};
//
export const batchOnOff = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/goods/onoff/sale`),
method: 'post',
data: params,
description: '批量上下架',
})
};
export const updateGoods = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/goods/upsert`),
method: 'post',
data: params,
description: '创建/更新商品',
})
};
///dosage/all
export const dosageAll = (parm) => {
return fetch({
headers,
url: getBaseUrl(`store/dosage/all`),
method: 'get',
// params: params,
description: '剂型',
})
};
export const getDeparts = (parm) => {
return fetch({
headers,
url: getBaseUrl(`api-ws/departments/category`),
method: 'get',
// params: params,
description: '科室',
})
};
//`basic-data/constants?typeCode=P128`
export const updateStock = (parm) => {
return fetch({
headers,
url: getBaseUrl(`trade/order/admin/query/${orderId}`),
method: 'get',
// params: params,
description: '增加/减少库存',
})
};
...@@ -21,123 +21,122 @@ ...@@ -21,123 +21,122 @@
<div class="basic-item-icon"> <div class="basic-item-icon">
<div class="part-tit">通用信息</div> <div class="part-tit">通用信息</div>
<el-form-item label="商品名称" prop="goods_name"> <el-form-item label="商品名称" prop="goodsName">
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
v-model="formData.goods_name" v-model="formData.goodsName"
placeholder="请输入商品名称" placeholder="请输入商品名称"
show-word-limit show-word-limit
maxlength="60" maxlength="60"
></el-input> ></el-input>
<!-- <span class="word-num">{{(formData.goods_name).replace(/\s+/g,"").length}}/60</span> --> <!-- <span class="word-num">{{(formData.goodsName).replace(/\s+/g,"").length}}/60</span> -->
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="商品介绍" prop="goods_description"> <el-form-item label="商品介绍" prop="goodsDescription">
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
type="textarea" type="textarea"
rows="4" rows="4"
size="small" size="small"
v-model="formData.goods_description" v-model="formData.goodsDescription"
placeholder="请输入商品介绍" placeholder="请输入商品介绍"
maxlength="1000" maxlength="1000"
show-word-limit show-word-limit
></el-input> ></el-input>
<!-- <span class="word-num">{{(formData.goods_description).replace(/\s+/g,"").length}}/1000</span> --> <!-- <span class="word-num">{{(formData.goodsDescription).replace(/\s+/g,"").length}}/1000</span> -->
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="商品头图" class="required-label"> <el-form-item label="商品头图" class="required-label">
<el-upload <el-upload
v-model="formData.goods_image" :file-list="fileGoodsList"
class="bg-uploader" class="bg-uploader"
:show-file-list="isShowFileList"
action="#" action="#"
:show-file-list="false"
:before-upload="beforeUploadPic" :before-upload="beforeUploadPic"
> >
<img <div class="file-pics" v-if="fileGoodsList.length > 0" :key="index" v-for="(item,index) in fileGoodsList">
v-if="formData.goods_image" <img :src="item.url" @mouseover.stop="headIndex=index" class="bg-img"/>
:src="formData.goods_image" <div
@mouseover.stop="imgMouseOver1=true" class="img-delete"
class="bg-img" v-if="headIndex==index"
/> @click.stop="deleteImg(item,fileGoodsList)"
<img v-if="!formData.goods_image" class="bg-img" src="../../assets/image/small.png" /> @mouseout.stop="headIndex=-1"
<div >
class="img-delete" <i class="el-icon-delete"></i>
v-show="imgMouseOver1" </div>
@click.stop="deleteImg(1)"
@mouseout.stop="imgMouseOver1=false"
>
<i class="el-icon-delete"></i>
</div> </div>
<img class="bg-img" src="../../assets/image/small.png" />
<div class="limit-text"> <div class="limit-text">
<p>限制大小: 200kb</p> <p>限制大小: 200kb</p>
<p>最小尺寸:750*420</p> <p>建议尺寸:750*420</p>
<p>支持jpeg, png格式</p> <p>支持jpeg, png格式</p>
</div> </div>
</el-upload> </el-upload>
<p class="upload-message" v-if="!isGoods_image">请上传商品头图</p> <p class="upload-message" v-if="!isgoodsImages">请上传商品头图</p>
</el-form-item> </el-form-item>
<el-form-item label="商品类型" prop="goods_type"> <el-form-item label="商品类型" prop="goodsType">
<el-select <el-select
v-model="formData.goods_type" v-model="formData.goodsType"
placeholder="请选择商品类型" placeholder="请选择商品类型"
size="small" size="small"
@change="getGoodsTypes(formData.goodsType,2)"
clearable> clearable>
<el-option <el-option
v-for="(item,index) in typeList" v-for="(item,index) in oneLever"
:key="index" :key="index"
:label="item.label" :label="item.categoryName"
:value="item.value" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <p class="upload-message" v-if="uploadImgMessage1">请上传商品头图</p> --> <!-- <p class="upload-message" v-if="uploadImgMessage1">请上传商品头图</p> -->
</div> </div>
<div class="basic-item-icon"> <div class="basic-item-icon" v-if="isMedic">
<div class="part-tit">药品信息</div> <div class="part-tit">药品信息</div>
<el-form-item label="批准文号" prop="approval_number"> <el-form-item label="批准文号" prop="approvalNumber">
<el-col :span="13"> <el-col :span="18">
<el-input <el-input
size="small" size="small"
v-model="formData.approval_number" v-model="formData.approvalNumber"
placeholder="请输入批准文号" placeholder="请输入批准文号"
style="width:70%;" style="width:50%;"
></el-input> ></el-input>
<!-- <span class="word-num">{{(formData.name).replace(/\s+/g,"").length}}/60</span> --> <span class="fast-opt">快速录入</span>
<span class="word-num">(点击可快速录入下面的药品信息)</span>
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="药品通用名称" prop="medic_common_name"> <el-form-item label="药品通用名称" prop="medicCommonName">
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
v-model="formData.medic_common_name" v-model="formData.medicCommonName"
placeholder="请输入药品通用名称" placeholder="请输入药品通用名称"
style="width:70%;" style="width:70%;"
maxlength="60" maxlength="60"
show-word-limit show-word-limit
></el-input> ></el-input>
<!-- <span class="word-num">{{(formData.medic_common_name).replace(/\s+/g,"").length}}/60</span> --> <!-- <span class="word-num">{{(formData.medicCommonName).replace(/\s+/g,"").length}}/60</span> -->
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="药品商品名称" prop="medic_goods_name"> <el-form-item label="药品商品名称" prop="medicGoodsName">
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
v-model="formData.medic_goods_name" v-model="formData.medicGoodsName"
placeholder="请输入药品商品名称" placeholder="请输入药品商品名称"
maxlength="60" maxlength="60"
show-word-limit show-word-limit
></el-input> ></el-input>
<!-- <span class="word-num">{{(formData.medic_goods_name).replace(/\s+/g,"").length}}/60</span> --> <!-- <span class="word-num">{{(formData.medicGoodsName).replace(/\s+/g,"").length}}/60</span> -->
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="药品规格" prop="size"> <el-form-item label="药品规格" prop="size">
...@@ -153,23 +152,23 @@ ...@@ -153,23 +152,23 @@
</el-col> </el-col>
</el-form-item> </el-form-item>
<div class="inline"> <div class="inline">
<el-form-item label="是否是处方药" prop="otc"> <el-form-item label="是否是处方药" prop="otc1">
<el-col :span="24"> <el-col :span="24">
<el-radio size="mini" v-model="formData.otc" label="1">处方药</el-radio> <el-radio size="mini" v-model="formData.otc1" label="1">处方药</el-radio>
<el-radio v-model="formData.otc" label="0">非处方药</el-radio> <el-radio v-model="formData.otc" label="0">非处方药</el-radio>
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="剂型" prop="dosage_id"> <el-form-item label="剂型" prop="dosageId">
<el-select <el-select
v-model="formData.dosage_id" v-model="formData.dosageId"
placeholder="请选择药品剂型" placeholder="请选择药品剂型"
size="small" size="small"
clearable> clearable>
<el-option <el-option
v-for="(item,index) in typeList" v-for="(item,index) in doseAll"
:key="index" :key="index"
:label="item.label" :label="item.dosageName"
:value="item.value" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -187,64 +186,67 @@ ...@@ -187,64 +186,67 @@
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="药品类型" prop="category_id_level2"> <el-form-item label="药品类型" prop="categoryIdLevel2">
<el-select <el-select
v-model="formData.category_id_level2" v-model="formData.categoryIdLevel2"
placeholder="请选择药品类型" placeholder="请选择药品类型"
size="small" size="small"
@change="getLever(formData.categoryIdLevel2,3)"
clearable clearable
> >
<el-option <el-option
v-for="(item,index) in typeList" v-for="(item,index) in twoLever"
:key="index" :key="index"
:label="item.label" :label="item.categoryName"
:value="item.value" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<div class="inline"> <div class="inline">
<el-form-item label="一级类目" prop="dynamicFlag"> <el-form-item label="一级类目" prop="categoryIdLevel3" >
<el-select <el-select
v-model="formData.dynamicFlag" v-model="formData.categoryIdLevel3"
placeholder="请选择一级类目" placeholder="请选择一级类目"
size="small" size="small"
clearable clearable
@change="getLever(formData.categoryIdLevel3,4)"
> >
<el-option <el-option
v-for="(item,index) in typeList" v-for="(item,index) in threeLever"
:key="index" :key="index"
:label="item.label" :label="item.categoryName"
:value="item.value" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="二级类目" prop="dynamicFlag"> <el-form-item label="二级类目" prop="categoryIdLevel4" >
<el-select <el-select
v-model="formData.dynamicFlag" v-model="formData.categoryIdLevel4"
placeholder="请选择二级类目" placeholder="请选择二级类目"
size="small" size="small"
clearable clearable
@change="getLever(formData.categoryIdLevel4,5)"
> >
<el-option <el-option
v-for="(item,index) in typeList" v-for="(item,index) in fourLever"
:key="index" :key="index"
:label="item.label" :label="item.categoryName"
:value="item.value" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="三级级类目" prop="dynamicFlag"> <el-form-item label="三级级类目" prop="categoryIdLevel5">
<el-select <el-select
v-model="formData.dynamicFlag" v-model="formData.categoryIdLevel5"
placeholder="请选择三级类目" placeholder="请选择三级类目"
size="small" size="small"
clearable clearable
> >
<el-option <el-option
v-for="(item,index) in typeList" v-for="(item,index) in fiveLever"
:key="index" :key="index"
:label="item.label" :label="item.categoryName"
:value="item.value" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -270,18 +272,18 @@ ...@@ -270,18 +272,18 @@
clearable clearable
> >
<el-option <el-option
v-for="(item,index) in typeList" v-for="(item,index) in allDeparts"
:key="index" :key="index"
:label="item.label" :label="item.name"
:value="item.value" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="治疗疾病" prop="treat_disease"> <el-form-item label="治疗疾病" prop="treatDisease">
<el-col :span="24"> <el-col :span="24">
<el-input <el-input
size="small" size="small"
v-model="formData.treat_disease" v-model="formData.treatDisease"
placeholder="请输入治疗疾病" placeholder="请输入治疗疾病"
></el-input> ></el-input>
...@@ -291,14 +293,21 @@ ...@@ -291,14 +293,21 @@
</el-form-item> </el-form-item>
</div> </div>
<el-form-item label="有效期" prop="expired_time"> <el-form-item label="有效期" prop="expiredTime">
<el-col :span="13"> <el-col :span="13">
<el-input <!-- <el-input
size="small" size="small"
v-model="formData.expired_time" v-model="formData.expiredTime"
placeholder="请输入有效期" placeholder="请输入有效期"
style="width:70%;" style="width:70%;"
></el-input> ></el-input> -->
<el-date-picker
v-model="formData.expiredTime"
size="small"
format="yyyy-MM-dd HH:mm:ss"
type="date"
placeholder="选择日期">
</el-date-picker>
<span class="word-num"></span> <span class="word-num"></span>
</el-col> </el-col>
...@@ -311,21 +320,18 @@ ...@@ -311,21 +320,18 @@
:show-file-list="false" :show-file-list="false"
:before-upload="beforeUploadPic1" :before-upload="beforeUploadPic1"
> >
<img <div class="file-pics" v-if="fileIntrList.length > 0" :key="index" v-for="(item,index) in fileIntrList">
v-if="formData.specification_url" <img :src="item.url" @mouseover.stop="intrIndex=index" class="bg-img"/>
:src="formData.specification_url" <div
@mouseover.stop="imgMouseOver1=true" class="img-delete"
class="bg-img" v-if="intrIndex==index"
/> @click.stop="deleteImg(item,fileIntrList)"
<img v-if="!formData.specification_url" class="bg-img" src="../../assets/image/small.png" /> @mouseout.stop="intrIndex=-1"
<div >
class="img-delete" <i class="el-icon-delete"></i>
v-show="imgMouseOver1" </div>
@click.stop="deleteImg(1)"
@mouseout.stop="imgMouseOver1=false"
>
<i class="el-icon-delete"></i>
</div> </div>
<img class="bg-img" src="../../assets/image/small.png" />
<div class="limit-text"> <div class="limit-text">
<p>限制大小: 2M</p> <p>限制大小: 2M</p>
<!-- <p>最小尺寸:750*420</p> --> <!-- <p>最小尺寸:750*420</p> -->
...@@ -339,18 +345,18 @@ ...@@ -339,18 +345,18 @@
<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">
<el-form-item label="零售价" prop="name"> <el-form-item label="零售价" prop="costPrice">
<el-col :span="20"> <el-col :span="20">
<el-input <el-input
size="small" size="small"
v-model="formData.name" v-model="formData.costPrice"
placeholder="请输入零售价" placeholder="请输入零售价"
></el-input> ></el-input>
<!-- <span class="word-num">{{(formData.name).replace(/\s+/g,"").length}}/60</span> --> <!-- <span class="word-num">{{(formData.name).replace(/\s+/g,"").length}}/60</span> -->
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="折扣价" prop="name"> <!-- <el-form-item label="折扣价" prop="name">
<el-col :span="20"> <el-col :span="20">
<el-input <el-input
size="small" size="small"
...@@ -358,9 +364,9 @@ ...@@ -358,9 +364,9 @@
placeholder="请输入折扣价" placeholder="请输入折扣价"
></el-input> ></el-input>
<!-- <span class="word-num">{{(formData.name).replace(/\s+/g,"").length}}/60</span> -->
</el-col> </el-col>
</el-form-item> </el-form-item> -->
</div> </div>
<div class="inline"> <div class="inline">
<el-form-item label="库存" prop="name"> <el-form-item label="库存" prop="name">
...@@ -380,11 +386,11 @@ ...@@ -380,11 +386,11 @@
<!-- <span class="word-num">{{(formData.name).replace(/\s+/g,"").length}}/60</span> --> <!-- <span class="word-num">{{(formData.name).replace(/\s+/g,"").length}}/60</span> -->
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="条形码" prop="name"> <el-form-item label="条形码" prop="barCode">
<el-col :span="20"> <el-col :span="20">
<el-input <el-input
size="small" size="small"
v-model="formData.name" v-model="formData.barCode"
placeholder="请输入条形码" placeholder="请输入条形码"
></el-input> ></el-input>
...@@ -438,6 +444,7 @@ ...@@ -438,6 +444,7 @@
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} from '@/utils/goods';
import Cropper from '@/components/common/cropper.vue' import Cropper from '@/components/common/cropper.vue'
export default { export default {
components: { components: {
...@@ -462,9 +469,30 @@ ...@@ -462,9 +469,30 @@
placeholderTxt:'请输入减少的库存数量', placeholderTxt:'请输入减少的库存数量',
num:'' num:''
}, },
doseAll:[],
fileGoodsList:[],
fileIntrList:[],
intrIndex:-1,
isShowFileList:false,
headIndex:-1,
oneLever:[],
twoLever:[],
allDeparts:[],
threeLever:[{
categoryName: "默认",
id:0
}],
fourLever:[{
categoryName: "默认",
id:0
}],
fiveLever:[{
categoryName: "默认",
id:0
}],
stockDio:false, stockDio:false,
curmbFirst: '云鹊店铺', curmbFirst: '云鹊店铺',
isGoods_image:true, isgoodsImages:true,
isSpecification_url:true, isSpecification_url:true,
title:'', title:'',
typeList: [{ typeList: [{
...@@ -479,26 +507,36 @@ ...@@ -479,26 +507,36 @@
}], }],
formData: { formData: {
id:'', id:'',
goods_name:'', categoryId:'',
goods_description:'', categoryIdLevel2: '',
goods_image:'', categoryIdLevel3: 0,
goods_type:'', categoryIdLevel4: 0,
medic_common_name:'', categoryIdLevel5: 0,
medic_goods_name:'', goodsName:'',
goodsDescription:'',
goodsImages:[],
goodsType:'',
medicCommonName:'',
medicGoodsName:'',
size:'', size:'',
dosage_id:null, dosageId:null,
usage:'', usage:'',
category_id_level2:'', otc:false,
otc:'', otc1:'',
approval_number:'', approvalNumber:'',
manufacturer:'', manufacturer:'',
department:'', department:'',
expired_time:'', expiredTime:'',
specification_url:'', specification_url:'',
treat_disease:'', treatDisease:'',
bar_code:'', barCode:'',
discount_price:'', discountPrice:'',
stock:0, stock:0,
specificationImages:[],
goodsId:'',
costPrice:'',
decrStock:'',//减少库存
incrStock:'',//增加库存
}, },
showCropper: false, showCropper: false,
currentOption: { currentOption: {
...@@ -519,7 +557,7 @@ ...@@ -519,7 +557,7 @@
oriUrl: '', // 原图 oriUrl: '', // 原图
}, },
rules: { rules: {
goods_name: [ goodsName: [
{ required: true, message: "请输入商品名称", trigger: "blur" }, { required: true, message: "请输入商品名称", trigger: "blur" },
{ {
// min: 2, // min: 2,
...@@ -539,13 +577,13 @@ ...@@ -539,13 +577,13 @@
}, },
{ validator: checkProjectStr, trigger: "blur" } { validator: checkProjectStr, trigger: "blur" }
], ],
goods_image: [ goodsImages: [
{ required: true, message: "请上传商品头图", trigger: "blur" } { required: true, message: "请上传商品头图", trigger: "blur" }
], ],
goods_type:[ goodsType:[
{ required: true, message: "请选择商品类型", trigger: "change" } { required: true, message: "请选择商品类型", trigger: "change" }
], ],
medic_common_name:[ medicCommonName:[
{ required: true, message: "请输入商品通用名称", trigger: "blur" } { required: true, message: "请输入商品通用名称", trigger: "blur" }
], ],
size:[ size:[
...@@ -554,28 +592,43 @@ ...@@ -554,28 +592,43 @@
manufacturer:[ manufacturer:[
{ required: true, message: "请输入生产厂家", trigger: "blur" } { required: true, message: "请输入生产厂家", trigger: "blur" }
], ],
approval_number:[ approvalNumber:[
{ required: true, message: "请输入批准文号", trigger: "blur" } { required: true, message: "请输入批准文号", trigger: "blur" }
], ],
dosage_id:[ dosageId:[
{ required: true, message: "请选择剂型", trigger: "change" } { required: true, message: "请选择剂型", trigger: "change" }
], ],
category_id_level2:[ categoryIdLevel2:[
{ required: true, message: "请选择药品类型", trigger: "blur" } { required: true, message: "请选择药品类型", trigger: "blur" }
], ],
categoryIdLevel3:[
{ required: true, message: "请选择一级类目", trigger: "blur" }
],
categoryIdLevel4:[
{ required: true, message: "请选择二级类目", trigger: "blur" }
],
categoryIdLevel5:[
{ required: true, message: "请选择三级类目", trigger: "blur" }
],
otc:[ otc:[
{ required: true, message: "请选择是否是处方", trigger: "blur" } { required: true, message: "请选择是否是处方", trigger: "blur" }
], ],
specification_url:[ specification_url:[
{ required: true, message: "请上传药品说明书", trigger: "blur" } { required: true, message: "请上传药品说明书", trigger: "blur" }
], ],
// barCode: [
// { required: true, message: "请输入条形码", trigger: "blur" },
// ],
costPrice: [
{ required: true, message: "请输入零售价", trigger: "blur" },
],
dynamicFlag: [ dynamicFlag: [
{ required: true, message: "请选择内容发布权", trigger: "blur" }, { required: true, message: "请选择内容发布权", trigger: "blur" },
] ]
}, },
imgMouseOver1: false, imgMouseOver1: false,
uploadImgMessage1: false,//未上传图片,校验提示语 uploadImgMessage1: false,//未上传图片,校验提示语
isMedic:false,
} }
}, },
created() { created() {
...@@ -583,10 +636,69 @@ ...@@ -583,10 +636,69 @@
console.log(this.$route) console.log(this.$route)
const {id} = this.$route.query const {id} = this.$route.query
this.title = id == 'add' ? '新增商品' : '编辑商品' this.title = id == 'add' ? '新增商品' : '编辑商品'
this.getLever(0,1)
dosageAll().then((res)=>{
this.doseAll = res.data
})
getDeparts().then((res)=>{
this.allDeparts = res.data
})
}, },
methods: { methods: {
getGoodsTypes(id,type){
if(id == 5 ){
this.isMedic = true;
this.getLever(id,type)
}else{
this.isMedic = false;
}
},
defaultArr(){
let a = [
{
categoryName: "默认",
id:0
}
]
return a
},
//获取分类
getLever(id,type){
this.GET("store/category/"+id).then(res => {
console.log(res)
if(type == 1){
this.oneLever = res.data
}else if(type == 2){
this.twoLever = res.data || this.defaultArr()
}else if(type == 3){
this.threeLever = res.data.length > 0 ? res.data : this.defaultArr()
this.formData.categoryIdLevel3 = ''
this.formData.categoryIdLevel4 = ''
this.formData.categoryIdLevel5 = ''
}else if(type == 4){
this.fourLever = res.data.length > 0 ? res.data : this.defaultArr()
this.formData.categoryIdLevel4 = ''
this.formData.categoryIdLevel5 = ''
}else if(type == 5){
this.fiveLever = res.data.length > 0 ? res.data : this.defaultArr()
}
});
},
updateStock(){ updateStock(){
let r = /^\+?[1-9][0-9]*$/; let r = /^\+?[1-9][0-9]*$/;
//造假 接口来了删掉
if(this.stock.num <= 0){
return this.$message({
message: '增加库存数量不得为0',
type: 'warning'
});
}
if(!r.test(this.stock.num)){ if(!r.test(this.stock.num)){
return this.$message({ return this.$message({
message: '库存数量必须正整数', message: '库存数量必须正整数',
...@@ -601,18 +713,17 @@ ...@@ -601,18 +713,17 @@
type: 'warning' type: 'warning'
}); });
} }
this.formData.stock -= this.stock.num
this.formData.decrStock = this.formData.stock
}else if(this.stock.type == 2){
this.formData.stock = Number(this.stock.num) + Number(this.formData.stock)
this.formData.incrStock = this.formData.stock
} }
//造假 接口来了删掉
if(this.stock.num <= 0){
return this.$message({
message: '增加库存数量不得为0',
type: 'warning'
});
}
this.formData.stock = this.stock.num
this.stockDio = false this.stockDio = false
}, },
changeStock(type){ changeStock(type){
if(this.formData.stock == 0 && type == 1){ if(this.formData.stock == 0 && type == 1){
return; return;
...@@ -628,61 +739,100 @@ ...@@ -628,61 +739,100 @@
} }
this.stockDio = true this.stockDio = true
}, },
complete() { complete() {
let formName = "formData"; let formName = "formData";
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
if(this.isMedic){
if(!this.isgoodsImages){
return;
}
if(!this.isSpecification_url){
return;
}
}
this.isGoods_image = !this.formData.goods_image ? false :true;
this.isSpecification_url = !this.formData.specification_url ? false : true
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
alert('submit!'); //alert('submit!');
this.updateGoodsInfo()
} else { } else {
console.log('error submit!!'); console.log('error submit!!');
return false; return false;
} }
}); });
}, },
//表单校验
submitForm() { //更新商品
let formName = "formData"; updateGoodsInfo(){
let flag = null;
if (!this.formData.headUrl){ this.formData.incrStock = 1000
this.uploadImgMessage1 = true; updateGoods(this.formData).then((res)=>{
} if (res.code !== '000000') {
this.$refs[formName].validate(valid => { return this.$message.error(res.message);
if (valid&&this.formData.headUrl!="") {
flag = true;
} else {
console.log("error submit!!");
flag = false;
} }
}); vm.$message.success("操作成功");
this.$emit('returnIsNext', flag); })
}, },
beforeUploadPic(file) { beforeUploadPic(file) {
let vm = this; let vm = this;
let picTypes = ['image/jpeg','image/png'] let picTypes = ['image/jpeg','image/png']
//const isLt2M = file.size / 1024 / 1024 < fileLimit.size; const isLt200k = file.size / 1024 < 200;
if (picTypes.indexOf(file.type) == -1) { if (picTypes.indexOf(file.type) == -1) {
return this.$message.error("请上传jpegpng格式的图片"); return this.$message.error("请上传jpegpng格式的图片");
} }
// if (!isLt2M) { if (!isLt200k) {
// vm.$message.error("图片大小不符合规范,请根据规范上传图片 ");
// return; return vm.$message.error("图片大小请控制在200k以内");
// } }
let _img = new FileReader(); let _img = new FileReader();
_img.readAsDataURL(file); _img.readAsDataURL(file);
openLoading(vm);
doUpload(vm, file, getFilePath(file, null), "preview4", "progress1", 1).then(function (path) {
closeLoading(vm);
console.log('上传成功后路径', path);
vm.formData.goods_image = path.fullPath
vm.$message.success("上传成功"); _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)
// 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;
// }
vm.fileGoodsList.push({url:path.fullPath,imageUrl:path.fullPath,imageName:''})
//vm.formData.goodsImages = path.fullPath
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("上传成功");
// });
}, },
...@@ -726,43 +876,41 @@ ...@@ -726,43 +876,41 @@
image.onload = function () { image.onload = function () {
let _this = this; let _this = this;
// if (_this.width != fileLimit.width || _this.height != fileLimit.height) { // if (_this.width != fileLimit.width || _this.height != fileLimit.height) {
if (_this.width < fileLimit.width || _this.height < fileLimit.height) { // if (_this.width < fileLimit.width || _this.height < fileLimit.height) {
vm.$message.error("图片尺寸不符合规范,请根据规范上传图片"); // vm.$message.error("图片尺寸不符合规范,请根据规范上传图片");
return; // return;
} else if(_this.width > fileLimit.width || _this.height > fileLimit.height){ // } else if(_this.width > fileLimit.width || _this.height > fileLimit.height){
vm.showCropper = true; // vm.showCropper = true;
vm.currentOption.cvWidth = _this.width; // vm.currentOption.cvWidth = _this.width;
vm.currentOption.cvHeight = _this.height; // vm.currentOption.cvHeight = _this.height;
return; // return;
} else { // } else {
openLoading(vm); openLoading(vm);
doUpload(vm, file, getFilePath(file, null), "preview4", "progress1", 1).then(function (path) { doUpload(vm, file, getFilePath(file, null), "preview4", "progress1", 1).then(function (path) {
closeLoading(vm); closeLoading(vm);
console.log('上传成功后路径', path);
if (fileLimit.show == "uploadImgMessage1") { vm.fileIntrList.push({url:path.fullPath,imageUrl:path.fullPath})
vm.uploadImgMessage1 = false;
} else if (fileLimit.show == "uploadImgMessage2") {
vm.uploadImgMessage2 = false;
}
vm.formData[fileLimit.key] = path.fullPath;
vm.formData[fileLimit.more] = {
attachmentName: path.name,
attachmentExt: path.ext,
attachmentSize: path.size
};
vm.$message.success("上传成功"); vm.$message.success("上传成功");
}); });
} //}
}; };
}; };
return isJPG && isLt2M; return isJPG && isLt2M;
}, },
//删除图片 //删除图片
deleteImg(type) { deleteImg(item,d) {
if (type == 1) { let index = ''
vm.formData.headUrl = ""; for(let i=0;i<d.length;i++){
vm.imgMouseOver1 = false; if(item.url == d[i].url){
index = i;
break
}
} }
d.splice(index,1)
// if (type == 1) {
// vm.formData.headUrl = "";
// vm.imgMouseOver1 = false;
// }
}, },
// 获取裁剪的图片数据 // 获取裁剪的图片数据
getCropImg(argument) { getCropImg(argument) {
...@@ -970,4 +1118,18 @@ ...@@ -970,4 +1118,18 @@
padding-bottom: 20px; padding-bottom: 20px;
} }
} }
.fast-opt{
font-size: 12px;
padding:0 10px;
cursor: pointer;
color:#449284
}
.file-pics{
display: inline-block;
width: 84px;
height: 100px;
float:left;
margin-right: 15px;
position: relative;
}
</style> </style>
...@@ -7,22 +7,22 @@ ...@@ -7,22 +7,22 @@
<el-row :gutter="30" type="flex" style="margin-top: 10px"> <el-row :gutter="30" type="flex" style="margin-top: 10px">
<el-col :span="18"> <el-col :span="18">
<el-form-item label="商品名称"> <el-form-item label="商品名称">
<el-input v-model="searchForm.name" size="small" placeholder="请输入商品名称"></el-input> <el-input v-model="searchForm.goodsName" size="small" placeholder="请输入商品名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="商品ID"> <el-form-item label="商品ID">
<el-input v-model="searchForm.id" size="small" placeholder="请输入商品ID"></el-input> <el-input v-model="searchForm.id" size="small" placeholder="请输入商品ID"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="商品类型"> <el-form-item label="商品类型">
<el-select <el-select
v-model="searchForm.type" v-model="searchForm.goodsType"
placeholder="请选择商品类型" placeholder="请选择商品类型"
size="small" size="small"
clearable> clearable>
<el-option <el-option
v-for="(item,index) in typeList" v-for="(item,index) in goodsTypes"
:key="index" :key="index"
:label="item.label" :label="item.categoryName"
:value="item.value" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -34,8 +34,8 @@ ...@@ -34,8 +34,8 @@
</el-row> </el-row>
<el-row :gutter="30" type="flex" style="margin-top: 10px"> <el-row :gutter="30" type="flex" style="margin-top: 10px">
<el-col :span="18"> <el-col :span="18">
<el-button type="primary" size="small" @click="batchOpt(1)">批量上架</el-button> <el-button type="primary" size="small" @click="batchOpt('on')">批量上架</el-button>
<el-button type="primary" size="small" @click="batchOpt(2)">批量下架</el-button> <el-button type="primary" size="small" @click="batchOpt('off')">批量下架</el-button>
</el-col> </el-col>
<el-col :span="6" style="text-align: right"> <el-col :span="6" style="text-align: right">
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
</el-row> </el-row>
</el-form> </el-form>
<el-table :data="tableData" class="item-table" style="width: 100%;margin-top: 10px;" @selection-change="handleSelectionChange"> <el-table ref="multipleTable" :data="tableData" class="item-table" style="width: 100%;margin-top: 10px;" @selection-change="handleSelectionChange">
<el-table-column <el-table-column
type="selection" type="selection"
fixed fixed
...@@ -53,23 +53,23 @@ ...@@ -53,23 +53,23 @@
</el-table-column> </el-table-column>
<el-table-column prop="id" label="商品ID" width="120" align="center"></el-table-column> <el-table-column prop="id" label="商品ID" width="120" align="center"></el-table-column>
<el-table-column prop="name" label="商品名称" min-width="140" align="center"></el-table-column> <el-table-column prop="name" label="商品名称" min-width="140" align="center"></el-table-column>
<el-table-column prop="type" label="商品类型" min-width="100" align="center"> <el-table-column prop="type" label="商品类型" width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.type | dynamicFlagStatus }}</span> <span>{{ scope.row.type | dynamicFlagStatus }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="status" label="商品状态" min-width="100" align="center"> <el-table-column prop="status" label="商品状态" width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.status | rangeStatus }}</span> <span>{{ scope.row.status | rangeStatus }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="num" label="销量" min-width="120" align="center"> <el-table-column prop="num" label="销量" width="120" align="center">
111 111
</el-table-column> </el-table-column>
<el-table-column prop="num" label="规格" min-width="120" align="center"> <el-table-column prop="num" label="规格" width="120" align="center">
111 111
</el-table-column> </el-table-column>
<el-table-column prop="num" label="价格" min-width="120" align="center"> <el-table-column prop="num" label="价格" width="120" align="center">
111 111
</el-table-column> </el-table-column>
<el-table-column prop="createdTime" label="发布时间" width="150" align="center"> <el-table-column prop="createdTime" label="发布时间" width="150" align="center">
...@@ -144,6 +144,7 @@ ...@@ -144,6 +144,7 @@
import { openLoading, closeLoading } from "../../utils/utils"; import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "@/components/breadcrumb.vue"; import BreadCrumb from "@/components/breadcrumb.vue";
import { getRangeList,updateRangeStatus} from "../../utils/yqrange/yqrangeApi"; import { getRangeList,updateRangeStatus} from "../../utils/yqrange/yqrangeApi";
import { getGoodsList,batchOnOff} from '@/utils/goods';
export default { export default {
components: { components: {
BreadCrumb BreadCrumb
...@@ -155,17 +156,27 @@ ...@@ -155,17 +156,27 @@
showNewFlag: false, showNewFlag: false,
batchDialog:false, batchDialog:false,
searchForm: { searchForm: {
name: '', goodsIdList:[],
id: '', goodsName :'',
type: '', goodsType :0,
pageNo: 1, pageNo:1,
pageSize: 10, pageSize: 10,
},
selectList:[],
batchParm:{
batchUpdateSaleStatusReq: {
goodsIdList: [],
userId: 0
},
onOff: ""
}, },
fileList:[], fileList:[],
totalRows: 0, totalRows: 0,
tableData: [ tableData: [
{} {}
], ],
goodsTypes:[],
typeList: [{ typeList: [{
label: '药品', label: '药品',
value: '1', value: '1',
...@@ -179,20 +190,49 @@ ...@@ -179,20 +190,49 @@
} }
}, },
created() { created() {
// this.initPrivilege(); this.getLists()
// this.searchList(); this.getLever()
}, },
methods: { methods: {
handlePreview(){}, handlePreview(){},
handleRemove(){}, handleRemove(){},
beforeRemove(){}, beforeRemove(){},
handleSelectionChange(){ handleSelectionChange(val){
console.log(val)
this.selectList = val
},
getLever(id=0){
this.GET("store/category/"+id).then(res => {
console.log(res)
this.goodsTypes = res.data
});
},
getLists(){
getGoodsList(this.searchForm).then((res)=>{
})
}, },
//批量 上下架操作 //批量 上下架操作
batchOpt(type){ batchOpt(type){
if(type == 3){//批量导入 if(type == 3){//批量导入
this.batchDialog = true this.batchDialog = true
}else{
if(this.selectList.length == 0){
return this.$message({
message: '请选择商品',
type: 'warning'
});
}
this.batchParm.onOff = type
this.batchParm.batchUpdateSaleStatusReq.goodsIdList =[1] || this.selectList
batchOnOff(this.batchParm).then((res)=>{
if(res.code == '000000'){
this.selectList = []
this.$refs.multipleTable.clearSelection();
this.getLists()
}
})
} }
}, },
edit(row){ edit(row){
...@@ -268,15 +308,19 @@ ...@@ -268,15 +308,19 @@
searchList() { searchList() {
openLoading(this); openLoading(this);
let params = this.searchForm; let params = this.searchForm;
this.getLists()
}, },
resetForm() { resetForm() {
this.searchForm = { this.searchForm = {
name: '', goodsIdList:[],
id: '', goodsName:'',
type: '' goodsType:'',
pageNo:1,
pageSize: 10,
}; };
this.searchList(); this.getLists();
}, },
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册