Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica.cloud.web-education-admin
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
提交
打开侧边栏
com.pica.cloud.education.frontend
pica.cloud.web-education-admin
提交
a02e26c9
提交
a02e26c9
编写于
3月 15, 2022
作者:
shuang.zhou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
商品药品关联
上级
f29b38f3
变更
11
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
2945 行增加
和
281 行删除
+2945
-281
router.js
src/router/router.js
+299
-271
common.scss
src/style/common.scss
+9
-0
index.js
src/utils/goods/index.js
+38
-0
freight-config.vue
src/views/freight/freight-config.vue
+1
-1
forms.js
src/views/goods/common/forms.js
+51
-0
mock.js
src/views/goods/common/mock.js
+234
-0
rules.js
src/views/goods/common/rules.js
+137
-0
create-good-new.scss
src/views/goods/create-good-new.scss
+281
-0
create-good-new.vue
src/views/goods/create-good-new.vue
+1868
-0
goods-manage.vue
src/views/goods/goods-manage.vue
+26
-8
order-detail.vue
src/views/goods/order-detail.vue
+1
-1
未找到文件。
src/router/router.js
浏览文件 @
a02e26c9
...
@@ -76,6 +76,7 @@ const createShop = r => require.ensure([], () => r(require('../views/shop/create
...
@@ -76,6 +76,7 @@ const createShop = r => require.ensure([], () => r(require('../views/shop/create
const
goodsManage
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/goods/goods-manage.vue'
)),
'goods-manage'
)
const
goodsManage
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/goods/goods-manage.vue'
)),
'goods-manage'
)
const
freightConfig
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/freight/freight-config.vue'
)),
'freight-config'
)
const
freightConfig
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/freight/freight-config.vue'
)),
'freight-config'
)
const
createGood
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/goods/create-good.vue'
)),
'create-good'
)
const
createGood
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/goods/create-good.vue'
)),
'create-good'
)
const
createGoodNew
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/goods/create-good-new.vue'
)),
'create-good-new'
)
const
orderManage
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/goods/order-manage.vue'
)),
'order-manage'
)
const
orderManage
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/goods/order-manage.vue'
)),
'order-manage'
)
const
orderDetail
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/goods/order-detail.vue'
)),
'order-detail'
)
const
orderDetail
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/goods/order-detail.vue'
)),
'order-detail'
)
const
plazaList
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/plaza/plaza-list.vue'
)),
'plaza-list'
)
const
plazaList
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/plaza/plaza-list.vue'
)),
'plaza-list'
)
...
@@ -85,285 +86,312 @@ const videoManage = r => require.ensure([], () => r(require('../views/shortvideo
...
@@ -85,285 +86,312 @@ const videoManage = r => require.ensure([], () => r(require('../views/shortvideo
const
qualificationList
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/qualification/list.vue'
)),
'qualification'
)
const
qualificationList
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/qualification/list.vue'
)),
'qualification'
)
const
qualificationDetail
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/qualification/detail.vue'
)),
'qualification'
)
const
qualificationDetail
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'../views/qualification/detail.vue'
)),
'qualification'
)
export
default
[{
export
default
[
path
:
'/'
,
{
path
:
"/"
,
component
:
App
,
component
:
App
,
children
:
[
children
:
[
{
{
path
:
'/login'
,
path
:
"/login"
,
component
:
login
,
component
:
login
,
name
:
'loginPage'
,
name
:
"loginPage"
,
},
},
{
{
path
:
''
,
path
:
""
,
redirect
:
'/home'
redirect
:
"/home"
,
},{
},
path
:
'/index'
,
{
component
:
home
path
:
"/index"
,
},{
component
:
home
,
path
:
'/home'
,
},
component
:
home
{
},{
path
:
"/home"
,
path
:
'/blank'
,
component
:
home
,
component
:
blank
},
},{
{
path
:
'/item-manager'
,
path
:
"/blank"
,
component
:
itemManager
component
:
blank
,
},{
},
path
:
'/add-manager'
,
{
component
:
addManager
path
:
"/item-manager"
,
},{
component
:
itemManager
,
path
:
'/edit-manager'
,
},
component
:
editManager
{
},{
path
:
"/add-manager"
,
path
:
'/edit-cme'
,
component
:
addManager
,
component
:
editCme
},
},{
{
path
:
'/edit-professional-exam'
,
path
:
"/edit-manager"
,
component
:
editProfessionalExam
component
:
editManager
,
},{
},
path
:
'/subject-manager'
,
{
component
:
subjectManager
path
:
"/edit-cme"
,
},{
component
:
editCme
,
path
:
'/report-download'
,
},
component
:
reportDownload
{
},{
path
:
"/edit-professional-exam"
,
path
:
'/edit-subject'
,
component
:
editProfessionalExam
,
component
:
editSubject
},
},{
{
path
:
'/item-component'
,
path
:
"/subject-manager"
,
component
:
itemComponent
component
:
subjectManager
,
},{
},
path
:
'/role'
,
{
component
:
roleManager
path
:
"/report-download"
,
},{
component
:
reportDownload
,
path
:
'/circle-limit'
,
},
component
:
circleLimit
{
},{
path
:
"/edit-subject"
,
path
:
'/create-component'
,
component
:
editSubject
,
component
:
createComponent
},
},{
{
path
:
'/item-role'
,
path
:
"/item-component"
,
component
:
itemRole
component
:
itemComponent
,
}
},
,{
{
path
:
'/report-list'
,
path
:
"/role"
,
component
:
reportLis
component
:
roleManager
,
},{
},
path
:
'/item-list'
,
{
component
:
itemList
path
:
"/circle-limit"
,
},{
component
:
circleLimit
,
path
:
'/data-alignment'
,
},
component
:
dataAlignment
{
},{
path
:
"/create-component"
,
path
:
'/name-list'
,
component
:
createComponent
,
component
:
nameList
},
},
{
{
path
:
"/item-role"
,
path
:
'/export-download'
,
component
:
itemRole
,
component
:
exportDownload
},
},
{
path
:
"/report-list"
,
component
:
reportLis
,
},
{
path
:
"/item-list"
,
component
:
itemList
,
},
{
path
:
"/data-alignment"
,
component
:
dataAlignment
,
},
{
path
:
"/name-list"
,
component
:
nameList
,
},
{
path
:
"/export-download"
,
component
:
exportDownload
,
},
{
{
path
:
'/report-list-old'
,
path
:
"/report-list-old"
,
component
:
reportLisOld
component
:
reportLisOld
,
},{
},
path
:
'/item-list-old'
,
{
component
:
itemListOld
path
:
"/item-list-old"
,
},{
component
:
itemListOld
,
path
:
'/data-alignment-old'
,
},
component
:
dataAlignmentOld
{
},{
path
:
"/data-alignment-old"
,
path
:
'/name-list-old'
,
component
:
dataAlignmentOld
,
component
:
nameListOld
},
},
{
{
path
:
"/name-list-old"
,
path
:
'/export-download-old'
,
component
:
nameListOld
,
component
:
exportDownloadOld
},
},
{
path
:
"/export-download-old"
,
component
:
exportDownloadOld
,
},
{
{
path
:
'/item-shield'
,
path
:
"/item-shield"
,
component
:
itemShield
,
component
:
itemShield
,
},
},
{
{
path
:
'/entry-manager'
,
path
:
"/entry-manager"
,
component
:
entryManager
,
component
:
entryManager
,
},
},
{
{
path
:
'/edit-entry'
,
path
:
"/edit-entry"
,
component
:
editEntry
,
component
:
editEntry
,
},
},
{
{
path
:
'/msg-push'
,
path
:
"/msg-push"
,
component
:
msgPush
,
component
:
msgPush
,
// redirect: 'msgpush/msg-push',
// redirect: 'msgpush/msg-push',
},
},
{
{
path
:
'/edit-notice'
,
path
:
"/edit-notice"
,
component
:
editNotice
,
component
:
editNotice
,
// redirect: 'msgpush/msg-push',
// redirect: 'msgpush/msg-push',
},
},
{
{
path
:
'/credit-manage'
,
path
:
"/credit-manage"
,
component
:
creditManage
,
component
:
creditManage
,
},
},
{
{
path
:
'/review-access-manage'
,
path
:
"/review-access-manage"
,
component
:
reviewAccessManage
,
component
:
reviewAccessManage
,
},
},
{
{
path
:
'/credit-send-manage'
,
path
:
"/credit-send-manage"
,
component
:
creditSendManage
,
component
:
creditSendManage
,
},
},
{
{
path
:
'/apply-detail'
,
path
:
"/apply-detail"
,
component
:
applyDetail
,
component
:
applyDetail
,
},
},
{
{
path
:
'/template-manager'
,
path
:
"/template-manager"
,
component
:
templateManager
component
:
templateManager
,
},
},
{
{
path
:
'/template-editor'
,
path
:
"/template-editor"
,
component
:
templateEditor
component
:
templateEditor
,
},
},
{
{
path
:
'/template-open'
,
path
:
"/template-open"
,
component
:
templateOpen
component
:
templateOpen
,
},
},
{
{
path
:
'/edit-custom'
,
path
:
"/edit-custom"
,
component
:
editCustom
component
:
editCustom
,
},
},
{
{
path
:
'/edu-role'
,
path
:
"/edu-role"
,
component
:
eduRole
component
:
eduRole
,
},
},
{
{
path
:
'/notice-editor'
,
path
:
"/notice-editor"
,
component
:
noticeEditor
component
:
noticeEditor
,
},
},
{
{
path
:
'/yq-range'
,
path
:
"/yq-range"
,
component
:
yqRange
component
:
yqRange
,
},
},
{
{
path
:
'/activity-management'
,
path
:
"/activity-management"
,
component
:
activityManagement
component
:
activityManagement
,
},
},
{
{
path
:
'/create-activity'
,
path
:
"/create-activity"
,
component
:
createActivity
component
:
createActivity
,
},
},
{
{
path
:
"/live-manage"
,
path
:
'/live-manage'
,
component
:
liveManage
,
component
:
liveManage
},
},
{
{
path
:
"/role-manage"
,
path
:
'/role-manage'
,
component
:
roleManage
,
component
:
roleManage
},
},
{
{
path
:
"/admin-manage"
,
path
:
'/admin-manage'
,
component
:
adminManage
,
component
:
adminManage
},
},
{
{
path
:
"/create-range"
,
path
:
'/create-range'
,
component
:
createRange
,
component
:
createRange
},
},
{
{
path
:
"/range-manage"
,
path
:
'/range-manage'
,
component
:
rangeManage
,
component
:
rangeManage
},
},
{
{
path
:
"/range-apply"
,
path
:
'/range-apply'
,
component
:
rangeApply
,
component
:
rangeApply
},
},
{
{
path
:
"/create-live"
,
path
:
'/create-live'
,
component
:
createLive
,
component
:
createLive
},
},
{
{
path
:
"/edit-range"
,
path
:
'/edit-range'
,
component
:
editRange
,
component
:
editRange
},
},
{
{
path
:
"/blacklist-manage"
,
path
:
'/blacklist-manage'
,
component
:
blackListManage
,
component
:
blackListManage
},
},
{
{
path
:
"/external-resource-manage"
,
path
:
'/external-resource-manage'
,
component
:
externalResourceManage
,
component
:
externalResourceManage
,
},
},
{
{
path
:
"/audit-custom-course"
,
path
:
'/audit-custom-course'
,
component
:
auditCustomCourse
,
component
:
auditCustomCourse
,
},
},
{
{
path
:
"/advert-simple-manage"
,
path
:
'/advert-simple-manage'
,
component
:
advertSimpleManage
,
component
:
advertSimpleManage
,
},
},
{
{
path
:
"/edit-simple-advert"
,
path
:
'/edit-simple-advert'
,
component
:
editSimpleAdvert
,
component
:
editSimpleAdvert
,
},
},
{
{
path
:
"/shop-list"
,
path
:
'/shop-list'
,
component
:
shopList
,
component
:
shopList
,
},
},
{
{
path
:
"/create-shop"
,
path
:
'/create-shop'
,
component
:
createShop
,
component
:
createShop
,
},
},
{
{
path
:
"/order-manage"
,
path
:
'/order-manage'
,
component
:
orderManage
,
component
:
orderManage
,
},
},
{
{
path
:
"/goods-manage"
,
path
:
'/goods-manage'
,
component
:
goodsManage
,
component
:
goodsManage
,
},
},
{
{
path
:
"/freight-config"
,
path
:
'/freight-config'
,
component
:
freightConfig
,
component
:
freightConfig
,
},
},
{
{
path
:
'/create-good'
,
path
:
"/create-good"
,
component
:
createGood
,
component
:
createGood
,
},
},
{
{
path
:
'/order-detail'
,
path
:
"/create-good-new"
,
component
:
orderDetail
,
component
:
createGoodNew
,
},
},
{
{
path
:
'/plaza-list'
,
path
:
"/order-detail"
,
component
:
plazaList
,
component
:
orderDetail
,
},
},
{
{
path
:
'/activity-member'
,
path
:
"/plaza-list"
,
component
:
activityMember
,
component
:
plazaList
,
},
},
{
{
path
:
'video-manage'
,
path
:
"/activity-member"
,
component
:
videoManage
,
component
:
activityMember
,
},
},
{
{
path
:
'qualification-list'
,
path
:
"video-manage"
,
component
:
qualificationList
component
:
videoManage
,
},
},
{
{
path
:
'qualification-detail'
,
path
:
"qualification-list"
,
component
:
qualificationDetail
component
:
qualificationList
,
},
},
{
path
:
"qualification-detail"
,
component
:
qualificationDetail
,
},
// {
// {
// path: '/followup',
// path: '/followup',
// name: 'followUp',
// name: 'followUp',
// component: followUp,
// component: followUp,
// redirect: 'followup/plan-manage/planList',
// redirect: 'followup/plan-manage/planList',
// },
// },
followRouters
,
followRouters
,
patientsRouters
,
patientsRouters
,
]
],
}]
},
];
src/style/common.scss
浏览文件 @
a02e26c9
...
@@ -218,9 +218,18 @@ html,body{
...
@@ -218,9 +218,18 @@ html,body{
border
:
1px
solid
#449284
!
important
;
border
:
1px
solid
#449284
!
important
;
opacity
:
0
.5
;
opacity
:
0
.5
;
}
}
// .el-button--default:focus, .el-button--default:hover {
// color: #449284 !important;
// border-color: #449284 !important;
// background-color: #fff !important;
// }
.el-pagination.is-background
.el-pager
li
:not
(
.disabled
)
.active
{
.el-pagination.is-background
.el-pager
li
:not
(
.disabled
)
.active
{
background
:
#449284
!
important
;
background
:
#449284
!
important
;
}
}
// 表格选中
.el-table__body
tr
.current-row
>
td
.el-table__cell
{
background-color
:
rgb
(
236
,
244
,
243
)
!
important
;
}
// 主题样式修改
// 主题样式修改
.el-radio__input.is-checked
.el-radio__inner
{
.el-radio__input.is-checked
.el-radio__inner
{
...
...
src/utils/goods/index.js
浏览文件 @
a02e26c9
...
@@ -161,5 +161,43 @@ export const getCooperationProjectList = () => {
...
@@ -161,5 +161,43 @@ export const getCooperationProjectList = () => {
description
:
"查询合作项目"
,
description
:
"查询合作项目"
,
});
});
};
};
export
const
getGoodsCascadeList
=
(
parentId
,
level
)
=>
{
return
fetch
({
headers
,
url
:
getBaseUrl
(
`store/commodity/categorys/cascade/list?pageNo=1&pageSize=999&parentId=
${
parentId
}
&categoryLevel=
${
level
}
`
),
method
:
"get"
,
description
:
" 获取商品(药品)分类"
,
});
};
export
const
getMedList
=
(
data
)
=>
{
return
fetch
({
headers
,
url
:
getBaseUrl
(
`store/medications/query/medicationGoodsListByPage`
),
method
:
"post"
,
data
,
description
:
"查询药品列表"
,
});
};
export
const
getCategorysList
=
(
params
)
=>
{
return
fetch
({
headers
,
url
:
getBaseUrl
(
`store/medical/categorys/list`
),
method
:
"get"
,
params
,
description
:
"查询药品类别"
,
});
};
export
const
saveMedList
=
(
data
)
=>
{
return
fetch
({
headers
,
url
:
getBaseUrl
(
`store/admin/medical/save`
),
method
:
"post"
,
data
,
description
:
"药品保存"
,
});
};
src/views/freight/freight-config.vue
浏览文件 @
a02e26c9
...
@@ -606,7 +606,7 @@ export default {
...
@@ -606,7 +606,7 @@ export default {
}
}
}
}
// url = `/create-good?id=${row.goodsId}&storeId=${this.searchForm.storeId}&goodsType=${goodsType}&commissionFlag=${this.commissionFlag}`
// url = `/create-good?id=${row.goodsId}&storeId=${this.searchForm.storeId}&goodsType=${goodsType}&commissionFlag=${this.commissionFlag}`
let
url
=
`/create-good?id=
${
item
}
&storeId=
${
this
.
storeId
}
&goodsType=
${
goodsType
}
&commissionFlag=2`
;
let
url
=
`/create-good
-new
?id=
${
item
}
&storeId=
${
this
.
storeId
}
&goodsType=
${
goodsType
}
&commissionFlag=2`
;
// this.$store.dispatch('goodsManage/changeGoodsInfo', {...row});
// this.$store.dispatch('goodsManage/changeGoodsInfo', {...row});
this
.
$router
.
push
({
this
.
$router
.
push
({
path
:
url
,
path
:
url
,
...
...
src/views/goods/common/forms.js
0 → 100644
浏览文件 @
a02e26c9
const
form1
=
{
approvalNumber
:
""
,
// 批准文号
medicCommonName
:
""
,
// 产品通用名称
barCode
:
""
,
// 条形码
medicGoodsName
:
""
,
// 商品名称
size
:
""
,
// 规格
manufacturer
:
""
,
// 生产企业
medicalCategoryId
:
""
,
// 药品分类
};
const
form
=
{
id
:
0
,
goodsName
:
""
,
goodsDescription
:
""
,
goodsHeaderImages
:
[],
goodsType
:
""
,
barCode
:
""
,
costPrice
:
0
,
decrStock
:
0
,
//减少库存
incrStock
:
""
,
//增加库存
storeId
:
""
,
optPrice
:
""
,
scorePerformance
:
0
,
goodsStock
:
0
,
stock
:
0
,
externalGoodsCode
:
""
,
leastCount
:
1
,
mostCount
:
-
1
,
incrType
:
1
,
saleType
:
1
,
minWhole
:
1
,
expressLimitFlag
:
0
,
//是否支持退货退款
};
const
form3
=
{
goodsCategoryIdList
:
[],
// 商品分类
cooperationProjectId
:
""
,
// 合作项目id
contractId
:
""
,
// 合同id
goodsName
:
""
,
// 商品名称
choiceGoods
:
false
,
goodsDescription
:
""
,
// 商品介绍
goodsHeaderImages
:
[],
goodsVideoList
:
[],
goodsDetailImages
:
[],
medicationId
:
""
,
};
export
const
originForm1
=
form1
;
export
const
originForm3
=
form3
;
export
const
originForm
=
form
;
src/views/goods/common/mock.js
0 → 100644
浏览文件 @
a02e26c9
export
const
kk
=
{
data
:
{
smallStoreList
:
[
{
id
:
14913
,
certifyId
:
null
,
tradeMedicalLibId
:
7561
,
productName
:
null
,
goodsName
:
null
,
barCode
:
"TMP7561"
,
usedFlag
:
1
,
categoryName
:
1
,
categoryIdLevel2
:
null
,
categoryIdLevel3
:
null
,
categoryIdLevel4
:
null
,
category
:
"药品"
,
status
:
3
,
refuseContent
:
null
,
modifiedTime
:
"2022-03-01 13:43:01"
,
lastModifiedPerson
:
null
,
createTime
:
"2022-03-01 13:43:01"
,
},
{
id
:
14912
,
certifyId
:
null
,
tradeMedicalLibId
:
0
,
productName
:
"ahhah"
,
goodsName
:
"jaksdh"
,
barCode
:
"TMP1646104308791"
,
usedFlag
:
null
,
categoryName
:
5
,
categoryIdLevel2
:
504
,
categoryIdLevel3
:
-
1
,
categoryIdLevel4
:
-
1
,
category
:
"服务/系统服务"
,
status
:
2
,
refuseContent
:
null
,
modifiedTime
:
"2022-03-01 11:11:49"
,
lastModifiedPerson
:
"周爽"
,
createTime
:
"2022-03-01 11:11:49"
,
},
{
id
:
14911
,
certifyId
:
null
,
tradeMedicalLibId
:
7560
,
productName
:
null
,
goodsName
:
null
,
barCode
:
"TMP7560"
,
usedFlag
:
1
,
categoryName
:
1
,
categoryIdLevel2
:
null
,
categoryIdLevel3
:
null
,
categoryIdLevel4
:
null
,
category
:
"药品"
,
status
:
3
,
refuseContent
:
null
,
modifiedTime
:
"2022-02-28 17:17:35"
,
lastModifiedPerson
:
null
,
createTime
:
"2022-02-28 17:17:35"
,
},
{
id
:
14910
,
certifyId
:
77
,
tradeMedicalLibId
:
7559
,
productName
:
"1"
,
goodsName
:
"1"
,
barCode
:
"11111"
,
usedFlag
:
1
,
categoryName
:
1
,
categoryIdLevel2
:
100
,
categoryIdLevel3
:
10001
,
categoryIdLevel4
:
100011
,
category
:
"药品/西药/抗微生物药/青霉素类"
,
status
:
3
,
refuseContent
:
null
,
modifiedTime
:
"2022-02-27 15:32:25"
,
lastModifiedPerson
:
"金涛"
,
createTime
:
"2022-02-27 13:37:05"
,
},
{
id
:
14908
,
certifyId
:
76
,
tradeMedicalLibId
:
7548
,
productName
:
"红霉素1"
,
goodsName
:
"红霉素1"
,
barCode
:
"HMS0001"
,
usedFlag
:
1
,
categoryName
:
1
,
categoryIdLevel2
:
100
,
categoryIdLevel3
:
10001
,
categoryIdLevel4
:
100011
,
category
:
"药品/西药/抗微生物药/青霉素类"
,
status
:
3
,
refuseContent
:
null
,
modifiedTime
:
"2022-02-27 13:28:59"
,
lastModifiedPerson
:
"金涛"
,
createTime
:
"2022-02-27 11:43:12"
,
},
{
id
:
14909
,
certifyId
:
null
,
tradeMedicalLibId
:
7558
,
productName
:
""
,
goodsName
:
""
,
barCode
:
"TMP7558"
,
usedFlag
:
1
,
categoryName
:
0
,
categoryIdLevel2
:
-
1
,
categoryIdLevel3
:
-
1
,
categoryIdLevel4
:
-
1
,
category
:
""
,
status
:
2
,
refuseContent
:
null
,
modifiedTime
:
"2022-02-27 13:27:32"
,
lastModifiedPerson
:
"金涛"
,
createTime
:
"2022-02-27 13:27:32"
,
},
{
id
:
14906
,
certifyId
:
null
,
tradeMedicalLibId
:
7557
,
productName
:
""
,
goodsName
:
""
,
barCode
:
"TMP7557"
,
usedFlag
:
1
,
categoryName
:
null
,
categoryIdLevel2
:
null
,
categoryIdLevel3
:
null
,
categoryIdLevel4
:
null
,
category
:
""
,
status
:
3
,
refuseContent
:
null
,
modifiedTime
:
"2022-02-24 14:55:41"
,
lastModifiedPerson
:
null
,
createTime
:
"2022-02-24 14:55:41"
,
},
{
id
:
14905
,
certifyId
:
null
,
tradeMedicalLibId
:
7556
,
productName
:
""
,
goodsName
:
""
,
barCode
:
"232332"
,
usedFlag
:
1
,
categoryName
:
1
,
categoryIdLevel2
:
null
,
categoryIdLevel3
:
null
,
categoryIdLevel4
:
null
,
category
:
"药品"
,
status
:
3
,
refuseContent
:
null
,
modifiedTime
:
"2022-02-24 14:40:50"
,
lastModifiedPerson
:
null
,
createTime
:
"2022-02-24 14:40:50"
,
},
{
id
:
14904
,
certifyId
:
null
,
tradeMedicalLibId
:
7555
,
productName
:
""
,
goodsName
:
""
,
barCode
:
"32423"
,
usedFlag
:
1
,
categoryName
:
1
,
categoryIdLevel2
:
null
,
categoryIdLevel3
:
null
,
categoryIdLevel4
:
null
,
category
:
"药品"
,
status
:
3
,
refuseContent
:
null
,
modifiedTime
:
"2022-02-24 14:18:15"
,
lastModifiedPerson
:
null
,
createTime
:
"2022-02-24 14:18:15"
,
},
{
id
:
14903
,
certifyId
:
null
,
tradeMedicalLibId
:
7554
,
productName
:
""
,
goodsName
:
""
,
barCode
:
"TMP7554"
,
usedFlag
:
1
,
categoryName
:
null
,
categoryIdLevel2
:
null
,
categoryIdLevel3
:
null
,
categoryIdLevel4
:
null
,
category
:
""
,
status
:
3
,
refuseContent
:
null
,
modifiedTime
:
"2022-02-23 18:57:14"
,
lastModifiedPerson
:
null
,
createTime
:
"2022-02-23 18:57:13"
,
},
],
pageNo
:
1
,
pageSize
:
10
,
totalPage
:
1490
,
totalNum
:
14893
,
},
code
:
"000000"
,
message
:
"成功"
,
requestId
:
"8ac3d50b-82ab-4c33-a460-36b9fa52d724"
,
};
export
const
params
=
{
productName
:
""
,
letterPinyin
:
""
,
goodsName
:
""
,
categoryName
:
""
,
categoryIdLevel2
:
""
,
categoryIdLevel3
:
""
,
categoryIdLevel4
:
""
,
barCode
:
""
,
status
:
""
,
goodsFlag
:
1
,
pageSize
:
10
,
pageNo
:
1
,
};
export
const
hh
=
{
filterName
:
"博尔诚"
,
applySource
:
"2"
,
letterPinyin
:
""
,
goodsName
:
""
,
categoryName
:
""
,
categoryIdLevel2
:
""
,
categoryIdLevel3
:
""
,
categoryIdLevel4
:
""
,
barCode
:
""
,
status
:
""
,
goodsFlag
:
1
,
pageSize
:
10
,
pageNo
:
1
,
};
\ No newline at end of file
src/views/goods/common/rules.js
0 → 100644
浏览文件 @
a02e26c9
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
" },
],
medicGoodsName: [
{ required: true, message: "
请输入商品名称
", trigger: "
blur
" },
],
size: [{ required: true, message: "
请输入商品规格
", trigger: "
blur
" }],
manufacturer: [
{ required: true, message: "
请输入生产厂家
", trigger: "
blur
" },
],
medicalCategoryId: [
{ required: true, message: "
请选择药品分类
", trigger: "
change
" },
],
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
" },
],
optPrice: [{ required: true, message: "
请输入价格
", trigger: "
blur
" }],
saleType: [{ required: true, message: "
请选择销售方式
", trigger: "
change
" }],
stock: [{ required: true, message: "
请输入库存
", trigger: "
blur
" }],
minWhole: [{ required: true, message: "
请输入最小起批
", trigger: "
blur
" }],
expressLimitFlag: [
{
required: true,
message: "
请选择是否支持售后
",
trigger: "
change
",
},
],
};
const rules3 = {
goodsName: [
{ required: true, message: "
请输入商品名称
", trigger: "
submit
" },
// { validator: checkProjectStr, trigger: "
submit
" },
],
goodsDescription: [
{ required: true, message: "
请输入商品介绍
", trigger: "
submit
" },
],
goodsHeaderImages: [
{ required: true, message: "
请上传商品头图
", trigger: "
blur
" },
],
goodsCategoryIdList: [
{ required: true, message: "
请选择商品分类
", trigger: "
change
" },
],
};
export const originRules1 = rules1;
export const originRules2 = rules2;
export const originRules3 = rules3;
export const originRules = rules;
src/views/goods/create-good-new.scss
0 → 100644
浏览文件 @
a02e26c9
.create-shop-wrapper
{
.create-shop-content
{
background
:
#fff
;
padding
:
10px
;
.step-content
{
overflow
:
hidden
;
height
:
60px
;
padding
:
10px
10px
50px
;
border-bottom
:
1px
solid
#efefef
;
.title
{
font-size
:
13px
;
color
:
#449284
;
}
}
.word-tip
{
color
:
#e6af7a
;
}
}
.suitableList-select
{
width
:
445px
;
}
.el-button--text
{
color
:
#449284
;
font-size
:
14px
;
&
:
:
after
{
content
:
''
;
position
:
relative
;
height
:
14px
;
/*border-right: 1px solid #EBEEF5;*/
border-right
:
1px
solid
#aaaaaa
;
padding-right
:
10px
;
}
&
:last-of-type
{
&
:
:
after
{
content
:
''
;
position
:
relative
;
width
:
1px
;
height
:
14px
;
border-right
:
none
;
}
}
}
}
.
required-label
.
el-form-item__label
:
:
before
{
content
:
"*"
;
color
:
#f56c6c
;
margin-right
:
4px
;
}
.basic-item-icon
{
position
:
relative
;
.show-goods-table
{
.del-goods
{
color
:
#449284
;
cursor
:
pointer
;
}
}
.require
{
position
:
absolute
;
left
:
67px
;
top
:
11px
;
color
:
#f56c6c
;
}
.error-message
{
font-size
:
12px
;
color
:
#f56c6c
;
}
.upload-message
{
position
:
absolute
;
left
:
0
;
top
:
105px
;
font-size
:
12px
;
color
:
#f56c6c
;
}
.backTip
{
font-size
:
12px
;
color
:
red
;
cursor
:
pointer
;
}
.ad-back
{
color
:
#449284
;
}
.img-delete
{
position
:
absolute
;
left
:
0px
;
top
:
0px
;
width
:
84px
;
height
:
100px
;
background
:
#000
;
opacity
:
0
.7
;
z-index
:
999
;
i
{
color
:
#fff
;
margin-top
:
39px
;
margin-left
:
0px
;
}
}
}
.word-num
{
font-size
:
12px
;
color
:
#999
;
// padding-top: 5px;
}
.line
{
margin-left
:
10px
;
width
:
20px
;
}
.bg-uploader
{
.bg-img
{
float
:
left
;
width
:
84px
;
height
:
100px
;
}
.limit-text
{
float
:
left
;
margin-left
:
10px
;
margin-top
:
-10px
;
p
{
font-size
:
12px
;
color
:
#999
;
text-align
:
left
;
}
}
}
.el-upload__tip
{
position
:
absolute
;
top
:
-6px
;
left
:
130px
;
}
.span-mt-10
{
.edit-img
{
width
:
20px
;
margin-top
:
10px
;
}
}
.p-tips
{
font-size
:
13px
;
color
:
#8C8C8C
;
line-height
:
26px
;
}
.part-tit
{
font-size
:
14px
;
padding
:
20px
0
20px
20px
;
}
.inline
{
.el-form-item
{
display
:
inline-block
;
vertical-align
:top
;
.el-radio__label
{
font-size
:
12px
;
}
}
}
.stock-com
{
width
:
158px
;
height
:
32px
;
border-radius
:
4px
;
overflow
:
hidden
;
.sp
{
display
:
inline-block
;
float
:
left
;
color
:
#fff
;
}
.sp-c
{
line-height
:
30px
;
height
:
30px
;
width
:
92px
;
text-align
:
center
;
color
:
#666
;
border-top
:
1px
solid
#449284
;
border-bottom
:
1px
solid
#449284
;
}
.sp-l
{
border-right
:
1px
solid
#449284
;
}
.sp-r
{
border-left
:
1px
solid
#449284
;
border-radius
:
0
4px
4px
0
;
}
.sp-l
,
.sp-r
{
width
:
32px
;
text-align
:
center
;
line-height
:
32px
;
font-size
:
13px
;
background
:
#449284
;
cursor
:
pointer
;
}
.opac
{
opacity
:
0
.5
;
}
}
.stock-dia
{
.stock-item
{
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
;
}
//.el-input-number__increase {
// right: 1px;
// border-radius: 0 4px 4px 0;
// border-left: 1px solid #449284;
//}
.el-input-number__decrease
,
.el-input-number__increase
{
position
:
absolute
;
z-index
:
1
;
top
:
1px
;
width
:
40px
;
height
:
auto
;
text-align
:
center
;
background
:
#449284
;
color
:
#606266
;
cursor
:
pointer
;
font-size
:
13px
;
}
.el-icon-plus
{
color
:
#ffffff
;
}
.el-icon-minus
{
color
:
#ffffff
;
}
#introVideoLecture
{
height
:
140px
;
}
.video-progress
{
width
:
20%
;
}
.el-upload-list
{
width
:
30%
;
}
.label-video
{
position
:
relative
;
.el-button
:focus
,
.el-button
:hover
{
color
:
#449284
;
border-color
:
#449284
;
background-color
:
#ecf5ff
;
}
.dl-video
{
position
:
absolute
;
top
:
50%
;
left
:
35%
;
transform
:
translate
(
-50%
,-
50%
);
}
}
.add-goods-dialog
{
.add-goods-table
{
margin-top
:
10px
;
margin-bottom
:
20px
;
}
.add-goods-search
{
margin-left
:
10px
;
}
.add-goods--pagination
{
text-align
:
right
;
margin-top
:
25px
;
margin-bottom
:
25px
;
}
}
\ No newline at end of file
src/views/goods/create-good-new.vue
0 → 100644
浏览文件 @
a02e26c9
<
template
>
<div
class=
"create-shop-wrapper"
>
<bread-crumb
:curmbFirst=
"curmbFirst"
:curmbSecond=
"curmbSecond"
:curmbThird=
"curmbThird"
:jumPathThird=
"jumPathThird"
></bread-crumb>
<div
class=
"create-shop-content screenSet"
id=
"screenSet"
>
<el-row
class=
"step-content"
>
<el-col
:span=
"20"
>
<p
class=
"title"
>
{{
title
}}
</p>
</el-col>
<el-col
:span=
"4"
style=
"text-align: right"
>
<el-button
size=
"small"
@
click=
"cancelComplete"
>
取消
</el-button>
<el-button
size=
"small"
type=
"primary"
@
click=
"complete"
>
保存
</el-button>
</el-col>
</el-row>
<el-form
ref=
"formData3"
:model=
"formData3"
:rules=
"rules3"
label-width=
"150px"
label-suffix=
":"
class=
"basic-form"
>
<div
class=
"basic-item-icon"
>
<div
class=
"part-tit"
>
基本信息
</div>
<el-form-item
label=
"商品分类"
prop=
"goodsCategoryIdList"
>
<el-cascader
size=
"small"
ref=
"cascader"
:props=
"cascaderProps"
clearable
v-model=
"formData3.goodsCategoryIdList"
@
change=
"searchCategoryChange"
/>
</el-form-item>
<el-form-item
label=
"项目-合同名称"
prop=
"cooperationProjectId"
>
<el-select
v-model=
"formData3.cooperationProjectId"
placeholder=
"请选择"
size=
"small"
:disabled=
"isEdit && isProject"
@
change=
"getContract"
@
clear=
"projectClear"
clearable
filterable
>
<el-option
v-for=
"(item,index) in cooperationProjectList"
:key=
"item.projectName+'-'+index"
:label=
"item.projectName"
:value=
"item.cooperationProjectId"
></el-option>
</el-select>
<el-select
v-model=
"formData3.contractId"
placeholder=
"请选择"
size=
"small"
clearable
:disabled=
"isEdit && isContract"
>
<el-option
v-for=
"(item,index) in contractList"
:key=
"item.contractName+'-'+index"
:label=
"item.contractName"
:value=
"item.contractId"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"选择基础药品"
prop=
"choiceGoods"
>
<el-col
:span=
"16"
>
<el-button
type=
"primary"
@
click=
"addMed"
:disabled=
"isShowGoods"
>
+添加药品
</el-button>
<el-button
@
click=
"addNewGoods"
>
新增药品
</el-button>
<div
v-if=
"isShowGoodsMsg"
:style=
"
{color: '#f56c6c',fontSize: '12px'}">请选择基础药品
</div>
</el-col>
<el-table
v-if=
"isShowGoods"
:data=
"choiceMedData"
ref=
"singlTable"
class=
"show-goods-table"
>
<el-table-column
property=
"productName"
label=
"产品名称/通用名称"
width=
"150"
></el-table-column>
<el-table-column
property=
"barCode"
label=
"条形码"
width=
"200"
></el-table-column>
<el-table-column
property=
"goodsName"
label=
"商品名称"
></el-table-column>
<el-table-column
property=
" approvalNumber"
label=
"批准文号"
width=
"150"
></el-table-column>
<el-table-column
property=
"specifications"
label=
"规格"
width=
"200"
></el-table-column>
<el-table-column
property=
"productionCompany"
label=
"生产企业"
></el-table-column>
<el-table-column
label=
"操作"
><span
class=
"del-goods"
@
click=
"delGoods"
>
删除
</span></el-table-column>
</el-table>
</el-form-item>
<el-form-item
label=
"商品名称"
prop=
"goodsName"
>
<el-col
:span=
"13"
>
<el-input
size=
"small"
v-model=
"formData3.goodsName"
placeholder=
"请输入商品名称"
show-word-limit
maxlength=
"60"
></el-input>
<!--
<span
class=
"word-num"
>
{{
(
formData
.
goodsName
).
replace
(
/
\s
+/g
,
""
).
length
}}
/60
</span>
-->
</el-col>
</el-form-item>
<el-form-item
label=
"商品介绍"
prop=
"goodsDescription"
>
<el-col
:span=
"13"
>
<el-input
type=
"textarea"
rows=
"4"
size=
"small"
v-model=
"formData3.goodsDescription"
placeholder=
"请输入商品介绍"
maxlength=
"40"
show-word-limit
></el-input>
<span
class=
"word-tip"
>
此文案可摘取药品说明书【功能主治】or【适应症】
</span>
</el-col>
</el-form-item>
<el-form-item
label=
"商品头图"
class=
"required-label"
>
<el-upload
:file-list=
"fileGoodsList"
class=
"bg-uploader"
:show-file-list=
"isShowFileList"
action=
"#"
:before-upload=
"beforeUploadPic"
multiple
:on-exceed=
"imgExceed"
:limit=
"6"
>
<div
class=
"file-pics"
v-if=
"fileGoodsList.length > 0"
:key=
"index"
v-for=
"(item,index) in fileGoodsList"
>
<img
:src=
"item.url"
@
mouseover
.
stop=
"headIndex=index"
class=
"bg-img"
/>
<div
class=
"img-delete"
v-if=
"headIndex==index"
@
click
.
stop=
"deleteImg(item,fileGoodsList)"
@
mouseout
.
stop=
"headIndex=-1"
>
<i
class=
"el-icon-delete"
></i>
</div>
</div>
<img
class=
"bg-img"
src=
"../../assets/image/small.png"
v-if=
"fileGoodsList.length
<
6
"
/>
<div
class=
"limit-text"
v-if=
"fileGoodsList.length
<
6
"
>
<!--
<p>
限制大小: 200kb
</p>
-->
<p>
建议尺寸:750*750
</p>
<p>
支持jpeg, png格式
</p>
</div>
</el-upload>
<p
class=
"upload-message"
v-if=
"!isgoodsImages"
>
请上传商品头图
</p>
<!--
<p
class=
"upload-message"
v-if=
"uploadImgMessage1"
>
请上传商品头图
</p>
-->
</el-form-item>
<el-form-item
label=
"商品介绍视频"
class=
"label-video"
>
<el-upload
accept=
".mp4"
:on-remove=
"handleRemoveVideo"
:file-list=
"videoList"
:before-upload=
"beforeVideoUpload"
:show-file-list=
"false"
:disabled=
"videoList.length == 1"
:limit=
"1"
action=
"#"
class=
"bg-uploader"
>
<video
id=
"introVideoLecture"
:src=
"videoModel.videoFullPath"
controls
preload
style=
"width: 100%;"
v-if=
"videoList.length == 1"
>
视频
</video>
<img
class=
"bg-img"
src=
"../../assets/image/video.png"
v-if=
"videoList.length
<1
"
/>
<div
class=
"limit-text"
v-if=
"videoList.length
<1
"
>
<p>
建议大小:20M以内
</p>
<p>
仅支持MP4格式
</p>
<P>
视频名称必须包含3个下划线:举例(YQ_01_02_03.mp4)
</P>
</div>
</el-upload>
<el-progress
:text-inside=
"true"
:stroke-width=
"16"
:percentage=
"uploadProgress"
status=
"success"
class=
"video-progress"
v-show=
"uploadProgress>0&&uploadProgress
<100
"
>
</el-progress>
<el-button
class=
"dl-video"
icon=
"el-icon-delete"
circle
@
click=
"deleteVideo"
v-if=
"videoList.length == 1"
></el-button>
</el-form-item>
<el-form-item
label=
"商品详情图片"
>
<el-upload
class=
"bg-uploader"
action=
"#"
:show-file-list=
"false"
:before-upload=
"beforeUploadPic1"
>
<div
v-if=
"fileIntrList.length > 0"
>
<div
class=
"file-pics"
v-if=
"item.url"
:key=
"index"
v-for=
"(item,index) in fileIntrList"
>
<img
:src=
"item.url"
@
mouseover
.
stop=
"intrIndex=index"
class=
"bg-img"
/>
<div
class=
"img-delete"
v-if=
"intrIndex==index"
@
click
.
stop=
"deleteImg(item,fileIntrList)"
@
mouseout
.
stop=
"intrIndex=-1"
>
<i
class=
"el-icon-delete"
></i>
</div>
</div>
</div>
<img
class=
"bg-img"
src=
"../../assets/image/small.png"
/>
<div
class=
"limit-text"
>
<p>
限制大小: 2M
</p>
<!--
<p>
最小尺寸:750*420
</p>
-->
<p>
支持jpeg, png格式
</p>
</div>
</el-upload>
<p
class=
"upload-message"
v-if=
"!isSpecification_url"
>
请上传商品详情图片
</p>
</el-form-item>
</div>
</el-form>
<!-- 销售信息 -->
<!--
<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=
"saleType"
>
<el-radio-group
v-model=
"formData.saleType"
size=
"small"
>
<el-radio
:label=
"1"
>
零售
</el-radio>
<el-radio
:label=
"2"
:disabled=
"commissionFlag == 1"
>
批发
</el-radio>
</el-radio-group>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 1"
>
<el-form-item
label=
"零售价"
prop=
"optPrice"
>
<el-col
:span=
"20"
>
<el-input-number
class=
"stock-com"
@
input=
"$forceUpdate();"
v-model=
"formData.optPrice"
size=
"small"
:precision=
"2"
:min=
"0.00"
:max=
"99999.99"
></el-input-number>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 2"
>
<el-form-item
label=
"批发价"
prop=
"optPrice"
>
<el-col
:span=
"20"
>
<el-input-number
class=
"stock-com"
@
input=
"$forceUpdate();"
v-model=
"formData.optPrice"
size=
"small"
:precision=
"2"
:min=
"0"
:max=
"99999.99"
></el-input-number>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 1"
>
<el-form-item
label=
"绩效分值"
>
<el-col
:span=
"20"
>
<el-input-number
class=
"stock-com"
@
input=
"$forceUpdate();"
v-model=
"formData.scorePerformance"
size=
"small"
:precision=
"2"
:min=
"0.00"
:max=
"999999.99"
></el-input-number>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
>
<el-form-item
label=
"库存"
prop=
"stock"
class=
"required-label"
>
<el-col
:span=
"20"
>
<div
class=
"stock-com"
>
<span
class=
"sp sp-l"
@
click=
"changeStock(1)"
:class=
"
{'opac':formData.stock == 0}">
<i
class=
"el-icon-minus"
></i></span>
<span
class=
"sp sp-c"
>
{{
formData
.
stock
}}
</span>
<span
class=
"sp sp-r"
@
click=
"changeStock(2)"
><i
class=
"el-icon-plus"
></i></span>
</div>
<p
class=
"error-message"
v-if=
"!isgoodStock"
>
库存不能为0
</p>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 1"
>
<el-form-item
label=
"最小起购件数"
prop=
"leastCount"
class=
"required-label"
>
<el-col
:span=
"20"
>
<div
class=
"stock-com"
style=
"width: 500px;display:flex"
>
<el-input-number
class=
"stock-com"
@
input=
"$forceUpdate();"
v-model=
"formData.leastCount"
size=
"small"
:precision=
"0"
:min=
"0"
:max=
"9999"
></el-input-number>
<span
class=
"word-num"
style=
"margin-left: 10px;"
>
最高9999件哦
</span>
</div>
<p
class=
"error-message"
v-if=
"formData.leastCount
<
=
0
"
>
最小起购件数不能为0
</p>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 1 && formData.leastCount > 1"
>
<el-form-item
label=
"递增方式"
>
<el-col
:span=
"24"
>
<el-radio
size=
"mini"
v-model=
"formData.incrType"
:label=
"2"
>
倍数递增
</el-radio>
<el-radio
v-model=
"formData.incrType"
:label=
"1"
>
1件递增
</el-radio>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 1"
>
<el-form-item
label=
"单次购买上限"
prop=
"mostCount"
class=
"required-label"
>
<el-col
:span=
"20"
style=
"width: 300%;"
>
<div
class=
"stock-com"
style=
"width: 500px;display:flex"
>
<el-input-number
class=
"stock-com"
@
input=
"$forceUpdate();"
v-model=
"formData.mostCount"
size=
"small"
:precision=
"0"
:min=
"-1"
:max=
"9999"
></el-input-number>
<span
class=
"word-num"
style=
"margin-left: 10px;"
>
数值为-1时,代表单次购买上限已无限制(最高9999件哦)
</span>
</div>
<p
class=
"error-message"
v-if=
"formData.mostCount === 0"
>
单次购买上限不能为0
</p>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 1"
>
<el-form-item
label=
"第三方商品编码"
>
<el-col
:span=
"20"
>
<el-input
size=
"small"
v-model=
"formData.externalGoodsCode"
placeholder=
"请输入第三方商品编码"
></el-input>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 2"
>
<el-form-item
label=
"最小起批"
prop=
"minWhole"
class=
"required-label"
>
<el-col
:span=
"20"
>
<div
class=
"stock-com"
>
<span
class=
"sp sp-l"
@
click=
"minusCount(3)"
><i
class=
"el-icon-minus"
></i></span>
<span
class=
"sp sp-c"
>
{{
formData
.
minWhole
}}
</span>
<span
class=
"sp sp-r"
@
click=
"plusCount(3)"
><i
class=
"el-icon-plus"
></i></span>
</div>
<p
class=
"error-message"
v-if=
"formData.minWhole
<
=
0
"
>
最小起批不能为0
</p>
</el-col>
</el-form-item>
</div>
<el-form-item
label=
"是否支持售后"
prop=
"expressLimitFlag"
v-if=
"storeType
<
3
"
>
<el-radio-group
v-model=
"formData.expressLimitFlag"
:disabled=
"!hasRepoFlag"
>
<el-radio
:label=
"1"
>
是
</el-radio>
<el-radio
:label=
"0"
>
否
</el-radio>
</el-radio-group>
<p
class=
"backTip"
v-if=
"!hasRepoFlag"
@
click=
"goShopDeatil"
>
若需设置商品支持售后,需先至店铺页
<span
class=
"ad-back"
>
设置售后地址
</span></p>
</el-form-item>
</div>
<div
class=
"basic-item-icon"
v-if=
"formData.saleType == 1"
>
<div
class=
"part-tit"
>
限购条件
</div>
<div
v-for=
"(item, index) in buyLimitDtoList"
:key=
"index"
>
<el-form-item
label=
"限制条件"
>
<el-button
@
click=
"delLimit(index)"
type=
"text"
size=
"small"
>
删除
</el-button>
</el-form-item>
<el-form-item
label=
"限制对象"
>
<el-col
:span=
"10"
>
<el-radio-group
v-model=
"item.limitUserType"
size=
"small"
@
change=
"changeLimitUserType(item,index)"
>
<el-radio
:label=
"1"
>
开单人
</el-radio>
<el-radio
:label=
"2"
>
患者
</el-radio>
</el-radio-group>
</el-col>
</el-form-item>
<el-form-item
label=
"购买限制"
>
<el-input-number
v-model=
"item.days"
style=
"margin-left: 5px;"
size=
"small"
:precision=
"0"
:min=
"1"
:max=
"100000"
></el-input-number>
<el-select
v-model=
"item.daysType"
size=
"small"
>
<el-option
v-for=
"(item,index) in daysTypeList"
:key=
"index"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
<span
style=
"margin-left: 5px;"
>
内,最多购买
</span>
<el-input-number
v-model=
"item.limitCount"
style=
"margin-left: 5px;"
size=
"small"
:precision=
"0"
:min=
"1"
:max=
"100000"
></el-input-number>
<span
style=
"margin-left: 5px;"
>
次
</span>
</el-form-item>
</div>
<div
class=
"inline"
>
<el-form-item>
<el-button
size=
"small"
type=
"primary"
@
click=
"addBuyingLimit"
><i
class=
"el-icon-plus"
></i>
限购条件
</el-button>
</el-form-item>
</div>
</div>
</el-form>
-->
<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=
"saleType"
>
<el-radio-group
v-model=
"formData.saleType"
size=
"small"
>
<el-radio
:label=
"1"
>
零售
</el-radio>
<el-radio
:label=
"2"
:disabled=
"commissionFlag == 1"
>
批发
</el-radio>
</el-radio-group>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 1"
>
<el-form-item
label=
"零售价"
prop=
"optPrice"
>
<el-col
:span=
"20"
>
<el-input-number
class=
"stock-com"
@
input=
"$forceUpdate();"
v-model=
"formData.optPrice"
size=
"small"
:precision=
"2"
:min=
"0.00"
:max=
"99999.99"
></el-input-number>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 2"
>
<el-form-item
label=
"批发价"
prop=
"optPrice"
>
<el-col
:span=
"20"
>
<el-input-number
class=
"stock-com"
@
input=
"$forceUpdate();"
v-model=
"formData.optPrice"
size=
"small"
:precision=
"2"
:min=
"0"
:max=
"99999.99"
></el-input-number>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 1"
>
<el-form-item
label=
"绩效分值"
>
<el-col
:span=
"20"
>
<el-input-number
class=
"stock-com"
@
input=
"$forceUpdate();"
v-model=
"formData.scorePerformance"
size=
"small"
:precision=
"2"
:min=
"0.00"
:max=
"999999.99"
></el-input-number>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
>
<el-form-item
label=
"库存"
prop=
"stock"
class=
"required-label"
>
<el-col
:span=
"20"
>
<div
class=
"stock-com"
>
<span
class=
"sp sp-l"
@
click=
"changeStock(1)"
:class=
"
{'opac':formData.stock == 0}">
<i
class=
"el-icon-minus"
></i></span>
<span
class=
"sp sp-c"
>
{{
formData
.
stock
}}
</span>
<span
class=
"sp sp-r"
@
click=
"changeStock(2)"
><i
class=
"el-icon-plus"
></i></span>
</div>
<p
class=
"error-message"
v-if=
"!isgoodStock"
>
库存不能为0
</p>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 1"
>
<el-form-item
label=
"最小起购件数"
prop=
"leastCount"
class=
"required-label"
>
<el-col
:span=
"20"
>
<div
class=
"stock-com"
style=
"width: 500px;display:flex"
>
<el-input-number
class=
"stock-com"
@
input=
"$forceUpdate();"
v-model=
"formData.leastCount"
size=
"small"
:precision=
"0"
:min=
"0"
:max=
"9999"
></el-input-number>
<span
class=
"word-num"
style=
"margin-left: 10px;"
>
最高9999件哦
</span>
</div>
<p
class=
"error-message"
v-if=
"formData.leastCount
<
=
0
"
>
最小起购件数不能为0
</p>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 1 && formData.leastCount > 1"
>
<el-form-item
label=
"递增方式"
>
<el-col
:span=
"24"
>
<el-radio
size=
"mini"
v-model=
"formData.incrType"
:label=
"2"
>
倍数递增
</el-radio>
<el-radio
v-model=
"formData.incrType"
:label=
"1"
>
1件递增
</el-radio>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 1"
>
<el-form-item
label=
"单次购买上限"
prop=
"mostCount"
class=
"required-label"
>
<el-col
:span=
"20"
style=
"width: 300%;"
>
<div
class=
"stock-com"
style=
"width: 500px;display:flex"
>
<el-input-number
class=
"stock-com"
@
input=
"$forceUpdate();"
v-model=
"formData.mostCount"
size=
"small"
:precision=
"0"
:min=
"-1"
:max=
"9999"
></el-input-number>
<span
class=
"word-num"
style=
"margin-left: 10px;"
>
数值为-1时,代表单次购买上限已无限制(最高9999件哦)
</span>
</div>
<p
class=
"error-message"
v-if=
"formData.mostCount === 0"
>
单次购买上限不能为0
</p>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 1"
>
<el-form-item
label=
"第三方商品编码"
>
<el-col
:span=
"20"
>
<el-input
size=
"small"
v-model=
"formData.externalGoodsCode"
placeholder=
"请输入第三方商品编码"
></el-input>
</el-col>
</el-form-item>
</div>
<div
class=
"inline"
v-if=
"formData.saleType == 2"
>
<el-form-item
label=
"最小起批"
prop=
"minWhole"
class=
"required-label"
>
<el-col
:span=
"20"
>
<div
class=
"stock-com"
style=
"width: 500px;display:flex"
>
<el-input-number
class=
"stock-com"
@
input=
"$forceUpdate();"
v-model=
"formData.minWhole"
size=
"small"
:precision=
"0"
:min=
"1"
></el-input-number>
</div>
<p
class=
"error-message"
v-if=
"formData.minWhole
<
=
0
"
>
最小起批不能为0
</p>
</el-col>
</el-form-item>
</div>
<el-form-item
label=
"是否支持售后"
prop=
"expressLimitFlag"
v-if=
"storeType
<
3
"
>
<el-radio-group
v-model=
"formData.expressLimitFlag"
:disabled=
"!hasRepoFlag"
>
<el-radio
:label=
"1"
>
是
</el-radio>
<el-radio
:label=
"0"
>
否
</el-radio>
</el-radio-group>
<p
class=
"backTip"
v-if=
"!hasRepoFlag"
@
click=
"goShopDeatil"
>
若需设置商品支持售后,需先至店铺页
<span
class=
"ad-back"
>
设置售后地址
</span></p>
</el-form-item>
</div>
<div
class=
"basic-item-icon"
v-if=
"formData.saleType == 1"
>
<div
class=
"part-tit"
>
限购条件
</div>
<div
v-for=
"(item, index) in buyLimitDtoList"
:key=
"index"
>
<el-form-item
label=
"限制条件"
>
<el-button
@
click=
"delLimit(index)"
type=
"text"
size=
"small"
>
删除
</el-button>
</el-form-item>
<el-form-item
label=
"限制对象"
>
<el-col
:span=
"10"
>
<el-radio-group
v-model=
"item.limitUserType"
size=
"small"
@
change=
"changeLimitUserType(item,index)"
>
<el-radio
:label=
"1"
>
开单人
</el-radio>
<el-radio
:label=
"2"
>
患者
</el-radio>
</el-radio-group>
</el-col>
</el-form-item>
<el-form-item
label=
"购买限制"
>
<el-input-number
v-model=
"item.days"
style=
"margin-left: 5px;"
size=
"small"
:precision=
"0"
:min=
"1"
:max=
"100000"
></el-input-number>
<el-select
v-model=
"item.daysType"
size=
"small"
>
<el-option
v-for=
"(item,index) in daysTypeList"
:key=
"index"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
<span
style=
"margin-left: 5px;"
>
内,最多购买
</span>
<el-input-number
v-model=
"item.limitCount"
style=
"margin-left: 5px;"
size=
"small"
:precision=
"0"
:min=
"1"
:max=
"100000"
></el-input-number>
<span
style=
"margin-left: 5px;"
>
次
</span>
</el-form-item>
</div>
<div
class=
"inline"
>
<el-form-item>
<el-button
size=
"small"
type=
"primary"
@
click=
"addBuyingLimit"
><i
class=
"el-icon-plus"
></i>
限购条件
</el-button>
</el-form-item>
</div>
</div>
</el-form>
<el-dialog
:title=
"stock.title"
:visible
.
sync=
"stockDio"
width=
"30%"
center
>
<div
class=
"stock-dia"
>
<div
class=
"stock-item"
>
更新库存后,将影响买家购买,请谨慎操作
</div>
<div
class=
"stock-item"
>
当前库存:
{{
formData
.
goodsStock
}}
</div>
<div
class=
"demo-input-suffix"
>
{{
stock
.
type
==
1
?
'减少数量'
:
'增加数量'
}}
:
<el-input
v-model=
"stock.num"
:placeholder=
"stock.placeholderTxt"
maxLength=
"8"
style=
"width: 180px;"
></el-input>
</div>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: right;"
>
<el-button
type=
"primary"
@
click=
"updateStock"
>
完成
</el-button>
</span>
</el-dialog>
</div>
<!-- 添加药品 -->
<el-dialog
title=
"添加药品"
:visible
.
sync=
"baseAddVisible"
class=
"add-goods-dialog"
>
<el-row
type=
"flex"
class=
"row-bg"
>
<el-col
:span=
"21"
>
<el-input
v-model=
"filterName"
clearable
class=
"input-el"
size=
"middle"
placeholder=
"试试搜索:药品69开头条形码/通用名称/商品名称/拼音首字母"
></el-input>
</el-col>
<el-col
:span=
"2"
><el-button
type=
"primary"
@
click=
"searchAddGoods"
class=
"add-goods-search"
>
搜索
</el-button></el-col>
</el-row>
<el-table
:data=
"medData"
ref=
"singleTable"
highlight-current-row
@
current-change=
"handleCurrentChange"
@
row-click=
"handleRowClick"
class=
"add-goods-table"
>
<el-table-column
property=
"productName"
label=
"产品名称/通用名称"
width=
"150"
></el-table-column>
<el-table-column
property=
"barCode"
label=
"条形码"
width=
"200"
></el-table-column>
<el-table-column
property=
"goodsName"
label=
"商品名称"
></el-table-column>
<el-table-column
property=
"approvalNumber"
label=
"批准文号"
width=
"150"
></el-table-column>
<el-table-column
property=
"specifications"
label=
"规格"
width=
"200"
></el-table-column>
<el-table-column
property=
"productionCompany"
label=
"生产企业"
></el-table-column>
</el-table>
<div
class=
"add-goods--pagination"
>
<el-pagination
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleNumChange"
:current-page=
"pageNo"
:page-sizes=
"[10, 20, 50]"
:page-size=
"pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"totalRows"
></el-pagination>
</div>
<el-row
type=
"flex"
class=
"row-bg"
justify=
"end"
>
<el-col
:span=
"4"
>
<el-button
@
click=
"baseAddVisible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"confirmAddGoods"
>
确认
</el-button>
</el-col>
</el-row>
</el-dialog>
<!-- 新增药品 -->
<el-dialog
title=
"新增药品"
:visible
.
sync=
"isNewMeddialog"
>
<el-form
:model=
"formData1"
ref=
"formData1"
:rules=
"rules1"
label-width=
"150px"
label-suffix=
":"
>
<el-form-item
label=
"药品分类"
prop=
"medicalCategoryId"
>
<el-select
v-model=
"formData1.medicalCategoryId"
clearable
placeholder=
"请选择药品分类"
@
change=
"medicalChange"
>
<el-option
v-for=
"item in medicalCategoryList"
:key=
"item.id"
:label=
"item.categoryName"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"产品名称/通用名称"
prop=
"medicCommonName"
>
<el-col
:span=
"16"
>
<el-input
size=
"small"
v-model=
"formData1.medicCommonName"
placeholder=
"请输入通用名称"
style=
"width:70%;"
maxlength=
"60"
show-word-limit
></el-input>
</el-col>
</el-form-item>
<el-form-item
label=
"条形码"
prop=
"barCode"
v-if=
"![4,5].includes(formData1.medicalCategoryId)"
>
<el-col
:span=
"16"
>
<el-input
size=
"small"
v-model=
"formData1.barCode"
placeholder=
"请输入条形码"
@
input=
"changeBarCode"
></el-input>
<span
class=
"fast-opt"
@
click=
"fastInput(1)"
>
快速录入
</span>
<span
class=
"word-num"
>
(点击可快速录入下面的基本信息)
</span>
</el-col>
</el-form-item>
<el-form-item
label=
"商品名称"
prop=
"medicGoodsName"
>
<el-col
:span=
"16"
>
<el-input
size=
"small"
v-model=
"formData1.medicGoodsName"
placeholder=
"请输入商品名称"
maxlength=
"60"
show-word-limit
></el-input>
<!--
<span
class=
"word-num"
>
{{
(
formData
.
medicGoodsName
).
replace
(
/
\s
+/g
,
""
).
length
}}
/60
</span>
-->
</el-col>
</el-form-item>
<!-- 批准文号 -->
<el-form-item
label=
"批准文号"
prop=
"approvalNumber"
v-if=
"![4,5].includes(formData1.medicalCategoryId)"
>
<el-col
:span=
"16"
>
<el-input
size=
"small"
v-model=
"formData1.approvalNumber"
placeholder=
"请输入批准文号"
style=
"width:70%;"
></el-input>
</el-col>
</el-form-item>
<!-- 规格 -->
<el-form-item
label=
"规格"
prop=
"size"
v-if=
"![4,5].includes(formData1.medicalCategoryId)"
>
<el-col
:span=
"16"
>
<el-input
size=
"small"
v-model=
"formData1.size"
placeholder=
"请输入规格"
style=
"width:70%;"
></el-input>
<span
class=
"word-num"
>
例如:0.125g*12袋/盒
</span>
</el-col>
</el-form-item>
<!-- 生产企业 -->
<el-form-item
label=
"生产厂家"
prop=
"manufacturer"
v-if=
"![4,5].includes(formData1.medicalCategoryId)"
>
<el-col
:span=
"16"
>
<el-input
size=
"small"
v-model=
"formData1.manufacturer"
placeholder=
"请输入生产厂家"
style=
"width:70%;"
></el-input>
<span
class=
"word-num"
></span>
</el-col>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"isNewMeddialog = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"addNewMed"
>
确 定
</el-button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
import
BreadCrumb
from
"@/components/breadcrumb.vue"
;
let
vm
=
null
;
import
{
openLoading
,
closeLoading
,
signFigures
}
from
"@/utils/utils"
;
import
{
isEmptyUtils
}
from
"@/utils/index"
;
import
{
doUpload
,
getFilePath
,
createFilePath
}
from
"@/utils/qiniu-util"
;
import
{
updateGoods
,
updateStock
,
getGoodsList
,
getGoodDetails
,
updateGoodsV2
,
getContractList
,
getCooperationProjectList
,
getGoodsCascadeList
,
getMedList
,
getCategorysList
,
saveMedList
}
from
'@/utils/goods'
;
import
{
getStoreAdressRepot
}
from
"@/utils/shop"
;
import
Cropper
from
'@/components/common/cropper.vue'
import
{
originRules1
,
originRules
,
originRules3
}
from
'./common/rules'
;
import
{
originForm1
,
originForm
,
originForm3
}
from
'./common/forms'
;
export
default
{
components
:
{
BreadCrumb
,
Cropper
},
data
(){
return
{
medicalCategoryList
:
[],
// 药品分类
isShowGoodsMsg
:
false
,
medicationId
:
''
,
// 药品id (搜索药品列表)
medicationDetailId
:
''
,
choiceMedData
:
[],
// 选中的基础药品展示
isShowGoods
:
false
,
// 是否展示商品表格
filterName
:
''
,
// 搜索药品
// 商品分类级联配置
goodsCategoryIdList
:
[],
cascaderProps
:
{
multiple
:
true
,
lazy
:
true
,
checkStrictly
:
true
,
lazyLoad
:
(
node
,
resolve
)
=>
{
console
.
log
(
'lazyLoad'
,
node
);
const
{
level
,
root
,
value
}
=
node
;
console
.
log
(
'lazyLoad'
,
node
);
const
caLevel
=
level
+
1
;
const
params
=
{
parentId
:
0
,
categoryLevel
:
caLevel
};
if
(
!
root
)
{
params
.
parentId
=
value
;
params
.
categoryLevel
=
caLevel
;
}
getGoodsCascadeList
(
params
.
parentId
,
params
.
categoryLevel
).
then
((
res
)
=>
{
const
{
code
}
=
res
;
const
{
data
}
=
res
;
if
(
code
!==
'000000'
)
{
resolve
([]);
return
;
}
const
nodes
=
data
.
map
(
item
=>
({
value
:
item
.
id
,
label
:
item
.
categoryName
}));
// 通过调用resolve将子节点数据返回,通知组件数据加载完成
resolve
(
nodes
);
});
}
},
isNewMeddialog
:
false
,
// 新增药品弹窗
isSelectGoods
:
false
,
// 是否选择了添加药品
medData
:
[],
currentRow
:
null
,
baseAddVisible
:
false
,
// 添加药品
barAndGoodsFlag
:
false
,
// 编辑时商品名称和条形码是否可以编辑
goodDisabled
:
false
,
// 商品通用名称是否可编辑
isEdit
:
false
,
stock
:{
title
:
'减少库存'
,
type
:
1
,
placeholderTxt
:
'请输入减少的库存数量'
,
num
:
''
},
fileGoodsList
:[],
goodsCheckList
:
[],
fileIntrList
:[],
intrIndex
:
-
1
,
isShowFileList
:
false
,
isgoodStock
:
true
,
headIndex
:
-
1
,
stockDio
:
false
,
curmbFirst
:
'云鹊店铺'
,
curmbSecond
:
'商品管理'
,
curmbThird
:
'编辑商品'
,
// /live-manage?id=
jumPathThird
:
''
,
isgoodsImages
:
true
,
isSpecification_url
:
true
,
title
:
''
,
daysTypeList
:[{
label
:
'日'
,
value
:
1
,
},
{
label
:
'周'
,
value
:
7
,
},
{
label
:
'月'
,
value
:
30
,
},
{
label
:
'年'
,
value
:
365
,
}],
formData
:
JSON
.
parse
(
JSON
.
stringify
(
originForm
)),
// 通用信息
formData1
:
JSON
.
parse
(
JSON
.
stringify
(
originForm1
)),
// 基本信息
formData3
:
JSON
.
parse
(
JSON
.
stringify
(
originForm3
)),
buyLimitDtoList
:[],
rules
:
{},
rules1
:
{},
goodsId
:
0
,
// 新增时传0,更新时必需>0
goodsType
:
''
,
storeId
:
''
,
commissionFlag
:
2
,
// 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段
// 不同类型服务的表单通用字段
showCropper
:
false
,
currentOption
:
{
offset_x
:
120
,
offset_y
:
185
,
width
:
160
,
height
:
120
,
cvWidth
:
1000
,
cvHeight
:
800
,
uploadType
:
1
,
cropDialogWidth
:
'900px'
,
cropBoxResizable
:
true
,
minCropBoxWidth
:
100
,
minCropBoxHeight
:
100
,
aspectRatio
:
16
/
9
},
slide2
:
{
oriUrl
:
''
,
// 原图
},
imgMouseOver1
:
false
,
uploadImgMessage1
:
false
,
//未上传图片,校验提示语
isCheckServe
:
false
,
// 商品类型选择【检测服务】时!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
inputType
:
''
,
limitVisibleFlag
:
false
,
limit
:{
title
:
"限购条件"
},
storeType
:
1
,
//1: "供货商",2: "小药房",3: "医生小店"
hasRepoFlag
:
0
,
//店铺是否有退货地址
videoList
:
[],
//视频上传文件列表
videoModel
:{
videoFullPath
:
''
},
sumFile
:
0
,
uploadProgress
:
0
,
// 上传视频进度条
cooperationProjectList
:
[],
// 合作项目
contractList
:
[],
// 合同
isProject
:
false
,
// 是否选择合作项目
isContract
:
false
,
// 是否选择合同
pageNo
:
1
,
pageSize
:
10
,
totalRows
:
0
,
isAddServe
:
false
// 新增药品时 添加的是否为服务类 || 虚拟商品
}
},
created
()
{
vm
=
this
;
const
{
id
,
storeId
,
goodsType
,
inputType
,
commissionFlag
,
storeType
}
=
this
.
$route
.
query
;
this
.
goodsType
=
goodsType
;
this
.
storeId
=
storeId
;
this
.
inputType
=
inputType
||
''
;
this
.
commissionFlag
=
commissionFlag
;
this
.
storeType
=
storeType
;
this
.
rules
=
originRules
;
this
.
rules1
=
originRules1
;
this
.
rules3
=
originRules3
;
this
.
jumPathThird
=
'/goods-manage?storeId='
+
storeId
+
'&commissionFlag='
+
this
.
commissionFlag
+
'&storeType='
+
this
.
storeType
;
this
.
title
=
id
==
'add'
?
'新增商品'
:
'编辑商品'
;
this
.
isEdit
=
id
!=
'add'
;
this
.
curmbThird
=
this
.
title
;
this
.
formData
.
storeId
=
Number
(
storeId
)
||
''
;
this
.
getCooperationProjectList
();
// 获取合作项目
if
(
id
!=
'add'
){
this
.
getDetailByEdit
(
id
,
goodsType
);
}
else
{
this
.
getStoreAdress
();
}
// debugger;
// 判空
if
(
this
.
formData
.
leastCount
==
null
||
this
.
formData
.
leastCount
===
''
)
{
this
.
formData
.
leastCount
=
1
;
}
if
(
this
.
formData
.
mostCount
==
null
||
this
.
formData
.
mostCount
===
''
)
{
this
.
formData
.
mostCount
=
-
1
;
}
if
(
this
.
formData
.
incrType
==
null
||
this
.
formData
.
incrType
===
''
)
{
this
.
formData
.
incrType
=
2
;
}
},
methods
:
{
// 取消
cancelComplete
()
{
this
.
$confirm
(
'取消后您填写的信息将不会被保存'
,
'确认取消吗?'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
}).
then
(()
=>
{
this
.
$router
.
go
(
-
1
);
}).
catch
(()
=>
{
});
},
// 药品分类切换
medicalChange
(
val
)
{
if
([
4
,
5
].
includes
(
val
))
{
this
.
isAddServe
=
true
;
}
},
// 获取药品分类
getCategorysList
()
{
let
params
=
{
pageNo
:
1
,
pageSize
:
999
,
categoryLevel
:
1
,
parentId
:
0
,
};
getCategorysList
(
params
).
then
(
res
=>
{
console
.
log
(
res
,
'-=-=-='
)
if
(
res
.
code
==
'000000'
)
{
this
.
medicalCategoryList
=
res
.
data
.
medicalCategorysList
;
}
})
},
handleSizeChange
(
val
)
{
this
.
pageSize
=
val
;
this
.
pageNo
=
1
;
this
.
searchAddGoods
();
},
handleNumChange
(
val
)
{
this
.
pageNo
=
val
;
this
.
searchAddGoods
();
},
delGoods
()
{
this
.
$confirm
(
'确认要删除该商品吗?'
,
''
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
}).
then
(()
=>
{
this
.
isShowGoods
=
false
;
this
.
choiceMedData
=
[];
this
.
$message
({
type
:
'success'
,
message
:
'删除成功!'
});
}).
catch
(()
=>
{
});
},
// 商品分类级联多选
searchCategoryChange
(
value
)
{
console
.
log
(
value
,
'商品分类级联多选'
)
this
.
formData3
.
goodsCategoryIdList
=
value
;
this
.
$refs
.
cascader
.
toggleDropDownVisible
();
},
// 确认选择药品
confirmAddGoods
()
{
if
(
!
this
.
isSelectGoods
)
{
this
.
$message
.
error
(
'您还未选择药品'
);
return
;
}
if
(
this
.
choiceMedData
.
length
>
0
)
{
this
.
isShowGoods
=
true
;
this
.
baseAddVisible
=
false
;
}
},
addMed
()
{
this
.
baseAddVisible
=
true
;
if
(
this
.
$refs
.
singleTable
)
{
this
.
isSelectGoods
=
false
;
this
.
$refs
.
singleTable
.
setCurrentRow
();
}
},
// 点击选择药品
handleRowClick
(
row
)
{
if
(
row
)
{
this
.
isSelectGoods
=
true
;
}
this
.
$refs
.
singleTable
.
setCurrentRow
(
row
);
},
// 点击切换药品
handleCurrentChange
(
val
)
{
if
(
val
)
{
this
.
currentRow
=
val
;
this
.
formData3
.
medicationId
=
val
.
tradeMedicalLibId
;
this
.
formData3
.
medicationDetailId
=
val
.
id
;
this
.
isCheckServe
=
val
.
categoryName
==
5
?
true
:
false
;
let
current
=
[
this
.
currentRow
];
this
.
choiceMedData
=
current
;
console
.
log
(
val
.
categoryName
,
'categoryNamecategoryName'
)
}
},
// 新增药品
addNewMed
()
{
let
isTrue
;
this
.
$refs
.
formData1
.
validate
((
valid
,
object
)
=>
{
isTrue
=
valid
;
if
(
!
valid
)
return
false
;
});
if
(
!
isTrue
)
return
;
let
data
=
{};
// 服务类/虚拟商品
if
(
this
.
isAddServe
)
{
data
=
{
medicalCategoryId
:
this
.
formData1
.
medicalCategoryId
,
medicCommonName
:
this
.
formData1
.
medicCommonName
,
medicGoodsName
:
this
.
formData1
.
medicGoodsName
}
}
else
{
data
=
this
.
formData1
;
}
this
.
saveMedList
(
data
);
},
// 药品保存
saveMedList
(
data
)
{
saveMedList
(
data
).
then
(
res
=>
{
if
(
res
.
code
==
'000000'
)
{
this
.
$message
({
type
:
'success'
,
message
:
'新增药品成功!'
});
this
.
isNewMeddialog
=
false
;
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
res
.
message
});
}
}).
catch
(
err
=>
{
this
.
$message
({
type
:
'error'
,
message
:
err
.
message
});
})
},
// 新增药品
addNewGoods
(){
this
.
getCategorysList
();
// 获取药品类别
this
.
isNewMeddialog
=
true
;
},
// 基本信息添加药品
searchAddGoods
(
medicationId
)
{
console
.
log
(
medicationId
,
'medicationIdmedicationId'
)
let
data
=
{
medicationId
:
medicationId
,
filterName
:
this
.
filterName
,
applySource
:
"2"
,
letterPinyin
:
""
,
goodsName
:
""
,
categoryName
:
""
,
categoryIdLevel2
:
""
,
categoryIdLevel3
:
""
,
categoryIdLevel4
:
""
,
barCode
:
""
,
status
:
""
,
goodsFlag
:
1
,
pageSize
:
10
,
pageNo
:
1
,
};
getMedList
(
data
).
then
(
res
=>
{
if
(
res
.
code
==
'000000'
)
{
this
.
medData
=
res
.
data
.
smallStoreList
;
if
(
this
.
medData
.
length
>
0
&&
medicationId
)
{
this
.
choiceMedData
=
res
.
data
.
smallStoreList
;
this
.
isShowGoods
=
true
;
}
this
.
totalRows
=
res
.
data
.
totalNum
;
}
})
},
// 获取合同
getContractList
(
projectId
)
{
getContractList
(
projectId
||
0
).
then
(
res
=>
{
if
(
res
.
code
==
'000000'
)
{
this
.
contractList
=
res
.
data
;
console
.
log
(
this
.
contractList
,
'this.contractList'
);
}
})
},
// 获取合作项目
getCooperationProjectList
()
{
getCooperationProjectList
().
then
(
res
=>
{
if
(
res
.
code
==
'000000'
)
{
this
.
cooperationProjectList
=
res
.
data
;
}
})
},
// 切换合同
getContract
(
projectId
)
{
this
.
formData3
.
contractId
=
''
;
this
.
contractList
=
[];
this
.
getContractList
(
projectId
);
},
projectClear
()
{
this
.
formData3
.
contractId
=
''
;
this
.
contractList
=
[];
},
// 判断imgurl是否有效
checkImgExists
(
imgurl
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
var
ImgObj
=
new
Image
()
ImgObj
.
src
=
imgurl
ImgObj
.
onload
=
function
(
res
)
{
resolve
(
res
)
}
ImgObj
.
onerror
=
function
(
err
)
{
reject
(
err
)
}
})
},
//eidt状态
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
,
buyLimitDtoList
,
hasRepoFlag
}
=
res
.
data
;
goodsInfo
.
goodsCategoryIdArr
=
[[
40114
,
40115
]];
const
{
goodsName
,
goodsDescription
,
goodsType
,
expressLimitFlag
,
goodsHeaderImages
=
[],
goodsVideoList
=
[],
contractId
,
cooperationProjectId
,
medicationId
,
goodsCategoryIdArr
:
goodsCategoryIdList
}
=
goodsInfo
;
// 查询药品列表
this
.
searchAddGoods
(
medicationId
);
this
.
isProject
=
Boolean
(
cooperationProjectId
);
if
(
this
.
isProject
)
{
this
.
getContractList
(
cooperationProjectId
)
}
this
.
isContract
=
Boolean
(
contractId
);
this
.
formData
=
{...
this
.
formData
,
...
goodsInfo
};
this
.
formData
=
{
...
this
.
formData
};
this
.
formData3
=
{
goodsName
,
goodsDescription
,
goodsHeaderImages
,
goodsVideoList
,
goodsType
,
expressLimitFlag
,
cooperationProjectId
,
contractId
,
goodsCategoryIdList
};
console
.
log
(
this
.
formData3
,
'this.formData3 this.formData3 this.formData3 this.formData3 this.formData3 this.formData3 '
)
this
.
buyLimitDtoList
=
buyLimitDtoList
;
this
.
hasRepoFlag
=
hasRepoFlag
;
this
.
formData
.
stock
=
this
.
formData
.
goodsStock
;
this
.
formData
.
scorePerformance
=
this
.
formData
.
scorePerformance
/
100
;
this
.
formData
.
optPrice
=
this
.
formData
.
costPrice
/
100
;
this
.
fileGoodsList
=
this
.
getImges
(
goodsHeaderImages
,
1
);
// this.goodsCheckList = this.getImges(medicalService.goodsCheckImages, goodsType);
if
(
goodsInfo
.
goodsVideoList
.
length
>
0
)
{
this
.
videoList
.
push
(
goodsInfo
.
goodsVideoList
[
0
]);
this
.
videoModel
.
videoFullPath
=
this
.
videoList
[
0
].
goodsImgUrl
;
}
let
newImgList
=
[];
this
.
fileGoodsList
.
map
((
item
,
index
)
=>
{
this
.
checkImgExists
(
item
.
imageUrl
).
then
(()
=>
{
newImgList
.
push
(
item
)
}).
catch
(()
=>
{
newImgList
=
this
.
fileGoodsList
.
splice
(
index
,
1
);
})
})
this
.
fileGoodsList
=
newImgList
;
console
.
log
(
this
.
fileGoodsList
,
'-=-=-=-=-fileGoodsListfileGoodsList'
)
this
.
rules
=
{
...
this
.
rules
,
...
originRules
};
console
.
log
(
this
.
formData3
.
goodsCategoryIdList
,
'this.formData3.goodsCategoryIdList'
)
}
else
{
const
res
=
await
getGoodsList
({
goodsIdList
:[
id
],
goodsName
:
''
,
goodsType
:
''
,
pageNo
:
1
,
pageSize
:
10
,
storeId
:
this
.
storeId
,
applySource
:
2
});
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
,
hasRepoFlag
}
=
res
.
data
;
const
{
goodsName
,
goodsDescription
,
goodsType
,
expressLimitFlag
,
goodsHeaderImages
=
[],
goodsVideoList
=
[],
contractId
,
cooperationProjectId
,
medicationId
,
goodsCategoryIdArr
:
goodsCategoryIdList
}
=
goodsList
[
0
];
const
goodDet
=
goodsList
[
0
];
goodDet
.
otc1
=
goodDet
.
otc
?
'1'
:
'0'
;
// 查询药品列表
this
.
searchAddGoods
(
medicationId
);
this
.
isProject
=
Boolean
(
cooperationProjectId
);
if
(
this
.
isProject
)
{
this
.
getContractList
(
cooperationProjectId
)}
this
.
isContract
=
Boolean
(
contractId
);
this
.
formData1
=
goodDet
;
this
.
formData
=
goodDet
;
this
.
formData3
=
{
goodsName
,
goodsDescription
,
goodsHeaderImages
,
goodsVideoList
,
goodsType
,
expressLimitFlag
,
contractId
,
cooperationProjectId
,
goodsCategoryIdList
};
this
.
hasRepoFlag
=
hasRepoFlag
;
this
.
buyLimitDtoList
=
this
.
formData
.
buyLimitDtoList
;
this
.
formData
.
optPrice
=
this
.
formData
.
costPrice
/
100
;
this
.
formData
.
scorePerformance
=
this
.
formData
.
scorePerformance
/
100
;
this
.
fileGoodsList
=
this
.
getImges
(
goodDet
.
goodsImgList
,
1
);
this
.
fileIntrList
=
this
.
getImges
(
goodDet
.
medicImgList
,
2
);
this
.
formData
.
stock
=
this
.
formData
.
goodsStock
;
if
(
goodDet
.
goodsVideoList
.
length
>
0
)
{
this
.
videoList
.
push
(
goodDet
.
goodsVideoList
[
0
]);
this
.
videoModel
.
videoFullPath
=
this
.
videoList
[
0
].
goodsImgUrl
;
}
let
newImgList
=
[];
this
.
fileGoodsList
.
map
((
item
,
index
)
=>
{
this
.
checkImgExists
(
item
.
imageUrl
).
then
(()
=>
{
newImgList
.
push
(
item
)
}).
catch
(()
=>
{
newImgList
=
this
.
fileGoodsList
.
splice
(
index
,
1
);
})
})
this
.
fileGoodsList
=
newImgList
;
this
.
rules
=
{
...
this
.
rules
,
...
originRules
};
}
},
getImges
(
d
,
type
){
let
a
=
[];
if
(
d
.
length
>
0
){
for
(
let
i
=
0
;
i
<
d
.
length
;
i
++
){
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
;
},
// 修改条形码
changeBarCode
(
val
)
{
// this.$refs.formData1.resetFields();
this
.
formData1
.
barCode
=
val
;
// this.goodDisabled = false;
},
//快速录入
fastInput
(
type
){
///medications/query/{approvalnumber}
if
(
this
.
formData1
.
barCode
==
''
){
this
.
$refs
.
formData1
.
validateField
(
"barCode"
)
return
;
}
// this.GET("store/medications/query/"+this.formData.approvalNumber).then(res => {
this
.
GET
(
`store/medications/query/barcode/
${
this
.
formData1
.
barCode
}
`
).
then
(
res
=>
{
console
.
log
(
res
)
if
(
res
.
code
!=
'000000'
){
return
this
.
$message
({
message
:
res
.
message
,
type
:
'error'
});
}
if
(
res
.
data
==
null
){
return
this
.
$message
({
message
:
'未查询到数据,请手动输入'
,
type
:
'warning'
});
}
const
{
imageList
,
medicationInfo
}
=
res
.
data
// this.formData1.medicationId = medicationInfo.id;
this
.
formData1
.
approvalNumber
=
medicationInfo
.
approvalNumber
;
// const {medicCommonName,
// medicGoodsName,
// dosageId,
// size,
// otc,
// usage,
// categoryIdLevel2,
// categoryIdLevel3,
// categoryIdLevel4,
// categoryIdLevel5,
// manufacturer,
// department,
// treatDisease,
// expiredTime} = medicationInfo
// let fastParm = {
// medicCommonName,
// medicGoodsName,
// dosageId,
// size,
// otc,
// usage,
// categoryIdLevel2,
// categoryIdLevel3,
// categoryIdLevel4,
// categoryIdLevel5,
// manufacturer,
// department,
// treatDisease,
// expiredTime,
// }
// this.formData1.otc1 = this.formData1.otc ? '1' : '0'
const
{
medicCommonName
,
medicGoodsName
,
size
,
manufacturer
}
=
medicationInfo
let
fastParm
=
{
medicCommonName
,
medicGoodsName
,
size
,
manufacturer
}
this
.
formData1
=
Object
.
assign
(
this
.
formData1
,
fastParm
)
// this.goodDisabled = medicationInfo.medicalCategoryId ? true : false
// this.fileIntrList = this.getImges(imageList,2)
});
},
updateStock
(){
let
r
=
/^
\+?[
1-9
][
0-9
]
*$/
;
//造假 接口来了删掉
if
(
this
.
stock
.
num
<=
0
){
return
this
.
$message
({
message
:
'增加库存数量不得为0'
,
type
:
'warning'
});
}
if
(
!
r
.
test
(
this
.
stock
.
num
)){
return
this
.
$message
({
message
:
'库存数量必须正整数'
,
type
:
'warning'
});
}
if
(
this
.
stock
.
type
==
1
){
if
(
this
.
stock
.
num
>
this
.
formData
.
goodsStock
){
return
this
.
$message
({
message
:
'减少库存数量不得大于当前库存'
,
type
:
'warning'
});
}
this
.
formData
.
stock
=
this
.
formData
.
goodsStock
-
this
.
stock
.
num
this
.
formData
.
decrStock
=
Number
(
this
.
stock
.
num
)
this
.
formData
.
incrStock
=
''
}
else
if
(
this
.
stock
.
type
==
2
){
this
.
formData
.
stock
=
Number
(
this
.
stock
.
num
)
+
Number
(
this
.
formData
.
goodsStock
)
this
.
formData
.
incrStock
=
Number
(
this
.
stock
.
num
)
this
.
formData
.
decrStock
=
''
}
//this.formData.goodsStock = this.formData.stock
this
.
stockDio
=
false
},
changeStock
(
type
){
if
(
this
.
formData
.
stock
==
0
&&
type
==
1
){
return
;
}
let
str
=
type
==
1
?
'减少'
:
'增加'
,
txt
=
`请输入
${
str
}
的库存数量`
,
tit
=
str
+
'库存'
this
.
stock
=
{
title
:
tit
,
type
,
num
:
''
,
placeholderTxt
:
txt
}
this
.
stockDio
=
true
},
complete
()
{
let
formNameList
=
[
'formData'
,
'formData3'
];
this
.
formData
=
{
...
this
.
formData
,...
this
.
formData3
};
for
(
let
i
=
0
;
i
<
this
.
fileGoodsList
.
length
;
i
++
){
this
.
fileGoodsList
[
i
].
imageSort
=
i
+
1
}
for
(
let
j
=
0
;
j
<
this
.
fileIntrList
.
length
;
j
++
){
this
.
fileIntrList
[
j
].
imageSort
=
j
+
1
}
this
.
formData
.
categoryId
=
this
.
formData
.
goodsType
this
.
formData
.
otc
=
this
.
formData
.
otc1
==
1
?
true
:
false
this
.
isgoodStock
=
this
.
formData
.
stock
>
0
?
true
:
false
this
.
formData
.
goodsId
=
this
.
goodsId
;
this
.
formData
.
goodsImages
=
this
.
fileGoodsList
;
this
.
formData
.
goodsHeaderImages
=
this
.
fileGoodsList
;
this
.
formData
.
goodsVideoList
=
this
.
videoList
;
this
.
formData
.
goodsDetailImages
=
this
.
fileIntrList
;
// 商品详情图
console
.
log
(
this
.
formData
.
goodsDetailImages
,
'goodsDetailImagesgoodsDetailImagesgoodsDetailImages'
)
this
.
formData
.
buyLimitDtoList
=
this
.
buyLimitDtoList
;
this
.
isgoodsImages
=
this
.
formData
.
goodsImages
.
length
==
0
?
false
:
true
;
this
.
isSpecification_url
=
this
.
formData
.
goodsDetailImages
.
length
==
0
?
false
:
true
;
// 判断是否只选择了项目-合同名称的其中一项
const
{
cooperationProjectId
,
contractId
}
=
this
.
formData3
;
if
((
cooperationProjectId
&&
!
contractId
)
||
(
!
cooperationProjectId
&&
contractId
))
{
return
this
.
$message
({
message
:
'请选择项目-合同名称'
,
type
:
'warning'
});
}
let
isTrue
=
false
;
console
.
log
(
formNameList
.
length
,
'formNameListformNameList'
)
let
item
=
""
;
for
(
let
i
=
0
;
i
<
formNameList
.
length
;
i
++
){
console
.
log
(
i
,
'iiiiiiiii'
)
console
.
log
(
formNameList
[
i
],
'formNameList[i]'
)
item
=
formNameList
[
i
];
console
.
log
(
item
,
'itieuieutieutiu'
)
this
.
$refs
[
item
].
validate
((
valid
,
object
)
=>
{
isTrue
=
valid
;
if
(
!
valid
)
return
false
;
});
if
(
!
isTrue
){
return
;
}
}
// 是否上传商品头图 || 是否上传商品详情图片 || 库存是否为0 || 单次购买上线是否符合要求
if
(
!
this
.
isgoodsImages
||
!
this
.
isSpecification_url
||!
this
.
isgoodStock
||
!
this
.
checkCount
())
return
;
// 是否选择新增药品
if
(
this
.
choiceMedData
.
length
==
0
)
{
this
.
isShowGoodsMsg
=
true
;
this
.
$message
({
message
:
'请选择基础药品'
,
type
:
'warning'
});
return
;
}
if
(
!
isTrue
){
return
false
;
}
else
{
this
.
formData
.
costPrice
=
signFigures
(
this
.
formData
.
optPrice
*
100
);
this
.
formData
.
hasChanged
=
true
;
this
.
formData
.
inputType
=
this
.
inputType
;
this
.
updateGoodsInfo
();
}
},
//更新商品
updateGoodsInfo
(){
console
.
log
(
'提交值'
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
formData
)));
// const submieFn = this.isCheckServe ? updateGoodsV2 : updateGoods;
const
submieFn
=
updateGoods
;
let
params
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
formData
));
params
.
scorePerformance
=
params
.
scorePerformance
*
100
;
console
.
log
(
'提交pppppppppp'
,
params
)
console
.
log
(
submieFn
,
'submieFnsubmieFnsubmieFn'
)
submieFn
(
params
).
then
((
res
)
=>
{
if
(
res
.
code
!==
'000000'
)
{
return
this
.
$message
({
message
:
res
.
message
,
type
:
'error'
});
}
vm
.
$message
.
success
(
"操作成功"
);
this
.
$router
.
push
({
path
:
'/goods-manage'
,
query
:
{
storeId
:
this
.
formData
.
storeId
,
commissionFlag
:
this
.
commissionFlag
,
storeType
:
this
.
storeType
}
})
})
},
imgExceed
(
file
)
{
if
(
file
.
length
>
6
)
{
this
.
$message
.
error
(
"最多只能上传6张图片"
);
};
},
//上传商品头图
beforeUploadPic
(
file
)
{
// if(this.fileGoodsList.length > 6){
// this.$message.error("最多只能上传6张图片");
// 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
;
if
(
_this
.
width
!==
750
||
_this
.
height
!==
750
)
{
vm
.
$message
.
error
(
"图片长宽尺寸必须为750*750"
);
return
;
};
openLoading
(
vm
);
doUpload
(
vm
,
file
,
getFilePath
(
file
,
null
),
"preview4"
,
"progress1"
,
1
).
then
(
function
(
path
)
{
closeLoading
(
vm
);
console
.
log
(
'上传成功后路径'
,
path
);
let
len
=
vm
.
fileGoodsList
.
length
;
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
(
"上传成功"
);
});
};
};
},
// 上传检测说明图
// 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
)
{
this
.
currentOption
.
aspectRatio
=
1
/
1
;
this
.
currentOption
.
cropBoxResizable
=
true
;
this
.
currentOption
.
minCropBoxWidth
=
160
;
this
.
currentOption
.
minCropBoxHeight
=
160
;
let
fileLimit
=
{
width
:
160
,
height
:
160
,
size
:
0.5
,
sizeText
:
"500K"
,
key
:
"headUrl"
,
more
:
"imgUrl1More"
,
show
:
"uploadImgMessage1"
};
this
.
beforeUpload
(
file
,
fileLimit
);
},
//上传商品详情图片
beforeUpload
(
file
,
fileLimit
)
{
let
vm
=
this
;
const
isJPG
=
file
.
type
===
"image/jpeg"
;
const
isPNG
=
file
.
type
===
"image/png"
;
const
isLt2M
=
file
.
size
/
1024
/
1024
<
2
;
if
(
!
isJPG
&&
!
isPNG
)
{
vm
.
$message
.
error
(
"图片格式不符合规范,请根据规范上传图片"
);
// return;
}
if
(
!
isLt2M
)
{
vm
.
$message
.
error
(
"图片大小请控制在2M以内 "
);
return
;
}
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
;
// if (_this.width != fileLimit.width || _this.height != fileLimit.height) {
// if (_this.width
<
fileLimit
.
width
||
_this
.
height
<
fileLimit
.
height
)
{
// vm.$message.error("图片尺寸不符合规范,请根据规范上传图片");
// return;
// } else if(_this.width > fileLimit.width || _this.height > fileLimit.height){
// vm.showCropper = true;
// vm.currentOption.cvWidth = _this.width;
// vm.currentOption.cvHeight = _this.height;
// return;
// } else {
openLoading
(
vm
);
doUpload
(
vm
,
file
,
getFilePath
(
file
,
null
),
"preview4"
,
"progress1"
,
1
).
then
(
function
(
path
)
{
closeLoading
(
vm
);
let
len
=
vm
.
fileIntrList
.
length
;
vm
.
fileIntrList
.
push
({
url
:
path
.
fullPath
,
imageUrl
:
path
.
fullPath
,
imageSort
:
len
+
1
,
imageType
:
1
,
id
:
null
,
imageType
:
4
})
vm
.
$message
.
success
(
"上传成功"
);
});
//}
};
};
return
isJPG
&&
isLt2M
;
},
//删除图片
deleteImg
(
item
,
d
)
{
let
index
=
''
for
(
let
i
=
0
;
i
<
d
.
length
;
i
++
){
if
(
item
.
url
==
d
[
i
].
url
){
index
=
i
;
break
}
}
d
.
splice
(
index
,
1
)
// if (type == 1) {
// vm.formData.headUrl = "";
// vm.imgMouseOver1 = false;
// }
},
// 获取裁剪的图片数据
getCropImg
(
argument
)
{
this
.
showCropper
=
false
;
this
.
cropData
=
argument
[
1
]
vm
.
doUploadQiNiu
(
argument
[
2
])
argument
[
3
]
&&
argument
[
3
].
destroy
();
// vm.slide2.oriUrl = "";
},
// 单次购买上限和最大购买数
minusCount
(
type
)
{
if
(
type
===
1
)
{
if
(
this
.
formData
.
leastCount
>=
2
)
{
this
.
formData
.
leastCount
-=
1
;
this
.
formData1
.
leastCount
=
this
.
formData
.
leastCount
;
}
}
else
if
(
type
===
2
)
{
if
(
this
.
formData
.
mostCount
>
-
1
){
this
.
formData
.
mostCount
-=
1
;
this
.
formData1
.
mostCount
=
this
.
formData
.
mostCount
;
}
}
else
if
(
type
===
3
){
if
(
this
.
formData
.
minWhole
>=
2
)
{
this
.
formData
.
minWhole
-=
1
;
}
}
// if (this.formData.mostCount
<
this
.
formData
.
leastCount
)
{
// this.formData.mostCount = this.formData.leastCount;
// }
},
plusCount
(
type
)
{
if
(
type
===
1
)
{
this
.
formData
.
leastCount
+=
1
;
this
.
formData1
.
leastCount
=
this
.
formData
.
leastCount
;
}
else
if
(
type
===
2
)
{
this
.
formData
.
mostCount
+=
1
;
this
.
formData1
.
mostCount
=
this
.
formData
.
mostCount
;
}
else
if
(
type
===
3
){
this
.
formData
.
minWhole
+=
1
;
}
// if (this.formData.mostCount
<
this
.
formData
.
leastCount
)
{
// this.formData.mostCount = this.formData.leastCount;
// }
},
// 上传七牛
doUploadQiNiu
(
file
){
doUpload
(
this
,
file
,
getFilePath
(
file
,
null
),
'preview4'
,
'uploadProgress1'
,
''
).
then
(
function
(
path
)
{
vm
.
formData
.
headUrl
=
path
.
fullPath
;
vm
.
$message
.
success
(
'上传成功'
);
});
},
addBuyingLimit
(){
if
(
this
.
buyLimitDtoList
!=
null
&&
this
.
buyLimitDtoList
.
length
==
2
){
this
.
$message
({
message
:
'最多添加两个限制条件'
,
type
:
'warning'
});
return
;
}
if
(
this
.
buyLimitDtoList
==
null
||
this
.
buyLimitDtoList
.
length
==
0
){
this
.
buyLimitDtoList
.
push
({
days
:
0
,
daysType
:
1
,
limitCount
:
0
,
limitUserType
:
1
})
return
;
}
if
(
this
.
buyLimitDtoList
.
length
<
2
){
let
limitUserType
=
1
;
if
(
this
.
buyLimitDtoList
[
0
].
limitUserType
==
1
){
limitUserType
=
2
;
}
this
.
buyLimitDtoList
.
push
({
days
:
0
,
daysType
:
1
,
limitCount
:
0
,
limitUserType
:
limitUserType
})
}
// this.limitVisibleFlag = true;
},
delLimit
(
index
){
this
.
buyLimitDtoList
.
splice
(
index
,
1
);
},
changeLimitUserType
(
item
,
index
){
if
(
item
.
limitUserType
==
1
){
if
(
this
.
buyLimitDtoList
.
length
==
2
&&
index
==
0
){
this
.
buyLimitDtoList
[
1
].
limitUserType
=
2
;
}
else
if
(
this
.
buyLimitDtoList
.
length
==
2
&&
index
==
1
){
this
.
buyLimitDtoList
[
0
].
limitUserType
=
2
;
}
}
else
{
if
(
this
.
buyLimitDtoList
.
length
==
2
&&
index
==
0
){
this
.
buyLimitDtoList
[
1
].
limitUserType
=
1
;
}
else
if
(
this
.
buyLimitDtoList
.
length
==
2
&&
index
==
1
){
this
.
buyLimitDtoList
[
0
].
limitUserType
=
1
;
}
}
},
checkCount
(){
let
flag
=
true
;
if
(
this
.
formData
.
saleType
==
1
&&
this
.
formData
.
mostCount
==
0
){
flag
=
false
;
this
.
$message
({
message
:
'单次购买上限不能为0'
,
type
:
'warning'
});
return
flag
;
}
if
(
this
.
formData
.
saleType
==
1
&&
this
.
formData
.
mostCount
!=
-
1
&&
this
.
formData
.
mostCount
<
this
.
formData
.
leastCount
){
flag
=
false
;
this
.
$message
({
message
:
'单次购买上限不能小于最小起购件数'
,
type
:
'warning'
});
return
flag
;
}
return
flag
;
},
goShopDeatil
()
{
this
.
$router
.
push
({
path
:
`/create-shop`
,
query
:{
storeId
:
this
.
storeId
,
// storeData: JSON.stringify(row),
}
})
},
//店铺是否配置售后地址
getStoreAdress
()
{
getStoreAdressRepot
(
this
.
storeId
).
then
(
res
=>
{
if
(
res
.
code
==
"000000"
)
{
// repotList 地址数组
if
(
res
.
data
&&
res
.
data
.
repotList
&&
res
.
data
.
repotList
.
length
)
{
this
.
hasRepoFlag
=
true
;
}
else
{
this
.
hasRepoFlag
=
false
;
}
}
else
{
this
.
$message
.
error
(
res
.
message
);
}
})
},
// 视频
deleteVideo
(
videoList
)
{
console
.
log
(
videoList
,
'item,fileGoodsListitem,fileGoodsListv'
)
this
.
videoList
=
[];
this
.
videoModel
.
videoFullPath
=
''
;
},
beforeVideoUpload
(
file
)
{
const
video2M
=
file
.
size
/
1024
/
1024
<
20
;
console
.
log
(
file
.
size
,
'video2Mvideo2Mvideo2M'
)
if
(
!
video2M
)
{
this
.
$message
.
error
(
'上传视频大小不能超过20M!'
);
}
else
{
this
.
doVideoUpload
(
file
,
1
);
}
},
handleRemoveVideo
(
file
,
videoList
)
{
//console.log(this.videoList);
for
(
let
i
=
0
;
i
<
this
.
videoList
.
length
;
i
++
)
{
if
(
this
.
videoList
[
i
].
name
==
file
.
name
)
{
this
.
videoList
.
splice
(
i
,
1
);
console
.
log
(
"删除"
+
i
);
}
}
},
checkUpdate
(
name
)
{
let
flag
=
true
;
for
(
let
i
=
0
;
i
<
this
.
videoList
.
length
;
i
++
)
{
if
(
this
.
videoList
[
i
].
name
==
name
)
{
flag
=
false
;
this
.
$message
.
warning
(
'上传文件重发'
);
}
}
console
.
log
(
'name'
,
name
,
''
,
this
.
videoList
)
return
flag
;
},
doVideoUpload
(
file
,
index
)
{
console
.
log
(
'file'
,
file
);
//console.log('videoList项目列表:',this.videoList);
this
.
videoModel
.
videoFullPath
=
''
;
if
(
file
.
name
.
indexOf
(
' '
)
!=
-
1
){
this
.
$message
.
warning
(
'文件名不能包含空格'
);
return
;
}
let
updateFlag
=
this
.
checkUpdate
(
file
.
name
);
if
(
updateFlag
==
false
)
{
return
;
}
var
ext
=
file
.
type
var
arr
=
ext
.
split
(
'/'
);
var
filety
=
"."
+
arr
[
1
];
/*if (filety.indexOf(".pdf") < 0 && filety.indexOf(".jpeg") < 0 && filety.indexOf(".jpg") < 0
&& filety.indexOf(".png") < 0 && filety.indexOf(".mp4") < 0) {
this.$message.warning('文件格式错误');
return
}*/
let
self
=
this
;
//如果没有选择文件,返回
if
(
isEmptyUtils
(
file
))
{
return
;
}
console
.
log
(
'file.type'
,
file
.
type
)
if
(
filety
!=
".mp4"
){
// if (file.type !== 'video/mp4') {
self
.
$message
.
error
(
'仅支持上传mp4格式视频'
);
return
;
}
var
arr
=
file
.
name
.
split
(
'_'
);
if
(
arr
.
length
!=
4
){
self
.
$message
.
error
(
'上传视频文件名格式不正确:举例(GXY_001_02_03.mp4)'
);
return
;
}
self
.
$message
.
info
(
'开始上传'
);
self
.
videoModel
.
videoPath
=
createFilePath
(
file
,
file
.
name
)
// let videoPath = createFilePath(file,file.name)
doUpload
(
self
,
file
,
self
.
videoModel
.
videoPath
,
"preview4"
,
"uploadProgress1"
,
""
).
then
(
function
(
result
)
{
console
.
log
(
'成功result'
,
result
);
self
.
videoModel
.
videoFullPath
=
result
.
fullPath
;
// self.model.size = result.size;
// self.model.ext = result.ext;
// self.model.name = self.model.videoPath;
let
fileItem
=
{
goodsImgUrl
:
result
.
fullPath
,
uid
:
''
,
imageUrl
:
result
.
fullPath
,
imageType
:
9
,
goodsId
:
self
.
formData
.
goodsId
,
id
:
null
,
deleteFlag
:
0
}
self
.
videoList
.
push
(
fileItem
);
self
.
$message
.
success
(
'上传成功'
);
console
.
log
(
'sumFile'
,
self
.
sumFile
,
'videoList'
,
self
.
videoList
);
return
false
;
});
},
},
}
</
script
>
<
style
lang=
"scss"
scoped
src=
"./create-good-new.scss"
></
style
>
\ No newline at end of file
src/views/goods/goods-manage.vue
浏览文件 @
a02e26c9
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
<el-input
v-model=
"id"
size=
"small"
placeholder=
"请输入商品ID"
></el-input>
<el-input
v-model=
"id"
size=
"small"
placeholder=
"请输入商品ID"
></el-input>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"6"
>
<
!--
<
el-col
:span=
"6"
>
<el-form-item
label=
"商品类型"
>
<el-form-item
label=
"商品类型"
>
<el-select
<el-select
v-model=
"searchForm.goodsType"
v-model=
"searchForm.goodsType"
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
></el-option>
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
-->
</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=
"6"
>
<el-col
:span=
"6"
>
...
@@ -111,9 +111,17 @@
...
@@ -111,9 +111,17 @@
<el-table-column
prop=
"goodsId"
label=
"商品ID"
width=
"120"
align=
"center"
>
<el-table-column
prop=
"goodsId"
label=
"商品ID"
width=
"120"
align=
"center"
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"goodsName"
label=
"商品名称"
width=
"160"
align=
"center"
show-overflow-tooltip
></el-table-column>
<el-table-column
prop=
"goodsName"
label=
"商品名称"
width=
"160"
align=
"center"
show-overflow-tooltip
></el-table-column>
<el-table-column
prop=
"type"
label=
"商品类型"
width=
"100"
align=
"center"
>
<el-table-column
prop=
"medicationName"
label=
"药品名称"
width=
"160"
align=
"center"
show-overflow-tooltip
></el-table-column>
<el-table-column
prop=
"goodsCategoryStrArr"
label=
"商品分类"
width=
"160"
align=
"center"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
goodsTypeStr
}}
</span>
<p
v-for=
"(item,index) in scope.row.goodsCategoryStrArr"
:key=
"index"
>
{{
item
}}
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"medicalCategoryStrArr"
label=
"药品分类"
width=
"100"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<span>
{{
handleTableArry
(
scope
.
row
.
medicalCategoryStrArr
)
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"status"
label=
"商品状态"
width=
"100"
align=
"center"
>
<el-table-column
prop=
"status"
label=
"商品状态"
width=
"100"
align=
"center"
>
...
@@ -558,14 +566,23 @@
...
@@ -558,14 +566,23 @@
}
}
},
},
},
},
methods
:
{
methods
:
{
handlePreview
(){},
handlePreview
(){},
handleRemove
(){},
handleRemove
(){},
beforeRemove
(){},
beforeRemove
(){},
handleSelectionChange
(
val
){
handleSelectionChange
(
val
){
this
.
selectList
=
val
this
.
selectList
=
val
},
},
handleTableArry
(
item
){
let
str
=
' '
if
(
item
)
{
str
=
item
.
join
(
'/'
);
}
else
{
str
=
'--'
}
return
str
;
},
//批量上传
//批量上传
getBatchUpload
(
file
)
{
getBatchUpload
(
file
)
{
let
self
=
this
;
let
self
=
this
;
...
@@ -662,6 +679,7 @@
...
@@ -662,6 +679,7 @@
});
});
}
}
this
.
tableData
=
res
.
data
.
goodsList
;
this
.
tableData
=
res
.
data
.
goodsList
;
this
.
totalRows
=
res
.
data
.
totalCount
;
this
.
totalRows
=
res
.
data
.
totalCount
;
this
.
isSSO
=
res
.
data
.
isSSO
;
this
.
isSSO
=
res
.
data
.
isSSO
;
})
})
...
@@ -709,9 +727,9 @@
...
@@ -709,9 +727,9 @@
// storeType 1: "供货商",2: "小药房",3: "医生小店"
// storeType 1: "供货商",2: "小药房",3: "医生小店"
let
url
=
''
let
url
=
''
if
(
row
==
'add'
){
if
(
row
==
'add'
){
url
=
`/create-good?id=add&storeId=
${
this
.
searchForm
.
storeId
}
&inputType=1&commissionFlag=
${
this
.
commissionFlag
}
&storeType=
${
this
.
storeType
}
`
url
=
`/create-good
-new
?id=add&storeId=
${
this
.
searchForm
.
storeId
}
&inputType=1&commissionFlag=
${
this
.
commissionFlag
}
&storeType=
${
this
.
storeType
}
`
}
else
{
}
else
{
url
=
`/create-good?id=
${
row
.
goodsId
}
&storeId=
${
this
.
searchForm
.
storeId
}
&goodsType=
${
goodsType
}
&commissionFlag=
${
this
.
commissionFlag
}
&storeType=
${
storeType
}
`
url
=
`/create-good
-new
?id=
${
row
.
goodsId
}
&storeId=
${
this
.
searchForm
.
storeId
}
&goodsType=
${
goodsType
}
&commissionFlag=
${
this
.
commissionFlag
}
&storeType=
${
storeType
}
`
}
}
// this.$store.dispatch('goodsManage/changeGoodsInfo', {...row});
// this.$store.dispatch('goodsManage/changeGoodsInfo', {...row});
this
.
$router
.
push
({
this
.
$router
.
push
({
...
...
src/views/goods/order-detail.vue
浏览文件 @
a02e26c9
...
@@ -464,7 +464,7 @@
...
@@ -464,7 +464,7 @@
goGoodsEdit
(
row
)
{
goGoodsEdit
(
row
)
{
// this.$store.dispatch('goodsManage/changeGoodsInfo', {...row});
// this.$store.dispatch('goodsManage/changeGoodsInfo', {...row});
this
.
$router
.
push
({
this
.
$router
.
push
({
path
:
'/create-good'
,
path
:
'/create-good
-new
'
,
query
:
{
query
:
{
id
:
row
.
goodsId
,
id
:
row
.
goodsId
,
storeId
:
this
.
storeId
,
storeId
:
this
.
storeId
,
...
...
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录