Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica.cloud.web-education-admin
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
提交
打开侧边栏
com.pica.cloud.education.frontend
pica.cloud.web-education-admin
提交
0c488269
提交
0c488269
编写于
11月 11, 2020
作者:
tao.wu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
检测服务联调
上级
b1469a82
变更
5
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
443 行增加
和
366 行删除
+443
-366
index.js
src/utils/goods/index.js
+8
-0
create-good.vue
src/views/goods/create-good.vue
+229
-350
forms.js
src/views/goods/forms.js
+67
-0
goods-manage.vue
src/views/goods/goods-manage.vue
+20
-16
rules.js
src/views/goods/rules.js
+119
-0
未找到文件。
src/utils/goods/index.js
浏览文件 @
0c488269
...
...
@@ -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
({
...
...
src/views/goods/create-good.vue
浏览文件 @
0c488269
...
...
@@ -16,7 +16,6 @@
:rules=
"rules"
label-width=
"150px"
label-suffix=
":"
class=
"basic-form"
>
...
...
@@ -84,10 +83,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=
"i
tem.categoryName+'-'+i
ndex"
:label=
"item.categoryName"
:value=
"item.id"
></el-option>
...
...
@@ -95,14 +95,23 @@
</el-form-item>
<!--
<p
class=
"upload-message"
v-if=
"uploadImgMessage1"
>
请上传商品头图
</p>
-->
</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>
<el-form-item
label=
"条形码"
prop=
"barCode"
>
<el-col
:span=
"18"
>
<el-input
size=
"small"
v-model=
"formData.barCode"
v-model=
"formData
1
.barCode"
placeholder=
"请输入条形码"
></el-input>
<span
class=
"fast-opt"
@
click=
"fastInput"
>
快速录入
</span>
...
...
@@ -113,7 +122,7 @@
<el-col
:span=
"18"
>
<el-input
size=
"small"
v-model=
"formData.approvalNumber"
v-model=
"formData
1
.approvalNumber"
placeholder=
"请输入批准文号"
style=
"width:50%;"
></el-input>
...
...
@@ -124,7 +133,7 @@
<el-col
:span=
"13"
>
<el-input
size=
"small"
v-model=
"formData.medicCommonName"
v-model=
"formData
1
.medicCommonName"
placeholder=
"请输入药品通用名称"
style=
"width:70%;"
maxlength=
"60"
...
...
@@ -138,7 +147,7 @@
<el-col
:span=
"13"
>
<el-input
size=
"small"
v-model=
"formData.medicGoodsName"
v-model=
"formData
1
.medicGoodsName"
placeholder=
"请输入药品商品名称"
maxlength=
"60"
...
...
@@ -152,7 +161,7 @@
<el-col
:span=
"13"
>
<el-input
size=
"small"
v-model=
"formData.size"
v-model=
"formData
1
.size"
placeholder=
"请输入药品规格"
style=
"width:70%;"
></el-input>
...
...
@@ -163,13 +172,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=
"formData
1
.otc1"
label=
"1"
>
处方药
</el-radio>
<el-radio
v-model=
"formData
1
.otc1"
label=
"0"
>
非处方药
</el-radio>
</el-col>
</el-form-item>
<el-form-item
label=
"剂型"
prop=
"dosageId"
>
<el-select
v-model=
"formData.dosageId"
v-model=
"formData
1
.dosageId"
placeholder=
"请选择药品剂型"
size=
"small"
clearable
>
...
...
@@ -186,7 +195,7 @@
<el-col
:span=
"13"
>
<el-input
size=
"small"
v-model=
"formData.usage"
v-model=
"formData
1
.usage"
placeholder=
"请输入用法用量"
style=
"width:70%;"
></el-input>
...
...
@@ -197,10 +206,10 @@
<el-form-item
label=
"药品类型"
prop=
"categoryIdLevel2"
>
<el-select
v-model=
"formData.categoryIdLevel2"
v-model=
"formData
1
.categoryIdLevel2"
placeholder=
"请选择药品类型"
size=
"small"
@
change=
"getLever(formData.categoryIdLevel2,3)"
@
change=
"getLever(formData
1
.categoryIdLevel2,3)"
clearable
>
<el-option
...
...
@@ -214,10 +223,10 @@
<div
class=
"inline"
>
<el-form-item
label=
"一级类目"
prop=
"categoryIdLevel3"
>
<el-select
v-model=
"formData.categoryIdLevel3"
v-model=
"formData
1
.categoryIdLevel3"
placeholder=
"请选择一级类目"
size=
"small"
@
change=
"getLever(formData.categoryIdLevel3,4)"
@
change=
"getLever(formData
1
.categoryIdLevel3,4)"
>
<el-option
v-for=
"(item,index) in threeLever"
...
...
@@ -229,10 +238,10 @@
</el-form-item>
<el-form-item
label=
"二级类目"
prop=
"categoryIdLevel4"
>
<el-select
v-model=
"formData.categoryIdLevel4"
v-model=
"formData
1
.categoryIdLevel4"
placeholder=
"请选择二级类目"
size=
"small"
@
change=
"getLever(formData.categoryIdLevel4,5)"
@
change=
"getLever(formData
1
.categoryIdLevel4,5)"
>
<el-option
v-for=
"(item,index) in fourLever"
...
...
@@ -244,7 +253,7 @@
</el-form-item>
<el-form-item
label=
"三级级类目"
prop=
"categoryIdLevel5"
>
<el-select
v-model=
"formData.categoryIdLevel5"
v-model=
"formData
1
.categoryIdLevel5"
placeholder=
"请选择三级类目"
size=
"small"
>
...
...
@@ -261,7 +270,7 @@
<el-col
:span=
"13"
>
<el-input
size=
"small"
v-model=
"formData.manufacturer"
v-model=
"formData
1
.manufacturer"
placeholder=
"请输入生产厂家"
style=
"width:70%;"
></el-input>
...
...
@@ -273,7 +282,7 @@
<el-form-item
label=
"适用科室"
prop=
"department"
>
<el-input
size=
"small"
v-model=
"formData.department"
v-model=
"formData
1
.department"
placeholder=
"请输入适用科室"
></el-input>
...
...
@@ -295,7 +304,7 @@
<el-col
:span=
"24"
>
<el-input
size=
"small"
v-model=
"formData.treatDisease"
v-model=
"formData
1
.treatDisease"
placeholder=
"请输入治疗疾病"
></el-input>
...
...
@@ -309,7 +318,7 @@
<el-col
:span=
"13"
>
<el-input
size=
"small"
v-model=
"formData.expiredTime"
v-model=
"formData
1
.expiredTime"
placeholder=
"请输入有效期"
style=
"width:70%;"
></el-input>
...
...
@@ -356,6 +365,7 @@
<p
class=
"upload-message"
v-if=
"!isSpecification_url"
>
请上传药品说明书
</p>
</el-form-item>
</div>
</el-form>
...
...
@@ -382,14 +392,21 @@
=========================================================调试新增检测服务 start========================================================= -->
<div
class=
"basic-item-icon"
v-if=
"!isMedic && isCheckServe"
>
<el-form
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>
<el-form-item
label=
"条形码"
prop=
"barCode"
>
<el-col
:span=
"18"
>
<el-input
size=
"small"
v-model=
"formData.barCode"
v-model=
"formData
2
.barCode"
placeholder=
"请输入条形码"
></el-input>
<span
class=
"fast-opt"
@
click=
"fastInput"
>
快速录入
</span>
...
...
@@ -408,7 +425,7 @@
<el-col
:span=
"13"
>
<el-input
size=
"small"
v-model=
"formData.checkName"
v-model=
"formData
2
.checkName"
placeholder=
"请输入检测名称"
show-word-limit
maxlength=
"60"
...
...
@@ -419,7 +436,7 @@
<el-col
:span=
"13"
>
<el-input
size=
"small"
v-model=
"formData.hospitalName"
v-model=
"formData
2
.hospitalName"
placeholder=
"请输入医疗机构名称"
show-word-limit
></el-input>
...
...
@@ -427,7 +444,7 @@
</el-form-item>
<el-form-item
label=
"医疗机构类型"
prop=
"hospitalType"
>
<el-select
v-model=
"formData.hospitalType"
v-model=
"formData
2
.hospitalType"
placeholder=
"请选择"
size=
"small"
>
...
...
@@ -445,7 +462,7 @@
type=
"textarea"
rows=
"4"
size=
"small"
v-model=
"formData.checkItem"
v-model=
"formData
2
.checkItem"
placeholder=
"请输入检测项目"
maxlength=
"400"
show-word-limit
...
...
@@ -458,7 +475,7 @@
type=
"textarea"
rows=
"4"
size=
"small"
v-model=
"formData.checkStandard"
v-model=
"formData
2
.checkStandard"
placeholder=
"请输入检测指标"
maxlength=
"400"
show-word-limit
...
...
@@ -468,25 +485,25 @@
<el-form-item
label=
"使用人数"
prop=
"useCount"
class=
"required-label"
>
<el-col
:span=
"20"
>
<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=
"formData
2.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=
"formData.useCount"
v-model=
"formData
2
.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=
"formData.useCount++"
><i
class=
"el-icon-plus"
></i></span>
<span
class=
"sp sp-r"
@
click=
"formData
2
.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=
"formData.checkType"
v-model=
"formData
2
.checkType"
placeholder=
"请选择"
size=
"small"
>
...
...
@@ -498,16 +515,16 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"适用人群"
prop=
"suitable
St
r"
>
<el-form-item
label=
"适用人群"
prop=
"suitable
Ar
r"
>
<el-select
v-model=
"formData
.suitableSt
r"
v-model=
"formData
2.suitableAr
r"
:multiple=
"true"
placeholder=
"请选择"
size=
"small"
>
<el-option
v-for=
"(item,index) in suitableList"
:key=
"index"
:key=
"i
tem+'_'+i
ndex"
:label=
"item.label"
:value=
"item.value"
></el-option>
...
...
@@ -519,7 +536,7 @@
type=
"textarea"
rows=
"4"
size=
"small"
v-model=
"formData.accessorialService"
v-model=
"formData
2
.accessorialService"
placeholder=
"请输入附加服务"
maxlength=
"400"
show-word-limit
...
...
@@ -528,7 +545,7 @@
</el-form-item>
<el-form-item
label=
"商品使用日期"
prop=
"endTime"
class=
"required-label"
>
<el-date-picker
v-model=
"formData.endTime"
v-model=
"formData
2
.endTime"
size=
"small"
type=
"datetime"
placeholder=
"请选择商品使用日期"
...
...
@@ -564,6 +581,7 @@
<p
class=
"upload-message"
v-if=
"!isgoodsImages"
>
请上传检测说明图
</p>
</el-form-item>
</div>
</el-form>
...
...
@@ -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=
"part-tit"
>
销售信息
</div>
<div
class=
"inline"
>
...
...
@@ -674,197 +699,12 @@
let
vm
=
null
;
import
{
openLoading
,
closeLoading
}
from
"../../utils/utils"
;
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
{
mapGetters
}
from
"vuex"
;
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 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));
import
{
originRules1
,
originRules2
,
originRules
}
from
'./rules'
;
import
{
originForm1
,
originForm2
,
originForm
}
from
'./forms'
;
export
default
{
components
:
{
...
...
@@ -872,22 +712,8 @@
Cropper
},
data
(){
let checkProjectStr = (rule, value, callback) => {
if (value.indexOf("
\\
") != -1) {
//存在
callback(new Error("
请勿输入字符“
\\
”
"));
} else if (value.indexOf("
.
") != -1) {
callback(new Error("
请勿输入字符“
.
”
"));
} else {
callback();
}
};
return
{
isEdit
:
false
,
stock
:{
title
:
'减少库存'
,
type
:
1
,
...
...
@@ -936,19 +762,19 @@
value
:
'3'
,
}],
checkPackageList
:
[],
// 检测登记表
hospitalTypeList: [{label:'村卫生室',value:
'1'},{label:'乡镇卫生院/中心',value:'2'
}], // 医疗机构类型
checkTypeList: [{label:'常规检测',value:
'1'
}], // 检测类型
hospitalTypeList
:
[{
label
:
'村卫生室'
,
value
:
1
},{
label
:
'乡镇卫生院/中心'
,
value
:
2
}],
// 医疗机构类型
checkTypeList
:
[{
label
:
'常规检测'
,
value
:
1
}],
// 检测类型
suitableList
:
[{
label
:
'儿童'
,
value
:
'1'
},{
label
:
'青年'
,
value
:
'2'
},{
label
:
'中年'
,
value
:
'3'
},{
label
:
'老年'
,
value
:
'4'
}],
// 适用人群
// 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段
formData: {
},
rules: {
},
formData
:
{
},
formData1
:
{},
formData2
:
{
},
rules
:
{
},
rules1
:
{},
rules2
:
{
},
// 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段
...
...
@@ -981,15 +807,22 @@
},
created
()
{
vm
=
this
;
const
{
id
,
storeId
,
goodsType
}
=
this
.
$route
.
query
;
this
.
formData
=
originForm
;
this
.
formData1
=
originForm1
;
this
.
formData2
=
originForm2
;
this
.
rules
=
originRules
;
this
.
rules1
=
originRules1
;
this
.
rules2
=
originRules2
;
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
)
=>
{
...
...
@@ -1004,14 +837,13 @@
// this.formData = {...goods}
// console.log(goods)
this
.
formData
.
goodsId
=
id
;
this.getDetailByEdit(id
)
this
.
getDetailByEdit
(
id
,
goodsType
);
}
},
methods
:
{
//eidt状态
getDetailByEdit(id){
getDetailByEdit
(
id
,
goodsType
){
let
parm
=
{
goodsIdList
:[
id
],
goodsName
:
''
,
...
...
@@ -1019,47 +851,100 @@
pageNo
:
1
,
pageSize
:
10
,
}
getGoodsList(parm).then((res)=>{
if(res.code != '000000'){
return this.$message({
message: res.message,
type: 'error'
});
}
closeLoading(this);
if(res.data == null){
return this.$message({
message: '数据加载失败',
type: 'error'
});
}
const {goodsList} = res.data
this.formData = Object.assign(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.isCheckServe = this.formData.goodsType == 337 ? true : false
this.formData.stock = this.formData.goodsStock
console.log(this.formData.otc)
this.formData.otc1 = this.formData.otc ? '1' : '0'
if(this.isMedic){
this.getLever(5,2,1)
}
const {categoryIdLevel2,categoryIdLevel3,categoryIdLevel4,categoryIdLevel5} = this.formData
if(categoryIdLevel2 != -1){
this.getLever(categoryIdLevel2,3,1)
}
if(categoryIdLevel3 != -1){
this.getLever(categoryIdLevel3,4,1)
}
if(categoryIdLevel4 != -1){
this.getLever(categoryIdLevel4,5,1)
}
console.log(this.formData)
//this.totalRows = res.data.totalCount
})
// 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
)
=>
{
if
(
res
.
code
!=
'000000'
){
return
this
.
$message
({
message
:
res
.
message
,
type
:
'error'
});
}
closeLoading
(
this
);
if
(
res
.
data
==
null
){
return
this
.
$message
({
type
:
'error'
});
}
const
{
goodsList
}
=
res
.
data
;
this
.
formData
=
Object
.
assign
(
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
.
formData
.
stock
=
this
.
formData
.
goodsStock
;
// console.log(this.formData.otc)
this
.
formData
.
otc1
=
this
.
formData
.
otc
?
'1'
:
'0'
if
(
this
.
isMedic
){
this
.
getLever
(
5
,
2
,
1
)
}
const
{
categoryIdLevel2
,
categoryIdLevel3
,
categoryIdLevel4
,
categoryIdLevel5
}
=
this
.
formData
if
(
categoryIdLevel2
!=
-
1
){
this
.
getLever
(
categoryIdLevel2
,
3
,
1
)
}
if
(
categoryIdLevel3
!=
-
1
){
this
.
getLever
(
categoryIdLevel3
,
4
,
1
)
}
if
(
categoryIdLevel4
!=
-
1
){
this
.
getLever
(
categoryIdLevel4
,
5
,
1
)
}
//this.totalRows = res.data.totalCount
this
.
rules
=
{
...
this
.
rules
,
...
originRules
};
});
}
console
.
log
(
this
.
formData
);
},
getImges
(
d
,
type
){
...
...
@@ -1069,8 +954,10 @@
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
,
})
}
...
...
@@ -1150,58 +1037,39 @@
});
},
getGoodsTypes(id,type){
this.formData = originForm;
this.rules = originRules;
if(id == 5 ){
getGoodsTypes
(
goodsType
,
type
){
// this.formData = {};
// this.formData = this.comFormData;
// this.rules = this.comRuleData;
// this.rules = {};
if
(
goodsType
==
5
){
this
.
isMedic
=
true
;
this
.
isCheckServe
=
false
;
this.formData = {
...this.formData,
...originForm1
};
this.rules = {
...this.rules,
...originRules1
};
this.getLever(id,type)
} else if( id == 337 ){
this
.
getLever
(
goodsType
,
type
);
// this.formData = { ...originForm, ...originForm1 };
// this.rules = { ...originForm, ...originRules1 };
// // this.formData1 = originForm1;
// // this.formData2 = originForm2;
// this.rules = originRules;
// this.rules1 = originRules1;
// this.rules2 = originRules2;
// Object.assign(this.formData, {...originForm1});
// Object.assign(this.rules, {...originRules1});
}
else
if
(
goodsType
==
337
){
this
.
isMedic
=
false
;
this
.
isCheckServe
=
true
;
this.formData = {
...this.formData,
...originForm2
};
this.rules = {
...this.rules,
...originRules2
};
console.log(`=========================================================调试新增检测服务 start=========================================================`);
console.log(this.formData);
console.log(this.rules);
console.log(`=========================================================调试新增检测服务 end=========================================================`);
// Object.assign(this.formData, {...originForm2});
// Object.assign(this.rules, {...originRules2});
}
else
{
this
.
isMedic
=
false
;
this
.
isCheckServe
=
false
;
this.formData = {
...this.formData,
...originForm1
};
this.rules = {
...this.rules,
...originRules1
};
}
// Object.assign(this.formData, {...originForm});
// Object.assign(this.rules, originRules);
};
// this.$forceUpdate();
console
.
log
(
this
.
formData
);
},
...
...
@@ -1230,7 +1098,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
()
...
...
@@ -1309,6 +1177,10 @@
},
complete
()
{
let
formName
=
"formData"
;
this
.
formData
=
{...
this
.
formData
,
...
this
.
formData1
,
...
this
.
formData2
};
for
(
let
i
=
0
;
i
<
this
.
fileGoodsList
.
length
;
i
++
){
this
.
fileGoodsList
[
i
].
imageSort
=
i
+
1
}
...
...
@@ -1316,16 +1188,21 @@
this
.
fileIntrList
[
j
].
imageSort
=
j
+
1
}
this.formData.goodsHeaderImages = this.fileGoodsList;
this.formData.specificationImages = this.fileIntrList;
this.isgoodsImages = this.formData.goodsHeaderImages.length == 0 ? false :true;
//
this.formData.goodsHeaderImages = this.fileGoodsList;
//
this.formData.specificationImages = this.fileIntrList;
//
this.isgoodsImages = this.formData.goodsHeaderImages.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
.
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
;
}
...
...
@@ -1333,8 +1210,9 @@
// 如果是【检测服务】类型的商品
if
(
this
.
isCheckServe
){
this
.
formData
.
goodsCheckImages
=
this
.
goodsCheckList
;
const { suitableStr } = this.formData;
this.formData.suitable = suitableStr.join(',');
const
{
suitableArr
}
=
this
.
formData
;
this
.
formData
.
suitable
=
suitableArr
.
join
(
','
);
this
.
formData
.
medicalServiceId
=
this
.
formData
.
medicationId
;
}
if
(
!
this
.
isgoodStock
){
...
...
@@ -1364,7 +1242,7 @@
type
:
'error'
});
}
vm
.
$message
.
success
(
"操作成功"
);
this
.
$router
.
push
({
path
:
'/goods-manage'
,
...
...
@@ -1402,6 +1280,7 @@
console
.
log
(
'上传成功后路径'
,
path
);
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,imageUrl:path.fullPath,imageName:'',imageSort: len+1,imageType: 2,id: null,})
vm
.
$message
.
success
(
"上传成功"
);
});
};
...
...
src/views/goods/forms.js
0 → 100644
浏览文件 @
0c488269
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
src/views/goods/goods-manage.vue
浏览文件 @
0c488269
...
...
@@ -177,21 +177,24 @@
import
{
getGoodsList
,
batchOnOff
,
uploadExcel
}
from
'@/utils/goods'
;
import
{
getBaseUrl
}
from
'@/utils/index'
var
typeList
=
[{
categoryName
:
"短信额度"
,
id
:
1
,
},
{
categoryName
:
"学习卡"
,
id
:
2
,
},
{
categoryName
:
"职称考卡"
,
id
:
3
,
},{
categoryName
:
"医疗器械"
,
id
:
4
,
},{
categoryName
:
"药品"
,
id
:
5
,
}]
categoryName
:
"短信额度"
,
id
:
1
,
},
{
categoryName
:
"学习卡"
,
id
:
2
,
},
{
categoryName
:
"职称考卡"
,
id
:
3
,
},{
categoryName
:
"医疗器械"
,
id
:
4
,
},{
categoryName
:
"药品"
,
id
:
5
,
},{
categoryName
:
"检测服务"
,
id
:
337
,
}];
export
default
{
components
:
{
BreadCrumb
...
...
@@ -412,11 +415,12 @@
}
},
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
.
$router
.
push
({
...
...
src/views/goods/rules.js
0 → 100644
浏览文件 @
0c488269
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
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录