Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop-ui

master
Chopper 2021-06-29 09:42:39 +08:00
commit 59a580ccac
24 changed files with 400 additions and 249 deletions

View File

@ -457,23 +457,21 @@ export function memberMsgList (params) {
* 设置消息为已读 * 设置消息为已读
* @param {String} messageId 消息id * @param {String} messageId 消息id
*/ */
export function readMemberMsg (params) { export function readMemberMsg (id) {
return request({ return request({
url: `/buyer/member/message`, url: `/buyer/member/message/${id}`,
method: Method.PUT, method: Method.PUT,
needToken: true, needToken: true
params
}); });
} }
/** /**
* 删除会员消息 * 删除会员消息
* @param {String} messageId 消息id * @param {String} messageId 消息id
*/ */
export function delMemberMsg (params) { export function delMemberMsg (id) {
return request({ return request({
url: `/buyer/member/message`, url: `/buyer/member/message/${id}`,
method: Method.DELETE, method: Method.DELETE,
needToken: true, needToken: true
params
}); });
} }

View File

@ -17,15 +17,15 @@ export default {
* @description api请求基础路径 * @description api请求基础路径
*/ */
api_dev: { api_dev: {
// common: 'http://192.168.0.109:8890', common: 'http://192.168.0.100:8890',
// buyer: 'http://192.168.0.109:8888', buyer: 'http://192.168.0.100:8888',
// seller: 'http://192.168.0.109:8889', seller: 'http://192.168.0.100:8889',
// manager: 'http://192.168.0.109:8887' manager: 'http://192.168.0.100:8887'
common: 'https://common-api.pickmall.cn', // common: 'https://common-api.pickmall.cn',
buyer: 'https://buyer-api.pickmall.cn', // buyer: 'https://buyer-api.pickmall.cn',
seller: 'https://store-api.pickmall.cn', // seller: 'https://store-api.pickmall.cn',
manager: 'https://admin-api.pickmall.cn' // manager: 'https://admin-api.pickmall.cn'
}, },
api_prod: { api_prod: {
common: 'https://common-api.pickmall.cn', common: 'https://common-api.pickmall.cn',

View File

@ -9,10 +9,12 @@
<img :src="storeMsg.storeLogo" height="50" alt=""> <img :src="storeMsg.storeLogo" height="50" alt="">
<div> <div>
<p>{{storeMsg.storeName || 'xx店铺'}}</p> <p>{{storeMsg.storeName || 'xx店铺'}}</p>
<p v-html="storeMsg.storeDesc"></p> <p class="ellipsis" :alt="storeMsg.storeDesc" v-html="storeMsg.storeDesc"></p>
</div>
<div>
<span class="hover-pointer" @click="collect"><Icon type="ios-heart" :color="storeCollected ? '#ed3f14' : '#fff'" />{{storeCollected?'已收藏店铺':'收藏店铺'}}</span>
<span style="width:80px" class="hover-pointer ml_10" @click="connectCs(storeMsg.yzfSign)"><Icon custom="icomoon icon-customer-service" />联系客服</span>
</div> </div>
<div class="store-collect" @click="collect"><Icon type="ios-heart" :color="storeCollected ? '#ed3f14' : '#fff'" />{{storeCollected?'已收藏店铺':'收藏店铺'}}</div>
<span class="hover-pointer ml_10" @click="connectCs(storeMsg.yzfSign)"><Icon custom="icomoon icon-customer-service" />联系客服</span>
</div> </div>
</div> </div>
<div class="store-category"> <div class="store-category">
@ -183,15 +185,25 @@ export default {
position: relative; position: relative;
width: 100%; width: 100%;
background-color: #666; background-color: #666;
padding: 10px; padding: 4px;
color: #fff; color: #fff;
>div{ >div{
display: flex; display: flex;
width: 1200px; width: 1200px;
margin: 0 auto; margin: 0 auto;
align-items: center; align-items: center;
>div{
img {
width: 80px;
}
>div:nth-child(2){
margin-left: 10px; margin-left: 10px;
flex: 1;
}
>div:nth-child(3){
width: 200px;
} }
} }
img { img {
@ -202,14 +214,11 @@ export default {
} }
p:nth-child(2){ p:nth-child(2){
font-size: 14px; font-size: 14px;
max-height: 40px;
max-width: 400px;
} }
} }
.store-collect{
margin-left: 750px!important;
&:hover{
cursor: pointer;
}
}
.store-category { .store-category {
background-color: #005aa0; background-color: #005aa0;
color: #fff; color: #fff;

View File

@ -1,14 +1,13 @@
<template> <template>
<div class="login"> <div class="login">
<div style="height:50px;"></div>
<!-- 顶部logo --> <!-- 顶部logo -->
<div class="top-content"> <div class="logo-box">
<div class="logo-box"> <img
<img :src="logoImg" width='150'
src="../assets/images/logo1.png" @click="$router.push('/')"
@click="$router.push('/')" />
/> <div>修改密码</div>
<div>修改密码</div>
</div>
</div> </div>
<div class="login-container"> <div class="login-container">
<!-- 验证手机号 --> <!-- 验证手机号 -->
@ -119,6 +118,7 @@ export default {
components: { Verify }, components: { Verify },
data () { data () {
return { return {
logoImg: '', // logo
loading: false, // loading: false, //
loading1: false, // loading1: false, //
formFirst: { // formFirst: { //
@ -242,34 +242,22 @@ export default {
}, },
mounted () { mounted () {
this.$refs.formFirst.resetFields(); this.$refs.formFirst.resetFields();
this.logoImg = this.Cookies.getItem('logo')
}, },
watch: { watch: {
} }
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.login { .logo-box {
height: 100%; width: 600px;
}
.top-content {
width: 100%;
height: 80px; height: 80px;
position: relative; margin: 0 auto;
z-index: 1; display: flex;
box-shadow: 0 1px 1px #ddd; align-items: center;
background-color: #fff; img {
width: 150px;
.logo-box { cursor: pointer;
width: 80%;
max-width: 1200px;
height: 80px;
margin: 0 auto;
display: flex;
align-items: center;
img {
width: 200px;
cursor: pointer;
}
} }
div { div {
font-size: 20px; font-size: 20px;
@ -278,22 +266,23 @@ export default {
} }
.login-container { .login-container {
border-top: 2px solid $theme_color;
position: relative; position: relative;
margin: 10px auto; margin: 0 auto;
width: 1200px; width: 600px;
background-color: #fff; background-color: #fff;
padding: 20px; padding: 20px 150px;
.login-btn{ .login-btn{
position: absolute; position: absolute;
right: 20px; right: 20px;
top: 20px; top: -45px;
} }
} }
.verify-con{ .verify-con{
position: absolute; position: absolute;
left: 400px; left: 140px;
top: 50px; top: -30px;
z-index: 10; z-index: 10;
} }

View File

@ -1,6 +1,22 @@
<template> <template>
<div class="msg-list"> <div class="msg-list">
<card _Title="我的消息" :_Tabs="status" :_Size="16" /> <card _Title="我的消息" :_Tabs="status" :_Size="16" @_Change="statusChange"/>
<Table v-if="params.status != 'ALREADY_REMOVE' " :columns="messageColumns" :data="messageData.records"></Table>
<Table v-if="params.status == 'ALREADY_REMOVE' " :columns="messageDelColumns" :data="messageData.records"></Table>
<!-- 分页 -->
<Page
style="float:right;margin-top:10px"
:current="params.pageNumber"
:total="messageData.total"
:page-size="params.pageSize"
@on-change="changePage"
@on-page-size-change="changePageSize"
:page-size-opts="[10, 20, 50]"
size="small"
show-total
show-elevator
></Page>
</div> </div>
</template> </template>
<script> <script>
@ -8,27 +24,171 @@ import {memberMsgList, readMemberMsg, delMemberMsg} from '@/api/member.js'
export default { export default {
data() { data() {
return { return {
list: [], // messageData: {}, //
status: ['未读', '已读', '回收站'], status: ['未读', '已读', '回收站'],
params: { // params: { //
pageNumber: 1, pageNumber: 1,
pageSize: 10, pageSize: 10,
status: '' status: 'UN_READY'
}, },
messageDelColumns: [ // table
{
title: '消息标题',
key: 'title',
align: 'left',
tooltip: true,
},
{
title: '消息内容',
key: 'content',
align: 'left',
tooltip: true
},
{
title: '发送时间',
key: 'createTime',
align: 'left',
width: 240
},
],
messageColumns: [ // table
{
title: '消息标题',
key: 'title',
align: 'left',
tooltip: true,
},
{
title: '消息内容',
key: 'content',
align: 'left',
tooltip: true
},
{
title: '发送时间',
key: 'createTime',
align: 'left',
width: 240
},
{
title: '操作',
key: 'action',
align: 'center',
fixed: 'right',
width: 150,
render: (h, params) => {
if (params.row.status === 'UN_READY') {
return h('div', [
h(
'Button',
{
props: {
type: 'info',
size: 'small'
},
style: {
marginRight: '5px'
},
on: {
click: () => {
this.setRead(params.row.id);
}
}
},
'已读'
), h(
'Button',
{
props: {
size: 'small',
type: 'error'
},
on: {
click: () => {
this.removeMessage(params.row.id);
}
}
},
'删除'
)
]);
} else if (params.row.status === 'ALREADY_READY') {
return h('div', [
h(
'Button',
{
props: {
size: 'small',
type: 'error'
},
on: {
click: () => {
this.removeMessage(params.row.id);
}
}
},
'删除'
)
]);
} else {
}
}
}
]
} }
}, },
methods: { methods: {
//
statusChange (index) {
if (index === 0) { this.params.status = 'UN_READY' }
if (index === 1) { this.params.status = 'ALREADY_READY' }
if (index === 2) { this.params.status = 'ALREADY_REMOVE' }
this.getList()
},
//
changePage (v) {
this.params.pageNumber = v;
this.getList();
},
//
changePageSize (v) {
this.params.pageSize = v;
this.getList();
},
getList () { // getList () { //
memberMsgList(this.params).then(res => { memberMsgList(this.params).then(res => {
if (res.success) { if (res.success) {
this.list = res.result.records; this.messageData = res.result;
} }
}) })
}, },
setRead (id) { // //
setRead (id) {
readMemberMsg(id).then(res => { readMemberMsg(id).then(res => {
if (res.success) {
this.getList()
}
}) })
},
//
removeMessage (id) {
this.$Modal.confirm({
title: '确认删除',
//
content: '确认要删除此消息?',
loading: true,
onOk: () => {
//
delMemberMsg(id).then((res) => {
this.$Modal.remove();
if (res.success) {
this.$Message.success('消息已成功放入回收站');
this.getList();
}
});
},
});
} }
}, },
mounted () { mounted () {

View File

@ -63,6 +63,7 @@ export default {
this.num++; this.num++;
if (this.num >= 7) { if (this.num >= 7) {
clearInterval(this.interval); clearInterval(this.interval);
this.interval = null;
} }
let params = JSON.parse(JSON.stringify(this.$route.query)); let params = JSON.parse(JSON.stringify(this.$route.query));
delete params.paymentMethod; delete params.paymentMethod;
@ -70,6 +71,7 @@ export default {
payCallback(params).then(res => { payCallback(params).then(res => {
if (res.result) { if (res.result) {
clearInterval(this.interval); clearInterval(this.interval);
this.interval = null;
this.$router.push({path: '/payDone', query: {orderType: this.$route.query.orderType}}); this.$router.push({path: '/payDone', query: {orderType: this.$route.query.orderType}});
} }
}); });

View File

@ -10,7 +10,6 @@
/> />
</FormItem> </FormItem>
<FormItem prop="storeAddressIdPath" label="公司所在地"> <FormItem prop="storeAddressIdPath" label="公司所在地">
<!-- <Input type="text" v-model="form.storeAddressIdPath" placeholder="请选择公司所在地" /> -->
<region <region
style="width: 250px" style="width: 250px"
@selected="selectedRegion" @selected="selectedRegion"
@ -32,6 +31,13 @@
><span slot="append"></span> ><span slot="append"></span>
</Input> </Input>
</FormItem> </FormItem>
<FormItem prop="linkPhone" label="公司电话">
<Input
type="text"
v-model="form.companyPhone"
placeholder="请填写公司电话"
></Input>
</FormItem>
<FormItem prop="registeredCapital" label="注册资金"> <FormItem prop="registeredCapital" label="注册资金">
<Input <Input
type="text" type="text"

View File

@ -3,7 +3,7 @@
<div style="height: 20px"></div> <div style="height: 20px"></div>
<div class="content"> <div class="content">
<h3>店铺入驻</h3> <h3>店铺入驻</h3>
<Steps :current="currentIndex" size="small" class="margin"> <Steps :current="currentIndex" class="margin">
<Step title="企业资质信息"></Step> <Step title="企业资质信息"></Step>
<Step title="财务资质信息"></Step> <Step title="财务资质信息"></Step>
<Step title="其他信息"></Step> <Step title="其他信息"></Step>
@ -38,38 +38,37 @@
</div> </div>
</template> </template>
<script> <script>
import { agreement, applyStatus } from "@/api/shopentry"; import { agreement, applyStatus } from '@/api/shopentry';
import firstApply from "./first-apply"; import firstApply from './first-apply';
import secondApply from "./second-apply"; import secondApply from './second-apply';
import thirdApply from "./third-apply"; import thirdApply from './third-apply';
export default { export default {
components: { components: {
firstApply, firstApply,
secondApply, secondApply,
thirdApply, thirdApply
}, },
data() { data () {
return { return {
currentIndex: 0, // currentIndex: 0, //
showAgreement: false, // showAgreement: false, //
agreementCon: "", // agreementCon: '', //
checked: false, // checked: false, //
applyData: {}, //
firstData: {}, // firstData: {}, //
secondData: {}, // secondData: {}, //
thirdData: {}, // thirdData: {}, //
storeDisable: "", // APPLY OPEN CLOSED REFUSED APPLYING storeDisable: '', // APPLY OPEN CLOSED REFUSED APPLYING
dataReview: true, // dataReview: true //
}; };
}, },
methods: { methods: {
getArticle() { getArticle () {
// //
agreement().then((res) => { agreement().then((res) => {
this.agreementCon = res.result.content; this.agreementCon = res.result.content;
}); });
}, },
getData() { getData () { //
applyStatus().then((res) => { applyStatus().then((res) => {
if (res.success) { if (res.success) {
if (!res.result) { if (!res.result) {
@ -78,34 +77,34 @@ export default {
this.dataReview = false; this.dataReview = false;
let data = res.result; let data = res.result;
let first = [ let first = [
"addressIdPath", 'storeAddressIdPath',
"addressPath", 'storeAddressPath',
"companyAddress", 'storeAddressDetail',
"companyEmail", 'companyEmail',
"companyName", 'companyName',
"employeeNum", 'employeeNum',
"legalId", 'legalId',
"legalName", 'legalName',
"licencePhoto", 'licencePhoto',
"legalPhoto", 'legalPhoto',
"licenseNum", 'licenseNum',
"linkName", 'linkName',
"linkPhone", 'linkPhone',
"registeredCapital", 'registeredCapital',
"scope", 'scope'
]; ];
let second = [ let second = [
"settlementBankAccountName", 'settlementBankAccountName',
"settlementBankAccountNum", 'settlementBankAccountNum',
"settlementBankBranchName", 'settlementBankBranchName',
"settlementBankJointName", 'settlementBankJointName'
]; ];
let third = [ let third = [
"goodsManagementCategory", 'goodsManagementCategory',
"storeCenter", 'storeCenter',
"storeDesc", 'storeDesc',
"storeLogo", 'storeLogo',
"storeName", 'storeName'
]; ];
this.storeDisable = data.storeDisable; this.storeDisable = data.storeDisable;
@ -120,25 +119,28 @@ export default {
this.thirdData[e] = data[e]; this.thirdData[e] = data[e];
}); });
if (this.storeDisable === "APPLY") { if (this.storeDisable === 'APPLY') {
this.currentIndex = 0; this.currentIndex = 0;
} else { } else {
this.currentIndex = 3; this.currentIndex = 3;
} }
this.dataReview = true; this.$nextTick(() => {
this.$forceUpdate(); this.dataReview = true;
this.$forceUpdate();
})
} }
console.log(33333333333333);
} }
}); });
}, },
nextPage(step) { nextPage (step) {
this.currentIndex = step; this.currentIndex = step;
}, }
}, },
mounted() { mounted () {
this.getData(); this.getData();
this.getArticle(); this.getArticle();
}, }
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -159,7 +161,7 @@ export default {
} }
.margin { .margin {
margin: 10px 0; margin: 30px 0;
} }
.agreeent-con { .agreeent-con {
max-height: 500px; max-height: 500px;

View File

@ -60,17 +60,23 @@
> >
</Select> </Select>
</FormItem> </FormItem>
<FormItem prop="storeCenter" label="经纬度"> <FormItem prop="storeCenter" label="店铺定位">
<Input <!-- <Input
type="text" type="text"
v-model="form.storeCenter" v-model="form.storeCenter"
readonly readonly
placeholder="点击右侧按钮选择店铺位置" placeholder="点击右侧按钮选择店铺位置"
/> /> -->
<Button <Button
icon="ios-locate-outline" type="info"
v-if="!form.storeCenter"
@click="$refs.liliMap.showMap = true" @click="$refs.liliMap.showMap = true"
></Button> >点击获取店铺定位</Button>
<Button
type="success"
v-else
@click="$refs.liliMap.showMap = true"
>已定位</Button>
</FormItem> </FormItem>
<FormItem prop="storeDesc" label="店铺简介"> <FormItem prop="storeDesc" label="店铺简介">
<Input <Input

View File

@ -15,7 +15,8 @@
> >
<div class="user-icon"> <div class="user-icon">
<div class="user-img"> <div class="user-img">
<img :src="userInfo.face" /> <img :src="userInfo.face" v-if="userInfo.face" alt />
<Avatar icon="ios-person" class="mb_10" v-else size="96" />
</div> </div>
<p>{{userInfo.nickName}}</p> <p>{{userInfo.nickName}}</p>
</div> </div>
@ -125,10 +126,6 @@ export default {
align-items: center; align-items: center;
} }
.user-icon span {
font-size: 96px;
}
.user-img { .user-img {
margin-bottom: 15px; margin-bottom: 15px;
width: 96px; width: 96px;
@ -137,10 +134,6 @@ export default {
overflow: hidden; overflow: hidden;
} }
.user-img img {
width: 100%;
}
.layout-footer-center { .layout-footer-center {
padding: 0px 15px; padding: 0px 15px;

View File

@ -116,6 +116,7 @@ async function refresh (error) {
}); });
}, },
onCancel: () => { onCancel: () => {
router.go(0)
Modal.remove(); Modal.remove();
} }
}); });

View File

@ -21,6 +21,10 @@ export default {
buyer: "https://buyer-api.pickmall.cn", buyer: "https://buyer-api.pickmall.cn",
seller: "https://store-api.pickmall.cn", seller: "https://store-api.pickmall.cn",
manager: "https://admin-api.pickmall.cn" manager: "https://admin-api.pickmall.cn"
// common: 'http://192.168.0.109:8890',
// buyer: 'http://192.168.0.109:8888',
// seller: 'http://192.168.0.109:8889',
// manager: 'http://192.168.0.109:8887'
}, },
api_prod: { api_prod: {
common: "https://common-api.pickmall.cn", common: "https://common-api.pickmall.cn",

View File

@ -112,7 +112,7 @@
</Form> </Form>
<div slot="footer"> <div slot="footer">
<Button type="text" @click="modalVisible = false">取消</Button> <Button type="text" @click="modalVisible = false">取消</Button>
<Button type="primary" :loading="submitLoading" @click="lower(form.id)" <Button type="primary" :loading="submitLoading" @click="lower"
>提交</Button >提交</Button
> >
</div> </div>
@ -363,7 +363,7 @@ export default {
this.modalTitle = "下架操作"; this.modalTitle = "下架操作";
this.modalVisible = true; this.modalVisible = true;
}, },
lower(id) { lower() {
lowGoods(this.id, this.underForm).then((res) => { lowGoods(this.id, this.underForm).then((res) => {
this.$Modal.remove(); this.$Modal.remove();
if (res.success) { if (res.success) {

View File

@ -150,7 +150,7 @@
<div class="today-item"> <div class="today-item">
<div>今日交易额</div> <div>今日交易额</div>
<span>{{homeData.todayOrderPrice | unitPrice }}</span> <span>{{homeData.todayOrderPrice ? (homeData.todayOrderPrice | unitPrice) : 0}}</span>
</div> </div>
<div class="today-item"> <div class="today-item">
<div>今日新增店铺</div> <div>今日新增店铺</div>

View File

@ -324,7 +324,7 @@ export default {
// //
selectedList: { selectedList: {
type: null, type: null,
default: "", default: [],
}, },
}, },
watch: { watch: {
@ -344,6 +344,7 @@ export default {
callback(val, index) { callback(val, index) {
this.$set(val, "___selected", !val.___selected); this.$set(val, "___selected", !val.___selected);
console.log(val.___selected); console.log(val.___selected);
console.log(this.selectMember);
let findUser = this.selectMember.find((item) => { let findUser = this.selectMember.find((item) => {
return item.id == val.id; return item.id == val.id;
}); });

View File

@ -18,7 +18,7 @@
import { getVerifyImg, postVerifyImg } from './verify.js'; import { getVerifyImg, postVerifyImg } from './verify.js';
export default { export default {
props: { props: {
verifyType: { verifyType: { //
defalut: 'LOGIN', defalut: 'LOGIN',
type: String type: String
} }
@ -97,9 +97,6 @@ export default {
}); });
} }
}, },
created () {
// this.getImg();
},
watch: { watch: {
verifyType: { verifyType: {
immediate: true, immediate: true,

View File

@ -98,8 +98,8 @@
</p> </p>
<p class="item"> <p class="item">
<span class="label">店铺经纬度</span> <span class="label">店铺定位</span>
<span class="info">{{storeInfo.storeCenter?storeInfo.storeCenter:'暂未完善'}}</span> <span class="info">{{storeInfo.storeCenter?'已定位':'未定位'}}</span>
</p> </p>
<p class="item"> <p class="item">
<span class="label">经营范围</span> <span class="label">经营范围</span>

View File

@ -27,8 +27,18 @@
</RadioGroup> </RadioGroup>
</FormItem> </FormItem>
<FormItem label="店铺经纬度" prop="shopCenter"> <FormItem label="店铺定位" prop="shopCenter">
<Input v-model="shopForm.storeCenter" @on-focus="$refs.liliMap.showMap = true" clearable style="width: 350px" /> <!-- <Input v-model="shopForm.storeCenter" @on-focus="$refs.liliMap.showMap = true" clearable style="width: 350px" /> -->
<Button
type="info"
v-if="!shopForm.storeCenter"
@click="$refs.liliMap.showMap = true"
>点击获取店铺定位</Button>
<Button
type="success"
v-else
@click="$refs.liliMap.showMap = true"
>已定位</Button>
</FormItem> </FormItem>
<FormItem label="店铺所在地" prop="storeAddressPath"> <FormItem label="店铺所在地" prop="storeAddressPath">
@ -267,7 +277,7 @@ export default {
{ required: true, message: "店铺简介不能为空", trigger: "blur" }, { required: true, message: "店铺简介不能为空", trigger: "blur" },
], ],
storeCenter: [ storeCenter: [
{ required: true, message: "店铺经纬度不能为空", trigger: "change" }, { required: true, message: "店铺未定位", trigger: "change" },
], ],
companyName: [ companyName: [
{ required: true, message: "公司名称不能为空", trigger: "blur" }, { required: true, message: "公司名称不能为空", trigger: "blur" },

View File

@ -18,14 +18,14 @@ export default {
* @description api请求基础路径 * @description api请求基础路径
*/ */
api_dev: { api_dev: {
// common: 'https://common-api.pickmall.cn', common: 'https://common-api.pickmall.cn',
// buyer: 'https://buyer-api.pickmall.cn', buyer: 'https://buyer-api.pickmall.cn',
// seller: 'https://store-api.pickmall.cn', seller: 'https://store-api.pickmall.cn',
// manager: 'https://admin-api.pickmall.cn', manager: 'https://admin-api.pickmall.cn',
common: 'http://192.168.0.109:8890', // common: 'http://192.168.0.100:8890',
buyer: 'http://192.168.0.109:8888', // buyer: 'http://192.168.0.100:8888',
seller: 'http://192.168.0.109:8889', // seller: 'http://192.168.0.100:8889',
manager: 'http://192.168.0.109:8887' // manager: 'http://192.168.0.100:8887'
}, },
api_prod: { api_prod: {
common: 'https://common-api.pickmall.cn', common: 'https://common-api.pickmall.cn',

View File

@ -423,7 +423,7 @@ div.base-info-item {
display:flex; display:flex;
} }
.demo-upload-list-cover div { .demo-upload-list-cover div {
margin: 10% 0; margin-top: 50px;
width: 100%; width: 100%;
> i { > i {

View File

@ -36,7 +36,7 @@
<DropdownItem name="uppers">批量上架</DropdownItem> <DropdownItem name="uppers">批量上架</DropdownItem>
<DropdownItem name="lowers">批量下架</DropdownItem> <DropdownItem name="lowers">批量下架</DropdownItem>
<DropdownItem name="deleteAll">批量删除</DropdownItem> <DropdownItem name="deleteAll">批量删除</DropdownItem>
<!-- <DropdownItem name="batchShipTemplate">批量设置运费模板</DropdownItem> --> <DropdownItem name="batchShipTemplate">批量设置物流模板</DropdownItem>
</DropdownMenu> </DropdownMenu>
</Dropdown> </Dropdown>
</Row> </Row>
@ -87,21 +87,10 @@
</div> </div>
</Modal> </Modal>
<!-- 批量设置运费模板 --> <!-- 批量设置物流模板 -->
<Modal title="批量设置运费模板" v-model="shipTemplateModal" :mask-closable="false" :width="500"> <Modal title="批量设置物流模板" v-model="shipTemplateModal" :mask-closable="false" :width="500">
<Form ref="shipTemplateForm" :model="shipTemplateForm" :label-width="120"> <Form ref="shipTemplateForm" :model="shipTemplateForm" :label-width="120">
<FormItem class="form-item-view-el" label="运费" prop="freightPayer"> <FormItem class="form-item-view-el" label="物流模板" prop="templateId">
<RadioGroup type="button" button-style="solid" @on-change="logisticsTemplateUndertakerChange" v-model="shipTemplateForm.freightPayer">
<Radio label="STORE">
<span>卖家承担运费</span>
</Radio>
<Radio label="BUYER">
<span>使用物流规则</span>
</Radio>
</RadioGroup>
</FormItem>
<FormItem class="form-item-view-el" label="物流模板" prop="templateId" v-if="shipTemplateShow">
<Select v-model="shipTemplateForm.templateId" style="width: 200px"> <Select v-model="shipTemplateForm.templateId" style="width: 200px">
<Option v-for="item in logisticsTemplate" :value="item.id" :key="item.id">{{ item.name }} <Option v-for="item in logisticsTemplate" :value="item.id" :key="item.id">{{ item.name }}
</Option> </Option>
@ -124,10 +113,9 @@ import {
upGoods, upGoods,
lowGoods, lowGoods,
deleteGoods, deleteGoods,
batchShipTemplate, batchShipTemplate
} from "@/api/goods"; } from "@/api/goods";
import * as API_Shop from "@/api/shops";
import * as API_Store from "@/api/shops";
export default { export default {
name: "goods", name: "goods",
@ -135,10 +123,7 @@ export default {
return { return {
id: "", //id id: "", //id
loading: true, // loading: true, //
shipTemplateForm: { shipTemplateForm: {},
freightPayer: "STORE",
},
shipTemplateShow: false, //
shipTemplateModal: false, // shipTemplateModal: false, //
logisticsTemplate: [], // logisticsTemplate: [], //
updateStockModalVisible: false, // updateStockModalVisible: false, //
@ -421,11 +406,12 @@ export default {
if (v == "deleteAll") { if (v == "deleteAll") {
this.deleteAll(); this.deleteAll();
} }
// //
if (v == "batchShipTemplate") { if (v == "batchShipTemplate") {
this.batchShipTemplate(); this.batchShipTemplate();
} }
}, },
//
getStockDetail(id) { getStockDetail(id) {
getGoodsSkuListDataSeller({ goodsId: id, pageSize: 1000 }).then((res) => { getGoodsSkuListDataSeller({ goodsId: id, pageSize: 1000 }).then((res) => {
if (res.success) { if (res.success) {
@ -435,6 +421,7 @@ export default {
} }
}); });
}, },
//
updateStock() { updateStock() {
let updateStockList = this.stockList.map((i) => { let updateStockList = this.stockList.map((i) => {
let j = { skuId: i.id, quantity: i.quantity }; let j = { skuId: i.id, quantity: i.quantity };
@ -486,28 +473,24 @@ export default {
this.selectList = e; this.selectList = e;
this.selectCount = e.length; this.selectCount = e.length;
}, },
// //
saveShipTemplate() { saveShipTemplate() {
if (this.shipTemplateForm.freightPayer == "STORE") {
{
this.shipTemplateForm.templateId = 0;
}
}
this.$Modal.confirm({ this.$Modal.confirm({
title: "确认设置运费模板", title: "确认设置物流模板",
content: content:
"您确认要设置所选的 " + this.selectCount + " 个商品的运费模板?", "您确认要设置所选的 " + this.selectCount + " 个商品的物流模板?",
loading: true, loading: true,
onOk: () => { onOk: () => {
let ids = []; let ids = [];
this.selectList.forEach(function (e) { this.selectList.forEach(function (e) {
ids.push(e.id); ids.push(e.id);
}); });
// //
batchShipTemplate(this.shipTemplateForm).then((res) => { batchShipTemplate(this.shipTemplateForm).then((res) => {
this.$Modal.remove(); this.$Modal.remove();
if (res.success) { if (res.success) {
this.$Message.success("运费模板设置成功"); this.$Message.success("物流模板设置成功");
this.clearSelectAll(); this.clearSelectAll();
this.getDataList(); this.getDataList();
} }
@ -516,12 +499,13 @@ export default {
}, },
}); });
}, },
// //
batchShipTemplate() { batchShipTemplate() {
if (this.selectCount <= 0) { if (this.selectCount <= 0) {
this.$Message.warning("您还未选择要设置运费模板的商品"); this.$Message.warning("您还未选择要设置物流模板的商品");
return; return;
} }
this.getShipTempList()
let data = []; let data = [];
this.selectList.forEach(function (e) { this.selectList.forEach(function (e) {
data.push(e.id); data.push(e.id);
@ -529,21 +513,7 @@ export default {
this.shipTemplateForm.goodsId = data; this.shipTemplateForm.goodsId = data;
this.shipTemplateModal = true; this.shipTemplateModal = true;
}, },
// //
logisticsTemplateUndertakerChange(v) {
//
if (v == "BUYER") {
API_Store.getShipTemplate().then((res) => {
if (res.success) {
this.logisticsTemplate = res.result;
}
});
this.shipTemplateShow = true;
}
if (v == "STORE") {
this.shipTemplateShow = false;
}
},
getDataList() { getDataList() {
this.loading = true; this.loading = true;
// //
@ -555,6 +525,14 @@ export default {
} }
}); });
}, },
//
getShipTempList () {
API_Shop.getShipTemplate().then((res) => {
if (res.success) {
this.logisticsTemplate = res.result;
}
})
},
// //
lower(v) { lower(v) {
this.$Modal.confirm({ this.$Modal.confirm({

View File

@ -137,27 +137,33 @@
<Input type="text" v-model="baseInfoForm.cost" placeholder="市场价格" clearable style="width: 260px"/> <Input type="text" v-model="baseInfoForm.cost" placeholder="市场价格" clearable style="width: 260px"/>
</FormItem> </FormItem>
<FormItem class="form-item-view-el required" label="商品图片" prop="goodsGalleryFiles"> <FormItem class="form-item-view-el required" label="商品图片" prop="goodsGalleryFiles">
<div class="demo-upload-list" v-for="(item, __index) in baseInfoForm.goodsGalleryFiles" :key="__index"> <vuedraggable
<template v-if="item.status === 'finished'"> :list="baseInfoForm.goodsGalleryFiles"
<img :src="item.url"/> :animation="200"
style="display:inline-block;"
<div class="demo-upload-list-cover"> ghost-class="thumb-ghost"
<div> >
<Icon type="ios-eye-outline" @click.native="handleViewGoodsPicture(item.url)"></Icon> <div class="demo-upload-list" v-for="(item, __index) in baseInfoForm.goodsGalleryFiles" :key="__index">
<Icon type="ios-trash-outline" @click.native="handleRemoveGoodsPicture(item)"></Icon> <template v-if="item.status === 'finished'">
<img :src="item.url"/>
<div class="demo-upload-list-cover">
<div>
<Icon type="ios-eye-outline" size="30" @click.native="handleViewGoodsPicture(item.url)"></Icon>
<Icon type="ios-trash-outline" size="30" @click.native="handleRemoveGoodsPicture(item)"></Icon>
</div>
<!-- <div>
<Icon type="ios-arrow-dropleft" @click.native="
handleGoodsPicRemoteUp(baseInfoForm.goodsGalleryFiles,__index)"/>
<Icon type="ios-arrow-dropright" @click.native="
handleGoodsPicRemoteDown(baseInfoForm.goodsGalleryFiles,__index)"/>
</div> -->
</div> </div>
<div> </template>
<Icon type="ios-arrow-dropleft" @click.native=" <template v-else>
handleGoodsPicRemoteUp(baseInfoForm.goodsGalleryFiles,__index)"/> <Progress v-if="item.showProgress" :percent="item.percentage" hide-info></Progress>
<Icon type="ios-arrow-dropright" @click.native=" </template>
handleGoodsPicRemoteDown(baseInfoForm.goodsGalleryFiles,__index)"/> </div>
</div> </vuedraggable>
</div>
</template>
<template v-else>
<Progress v-if="item.showProgress" :percent="item.percentage" hide-info></Progress>
</template>
</div>
<Upload ref="upload" :show-upload-list="false" :default-file-list="baseInfoForm.goodsGalleryFiles" <Upload ref="upload" :show-upload-list="false" :default-file-list="baseInfoForm.goodsGalleryFiles"
:on-success="handleSuccessGoodsPicture" :format="['jpg', 'jpeg', 'png']" :on-success="handleSuccessGoodsPicture" :format="['jpg', 'jpeg', 'png']"
:on-format-error="handleFormatError" :on-exceeded-size="handleMaxSize" :on-format-error="handleFormatError" :on-exceeded-size="handleMaxSize"
@ -167,6 +173,7 @@
<Icon type="ios-camera" size="20"></Icon> <Icon type="ios-camera" size="20"></Icon>
</div> </div>
</Upload> </Upload>
<!-- <upload-pic-thumb v-model="baseInfoForm.goodsGalleryFiles" :multiple="true"></upload-pic-thumb> -->
<Modal title="View Image" v-model="goodsPictureVisible"> <Modal title="View Image" v-model="goodsPictureVisible">
<img :src="previewGoodsPicture" v-if="goodsPictureVisible" style="width: 100%"/> <img :src="previewGoodsPicture" v-if="goodsPictureVisible" style="width: 100%"/>
@ -371,7 +378,7 @@
<Select v-model="params.paramValue" placeholder="请选择" style="width: 200px" clearable <Select v-model="params.paramValue" placeholder="请选择" style="width: 200px" clearable
@on-change="selectParams(paramsGroup,groupIndex,params,paramsIndex,params.paramValue)"> @on-change="selectParams(paramsGroup,groupIndex,params,paramsIndex,params.paramValue)">
<Option v-for="option in params.options.split(',')" :label="option" <Option v-for="option in params.options.split(',')" :label="option"
:value="option"></Option> :value="option" :key="option"></Option>
</Select> </Select>
</FormItem> </FormItem>
</p> </p>
@ -428,18 +435,17 @@
<script> <script>
import {regular} from "@/utils"; import {regular} from "@/utils";
import uploadPicThumb from "@/views/my-components/lili/upload-pic-thumb";
import editor from "@/views/my-components/lili/editor"; import editor from "@/views/my-components/lili/editor";
import * as API_GOODS from "@/api/goods"; import * as API_GOODS from "@/api/goods";
import * as API_Shop from "@/api/shops"; import * as API_Shop from "@/api/shops";
import cloneObj from "@/utils/index"; import cloneObj from "@/utils/index";
import vuedraggable from "vuedraggable";
export default { export default {
name: "addGoods", name: "addGoods",
components: { components: {
uploadPicThumb,
editor, editor,
vuedraggable
}, },
watch: { watch: {
selectGoodsType: { selectGoodsType: {
@ -620,8 +626,8 @@ export default {
updateSku: true, updateSku: true,
/** 是否重新生成sku */ /** 是否重新生成sku */
regeneratorSkuFlag: false, regeneratorSkuFlag: false,
/** 运费模板id **/ /** 物流模板id **/
templateId: 0, templateId: '',
/** 参数组*/ /** 参数组*/
goodsParamsDTOList: [], goodsParamsDTOList: [],
}, },
@ -647,7 +653,7 @@ export default {
/** 规格图片 */ /** 规格图片 */
images: [], images: [],
/** 运费模板 **/ /** 物流模板 **/
logisticsTemplate: [], logisticsTemplate: [],
/** 固定列校验提示内容 */ /** 固定列校验提示内容 */
@ -685,6 +691,7 @@ export default {
{required: true, message: "请输入物流参数"}, {required: true, message: "请输入物流参数"},
{validator: checkWeight}, {validator: checkWeight},
], ],
templateId: [{required: true, message: '请选择物流模板'}],
sellingPoint: [{required: true, message: "请输入商品卖点"}], sellingPoint: [{required: true, message: "请输入商品卖点"}],
goodsUnit: [{required: true, message: "请选择计量单位"}], goodsUnit: [{required: true, message: "请选择计量单位"}],
}, },
@ -715,7 +722,7 @@ export default {
this.accessToken = { this.accessToken = {
accessToken: this.getStore("accessToken"), accessToken: this.getStore("accessToken"),
}; };
// //
API_Shop.getShipTemplate().then((res) => { API_Shop.getShipTemplate().then((res) => {
if (res.success) { if (res.success) {
this.logisticsTemplate = res.result; this.logisticsTemplate = res.result;
@ -763,7 +770,7 @@ export default {
mobileIntro: "", mobileIntro: "",
updateSku: true, updateSku: true,
regeneratorSkuFlag: false, regeneratorSkuFlag: false,
templateId: 0, templateId: '',
goodsParamsDTOList: [], goodsParamsDTOList: [],
}; };
this.activestep = 0; this.activestep = 0;
@ -837,7 +844,6 @@ export default {
* @value 参数选项值 * @value 参数选项值
*/ */
selectParams(paramsGroup, groupIndex, params, paramsIndex, value) { selectParams(paramsGroup, groupIndex, params, paramsIndex, value) {
console.log(params.id);
if (!this.baseInfoForm.goodsParamsDTOList[groupIndex]) { if (!this.baseInfoForm.goodsParamsDTOList[groupIndex]) {
this.baseInfoForm.goodsParamsDTOList[groupIndex] = { this.baseInfoForm.goodsParamsDTOList[groupIndex] = {
groupId:'', groupId:'',
@ -871,14 +877,13 @@ export default {
// sku // sku
editSkuPicture(row) { editSkuPicture(row) {
console.log(row);
if (row.images && row.images.length > 0) { if (row.images && row.images.length > 0) {
this.previewPicture = row.images[0].url; this.previewPicture = row.images[0].url;
} }
this.selectedSku = row; this.selectedSku = row;
this.showSkuPicture = true; this.showSkuPicture = true;
}, },
handleView(url) { handleView (url) {
this.previewPicture = url; this.previewPicture = url;
this.visible = true; this.visible = true;
}, },
@ -937,7 +942,6 @@ export default {
}); });
}, },
handleBeforeUploadGoodsPicture() { handleBeforeUploadGoodsPicture() {
console.log(this.baseInfoForm);
const check = this.baseInfoForm.goodsGalleryFiles.length < 5; const check = this.baseInfoForm.goodsGalleryFiles.length < 5;
if (!check) { if (!check) {
this.$Notice.warning({ this.$Notice.warning({
@ -1016,7 +1020,6 @@ export default {
...this.baseInfoForm, ...this.baseInfoForm,
...response.result, ...response.result,
}; };
// console.warn(this.baseInfoForm);
this.baseInfoForm.release = "true"; this.baseInfoForm.release = "true";
this.baseInfoForm.recommend = this.baseInfoForm.recommend this.baseInfoForm.recommend = this.baseInfoForm.recommend
@ -1140,7 +1143,6 @@ export default {
group.goodsParamsItemDTOList.forEach(param => { group.goodsParamsItemDTOList.forEach(param => {
param.groupId = group.groupId param.groupId = group.groupId
paramsArr.push(param) paramsArr.push(param)
console.log(param);
}) })
}) })
// //
@ -1154,7 +1156,6 @@ export default {
}) })
}) })
}); });
console.log(this.goodsParams);
} else { } else {
this.baseInfoForm.goodsParamsDTOList = [] this.baseInfoForm.goodsParamsDTOList = []
} }
@ -1183,10 +1184,7 @@ export default {
}, },
// //
async skuValueChange(val, index, item) { async skuValueChange(val, index, item) {
/** 更新skuInfo数据 */
// let _arr = cloneObj(item);
// this.$set(item, "name", _arr.name);
// this.$set(this.skuInfo, index, _arr);
/** /**
* 渲染规格详细表格 * 渲染规格详细表格
*/ */
@ -1308,7 +1306,6 @@ export default {
); );
this.skuTableColumn = pushData; this.skuTableColumn = pushData;
console.log(this.skuTableColumn);
// //
let cloneTemp = cloneObj(this.skuInfo); let cloneTemp = cloneObj(this.skuInfo);
@ -1328,7 +1325,6 @@ export default {
cloneTemp.splice(0, 1); cloneTemp.splice(0, 1);
result = this.specIterator(result, cloneTemp); result = this.specIterator(result, cloneTemp);
this.skuTableData = result; this.skuTableData = result;
console.log(this.skuTableData);
} }
}, },
/** /**
@ -1458,7 +1454,6 @@ export default {
this.GET_GoodData(); this.GET_GoodData();
return; return;
} }
console.log(this.baseInfoForm);
this.GET_GoodsParams(); this.GET_GoodsParams();
/** 1级校验 */ /** 1级校验 */
this.loading = true; this.loading = true;
@ -1548,6 +1543,7 @@ export default {
this.$Message.error("请上传商品图片"); this.$Message.error("请上传商品图片");
return; return;
} }
if (this.baseInfoForm.templateId === '') this.baseInfoForm.templateId = 0;
let flag = false; let flag = false;
let paramValue = ""; let paramValue = "";
// // // //
@ -1580,7 +1576,6 @@ export default {
} }
/** 参数校验 **/ /** 参数校验 **/
/* Object.keys(this.baseInfoForm.goodsParamsList).forEach((item) => { /* Object.keys(this.baseInfoForm.goodsParamsList).forEach((item) => {
console.warn(item.paramName)
});*/ });*/
if (this.goodsId) { if (this.goodsId) {

View File

@ -121,7 +121,7 @@
</div> </div>
<div class="detail-item"> <div class="detail-item">
<div> <div @click="navigateTo('seckill')">
<span>{{homeData.seckillNum || 0}}</span> <span>{{homeData.seckillNum || 0}}</span>
<div>待参加活动</div> <div>待参加活动</div>
</div> </div>

View File

@ -48,7 +48,7 @@
</div> </div>
<div class="card-item"> <div class="card-item">
<div class="card-item-label">下单金额</div> <div class="card-item-label">下单金额</div>
<div class="card-item-value">{{overViewList.orderAmount| unitPrice('¥') }}</div> <div class="card-item-value">{{overViewList.orderAmount ? ($options.filters.unitPrice(overViewList.orderAmount )) : 0 }}</div>
</div> </div>
<div class="card-item"> <div class="card-item">
<div class="card-item-label">付款笔数</div> <div class="card-item-label">付款笔数</div>
@ -56,7 +56,7 @@
</div> </div>
<div class="card-item"> <div class="card-item">
<div class="card-item-label">付款金额</div> <div class="card-item-label">付款金额</div>
<div class="card-item-value">{{overViewList.paymentAmount | unitPrice('¥')}}</div> <div class="card-item-value">{{ overViewList.paymentAmount ? ($options.filters.unitPrice(overViewList.paymentAmount)) : 0 }}</div>
</div> </div>
</div> </div>