【前端模版】更新v4.4.4模版文件

This commit is contained in:
evoxwht 2022-05-18 17:41:38 +08:00
parent 78c3b71524
commit d3c3b379d1
27 changed files with 3049 additions and 3067 deletions

View File

@ -4,11 +4,11 @@ VUE_APP_ENV='dev'
# 页面 title
VUE_APP_TITLE=CRMEB
# socket 客服连接地址
VUE_APP_WS_KEFU_URL="ws://v4.crmeb.net/msg"
VUE_APP_WS_KEFU_URL=""
# socket 系统连接地址
VUE_APP_WS_ADMIN_URL="ws://v4.crmeb.net/notice"
VUE_APP_WS_ADMIN_URL=""
# 接口请求地址
VUE_APP_API_URL='http://v4.crmeb.net/adminapi'
VUE_APP_API_URL=''

View File

@ -117,4 +117,4 @@
"git add"
]
}
}
}

View File

@ -1034,7 +1034,7 @@ export default {
// 选择商品
changeGoods() {
this.modals = true;
this.$refs.goodslist.formValidate.is_virtual = 0;
this.$refs.goodslist.formValidate.is_presale = 0;
this.$refs.goodslist.getList();
this.$refs.goodslist.goodsCategory();
},

View File

@ -985,7 +985,7 @@ export default {
// 选择商品
changeGoods() {
this.modals = true;
this.$refs.goodslist.formValidate.is_virtual = 0;
this.$refs.goodslist.formValidate.is_presale = 0;
this.$refs.goodslist.getList();
this.$refs.goodslist.goodsCategory();
},

View File

@ -745,7 +745,7 @@ export default {
// 选择商品
changeGoods() {
this.modals = true;
this.$refs.goodslist.formValidate.is_virtual = 0;
this.$refs.goodslist.formValidate.is_presale = 0;
this.$refs.goodslist.getList();
this.$refs.goodslist.goodsCategory();
}, // 移动

View File

@ -935,7 +935,7 @@ export default {
// 选择商品
changeGoods() {
this.modals = true;
this.$refs.goodslist.formValidate.is_virtual = 0;
this.$refs.goodslist.formValidate.is_presale = 0;
this.$refs.goodslist.getList();
this.$refs.goodslist.goodsCategory();
}, // 移动

View File

@ -1439,7 +1439,7 @@
<Col span="24">
<div class="line"></div>
</Col>
<Col span="24" v-if="formValidate.virtual_type == 0">
<Col span="24" v-if="formValidate.virtual_type == 0 || formValidate.virtual_type == 3">
<FormItem label="预售商品:">
<i-switch v-model="formValidate.presale" size="large">
<span slot="open">开启</span>

View File

@ -2,56 +2,7 @@
<div class="message">
<div class="i-layout-page-header">
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
<div class="ivu-mt">
<Alert v-if="industry" type="info" banner closable>
<template slot="desc" >
<div>
<p>
1、请在微信后台设置模版消息主营行业:{{
industry.primary_industry.first_class
? industry.primary_industry.first_class + "||"
: industry.primary_industry
}}
{{
industry.primary_industry.second_class
? industry.primary_industry.second_class
: ""
}}
|| 副营行业:{{
industry.secondary_industry.first_class
? industry.secondary_industry.first_class + "||"
: industry.secondary_industry
}}
{{
industry.secondary_industry.second_class
? industry.secondary_industry.second_class
: ""
}}
</p>
<p>2、点击同步按钮会自动在微信后台添加模版消息</p>
</div>
</template>
</Alert>
<Row type="flex" class="mb20">
<Col v-bind="grid">
<Button
v-auth="['app-wechat-template-sync']"
icon="md-list"
type="success"
@click="routineTemplate"
style="margin-left: 20px"
>同步小程序订阅消息</Button
>
<Button
v-auth="['app-wechat-template-sync']"
icon="md-list"
type="success"
@click="wechatTemplate"
style="margin-left: 20px"
>同步微信模版消息</Button
>
</Col>
</Row>
<div>
<Tabs v-model="currentTab" @on-click="changeTab">
<TabPane
:label="item.label"
@ -62,11 +13,56 @@
</Tabs>
</div>
</div>
<div class="ivu-row">
<div class="table-box">
<Card :bordered="false" dis-hover class="ivu-mt">
<Row type="flex" class="mb20" v-if="currentTab == 1">
<Col v-bind="grid">
<Button
v-auth="['app-wechat-template-sync']"
icon="md-list"
type="success"
@click="routineTemplate"
style="margin-left: 20px"
>同步小程序订阅消息</Button
>
<Button
v-auth="['app-wechat-template-sync']"
icon="md-list"
type="success"
@click="wechatTemplate"
style="margin-left: 20px"
>同步微信模版消息</Button
>
</Col>
</Row>
<Alert v-if="industry && currentTab == 1">
<template slot="desc">
<div>
主营行业:{{
industry.primary_industry.first_class
? industry.primary_industry.first_class + "||"
: industry.primary_industry
}}
{{
industry.primary_industry.second_class
? industry.primary_industry.second_class
: ""
}}
</div>
<div>
副营行业:{{
industry.secondary_industry.first_class
? industry.secondary_industry.first_class + "||"
: industry.secondary_industry
}}
{{
industry.secondary_industry.second_class
? industry.secondary_industry.second_class
: ""
}}
</div>
</template>
</Alert>
<Table
:columns="currentTab == 1 ?columns : columns2"
:data="levelLists"
@ -96,7 +92,7 @@
]"
:slot="item"
>
<div v-if="item === 'is_ent_wechat' && currentTab == 1">--</div>
<div v-if="item === 'is_ent_wechat' && currentTab == 1">--</div>
<i-switch
v-model="row[item]"
:value="row[item]"
@ -348,7 +344,4 @@ export default {
.table {
padding: 0 18px;
}
.ivu-alert-with-desc {
padding: 5px 16px;
}
</style>

View File

@ -1,228 +1,150 @@
<template>
<div class="edit">
<div class="i-layout-page-header">
<!-- <div class="i-layout-page-header">
<router-link :to="{ path: '/admin/setting/notification/index' }"
><Button icon="ios-arrow-back" size="small" type="text"
>返回</Button
></router-link
><Button icon="ios-arrow-back" size="small" class="mr20"
>返回</Button
></router-link
>
<Divider type="vertical" />
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
</div> -->
<div class="i-layout-page-header header_top">
<div class="i-layout-page-header fl_header">
<router-link :to="{ path: '/admin/setting/notification/index' }"><Button icon="ios-arrow-back" size="small"
type="text">返回</Button></router-link>
<Divider type="vertical" />
<span class="ivu-page-header-title mr20" style="padding: 0" v-text="$route.meta.title"></span>
</div>
</div>
<div class="tabs">
<Row :gutter="32">
<Col span="32" class="demo-tabs-style1" style="padding: 16px">
<Tabs @on-click="changeTabs">
<TabPane
v-for="(item, index) in tabsList"
:key="index"
:name="item.slot"
:label="item.title"
>
<Form
class="form-sty"
ref="formData"
:model="formData"
:rules="ruleValidate"
:label-width="80"
>
<div v-if="item.slot === 'is_system' && !loading">
<FormItem label="通知标题">
<Input
v-model="formData.system_title"
placeholder="请输入通知标题"
style="width: 500px"
></Input>
</FormItem>
<FormItem label="通知内容">
<div class="content">
<Input
v-model="formData.system_text"
type="textarea"
:autosize="{ minRows: 5, maxRows: 8 }"
placeholder="请输入通知内容"
style="width: 500px"
></Input>
<div class="trip">
<div>
请输入模板消息详细内容对应的变量。关键字个数需与已添加的模板一致。
可以使用如下变量:
</div>
<div
v-for="(item, index) in formData.variable.split(',')"
:key="index"
>
{{ item }}
</div>
</div>
</div>
</FormItem>
<FormItem label="状态" prop="is_system">
<RadioGroup v-model="formData.is_system">
<Radio :label="1">开启</Radio>
<Radio :label="2">关闭</Radio>
</RadioGroup>
</FormItem>
</div>
<div v-if="item.slot === 'is_sms' && !loading">
<FormItem label="短信模版ID">
<Input
v-model="formData.sms_id"
placeholder="短信模版ID"
style="width: 500px"
></Input>
</FormItem>
<FormItem label="通知内容">
<div class="content">
<Input
v-model="formData.content"
type="textarea"
disabled
:autosize="{ minRows: 5, maxRows: 8 }"
placeholder="请输入通知内容"
style="width: 500px"
></Input>
</div>
</FormItem>
<FormItem label="状态" prop="is_sms">
<RadioGroup v-model="formData.is_sms">
<Radio :label="1">开启</Radio>
<Radio :label="2">关闭</Radio>
</RadioGroup>
</FormItem>
</div>
<div v-else-if="item.slot === 'is_wechat' && !loading">
<FormItem label="ID">
<Input
v-model="formData.templage_message_id"
disabled
placeholder="请输入通模板编号"
style="width: 500px"
></Input>
</FormItem>
<FormItem label="模板编号">
<Input
v-model="formData.tempkey"
disabled
placeholder="请输入通模板编号"
style="width: 500px"
></Input>
</FormItem>
<FormItem label="模板">
<Input
disabled
v-model="formData.content"
type="textarea"
:autosize="{ minRows: 5, maxRows: 8 }"
placeholder="请输入模板"
style="width: 500px"
></Input>
</FormItem>
<FormItem label="模板ID">
<Input
v-model="formData.tempid"
placeholder="请输入模板ID"
style="width: 500px"
></Input>
</FormItem>
<FormItem label="状态" prop="is_wechat">
<RadioGroup v-model="formData.is_wechat">
<Radio :label="1">开启</Radio>
<Radio :label="2">关闭</Radio>
</RadioGroup>
</FormItem>
</div>
<div v-else-if="item.slot === 'is_routine' && !loading">
<FormItem label="ID">
<Input
v-model="formData.templage_message_id"
disabled
placeholder="请输入通模板编号"
style="width: 500px"
></Input>
</FormItem>
<FormItem label="模板编号">
<Input
v-model="formData.tempkey"
disabled
placeholder="请输入通模板编号"
style="width: 500px"
></Input>
</FormItem>
<FormItem label="模板">
<Input
disabled
v-model="formData.content"
type="textarea"
:autosize="{ minRows: 5, maxRows: 8 }"
placeholder="请输入模板"
style="width: 500px"
></Input>
</FormItem>
<FormItem label="模板ID">
<Input
v-model="formData.tempid"
placeholder="请输入模板ID"
style="width: 500px"
></Input>
</FormItem>
<FormItem label="状态" prop="is_routine">
<RadioGroup v-model="formData.is_routine">
<Radio :label="1">开启</Radio>
<Radio :label="2">关闭</Radio>
</RadioGroup>
</FormItem>
</div>
<div v-else-if="item.slot === 'is_ent_wechat' && !loading">
<FormItem label="通知内容">
<div class="content">
<Input
v-model="formData.ent_wechat_text"
type="textarea"
:autosize="{ minRows: 5, maxRows: 8 }"
placeholder="请输入通知内容"
style="width: 500px"
></Input>
<div class="trip">
<div>
请输入模板消息详细内容对应的变量。关键字个数需与已添加的模板一致。
可以使用如下变量:
</div>
<div
v-for="(item, index) in formData.variable.split(',')"
:key="index"
>
{{ item }}
</div>
</div>
</div>
</FormItem>
<FormItem label="机器人链接">
<div class="content">
<Input
v-model="formData.url"
placeholder="请输入机器人链接"
style="width: 500px"
></Input>
<div class="trip">企业微信群机器人链接</div>
</div>
</FormItem>
<FormItem label="状态" prop="is_ent_wechat">
<RadioGroup v-model="formData.is_ent_wechat">
<Radio :label="1">开启</Radio>
<Radio :label="2">关闭</Radio>
</RadioGroup>
</FormItem>
</div>
<FormItem>
<Button type="primary" @click="handleSubmit('formData')"
>提交</Button
>
<Tabs @on-click="changeTabs">
<TabPane v-for="(item, index) in tabsList" :key="index" :name="item.slot" :label="item.title">
<Form class="form-sty" ref="formData" :model="formData" :rules="ruleValidate" :label-width="80">
<div v-if="item.slot === 'is_system' && !loading">
<FormItem label="通知标题">
<Input v-model="formData.system_title" placeholder="请输入通知标题" style="width: 500px"></Input>
</FormItem>
</Form>
</TabPane>
</Tabs>
<FormItem label="通知内容">
<div class="content">
<Input v-model="formData.system_text" type="textarea" :autosize="{ minRows: 5, maxRows: 8 }"
placeholder="请输入通知内容" style="width: 500px"></Input>
<div class="trip">
<div>
请输入模板消息详细内容对应的变量。关键字个数需与已添加的模板一致。
可以使用如下变量:
</div>
<div v-for="(item, index) in formData.variable.split(',')" :key="index">
{{ item }}
</div>
</div>
</div>
</FormItem>
<FormItem label="状态" prop="is_system">
<RadioGroup v-model="formData.is_system">
<Radio :label="1">开启</Radio>
<Radio :label="2">关闭</Radio>
</RadioGroup>
</FormItem>
</div>
<div v-if="item.slot === 'is_sms' && !loading">
<FormItem label="短信模版ID">
<Input v-model="formData.sms_id" placeholder="短信模版ID" style="width: 500px"></Input>
</FormItem>
<FormItem label="通知内容">
<div class="content">
<Input v-model="formData.content" type="textarea" disabled :autosize="{ minRows: 5, maxRows: 8 }"
placeholder="请输入通知内容" style="width: 500px"></Input>
</div>
</FormItem>
<FormItem label="状态" prop="is_sms">
<RadioGroup v-model="formData.is_sms">
<Radio :label="1">开启</Radio>
<Radio :label="2">关闭</Radio>
</RadioGroup>
</FormItem>
</div>
<div v-else-if="item.slot === 'is_wechat' && !loading">
<FormItem label="ID">
<Input v-model="formData.templage_message_id" disabled placeholder="请输入通模板编号"
style="width: 500px"></Input>
</FormItem>
<FormItem label="模板编号">
<Input v-model="formData.tempkey" disabled placeholder="请输入通模板编号" style="width: 500px"></Input>
</FormItem>
<FormItem label="模板">
<Input disabled v-model="formData.content" type="textarea" :autosize="{ minRows: 5, maxRows: 8 }"
placeholder="请输入模板" style="width: 500px"></Input>
</FormItem>
<FormItem label="模板ID">
<Input v-model="formData.tempid" placeholder="请输入模板ID" style="width: 500px"></Input>
</FormItem>
<FormItem label="状态" prop="is_wechat">
<RadioGroup v-model="formData.is_wechat">
<Radio :label="1">开启</Radio>
<Radio :label="2">关闭</Radio>
</RadioGroup>
</FormItem>
</div>
<div v-else-if="item.slot === 'is_routine' && !loading">
<FormItem label="ID">
<Input v-model="formData.templage_message_id" disabled placeholder="请输入通模板编号"
style="width: 500px"></Input>
</FormItem>
<FormItem label="模板编号">
<Input v-model="formData.tempkey" disabled placeholder="请输入通模板编号" style="width: 500px"></Input>
</FormItem>
<FormItem label="模板">
<Input disabled v-model="formData.content" type="textarea" :autosize="{ minRows: 5, maxRows: 8 }"
placeholder="请输入模板" style="width: 500px"></Input>
</FormItem>
<FormItem label="模板ID">
<Input v-model="formData.tempid" placeholder="请输入模板ID" style="width: 500px"></Input>
</FormItem>
<FormItem label="状态" prop="is_routine">
<RadioGroup v-model="formData.is_routine">
<Radio :label="1">开启</Radio>
<Radio :label="2">关闭</Radio>
</RadioGroup>
</FormItem>
</div>
<div v-else-if="item.slot === 'is_ent_wechat' && !loading">
<FormItem label="通知内容">
<div class="content">
<Input v-model="formData.ent_wechat_text" type="textarea" :autosize="{ minRows: 5, maxRows: 8 }"
placeholder="请输入通知内容" style="width: 500px"></Input>
<div class="trip">
<div>
请输入模板消息详细内容对应的变量。关键字个数需与已添加的模板一致。
可以使用如下变量:
</div>
<div v-for="(item, index) in formData.variable.split(',')" :key="index">
{{ item }}
</div>
</div>
</div>
</FormItem>
<FormItem label="机器人链接">
<div class="content">
<Input v-model="formData.url" placeholder="请输入机器人链接" style="width: 500px"></Input>
<div class="trip">企业微信群机器人链接</div>
</div>
</FormItem>
<FormItem label="状态" prop="is_ent_wechat">
<RadioGroup v-model="formData.is_ent_wechat">
<Radio :label="1">开启</Radio>
<Radio :label="2">关闭</Radio>
</RadioGroup>
</FormItem>
</div>
<FormItem>
<Button type="primary" @click="handleSubmit('formData')">提交</Button>
</FormItem>
</Form>
</TabPane>
</Tabs>
</Col>
</Row>
</div>
@ -334,30 +256,33 @@ export default {
</script>
<style scoped>
.edit {
.edit {}
.header_top{
margin-bottom: 10px;
}
.demo-tabs-style1 > .ivu-tabs-card > .ivu-tabs-content {
.demo-tabs-style1>.ivu-tabs-card>.ivu-tabs-content {
height: 120px;
margin-top: -16px;
}
.demo-tabs-style1 > .ivu-tabs-card > .ivu-tabs-content > .ivu-tabs-tabpane {
.demo-tabs-style1>.ivu-tabs-card>.ivu-tabs-content>.ivu-tabs-tabpane {
background: #fff;
padding: 16px;
}
.demo-tabs-style1 > .ivu-tabs.ivu-tabs-card > .ivu-tabs-bar .ivu-tabs-tab {
.demo-tabs-style1>.ivu-tabs.ivu-tabs-card>.ivu-tabs-bar .ivu-tabs-tab {
border-color: transparent;
}
.demo-tabs-style1 > .ivu-tabs-card > .ivu-tabs-bar .ivu-tabs-tab-active {
.demo-tabs-style1>.ivu-tabs-card>.ivu-tabs-bar .ivu-tabs-tab-active {
border-color: #fff;
}
.tabs {
padding: 0 30px;
background-color: #fff;
margin-top: 20px;
}
.trip {
color: rgb(146, 139, 139);
background-color: #f2f2f2;
@ -365,10 +290,12 @@ export default {
border-radius: 4px;
padding: 15px;
}
.content {
display: flex;
}
.form-sty {
margin-top: 20px;
}
</style>
</style>

View File

@ -1,13 +1,9 @@
<template>
<div>
<div class="i-layout-page-header">
<router-link :to="{ path: '/admin/system/config/system_config_tab/index' }"
><Button icon="ios-arrow-back" size="small" type="text"
>返回</Button
></router-link
>
<Divider type="vertical" />
<div class="i-layout-page-header">
<span class="ivu-page-header-title">{{ $route.meta.title }}</span>
</div>
</div>
<Card :bordered="false" dis-hover class="ivu-mt">
<Row type="flex">

View File

@ -218,85 +218,85 @@
}
//公众号静默授权
if (window.location.pathname !== '/' && option.query.scope === 'snsapi_base') {
let snsapiBase = 'snsapi_base';
let urlData = location.pathname + location.search;
// if (!that.$store.getters.isLogin && uni.getStorageSync('authIng')) {
// uni.setStorageSync('authIng', false)
// }
if (!that.$store.getters.isLogin && Auth.isWeixin()) {
let code,
state,
scope = ''
// if (window.location.pathname !== '/' && option.query.scope === 'snsapi_base') {
// let snsapiBase = 'snsapi_base';
// let urlData = location.pathname + location.search;
// // if (!that.$store.getters.isLogin && uni.getStorageSync('authIng')) {
// // uni.setStorageSync('authIng', false)
// // }
// if (!that.$store.getters.isLogin && Auth.isWeixin()) {
// let code,
// state,
// scope = ''
if (option.query.code instanceof Array) {
code = option.query.code[option.query.code.length - 1]
} else {
code = option.query.code
}
// if (option.query.code instanceof Array) {
// code = option.query.code[option.query.code.length - 1]
// } else {
// code = option.query.code
// }
if (code && code != uni.getStorageSync('snsapiCode') && location.pathname.indexOf(
'/pages/users/wechat_login/index') === -1) {
// 存储静默授权code
uni.setStorageSync('snsapiCode', code);
let spread = that.globalData.spid ? that.globalData.spid : '';
uni.setStorageSync('authIng', true)
silenceAuth({
code: code,
spread: that.$Cache.get('spread'),
spid: that.globalData.code
})
.then(res => {
uni.setStorageSync('authIng', false)
uni.setStorageSync('snRouter', decodeURIComponent(decodeURIComponent(option.query
.back_url)));
if (res.data.key !== undefined && res.data.key) {
this.$Cache.set('snsapiKey', res.data.key);
} else {
// if (code && code != uni.getStorageSync('snsapiCode') && location.pathname.indexOf(
// '/pages/users/wechat_login/index') === -1) {
// // 存储静默授权code
// uni.setStorageSync('snsapiCode', code);
// let spread = that.globalData.spid ? that.globalData.spid : '';
// uni.setStorageSync('authIng', true)
// silenceAuth({
// code: code,
// spread: that.$Cache.get('spread'),
// spid: that.globalData.code
// })
// .then(res => {
// uni.setStorageSync('authIng', false)
// uni.setStorageSync('snRouter', decodeURIComponent(decodeURIComponent(option.query
// .back_url)));
// if (res.data.key !== undefined && res.data.key) {
// this.$Cache.set('snsapiKey', res.data.key);
// } else {
let time = res.data.expires_time - this.$Cache.time();
this.$store.commit('LOGIN', {
token: res.data.token,
time: time
});
this.$Cache.set('WX_AUTH', code);
this.$store.commit('SETUID', res.data.userInfo.uid);
this.$store.commit('UPDATE_USERINFO', res.data.userInfo);
// let time = res.data.expires_time - this.$Cache.time();
// this.$store.commit('LOGIN', {
// token: res.data.token,
// time: time
// });
// this.$Cache.set('WX_AUTH', code);
// this.$store.commit('SETUID', res.data.userInfo.uid);
// this.$store.commit('UPDATE_USERINFO', res.data.userInfo);
if (option.query.back_url) {
location.replace(decodeURIComponent(decodeURIComponent(option.query
.back_url)));
}
}
})
.catch(error => {
uni.setStorageSync('authIng', false)
let url = ''
if (option.query.back_url instanceof Array) {
url = option.query.back_url[option.query.back_url.length - 1]
} else {
url = option.query.back_url
}
if (!that.$Cache.has('snsapiKey')) {
if (location.pathname.indexOf('/pages/users/wechat_login/index') === -1) {
Auth.oAuth(snsapiBase, url);
}
}
});
} else {
if (!this.$Cache.has('snsapiKey')) {
if (location.pathname.indexOf('/pages/users/wechat_login/index') === -1) {
Auth.oAuth(snsapiBase, urlData);
}
}
}
} else {
if (option.query.back_url) {
location.replace(uni.getStorageSync('snRouter'));
}
}
}
// if (option.query.back_url) {
// location.replace(decodeURIComponent(decodeURIComponent(option.query
// .back_url)));
// }
// }
// })
// .catch(error => {
// uni.setStorageSync('authIng', false)
// let url = ''
// if (option.query.back_url instanceof Array) {
// url = option.query.back_url[option.query.back_url.length - 1]
// } else {
// url = option.query.back_url
// }
// if (!that.$Cache.has('snsapiKey')) {
// if (location.pathname.indexOf('/pages/users/wechat_login/index') === -1) {
// Auth.oAuth(snsapiBase, url);
// }
// }
// });
// } else {
// if (!this.$Cache.has('snsapiKey')) {
// if (location.pathname.indexOf('/pages/users/wechat_login/index') === -1) {
// Auth.oAuth(snsapiBase, urlData);
// }
// }
// }
// } else {
// if (option.query.back_url) {
// location.replace(uni.getStorageSync('snRouter'));
// }
// }
// }
// #endif
// #ifdef MP
// 小程序静默授权

View File

@ -3,7 +3,7 @@
"prompt" : "template",
"title" : "用户协议与隐私政策",
"message" : "\t请务必审慎阅读、充分理解“用户协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。<br/>
你可以阅读 <a href=\"/pages/columnGoods/static/yhxy.html\">《用户协议》</a>与 <a href=\"/pages/columnGoods/static/yszc.html\">《隐私政策》</a>了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。",
你可以阅读 <a href=\"pages/columnGoods/static/yhxy.html\">《用户协议》</a>与 <a href=\"pages/columnGoods/static/yszc.html\">《隐私政策》</a>了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。",
"buttonAccept" : "同意并接受",
"buttonRefuse" : "暂不同意",
"second" : {

View File

@ -1,183 +1,189 @@
<template>
<view class="goodsList">
<view class="item" v-for="(item,index) in tempArr" :key='index' @click="goDetail(item)">
<view class="pictrue">
<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '1'">秒杀</span>
<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '2'">砍价</span>
<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '3'">拼团</span>
<image :src="item.recommend_image" mode="" v-if="item.recommend_image"></image>
<image :src="item.image" mode="" v-else></image>
</view>
<view class="text line2">{{item.store_name}}</view>
<view class="bottom acea-row row-between-wrapper">
<view class="sales acea-row row-middle">
<view class="money font-color"><text>¥</text>{{item.price}}</view>
<view>已售 {{item.sales}}</view>
</view>
<view v-if="item.stock>0">
<view class="bnt"
v-if="(item.activity && (item.activity.type === '1' || item.activity.type === '2' || item.activity.type === '3') || item.is_virtual) || !item.cart_button">
立即购买</view>
<view v-else>
<!-- 多规格 -->
<view class="bnt" @click.stop="goCartDuo(item)" v-if="item.spec_type">
加入购物车
<view class="num" v-if="isLogin && item.cart_num">{{item.cart_num}}</view>
</view>
<!-- 单规格 -->
<view class="bnt" v-if="!item.spec_type && !item.cart_num" @click.stop="goCartDan(item,index)">
加入购物车</view>
<view class="cart acea-row row-middle" v-if="!item.spec_type && item.cart_num">
<view class="pictrue iconfont icon-jianhao" @click.stop="CartNumDes(index,item)"></view>
<view class="num">{{item.cart_num}}</view>
<view class="pictrue iconfont icon-jiahao" @click.stop="CartNumAdd(index,item)"></view>
</view>
</view>
</view>
<view class="bnt end" v-else>已售罄</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: 'd_goodList',
props: {
dataConfig: {
type: Object,
default: () => {}
},
tempArr: {
type: Array,
default: []
},
isLogin: {
type: Boolean,
default: false
}
},
data() {
return {};
},
created() {},
mounted() {},
methods: {
goDetail(item) {
this.$emit('detail', item);
},
goCartDuo(item) {
this.$emit('gocartduo', item);
},
goCartDan(item, index) {
this.$emit('gocartdan', item, index);
},
CartNumDes(index, item) {
this.$emit('ChangeCartNumDan', false, index, item);
},
CartNumAdd(index, item) {
this.$emit('ChangeCartNumDan', true, index, item);
}
}
};
</script>
<style lang="scss">
.goodsList {
padding: 0 30rpx;
.item {
width: 100%;
box-sizing: border-box;
margin-bottom: 63rpx;
.pictrue {
width: 100%;
height: 290rpx;
border-radius: 16rpx;
position: relative;
image {
width: 100%;
height: 100%;
border-radius: 10rpx;
}
}
.text {
font-size: 30rpx;
font-family: PingFang SC;
font-weight: bold;
color: #282828;
margin: 20rpx 0;
}
.bottom {
.sales {
font-size: 22rpx;
color: #8E8E8E;
.money {
font-size: 42rpx;
font-weight: bold;
margin-right: 18rpx;
text {
font-size: 28rpx;
}
}
}
.cart {
height: 56rpx;
.pictrue {
color: var(--view-theme);
font-size: 46rpx;
width: 50rpx;
height: 50rpx;
text-align: center;
line-height: 50rpx;
}
.num {
font-size: 30rpx;
color: #282828;
font-weight: bold;
width: 80rpx;
text-align: center;
}
}
.bnt {
padding: 0 30rpx;
height: 56rpx;
line-height: 56rpx;
background: var(--view-theme);
border-radius: 42rpx;
font-size: 26rpx;
color: #fff;
position: relative;
&.end {
background: rgba(203, 203, 203, 1);
}
.num {
background-color: var(--view-priceColor);
min-width: 12rpx;
color: #fff;
border-radius: 15px;
position: absolute;
right: -14rpx;
top: -15rpx;
font-size: 22rpx;
padding: 0 10rpx;
height: 34rpx;
line-height: 34rpx;
}
}
}
}
}
<template>
<view class="goodsList">
<view class="item" v-for="(item,index) in tempArr" :key='index' @click="goDetail(item)">
<view class="pictrue">
<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '1'">秒杀</span>
<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '2'">砍价</span>
<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '3'">拼团</span>
<image :src="item.recommend_image" mode="" v-if="item.recommend_image"></image>
<image :src="item.image" mode="" v-else></image>
</view>
<view class="text line2">{{item.store_name}}</view>
<view class="bottom acea-row row-between-wrapper">
<view class="sales acea-row row-middle">
<view class="money font-color"><text>¥</text>{{item.price}}</view>
<view>已售 {{item.sales}}</view>
</view>
<view v-if="item.stock>0">
<view class="bnt"
v-if="(item.activity && (item.activity.type === '1' || item.activity.type === '2' || item.activity.type === '3') || item.is_virtual) || !item.cart_button">
立即购买</view>
<view v-else>
<!-- 多规格 -->
<view class="bnt" @click.stop="goCartDuo(item)" v-if="item.spec_type">
加入购物车
<view class="num" v-if="isLogin && item.cart_num">{{item.cart_num}}</view>
</view>
<!-- 单规格 -->
<view class="bnt" v-if="!item.spec_type && !item.cart_num" @click.stop="goCartDan(item,index)">
加入购物车</view>
<view class="cart acea-row row-middle" v-if="!item.spec_type && item.cart_num">
<view class="pictrue iconfont icon-jianhao" @click.stop="CartNumDes(index,item)"></view>
<view class="num">{{item.cart_num}}</view>
<view class="pictrue iconfont icon-jiahao" @click.stop="CartNumAdd(index,item)"></view>
</view>
</view>
</view>
<view class="bnt end" v-else>已售罄</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: 'd_goodList',
props: {
dataConfig: {
type: Object,
default: () => {}
},
tempArr: {
type: Array,
default: []
},
isLogin: {
type: Boolean,
default: false
}
},
data() {
return {
addIng: false
};
},
created() {},
mounted() {},
methods: {
goDetail(item) {
this.$emit('detail', item);
},
goCartDuo(item) {
this.$emit('gocartduo', item);
},
goCartDan(item, index) {
this.$emit('gocartdan', item, index);
},
CartNumDes(index, item) {
if (this.addIng) return
this.addIng = true
this.$emit('ChangeCartNumDan', false, index, item);
},
CartNumAdd(index, item) {
if (this.addIng) return
this.addIng = true
this.$emit('ChangeCartNumDan', true, index, item);
}
}
};
</script>
<style lang="scss">
.goodsList {
padding: 0 30rpx;
.item {
width: 100%;
box-sizing: border-box;
margin-bottom: 63rpx;
.pictrue {
width: 100%;
height: 290rpx;
border-radius: 16rpx;
position: relative;
image {
width: 100%;
height: 100%;
border-radius: 10rpx;
}
}
.text {
font-size: 30rpx;
font-family: PingFang SC;
font-weight: bold;
color: #282828;
margin: 20rpx 0;
}
.bottom {
.sales {
font-size: 22rpx;
color: #8E8E8E;
.money {
font-size: 42rpx;
font-weight: bold;
margin-right: 18rpx;
text {
font-size: 28rpx;
}
}
}
.cart {
height: 56rpx;
.pictrue {
color: var(--view-theme);
font-size: 46rpx;
width: 50rpx;
height: 50rpx;
text-align: center;
line-height: 50rpx;
}
.num {
font-size: 30rpx;
color: #282828;
font-weight: bold;
width: 80rpx;
text-align: center;
}
}
.bnt {
padding: 0 30rpx;
height: 56rpx;
line-height: 56rpx;
background: var(--view-theme);
border-radius: 42rpx;
font-size: 26rpx;
color: #fff;
position: relative;
&.end {
background: rgba(203, 203, 203, 1);
}
.num {
background-color: var(--view-priceColor);
min-width: 12rpx;
color: #fff;
border-radius: 15px;
position: absolute;
right: -14rpx;
top: -15rpx;
font-size: 22rpx;
padding: 0 10rpx;
height: 34rpx;
line-height: 34rpx;
}
}
}
}
}
</style>

View File

@ -1,199 +1,231 @@
<template>
<view class="goodsList">
<view class="item acea-row row-between-wrapper" v-for="(item,index) in tempArr" :key='index' @click="goDetail(item)">
<view class="pictrue">
<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '1'">秒杀</span>
<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '2'">砍价</span>
<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '3'">拼团</span>
<image :src="item.image" mode=""></image>
</view>
<view class="pictxt">
<view class="text line2">{{item.store_name}}</view>
<view class="bottom acea-row row-between-wrapper">
<view class="money font-color">
<text class="sign">¥</text>{{item.price}}
<!-- <span class="vip" v-if="item.vip_price">
<image src="../../static/images/vip01.png"></image>
¥{{item.vip_price}}
</span>
<text class="y_money" v-else>¥{{item.ot_price}}</text> -->
</view>
<view v-if="item.stock>0">
<view class="iconfont icon-gouwuche6 acea-row row-center-wrapper" v-if="item.activity && (item.activity.type === '1' || item.activity.type === '2' || item.activity.type === '3')"></view>
<view v-else>
<!-- 多规格 -->
<view class="bnt acea-row row-center-wrapper" @click.stop="goCartDuo(item)" v-if="item.spec_type">
选规格
<text class="num" v-if="isLogin && item.cart_num">{{item.cart_num}}</text>
</view>
<!-- 单规格 -->
<view class="iconfont icon-gouwuche6 acea-row row-center-wrapper" v-if="!item.spec_type && !item.cart_num" @click.stop="goCartDan(item,index)"></view>
<view class="cart acea-row row-middle" v-if="!item.spec_type && item.cart_num">
<view class="pictrue iconfont icon-jianhao acea-row row-center-wrapper" @click.stop="CartNumDes(index,item)"></view>
<view class="num">{{item.cart_num}}</view>
<view class="pictrue iconfont icon-jiahao acea-row row-center-wrapper" @click.stop="CartNumAdd(index,item)"></view>
</view>
</view>
</view>
<view class="bnt acea-row row-center-wrapper end" v-else>已售罄</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: 'd_goodList',
props: {
dataConfig: {
type: Object,
default: () => {}
},
tempArr:{
type: Array,
default:[]
},
isLogin:{
type: Boolean,
default:false
}
},
data() {
return {
};
},
created() {},
mounted() {},
methods: {
goDetail(item){
this.$emit('detail',item);
},
goCartDuo(item){
this.$emit('gocartduo',item);
},
goCartDan(item,index){
this.$emit('gocartdan',item,index);
},
CartNumDes(index,item){
this.$emit('ChangeCartNumDan', false,index,item);
},
CartNumAdd(index,item){
this.$emit('ChangeCartNumDan', true,index,item);
}
}
};
</script>
<style lang="scss">
.goodsList{
padding: 0 30rpx;
.item{
width: 100%;
box-sizing: border-box;
margin-bottom: 63rpx;
.pictrue{
width: 140rpx;
height: 140rpx;
border-radius: 10rpx;
position: relative;
border-radius: 22rpx;
image{
width: 100%;
height: 100%;
border-radius: 22rpx;
}
}
.pictxt{
width: 372rpx;
.text{
font-size:26rpx;
font-family:PingFang SC;
font-weight:500;
color: #333333;
}
.bottom{
margin-top: 22rpx;
.money{
font-size: 34rpx;
font-weight: 800;
.sign{
font-size: 24rpx;
}
.y_money{
font-size: 20rpx;
color: #999999;
margin-left: 14rpx;
font-weight: normal;
text-decoration: line-through;
}
.vip{
font-size: 22rpx;
color: #333333;
font-weight: normal;
margin-left: 14rpx;
image{
width: 38rpx;
height: 18rpx;
margin-right: 6rpx;
}
}
}
.cart{
height: 46rpx;
.pictrue{
color: var(--view-theme);
font-size:46rpx;
width: 46rpx;
height: 46rpx;
text-align: center;
line-height: 46rpx;
&.icon-jiahao{
color: var(--view-theme);
}
}
.num{
font-size: 30rpx;
color: #333333;
font-weight: bold;
width: 60rpx;
text-align: center;
}
}
.icon-gouwuche6{
width: 46rpx;
height: 46rpx;
background-color: var(--view-theme);
border-radius: 50%;
color: #fff;
font-size: 30rpx;
}
.bnt{
padding: 0 20rpx;
height: 45rpx;
background:var(--view-theme);
border-radius:23rpx;
font-size: 22rpx;
color: #fff;
position: relative;
&.end{
background:#cccccc;
}
.num{
min-width: 14rpx;
background-color: #fff;
color: var(--view-theme);
border-radius: 15px;
position: absolute;
right: -13rpx;
top: -11rpx;
font-size: 16rpx;
padding: 0 10rpx;
border: 1px solid var(--view-theme);
}
}
}
}
}
}
<template>
<view class="goodsList">
<view class="item acea-row row-between-wrapper" v-for="(item,index) in tempArr" :key='index'
@click="goDetail(item)">
<view class="pictrue">
<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '1'">秒杀</span>
<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '2'">砍价</span>
<span class="pictrue_log pictrue_log_class" v-if="item.activity && item.activity.type === '3'">拼团</span>
<image :src="item.image" mode=""></image>
</view>
<view class="pictxt">
<view class="text line2">{{item.store_name}}</view>
<view class="bottom acea-row row-between-wrapper">
<view class="money font-color">
<text class="sign">¥</text>{{item.price}}
<!-- <span class="vip" v-if="item.vip_price">
<image src="../../static/images/vip01.png"></image>
¥{{item.vip_price}}
</span>
<text class="y_money" v-else>¥{{item.ot_price}}</text> -->
</view>
<view v-if="item.stock>0">
<view class="iconfont icon-gouwuche6 acea-row row-center-wrapper"
v-if="item.activity && (item.activity.type === '1' || item.activity.type === '2' || item.activity.type === '3')">
</view>
<view v-else>
<!-- 多规格 -->
<view class="bnt acea-row row-center-wrapper" @click.stop="goCartDuo(item)"
v-if="item.spec_type">
选规格
<text class="num" v-if="isLogin && item.cart_num">{{item.cart_num}}</text>
</view>
<!-- 单规格 -->
<view class="iconfont icon-gouwuche6 acea-row row-center-wrapper"
v-if="!item.spec_type && !item.cart_num" @click.stop="goCartDan(item,index)"></view>
<view class="cart acea-row row-middle" v-if="!item.spec_type && item.cart_num">
<view class="pictrue iconfont icon-jianhao acea-row row-center-wrapper"
@click.stop="CartNumDes(index,item)"></view>
<view class="num">{{item.cart_num}}</view>
<view class="pictrue iconfont icon-jiahao acea-row row-center-wrapper"
@click.stop="CartNumAdd(index,item)"></view>
</view>
</view>
</view>
<view class="bnt acea-row row-center-wrapper end" v-else>已售罄</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: 'd_goodList',
props: {
dataConfig: {
type: Object,
default: () => {}
},
tempArr: {
type: Array,
default: []
},
isLogin: {
type: Boolean,
default: false
}
},
data() {
return {
addIng: false
};
},
created() {},
mounted() {},
methods: {
goDetail(item) {
this.$emit('detail', item);
},
goCartDuo(item) {
this.$emit('gocartduo', item);
},
goCartDan(item, index) {
this.$emit('gocartdan', item, index);
},
CartNumDes(index, item) {
if (this.addIng) return
this.addIng = true
this.$emit('ChangeCartNumDan', false, index, item);
},
CartNumAdd(index, item) {
console.log('2')
if (this.addIng) return
this.addIng = true
this.$emit('ChangeCartNumDan', true, index, item);
}
}
};
</script>
<style lang="scss">
.goodsList {
padding: 0 30rpx;
.item {
width: 100%;
box-sizing: border-box;
margin-bottom: 63rpx;
.pictrue {
width: 140rpx;
height: 140rpx;
border-radius: 10rpx;
position: relative;
border-radius: 22rpx;
image {
width: 100%;
height: 100%;
border-radius: 22rpx;
}
}
.pictxt {
width: 372rpx;
.text {
font-size: 26rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.bottom {
margin-top: 22rpx;
.money {
font-size: 34rpx;
font-weight: 800;
.sign {
font-size: 24rpx;
}
.y_money {
font-size: 20rpx;
color: #999999;
margin-left: 14rpx;
font-weight: normal;
text-decoration: line-through;
}
.vip {
font-size: 22rpx;
color: #333333;
font-weight: normal;
margin-left: 14rpx;
image {
width: 38rpx;
height: 18rpx;
margin-right: 6rpx;
}
}
}
.cart {
height: 46rpx;
.pictrue {
color: var(--view-theme);
font-size: 46rpx;
width: 46rpx;
height: 46rpx;
text-align: center;
line-height: 46rpx;
&.icon-jiahao {
color: var(--view-theme);
}
}
.num {
font-size: 30rpx;
color: #333333;
font-weight: bold;
width: 60rpx;
text-align: center;
}
}
.icon-gouwuche6 {
width: 46rpx;
height: 46rpx;
background-color: var(--view-theme);
border-radius: 50%;
color: #fff;
font-size: 30rpx;
}
.bnt {
padding: 0 20rpx;
height: 45rpx;
background: var(--view-theme);
border-radius: 23rpx;
font-size: 22rpx;
color: #fff;
position: relative;
&.end {
background: #cccccc;
}
.num {
min-width: 14rpx;
background-color: #fff;
color: var(--view-theme);
border-radius: 15px;
position: absolute;
right: -13rpx;
top: -11rpx;
font-size: 16rpx;
padding: 0 10rpx;
border: 1px solid var(--view-theme);
}
}
}
}
}
}
</style>

View File

@ -75,14 +75,16 @@ function _toLogin(push, pathLogin) {
} else {
urlData += '?go_longin=1';
}
if (!Cache.has('snsapiKey')) {
auth.oAuth('snsapi_base', urlData);
} else {
uni.navigateTo({
url: '/pages/users/wechat_login/index',
});
}
// if (!Cache.has('snsapiKey')) {
// auth.oAuth('snsapi_base', urlData);
// } else {
// uni.navigateTo({
// url: '/pages/users/wechat_login/index',
// });
// }
uni.navigateTo({
url: '/pages/users/wechat_login/index',
});
} else {
uni.navigateTo({
@ -92,19 +94,19 @@ function _toLogin(push, pathLogin) {
// #endif
// #ifdef MP
// uni.navigateTo({
// url: '/pages/users/wechat_login/index'
// })
Routine.getCode()
.then(code => {
console.log(code)
Routine.silenceAuth(code).then(res => {
console.log(res)
})
})
.catch(err => {
uni.hideLoading();
});
uni.navigateTo({
url: '/pages/users/wechat_login/index'
})
// Routine.getCode()
// .then(code => {
// console.log(code)
// Routine.silenceAuth(code).then(res => {
// console.log(res)
// })
// })
// .catch(err => {
// uni.hideLoading();
// });
// #endif
// #ifdef APP-PLUS

View File

@ -50,7 +50,14 @@
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
],
"abiFilters" : [ "armeabi-v7a", "arm64-v8a" ]
"abiFilters" : [ "armeabi-v7a", "arm64-v8a" ],
"permissionExternalStorage" : {
"request" : "none",
"prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
},
"permissionPhoneState" : {
"request" : "none" //拨打电话权限关闭
}
},
/* ios打包配置 */
"ios" : {
@ -216,3 +223,5 @@
},
"_spaceID" : "679f0930-8f60-425c-9033-8c135f397ea5"
}
/* ios打包配置 */

View File

@ -961,7 +961,13 @@
// #endif
}
}
]
],
"plugins": {
"live-player-plugin": {
"version": "1.3.2",
"provider": "wx2b03c6e691cd7370"
}
}
},
{
"root": "pages/goods_details",

View File

@ -1,108 +1,107 @@
<template>
<view :style="colorStyle">
<goodsCate1 v-show="category==1" ref="classOne"></goodsCate1>
<goodsCate2 v-show="category==2" ref="classTwo" @jumpIndex="jumpIndex"></goodsCate2>
<goodsCate3 v-show="category==3" ref="classThree" @jumpIndex="jumpIndex"></goodsCate3>
<!-- <tabBar v-show="category == 1" :pagePath="'/pages/goods_cate/goods_cate'"></tabBar> -->
</view>
</template>
<script>
import colors from "@/mixins/color";
import goodsCate1 from './goods_cate1';
import goodsCate2 from './goods_cate2';
import goodsCate3 from './goods_cate3';
import {
colorChange
} from '@/api/api.js';
import {
mapGetters
} from 'vuex';
import tabBar from "@/pages/index/visualization/components/tabBar.vue"
export default {
computed: mapGetters(['isLogin', 'uid']),
components: {
goodsCate1,
goodsCate2,
goodsCate3,
tabBar
},
mixins: [colors],
data() {
return {
category: '',
is_diy: uni.getStorageSync('is_diy'),
status: 0,
}
},
onLoad() {
this.classStyle();
},
onReady() {
},
onShow() {
if (this.status == 2 || this.status == 3) {
uni.hideTabBar()
} else if (this.status == 1) {
if (!this.is_diy) {
uni.hideTabBar()
} else {
this.$refs.classOne.getNav();
}
}
},
methods: {
jumpIndex() {
if (this.is_diy) {
if (!uni.getStorageSync('FOOTER_BAR')) {
uni.showTabBar()
}
}
},
classStyle() {
colorChange('category').then(res => {
let status = res.data.status;
this.status = res.data.status
this.category = status
if (status == 2) {
if (this.isLogin) {
this.$refs.classTwo.getCartNum();
this.$refs.classTwo.getCartList(1);
}
this.$refs.classTwo.getAllCategory()
}
if (status == 3) {
if (this.isLogin) {
this.$refs.classThree.getCartNum();
this.$refs.classThree.getCartList(1);
}
this.$refs.classThree.getAllCategory()
}
if (status == 2 || status == 3) {
uni.hideTabBar()
} else {
if (!this.is_diy) {
uni.hideTabBar()
} else {
this.$refs.classOne.getNav();
}
}
})
}
},
onReachBottom: function() {
if (this.category == 2) {
this.$refs.classTwo.productslist();
}
if (this.category == 3) {
this.$refs.classThree.productslist();
}
}
}
</script>
<style scoped lang="scss">
/deep/.mask {
z-index: 99;
}
<template>
<view :style="colorStyle">
<goodsCate1 v-show="category==1" ref="classOne"></goodsCate1>
<goodsCate2 v-show="category==2" ref="classTwo" @jumpIndex="jumpIndex"></goodsCate2>
<goodsCate3 v-show="category==3" ref="classThree" @jumpIndex="jumpIndex"></goodsCate3>
</view>
</template>
<script>
import colors from "@/mixins/color";
import goodsCate1 from './goods_cate1';
import goodsCate2 from './goods_cate2';
import goodsCate3 from './goods_cate3';
import {
colorChange
} from '@/api/api.js';
import {
mapGetters
} from 'vuex';
import tabBar from "@/pages/index/visualization/components/tabBar.vue"
export default {
computed: mapGetters(['isLogin', 'uid']),
components: {
goodsCate1,
goodsCate2,
goodsCate3,
tabBar
},
mixins: [colors],
data() {
return {
category: '',
is_diy: uni.getStorageSync('is_diy'),
status: 0,
}
},
onLoad() {
this.classStyle();
},
onReady() {
},
onShow() {
if (this.status == 2 || this.status == 3) {
uni.hideTabBar();
} else if (this.status == 1) {
if (!this.is_diy) {
uni.hideTabBar();
} else {
this.$refs.classOne.getNav();
}
}
},
methods: {
jumpIndex() {
if (this.is_diy) {
if (!uni.getStorageSync('FOOTER_BAR')) {
uni.showTabBar()
}
}
},
classStyle() {
colorChange('category').then(res => {
let status = res.data.status;
this.status = res.data.status
this.category = status
if (status == 2) {
if (this.isLogin) {
this.$refs.classTwo.getCartNum();
this.$refs.classTwo.getCartList(1);
}
this.$refs.classTwo.getAllCategory()
}
if (status == 3) {
if (this.isLogin) {
this.$refs.classThree.getCartNum();
this.$refs.classThree.getCartList(1);
}
this.$refs.classThree.getAllCategory()
}
if (status == 2 || status == 3) {
uni.hideTabBar()
} else {
if (!this.is_diy) {
uni.hideTabBar()
} else {
this.$refs.classOne.getNav();
}
}
})
}
},
onReachBottom: function() {
if (this.category == 2) {
this.$refs.classTwo.productslist();
}
if (this.category == 3) {
this.$refs.classThree.productslist();
}
}
}
</script>
<style scoped lang="scss">
/deep/.mask {
z-index: 99;
}
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -424,19 +424,18 @@
}
})
}
// #ifdef MP
// 小程序静默授权
if (!this.$store.getters.isLogin) {
Routine.getCode()
.then(code => {
Routine.silenceAuth(code).then(res => {
this.onLoadFun();
})
})
.catch(res => {
uni.hideLoading();
});
// Routine.getCode()
// .then(code => {
// Routine.silenceAuth(code).then(res => {
// this.onLoadFun();
// })
// })
// .catch(res => {
// uni.hideLoading();
// });
}
// #endif
@ -569,50 +568,52 @@
},
//小程序授权api替换 getUserInfo
getUserProfile() {
uni.showLoading({
title: '获取中'
});
let self = this;
Routine.getUserProfile()
.then(res => {
Routine.getCode()
.then(code => {
let userInfo = res.userInfo;
userInfo.code = code;
userInfo.spread_spid = app.globalData.spid; //获取推广人ID
userInfo.spread_code = app.globalData.code; //获取推广人分享二维码ID
Routine.authUserInfo(userInfo)
.then(res => {
if (res.data.key !== undefined && res.data.key) {
uni.hideLoading();
self.authKey = res.data.key;
self.isPhoneBox = true;
} else {
uni.hideLoading();
let time = res.data.expires_time - self.$Cache.time();
self.$store.commit('LOGIN', {
token: res.data.token,
time: time
});
this.getUserInfo()
}
})
.catch(res => {
uni.hideLoading();
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
});
})
.catch(res => {
uni.hideLoading();
});
})
.catch(res => {
uni.hideLoading();
});
console.log('去登录')
toLogin();
// uni.showLoading({
// title: '获取中'
// });
// let self = this;
// Routine.getUserProfile()
// .then(res => {
// Routine.getCode()
// .then(code => {
// let userInfo = res.userInfo;
// userInfo.code = code;
// userInfo.spread_spid = app.globalData.spid; //获取推广人ID
// userInfo.spread_code = app.globalData.code; //获取推广人分享二维码ID
// Routine.authUserInfo(userInfo)
// .then(res => {
// if (res.data.key !== undefined && res.data.key) {
// uni.hideLoading();
// self.authKey = res.data.key;
// self.isPhoneBox = true;
// } else {
// uni.hideLoading();
// let time = res.data.expires_time - self.$Cache.time();
// self.$store.commit('LOGIN', {
// token: res.data.token,
// time: time
// });
// this.getUserInfo()
// }
// })
// .catch(res => {
// uni.hideLoading();
// uni.showToast({
// title: res.msg,
// icon: 'none',
// duration: 2000
// });
// });
// })
// .catch(res => {
// uni.hideLoading();
// });
// })
// .catch(res => {
// uni.hideLoading();
// });
},
/**
*

View File

@ -820,7 +820,8 @@
} else {
that.cartArr[3].payStatus = 1
}
//好友代付是否开启
that.cartArr[4].payStatus = res.data.friend_pay_status || 0;
// that.$set(that, 'cartArr', that.cartArr);
that.$set(that, 'ChangePrice', that.totalPrice);
that.getBargainId();

View File

@ -221,7 +221,7 @@
</view>
</view>
<!-- 退款订单详情 -->
<view class='wrapper' v-if="isGoodsReturn">
<view class='wrapper' v-if="isGoodsReturn && orderInfo.cartInfo[0].productInfo.virtual_type != 3">
<view class='item acea-row row-between'>
<view>收货人:</view>
<view class='conter'>{{orderInfo.real_name}}</view>
@ -956,6 +956,9 @@
if (item.value == 'yue') {
item.payStatus = res.data.yue_pay_status == 1 ? true : false;
}
if (item.value == 'friend') {
item.payStatus = res.data.friend_pay_status == 1 ? true : false;
}
});
that.getOrderStatus();
}).catch(err => {

View File

@ -285,6 +285,9 @@
}
if (item.value == 'yue') {
item.payStatus = res.data.yue_pay_status == 1 ? true : false;
}
if (item.value == 'friend') {
item.payStatus = res.data.friend_pay_status == 1 ? true : false;
}
});
//#ifdef MP

View File

@ -125,7 +125,7 @@
</view>
<button class='modifyBnt bg-color' formType="submit">保存修改</button>
<!-- #ifdef H5 || APP-PLUS -->
<!-- #ifdef H5 || APP-PLUS || MP -->
<view class="logOut cartcolor acea-row row-center-wrapper" @click="outLogin">退出登录</view>
<!-- #endif -->
<!-- #ifdef APP-PLUS -->

View File

@ -27,7 +27,7 @@
</view>
</view>
<!-- <view class="apply"
v-if="(userInfo.is_division && userInfo.division_invite && userInfo.division_status) || (!userInfo.is_division && !userInfo.is_agent) && userInfo.id">
v-if="userInfo.division_open && ((userInfo.is_division && userInfo.division_invite && userInfo.division_status) || (!userInfo.is_division && !userInfo.is_agent))">
<view v-if="userInfo.is_division">邀请码:{{userInfo.division_invite}}</view>
<view v-if="!userInfo.is_division && !userInfo.is_agent">
<navigator url='/pages/annex/settled/index' hover-class="none">
@ -59,12 +59,12 @@
<view>佣金明细</view>
</navigator>
<navigator v-if="!userInfo.is_agent && !userInfo.is_division" url='/pages/users/promoter-order/index' hover-class="none"
<navigator v-if="(userInfo.division_open && !userInfo.is_agent && !userInfo.is_division) || !userInfo.division_open" url='/pages/users/promoter-order/index' hover-class="none"
class='item acea-row row-center-wrapper row-column'>
<text class='iconfont icon-dingdan'></text>
<view>推广人订单</view>
</navigator>
<navigator v-if="userInfo.is_agent || userInfo.is_division" url='/pages/users/promoter-order/index?type=1' hover-class="none"
<navigator v-if="userInfo.division_open && (userInfo.is_agent || userInfo.is_division)" url='/pages/users/promoter-order/index?type=1' hover-class="none"
class='item acea-row row-center-wrapper row-column'>
<text class='iconfont icon-dingdan'></text>
<view>{{userInfo.is_division?'事业部':'代理商'}}推广订单</view>
@ -79,7 +79,7 @@
<text class='iconfont icon-paihang'></text>
<view>佣金排行</view>
</navigator>
<navigator v-if="userInfo.is_agent" url='/pages/users/staff_list/index' hover-class="none"
<navigator v-if="userInfo.division_open && userInfo.is_agent" url='/pages/users/staff_list/index' hover-class="none"
class='item acea-row row-center-wrapper row-column'>
<text class='iconfont icon-tuandui'></text>
<view>员工列表</view>

View File

@ -46,8 +46,8 @@ const mutations = {
state.token = token;
},
LOGOUT(state) {
state.token = undefined;
state.uid = undefined
state.token = false;
state.uid = 0
Cache.clear(LOGIN_STATUS);
Cache.clear(UID);
},