Commit 529151af by leic

系统配置调整

1 parent d518e97b
Showing with 1224 additions and 296 deletions
......@@ -3,5 +3,6 @@ import axios from 'axios'
export default function getUpToken(key) {
let data = new FormData();
data.append('key', key);
console.log(data)
return axios.get( 'https://api.ledianyun.com/api/get/qiniuUploadToken', data).then(res => res.data)
}
......@@ -84,7 +84,7 @@ img {
------------------------------ */
.site-wrapper {
position: relative;
min-width: 1180px;
// min-width: 1180px;
}
......@@ -103,6 +103,7 @@ img {
.site-navbar__body,
.site-content__wrapper {
margin-left: 64px;
width: calc(100% - 64px);
}
.site-navbar__brand {
......@@ -343,6 +344,9 @@ img {
z-index: 1020;
width: 230px;
overflow: hidden;
.site-content__wrapper {
width: calc(100% - 230px);
}
&--dark,
&--dark-popper {
......@@ -871,4 +875,11 @@ img {
}
}
}
// 编辑器样式
.quill-editor {
.ql-editor {
min-height: 200px;
}
}
}
\ No newline at end of file
......@@ -3,13 +3,14 @@
<div class="search_form">
<el-form :model="searchData" :size="size" :label-width="labelWidth" ref="searchForm">
<el-row class="search_form_box" :gutter="10">
<el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6" v-for='item in searchForm' :key='item.prop'>
<el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6" v-for='item in formList' :key='item.prop'>
<el-form-item :label="item.label" :prop="item.prop">
<!-- 输入框 -->
<el-input v-if="item.type === 'Input'" v-model="searchData[item.prop]"
:placeholder="item.placeholder || '请输入'"></el-input>
<!-- 下拉框 -->
<el-select v-if="item.type === 'Select'" v-model="searchData[item.prop]" clearable :disabled="item.disabled" :placeholder="item.placeholder || '请选择'">
<el-select v-if="item.type === 'Select'" v-model="searchData[item.prop]" clearable
:disabled="item.disabled" :placeholder="item.placeholder || '请选择'">
<el-option v-for="op in item.options" :label="op.label" :value="op.value"
:key="op.value"></el-option>
</el-select>
......@@ -23,39 +24,59 @@
}}</el-radio-button>
</el-radio-group>
<!-- 复选框 -->
<el-checkbox-group v-if="item.type === 'Checkbox'" v-model="searchData[item.prop]" :placeholder="item.placeholder || '请选择'">
<el-checkbox-group v-if="item.type === 'Checkbox'" v-model="searchData[item.prop]"
:placeholder="item.placeholder || '请选择'">
<el-checkbox v-for="ch in item.checkboxs" :label="ch.value" :key="ch.value">{{ ch.label
}}</el-checkbox>
</el-checkbox-group>
<!-- 日期 -->
<el-date-picker v-if="item.type === 'Date'" v-model="searchData[item.prop]" clearable :placeholder="item.placeholder || '请选择'"></el-date-picker>
<el-date-picker v-if="item.type === 'Date'" v-model="searchData[item.prop]" clearable
:placeholder="item.placeholder || '请选择'"></el-date-picker>
<!-- 日期范围选择 -->
<el-date-picker v-if="item.type === 'DateRange'" type='daterange' v-model="searchData[item.prop]" clearable start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
<el-date-picker v-if="item.type === 'DateRange'" type='daterange' v-model="searchData[item.prop]"
clearable start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
<!-- 时间 -->
<el-time-select v-if="item.type === 'Time'" v-model="searchData[item.prop]"
type='' clearable></el-time-select>
<el-time-select v-if="item.type === 'Time'" v-model="searchData[item.prop]" type=''
clearable></el-time-select>
<!-- 日期时间 -->
<el-date-picker v-if="item.type === 'DateTime'" type='datetime' v-model="searchData[item.prop]"
:disabled="item.disable && item.disable(searchData[item.prop])" clearable :placeholder="item.placeholder || '请选择'"></el-date-picker>
:disabled="item.disable && item.disable(searchData[item.prop])" clearable
:placeholder="item.placeholder || '请选择'"></el-date-picker>
<!-- 滑块 -->
<!-- <el-slider v-if="item.type==='Slider'" v-model="searchData[item.prop]"></el-slider> -->
<!-- 开关 -->
<el-switch v-if="item.type === 'Switch'" v-model="searchData[item.prop]"></el-switch>
</el-form-item>
</el-col>
<el-col :xs="{span: 24}" :sm="{span: 24}" :md="{span: 12}" :lg="{span: 8}" :xl="{span: 6}">
<el-col :xs="24" :sm="24" :md="formList.length > 1 ? 24 : 12" :lg="formList.length > 2 ? 24 : 8"
:xl="formList.length > 3 ? 24 : 6">
<div class="searchForm_options">
<el-button type="primary" @click="searchHandle">查询</el-button>
<el-button @click="resetFields">重置</el-button>
<slot name="searchFormOptions"></slot>
<template v-if="searchForm.length > 5">
<el-button v-show="!isOpen" type="text" icon="el-icon-arrow-down"
@click="toggleForm">展开</el-button>
<el-button v-show="isOpen" type="text" icon="el-icon-arrow-up"
@click="toggleForm">收起</el-button>
</template>
</div>
</el-col>
<!-- <el-col :xs="{span: 24}" :sm="{span: 24}" :md="{span: 12}" :lg="{span: 8}" :xl="{span: 6}">
<el-form-item style="display: flex;justify-content: flex-start;">
<div style="display: flex;">
<el-button type="primary" @click="searchHandle">查询</el-button>
<el-button @click="resetFields">重置</el-button>
<slot name="searchFormOptions"></slot>
<!-- <el-button v-if="!isOpen" type="text" icon="el-icon-arrow-down"
@click="toggleForm">展开</el-button>
<el-button v-else type="text" icon="el-icon-arrow-up"
@click="toggleForm">收起</el-button> -->
<template v-if="searchForm.length > 5">
<el-button v-show="!isOpen" type="text" icon="el-icon-arrow-down"
@click="toggleForm">展开</el-button>
<el-button v-show="isOpen" type="text" icon="el-icon-arrow-up"
@click="toggleForm">收起</el-button>
</template>
</div>
</el-form-item>
</el-col>
</el-col> -->
</el-row>
</el-form>
</div>
......@@ -86,11 +107,13 @@ export default {
isOpen: false
};
},
mounted() {
// if(this.searchForm.length > 2) {
// this.searchForm = this.searchForm.slice(0, 2);
// this.isOpen = false;
// }
computed: {
formList() {
if (this.searchForm.length > 5) {
return !this.isOpen ? this.searchForm.slice(0, 5) : this.searchForm
}
return this.searchForm
}
},
methods: {
// 查询
......@@ -114,7 +137,8 @@ export default {
<style lang="scss">
.search_form {
margin-bottom: 16px;
padding: 24px 24px 0;
// padding: 24px 24px 0;
padding: 24px;
background: #fff;
.search_form_box {
......@@ -127,11 +151,25 @@ export default {
padding-right: 10px;
}
.el-select, .el-date-editor.el-input {
.el-select,
.el-date-editor.el-input {
width: 100%;
}
.el-input__inner {
border-radius: 0;
}
}</style>
\ No newline at end of file
.searchForm_options {
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
&>.el-button {
padding-top: 8px;
padding-bottom: 8px;
}
}
}
</style>
\ No newline at end of file
......@@ -14,9 +14,9 @@
<h3 class="title">主题色</h3>
<div class="theme-color">
<div class="theme-color-content">
<div class="theme-color-block" v-for="(color, index) in colorList" :key="index"
:style="{ backgroundColor: color }" @click="themeClick(color)">
<span class="themeicon-check" v-if="currentColor === color">
<div class="theme-color-block" v-for="(item, index) in colorList" :key="index"
:style="{ backgroundColor: item.color }" @click="themeClick(item)">
<span class="themeicon-check" v-if="currentTheme.color === item.color">
<i class="el-icon-check"></i>
</span>
</div>
......@@ -35,17 +35,25 @@ export default {
data() {
return {
isOpen: false,
currentColor: sessionStorage.getItem('theme'),
currentTheme: {},
colorList: themeList.list.slice(0, 4)
}
},
mounted() {
try {
let theme = JSON.parse(sessionStorage.getItem("theme"));
this.currentTheme = theme
} catch (error) {
console.log(error)
}
},
methods: {
openSetting() {
this.isOpen = true
},
themeClick(color) {
this.currentColor = color
changeTheme(this.currentColor)
themeClick(theme) {
this.currentTheme = theme
changeTheme(this.currentTheme)
}
}
}
......@@ -60,8 +68,8 @@ export default {
display: flex;
align-items: center;
justify-content: center;
width: 48px;
height: 48px;
width: 40px;
height: 40px;
font-size: 16px;
text-align: center;
background-color: var(--primary-color);
......
......@@ -50,12 +50,12 @@ export default {
},
};
</script>
<style scoped>
<style>
.my_tooltip {
max-width: 80%;
}
</style>
<style scoped>
.text-wrap {
width: 100%;
overflow: hidden;
......
......@@ -260,7 +260,8 @@ export default {
</script>
<style lang="scss" scoped>
.images-list {
display: inline-block;
vertical-align: top;
// border: 1px dashed #d5d5d5;
// padding: 10px;
// border-radius: 4px;
......
......@@ -67,7 +67,7 @@ export default {
// 资源包订购详情
getPayInfo() {
let params = {
amount: this.inputMoney * 100
amount: this.inputMoney * 1
}
if (this.tradeNo) {
// 如果从充值记录发起支付
......
......@@ -3,12 +3,11 @@
<el-dialog title="修改" :visible.sync="dialogFormVisible" center>
<el-form :model="form">
<el-form-item label="配置类型:" :label-width="formLabelWidth">
<el-input v-model="form.min" style="width:65%;" readonly></el-input>
<el-input v-model="form.min" style="width:65%;"></el-input>
</el-form-item>
<el-form-item label="内容:" :label-width="formLabelWidth">
<quill-editor v-if="form.conditionFrom == 'xieyi'" ref="myTextEditor" v-model="form.value"
:options="quillOption"
style="padding-bottom: 50px;height: 300px;width: 72%;display: inline-table;margin-bottom: 60px;">
:options="quillOption" style="width: 72%;">
</quill-editor>
<div v-else-if="form.conditionFrom == 'image'">
<!-- <el-upload class="avatar-uploader" v-model="form.value"
......@@ -205,8 +204,6 @@ export default {
this.dataSelect()
}
})
} else {
this.$message.error(data.msg)
}
})
},
......
export const xitongList = [
{
title: '后台服务名称',
type: 'platName',
value: ''
},
{
title: '海报邀请语',
type: 'posterDesc',
value: ''
},
// {
// title: '推广佣金',
// type: 'distributeAwardsRate',
// value: ''
// },
// {
// title: '邀请收益数据 1模拟 2真实',
// type: 'distributeDataModel',
// value: ''
// },
{
title: '客服微信号',
type: 'kefuWechat',
value: ''
},
{
title: '下单须知',
type: 'orderAlarmDesc',
value: ''
},
]
export const duanxinList = [
{
title: '短信签名',
type: 'smsSignHeader',
value: ''
},
{
title: '短信服务商 (1 腾讯云 2阿里云)',
type: 'smsChannel',
value: ''
},
{
title: '腾讯云短信 clientId',
type: 'smsTencentClientId',
value: ''
},
{
title: '腾讯云短信 clientSecret',
type: 'smsTencentClientSecret',
value: ''
},
{
title: '阿里云耗材模板申请',
type: 'smsAliyunCodeCQ',
value: ''
},
{
title: '阿里云运单超重补缴通知',
type: 'smsAliyunCodeCZ',
value: ''
},
{
title: '阿里云登陆或注册模板 code(开启阿里云短信必须配置)',
type: 'smsAliyunCodeRegister',
value: ''
},
{
title: '阿里云找回密码模板 code(开启阿里云短信必须配置)',
type: 'smsAliyunCodeForget',
value: ''
},
{
title: '阿里云绑定手机号模板 code(开启阿里云短信必须配置)',
type: 'smsAliyunCodeBind',
value: ''
},
{
title: '阿里云短信accesssKeyId',
type: 'smsAliyunAccessKeyId',
value: ''
},
{
title: '阿里云短信accesssSecret',
type: 'smsAliyunAccessSecret',
value: ''
},
{
title: '短信宝smsDXBClientId',
type: 'smsDXBClientId',
value: ''
},
{
title: '短信宝smsDXBClientSecret',
type: 'smsDXBClientSecret',
value: ''
},
]
export const fuwufeiList = [
{
title: '提现低额度',
type: 'cashOutMix',
value: ''
},
{
title: '最高提现金额',
type: 'cashOutMax',
value: ''
},
]
export const vipList = [
{
title: '会员固定折扣',
type: 'vipDiscount',
value: ''
},
{
title: '会员开通费用',
type: 'vipPrice',
value: ''
},
{
title: '会员开通时长(月)',
type: 'vipTimes',
value: ''
},
{
title: '会员首单减免',
type: 'vipFirstOrderDiscount',
value: ''
},
]
export const yhqList = [
{
title: '新人优惠券',
type: 'couponNewUserCouponId',
value: ''
},
]
export const weixinList = [
{
title: '微信公众号APPID',
type: 'wxOfficialAppid',
value: ''
},
{
title: '微信公众号秘钥',
type: 'wxOfficialEncodingAESKey',
value: ''
},
{
title: '公众号Token',
type: 'wxOfficialSecret',
value: ''
},
{
title: '公众号EncodingAESKey',
type: 'wxOfficialEncodingAESKey',
value: ''
},
{
title: '微信小程序APPID',
type: 'wxLiteAppid',
value: ''
},
{
title: '微信小程序秘钥',
type: 'wxLiteSecret',
value: ''
},
{
title: '微信商户key',
type: 'weixinPayKey',
value: ''
},
{
title: '微信商户号mchId',
type: 'weixinPayMchId',
value: ''
},
{
title: '微信证书地址',
type: 'weixinPayCertPath',
value: ''
},
{
title: '订单状态更新提醒',
type: 'wxTemplateOrderStatueChange',
value: ''
},
{
title: '微信证书序列号',
type: 'weixinPaySerialNo',
value: ''
},
{
title: '微信秘钥证书地址',
type: 'weixinPayPrivateKeyPath',
value: ''
},
{
title: '微信提现方式 1新版 2旧版',
type: 'weixinTransType',
value: ''
},
]
export const kefuList = [
{
title: '客服链接',
type: 'wxKefuUrl',
value: ''
},
{
title: '客服AppId',
type: 'wxKefuAppid',
value: ''
},
{
title: '客服跳转方式(1,企业微信,2,打电话,3,客服二维码)',
type: 'KefuChannel',
value: ''
},
{
title: '客服电话',
type: 'KefuPhone',
value: ''
},
]
export const kaiguanList = [
{
title: '登录是否获取手机号',
type: 'loginNeedPhone',
value: ''
},
{
title: '是否开启微信提现',
type: 'weixinTransOpen',
value: ''
},
{
title: '小程序是否上架',
type: 'mpOpen',
value: ''
},
]
export const imageList = [
{
title: '客服二维码',
type: 'kefuQrcode',
value: ''
},
{
title: '公众号二维码',
type: 'wxOfficialQrcode',
value: ''
},
{
title: '公众号图标',
type: 'wxOfficialLogo',
value: ''
},
{
title: '会员权益图',
type: 'vipBenefitPic',
value: ''
},
]
export const gongzhonghaoList = [
{
title: '公众号名称',
type: 'wxOfficialName',
value: ''
},
{
title: '公众号描述',
type: 'wxOfficialDesc',
value: ''
},
{
title: '公众号跳转地址',
type: 'wxOfficialJumpUrl',
value: ''
},
]
\ No newline at end of file
......@@ -3,7 +3,7 @@
<div class="table_option_btns">
<el-button class="btn" type="primary" @click="refresh">刷新</el-button>
</div>
<el-table v-loading="loading" :data="data">
<el-table v-loading="loading" :data="tableData">
<!-- <el-table-column prop="type" label="编号" align="center" width="80">
</el-table-column> -->
<el-table-column prop="min" label="类型" width="250">
......@@ -23,11 +23,19 @@
</el-table-column>
<el-table-column prop="createAt" label="创建时间" width="180">
</el-table-column>
<el-table-column label="操作" prop="id" width="120">
<el-table-column label="操作" prop="id" width="120"
v-if="isAuth(settingType == 'platform' ? 'sysSetting:update' : 'allocationList:update') || isAuth(settingType == 'platform' ? 'sysSetting:delete' : 'allocationList:delete')">
<template slot-scope="scope">
<el-button size="mini" type="primary" :disabled="!isAuth('sysSetting:update')"
<el-button size="mini" type="primary"
:disabled="!isAuth(settingType == 'platform' ? 'sysSetting:update' : 'allocationList:update')"
@click="amend(scope.$index, scope.row)">编辑
</el-button>
<!-- <el-popconfirm title="确定删除这一项配置吗?" @confirm="amendDel(scope.$index, scope.row)"
v-if="isAuth(settingType == 'platform' ? 'sysSetting:delete' : 'allocationList:delete')">
<el-button slot="reference" size="mini" type="danger"
:disabled="!isAuth(settingType == 'platform' ? 'sysSetting:delete' : 'allocationList:delete')">删除
</el-button>
</el-popconfirm> -->
</template>
</el-table-column>
</el-table>
......@@ -39,6 +47,8 @@
<script>
import sysSetDialog from '@/components/sysSetDialog'
import TooltipText from '@/components/Tooltip'
import { duanxinList, yhqList, vipList, weixinList, xitongList, kefuList, kaiguanList, imageList, gongzhonghaoList } from './data'
import moment from 'moment'
export default {
props: {
tabName: {
......@@ -53,6 +63,11 @@ export default {
type: Boolean,
default: false
},
// 平台配置or系统配置
settingType: {
type: String,
default: ''
}
},
components: {
sysSetDialog,
......@@ -67,12 +82,79 @@ export default {
type: '',
couponList: []
},
tableData: []
}
},
mounted() {
console.log(this.$scopedSlots, this.$slots)
watch: {
data: {
handler(val) {
console.log(this.tabName)
switch (this.tabName) {
case 'xitong':
this.tableData = this.dataFilter(xitongList, val, 'xitong')
break;
case 'duanxin':
this.tableData = this.dataFilter(duanxinList, val, 'duanxin')
break;
case 'yhq':
this.tableData = this.dataFilter(yhqList, val, 'yhq')
break;
case 'vip':
this.tableData = this.dataFilter(vipList, val, 'vip')
break;
case 'weixin':
this.tableData = this.dataFilter(weixinList, val, 'weixin')
break;
case 'kefu':
this.tableData = this.dataFilter(kefuList, val, 'kefu')
break;
case 'kaiguan':
this.tableData = this.dataFilter(kaiguanList, val, 'kaiguan')
break;
case 'image':
this.tableData = this.dataFilter(imageList, val, 'image')
break;
case 'gongzhonghao':
this.tableData = this.dataFilter(gongzhonghaoList, val, 'gongzhonghao')
break;
default:
this.tableData = this.data
break;
}
},
deep: true,
immediate: true
}
},
methods: {
// 数组过滤
dataFilter(arr1 = [], arr2 = [], name) {
let data = []
if (Array.isArray(arr1) && Array.isArray(arr2)) {
arr1.forEach((item, index) => {
let checkBool = false
arr2.forEach((item2) => {
if (item.type === item2.type) {
checkBool = true;
data.push(item2)
}
})
if (!checkBool) {
data.push({
id: null,
type: item.type,
max: null,
min: item.title,
value: '',
conditionFrom: name,
createAt: moment(new Date).format('YYYY-MM-DD HH:mm:ss')
});
}
})
}
return data
},
// 修改弹框
amend(index, rows) {
this.form.id = rows.id;
......@@ -89,6 +171,22 @@ export default {
this.form.conditionFrom = rows.conditionFrom
this.$refs.sysSetDialogRef.dialogFormVisible = true;
},
// 删除
amendDel(index, rows) {
this.$http({
url: this.$http.adornUrl('common/delete'),
method: 'get',
params: this.$http.adornParams({
id: rows.id,
})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.$message.success('删除成功')
}
})
},
// 弹窗确认
sysConfirm() {
//刷新表格数据
......
......@@ -8,17 +8,66 @@
// import './element-#3E8EF7/index.css' // 当前主题色
export default {
list: [
'#3E8EF7', // 蓝色
'#0BB2D4', // 青色
'#11C26D', // 绿色
'#9463F7', // 紫色
'#17B3A3', // 蓝绿色
'#667AFA', // 靛青色
'#997B71', // 棕色
'#757575', // 灰色
'#EB6709', // 橙色
'#F74584', // 粉红色
'#FCB900', // 黄色
'#FF4C52' // 红色
]
{
color: '#3E8EF7',
colorRgb: '62,142,247',
},
{
color: '#0BB2D4',
colorRgb: '11,178,212',
},
{
color: '#11C26D',
colorRgb: '17,194,109',
},
{
color: '#9463F7',
colorRgb: '148,99,247',
},
{
color: '#17B3A3',
colorRgb: '23,179,163',
},
{
color: '#667AFA',
colorRgb: '102,122,250',
},
{
color: '#997B71',
colorRgb: '153,123,113',
},
{
color: '#757575',
colorRgb: '117,117,117',
},
{
color: '#EB6709',
colorRgb: '235,103,9',
},
{
color: '#F74584',
colorRgb: '247,69,132',
},
{
color: '#FCB900',
colorRgb: '252,185,0',
},
{
color: '#FF4C52',
colorRgb: '255,76,82',
},
// '#3E8EF7', // 蓝色
// '#0BB2D4', // 青色
// '#11C26D', // 绿色
// '#9463F7', // 紫色
// '#17B3A3', // 蓝绿色
// '#667AFA', // 靛青色
// '#997B71', // 棕色
// '#757575', // 灰色
// '#EB6709', // 橙色
// '#F74584', // 粉红色
// '#FCB900', // 黄色
// '#FF4C52' // 红色
],
}
......@@ -48,9 +48,13 @@ if (process.env.NODE_ENV !== "production") {
}
// 全局过滤器
Vue.filter('priceFilter', function(value) {
return value && (typeof value === 'string' || typeof value === 'number') ? Number(value) / 100 : ''
})
Vue.filter("priceFilter", function(value, dec = 2, div) {
return value && (typeof value === "string" || typeof value === "number")
? div
? (Number(value) / 100).toFixed(dec)
: Number(value).toFixed(dec)
: 0;
});
// 挂载全局
Vue.prototype.$http = httpRequest; // ajax请求方法
......
......@@ -402,7 +402,7 @@ router.beforeEach((to, from, next) => {
"color:blue"
);
// router.push({name: 'login'})
// window.location.href = store.state.domainURL + 'shoplist';
window.location.href = store.state.domainURL + 'shoplist';
});
} else if (
router.options.isAddDynamicMenuRoutes ||
......@@ -440,7 +440,7 @@ router.beforeEach((to, from, next) => {
"color:blue"
);
// router.push({name: 'login'})
// window.location.href = store.state.domainURL + 'shoplist';
window.location.href = store.state.domainURL + 'shoplist';
});
}
});
......
......@@ -3,6 +3,10 @@ export default {
state: {
// 页面文档可视高度(随窗口改变大小)
documentClientHeight: 0,
// 页面文档可视width(随窗口改变大小)
documentClientWidth: 0,
// 导航条, 布局风格, defalut(默认) / inverse(反向)
navbarLayoutType: 'default',
// 侧边栏, 布局皮肤, light(浅色) / dark(黑色)
......@@ -22,6 +26,9 @@ export default {
updateDocumentClientHeight (state, height) {
state.documentClientHeight = height
},
updateDocumentClientWidth (state, width) {
state.documentClientWidth = width
},
updateNavbarLayoutType (state, type) {
state.navbarLayoutType = type
},
......
......@@ -8,7 +8,7 @@ const cookie_pre = config.extraData.cookie.pre
export function getMallToken() {
let token =
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6IiJ9.eyJpc3MiOiIiLCJhdWQiOiIiLCJqdGkiOiIiLCJpYXQiOjE2ODQzMjEyNjgsIm5iZiI6MTY4NDMyMTI2OCwiZXhwIjoxNjg0OTI2MDY4LCJ0b2tlbiI6ImZkNjg2MGE4OTkwNTA4N2MwYjc4NzYxZWJmYzNiNDA3IiwiYnRva2VuIjoiZmQ2ODYwYTg5OTA1MDg3YzBiNzg3NjFlYmZjM2I0MDciLCJyb2xlIjoiYnVzaW5lc3MiLCJiaWQiOiIzMiIsIm5hbWUiOiIxNTEwMDAwMDAwMCIsInBob25lIjoiMTUxMDAwMDAwMDAiLCJzb3VyY2UiOiJwYyIsImluZHVzdHJ5X2lkIjoiMSIsImluZHVzdHJ5X2FsaWFzIjoic3RvcmUiLCJpbmR1c3RyeV9sZXZlbF9pZCI6IjIwMCIsImluZHVzdHJ5X2xldmVsX2FsaWFzIjoia3VhaWRpIiwic2hvcF9pZCI6IjE2IiwibXRva2VuIjoiZGE4MGJmZDk3NDA3MmMyNGJiMWQ1OWRlMDc3YmFkYzYiLCJ0eXBlIjoic3RvcmUiLCJ0aGlyZF9hcHBpZCI6IiIsImN1cnJlbnRfYnRva2VuIjoiZmQ2ODYwYTg5OTA1MDg3YzBiNzg3NjFlYmZjM2I0MDciLCJhY2NvdW50X3R5cGUiOiIxIiwiYWNjb3VudF9yb2xlcyI6WyJtYXN0ZXIiXSwic3dpdGNoX3RpbWUiOjE2ODQzMjE1NzB9.HdfzIIenGOOkbu2mGM3WQrvr-vr9lRJMPYnnckyBC2Y";
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6IiJ9.eyJpc3MiOiIiLCJhdWQiOiIiLCJqdGkiOiIiLCJpYXQiOjE2ODUzMzA3MjcsIm5iZiI6MTY4NTMzMDcyNywiZXhwIjoxNjg1OTM1NTI3LCJ0b2tlbiI6ImI0M2I3OWMzYTdlMTE5Y2ZmOTYyYmQwY2Y0MTk1YTRmIiwiYnRva2VuIjoiYjQzYjc5YzNhN2UxMTljZmY5NjJiZDBjZjQxOTVhNGYiLCJyb2xlIjoiYnVzaW5lc3MiLCJiaWQiOiIxIiwibmFtZSI6IjE4NzEwODQ3MzA4IiwicGhvbmUiOiIxODcxMDg0NzMwOCIsInNvdXJjZSI6InBjIiwiaW5kdXN0cnlfaWQiOiIxIiwiaW5kdXN0cnlfYWxpYXMiOiJzdG9yZSIsImluZHVzdHJ5X2xldmVsX2lkIjoiMiIsImluZHVzdHJ5X2xldmVsX2FsaWFzIjoiYWR2YW5jZWQiLCJzaG9wX2lkIjoiMSIsIm10b2tlbiI6IjkyM2YyNjlmNTdmZGJhZWU4ZTFhMjA3ZjlmMWYyYThkIiwidHlwZSI6IiIsInRoaXJkX2FwcGlkIjoiIiwiY3VycmVudF9idG9rZW4iOiJiNDNiNzljM2E3ZTExOWNmZjk2MmJkMGNmNDE5NWE0ZiIsImFjY291bnRfdHlwZSI6IjEiLCJhY2NvdW50X3JvbGVzIjpbIm1hc3RlciJdLCJzd2l0Y2hfdGltZSI6MTY4NTMzMTAyOX0.sIu14c9lg_xop2brRmRcvNyFsxQ-JXXIV5Loq1k88LM";
if (process.env.NODE_ENV === "development") {
return token;
} else return getCookie("token");
......@@ -32,7 +32,8 @@ export function getMallInfo() {
export function setCookie(cookie) {
if (cookie == "token") {
Vue.cookie.set(
cookie_pre + "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6IiJ9.eyJpc3MiOiIiLCJhdWQiOiIiLCJqdGkiOiIiLCJpYXQiOjE2ODM4NjI3MzIsIm5iZiI6MTY4Mzg2MjczMiwiZXhwIjoxNjg0NDY3NTMyLCJ0b2tlbiI6ImM3MWY0MjZjMTEzMjYyMjA0NzI3ZGNhZGNhNmU3NzM2IiwiYnRva2VuIjoiYzcxZjQyNmMxMTMyNjIyMDQ3MjdkY2FkY2E2ZTc3MzYiLCJyb2xlIjoiYnVzaW5lc3MiLCJiaWQiOiIyMyIsIm5hbWUiOiIxOTYwMDAwMDAwMCIsInBob25lIjoiMTk2MDAwMDAwMDAiLCJzb3VyY2UiOiJwYyIsImluZHVzdHJ5X2lkIjoiMSIsImluZHVzdHJ5X2FsaWFzIjoic3RvcmUiLCJpbmR1c3RyeV9sZXZlbF9pZCI6IjIwMCIsImluZHVzdHJ5X2xldmVsX2FsaWFzIjoia3VhaWRpIiwic2hvcF9pZCI6IjciLCJtdG9rZW4iOiIwYWI4NDQyMTgxZTdhZWM5OWY0NmIzYjg4ZTI2ZjdiNyIsInR5cGUiOiJzdG9yZSIsInRoaXJkX2FwcGlkIjoiIiwiY3VycmVudF9idG9rZW4iOiJjNzFmNDI2YzExMzI2MjIwNDcyN2RjYWRjYTZlNzczNiIsImFjY291bnRfdHlwZSI6IjEiLCJhY2NvdW50X3JvbGVzIjpbIm1hc3RlciJdLCJzd2l0Y2hfdGltZSI6MTY4Mzg2MzEyM30.2NMTgbZMsd2p_LiReRSv3nqx9yDBkbfv3AlxaxjyyzE"
cookie_pre +
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6IiJ9.eyJpc3MiOiIiLCJhdWQiOiIiLCJqdGkiOiIiLCJpYXQiOjE2ODM4NjI3MzIsIm5iZiI6MTY4Mzg2MjczMiwiZXhwIjoxNjg0NDY3NTMyLCJ0b2tlbiI6ImM3MWY0MjZjMTEzMjYyMjA0NzI3ZGNhZGNhNmU3NzM2IiwiYnRva2VuIjoiYzcxZjQyNmMxMTMyNjIyMDQ3MjdkY2FkY2E2ZTc3MzYiLCJyb2xlIjoiYnVzaW5lc3MiLCJiaWQiOiIyMyIsIm5hbWUiOiIxOTYwMDAwMDAwMCIsInBob25lIjoiMTk2MDAwMDAwMDAiLCJzb3VyY2UiOiJwYyIsImluZHVzdHJ5X2lkIjoiMSIsImluZHVzdHJ5X2FsaWFzIjoic3RvcmUiLCJpbmR1c3RyeV9sZXZlbF9pZCI6IjIwMCIsImluZHVzdHJ5X2xldmVsX2FsaWFzIjoia3VhaWRpIiwic2hvcF9pZCI6IjciLCJtdG9rZW4iOiIwYWI4NDQyMTgxZTdhZWM5OWY0NmIzYjg4ZTI2ZjdiNyIsInR5cGUiOiJzdG9yZSIsInRoaXJkX2FwcGlkIjoiIiwiY3VycmVudF9idG9rZW4iOiJjNzFmNDI2YzExMzI2MjIwNDcyN2RjYWRjYTZlNzczNiIsImFjY291bnRfdHlwZSI6IjEiLCJhY2NvdW50X3JvbGVzIjpbIm1hc3RlciJdLCJzd2l0Y2hfdGltZSI6MTY4Mzg2MzEyM30.2NMTgbZMsd2p_LiReRSv3nqx9yDBkbfv3AlxaxjyyzE"
);
} else {
Vue.cookie.set(cookie);
......
......@@ -46,7 +46,7 @@ http.interceptors.response.use(
onClose: () => {
clearCookie();
sessionStorage.clear();
// window.location.href = store.state.domainURL + 'shoplist';
window.location.href = store.state.domainURL + 'shoplist';
}
});
// router.push({ name: 'login' })
......
import elTheme from "@/element-ui-theme/index.js";
export function changeTheme(themeName) {
console.log('----当前主题色----', themeName)
sessionStorage.setItem("theme", themeName);
let bodyEl = document.getElementsByTagName("body")[0];
bodyEl.className = "theme_" + themeName.split('#')[1]; //改成相应类名
bodyEl.style.setProperty("--primary-color", themeName);
console.log("----当前主题色----", themeName);
try {
sessionStorage.setItem("theme", JSON.stringify(themeName));
let bodyEl = document.getElementsByTagName("body")[0];
let color = themeName.color || ''
let colorRgb = themeName.colorRgb || ''
if(color) {
bodyEl.className = "theme_" + color.split("#")[1]; //改成相应类名
bodyEl.style.setProperty("--primary-color", color);
bodyEl.style.setProperty("--primary-color-rgb", colorRgb);
}
} catch (error) {
console.log(error);
}
}
export function initTheme() {
let theme = sessionStorage.getItem("theme");
if (theme) {
changeTheme(theme);
} else {
// 默认颜色
changeTheme(elTheme.list[0]);
sessionStorage.removeItem('theme')
try {
let theme = JSON.parse(sessionStorage.getItem("theme"));
if (theme) {
changeTheme(theme);
} else {
// 默认颜色
changeTheme(elTheme.list[0]);
}
} catch (error) {
console.log(error);
}
}
<template>
<div>
<search-form :labelWidth="'100px'" :searchForm="formItems" :searchData="searchData"
@search="serachHandle"></search-form>
<search-form :labelWidth="'100px'" :searchForm="formItems" :searchData="searchData" @search="serachHandle">
<template slot="searchFormOptions">
<el-button size="mini" type="primary" :disabled="!isAuth('couponissue:add')" @click="amend()">添加
</el-button>
</template>
</search-form>
<el-table :key="activeName" v-loading="tableDataLoading" :data="tableData.list">
<!-- ele 暂无数据插槽 -->
<template slot="empty">
......@@ -65,7 +69,7 @@
<el-input v-model="form.couponIssueName" style="width:65%;" placeholder="请输入券包名称"></el-input>
</el-form-item>
<el-form-item label="券包图片:" :label-width="formLabelWidth">
<div
<!-- <div
style=" width:148px;height:148px;background-color: #fbfdff; border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;display: inline-block;">
<el-upload class="avatar-uploader" v-model="form.couponIssueImage"
action="https://admin.sj088.cn/sqx_fast/alioss/upload" :show-file-list="false"
......@@ -74,10 +78,11 @@
style="width: 148px;height: 148px;" />
<i v-else class="el-icon-plus avatar-uploader-icon" style="font-size: 28px;color: #8c939d"></i>
</el-upload>
</div>
</div> -->
<upload-image v-model="form.couponIssueImage" @input="handleAvatarSuccess2"></upload-image>
</el-form-item>
<el-form-item label="主页图:" :label-width="formLabelWidth" v-if="classify == 2">
<div
<!-- <div
style=" width:148px;height:148px;background-color: #fbfdff; border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;display: inline-block;">
<el-upload class="avatar-uploader" v-model="form.couponContentImage"
action="https://admin.sj088.cn/sqx_fast/alioss/upload" :show-file-list="false"
......@@ -86,7 +91,8 @@
style="width: 148px;height: 148px;" />
<i v-else class="el-icon-plus avatar-uploader-icon" style="font-size: 28px;color: #8c939d"></i>
</el-upload>
</div>
</div> -->
<upload-image v-model="form.couponContentImage" @input="handleUploadSuccess"></upload-image>
<!-- <div class="imgs" v-for="(item,index) in couponContentImage" :key="index">
<img width="100%" class="images" height="100%" :src="item" alt="">
<span class="dels">
......@@ -137,7 +143,7 @@
</el-form-item>
<el-form-item label="购买须知:" :label-width="formLabelWidth" v-if="classify == 2">
<quill-editor ref="myTextEditor" v-model="form.payNotice" :options="quillOption"
style="padding-bottom: 50px;height: 300px;width: 72%;display: inline-table;">
style="width: 65%;">
</quill-editor>
</el-form-item>
</el-form>
......@@ -204,6 +210,7 @@
<script>
import SearchForm from '@/components/SearchForm'
import quillConfig from '../../locality/quill-config'
import UploadImage from '@/components/UploadImage'
export default {
props: {
activeName: {
......@@ -211,11 +218,11 @@ export default {
default: 'huodong'
},
},
components: { SearchForm },
components: { SearchForm, UploadImage },
watch: {
activeName: {
handler(val) {
if(val == 'huodong') {
if (val == 'huodong') {
this.dataSelect()
}
},
......@@ -512,7 +519,7 @@ export default {
}
}
if (this.titles == '添加') {
if (this.titles == '新增') {
var url = 'couponIssue/insertCouponIssue'
} else {
var url = 'couponIssue/updateCouponIssue'
......
......@@ -58,10 +58,19 @@ export default {
type: String,
default: 'kami'
},
isShow: {
type: Boolean,
default: false
}
},
components: { SearchForm },
watch: {
couponCardTypeId(val) {
// couponCardTypeId(val) {
// if (val) {
// this.serachHandle()
// }
// },
isShow(val) {
if (val) {
this.serachHandle()
}
......
<template>
<div>
<search-form :labelWidth="'100px'" :searchForm="formItems" :searchData="searchData"
@search="serachHandle"></search-form>
<search-form :labelWidth="'100px'" :searchForm="formItems" :searchData="searchData" @search="serachHandle">
<template slot="searchFormOptions">
<el-button size="mini" type="primary" :disabled="!isAuth('couponissue:add')" @click="amend()">添加
</el-button>
</template>
</search-form>
<el-table :key="activeName" v-loading="tableDataLoading" :data="tableData.list">
<!-- ele 暂无数据插槽 -->
<template slot="empty">
......@@ -59,13 +63,13 @@
</el-pagination>
</div>
<!-- 修改 -->
<el-dialog :title="titles" :visible.sync="dialogFormVisible" center width="80%">
<el-dialog :title="titles" :visible.sync="dialogFormVisible" center width="70%">
<el-form :model="form">
<el-form-item label="券包名称:" :label-width="formLabelWidth">
<el-input v-model="form.couponIssueName" style="width:65%;" placeholder="请输入券包名称"></el-input>
</el-form-item>
<el-form-item label="券包图片:" :label-width="formLabelWidth">
<div
<!-- <div
style=" width:148px;height:148px;background-color: #fbfdff; border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;display: inline-block;">
<el-upload class="avatar-uploader" v-model="form.couponIssueImage"
action="https://admin.sj088.cn/sqx_fast/alioss/upload" :show-file-list="false"
......@@ -74,10 +78,11 @@
style="width: 148px;height: 148px;" />
<i v-else class="el-icon-plus avatar-uploader-icon" style="font-size: 28px;color: #8c939d"></i>
</el-upload>
</div>
</div> -->
<upload-image v-model="form.couponIssueImage" @input="handleAvatarSuccess2"></upload-image>
</el-form-item>
<el-form-item label="主页图:" :label-width="formLabelWidth" v-if="classify == 2">
<div
<!-- <div
style=" width:148px;height:148px;background-color: #fbfdff; border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;display: inline-block;">
<el-upload class="avatar-uploader" v-model="form.couponContentImage"
action="https://admin.sj088.cn/sqx_fast/alioss/upload" :show-file-list="false"
......@@ -86,7 +91,8 @@
style="width: 148px;height: 148px;" />
<i v-else class="el-icon-plus avatar-uploader-icon" style="font-size: 28px;color: #8c939d"></i>
</el-upload>
</div>
</div> -->
<upload-image v-model="form.couponContentImage" @input="handleUploadSuccess"></upload-image>
<!-- <div class="imgs" v-for="(item,index) in couponContentImage" :key="index">
<img width="100%" class="images" height="100%" :src="item" alt="">
<span class="dels">
......@@ -137,7 +143,7 @@
</el-form-item>
<el-form-item label="购买须知:" :label-width="formLabelWidth" v-if="classify == 2">
<quill-editor ref="myTextEditor" v-model="form.payNotice" :options="quillOption"
style="padding-bottom: 50px;height: 300px;width: 72%;display: inline-table;">
style="width: 65%;">
</quill-editor>
</el-form-item>
</el-form>
......@@ -203,7 +209,12 @@
<script>
import SearchForm from '@/components/SearchForm'
import quillConfig from '../../locality/quill-config'
import { quillEditor } from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import quillConfig from '@/views/locality/quill-config.js'
import UploadImage from '@/components/UploadImage'
export default {
props: {
activeName: {
......@@ -211,7 +222,7 @@ export default {
default: 'shoumai'
},
},
components: { SearchForm },
components: { quillEditor, SearchForm, UploadImage },
watch: {
activeName: {
handler(val) {
......@@ -536,7 +547,7 @@ export default {
}
}
if (this.titles == '添加') {
if (this.titles == '新增') {
var url = 'couponIssue/insertCouponIssue'
} else {
var url = 'couponIssue/updateCouponIssue'
......
......@@ -166,7 +166,7 @@
<!-- 卡密列表 -->
<el-dialog title="卡密列表" :visible.sync="dialogFormVisibleKm" center width="70%">
<coupon-card-seal ref="couponCardSealRef" :activeName="activeName" :couponCardTypeId="couponCardTypeId"
:isSlot="true"></coupon-card-seal>
:isSlot="true" :isShow="dialogFormVisibleKm"></coupon-card-seal>
</el-dialog>
</el-tabs>
</div>
......
<template>
<div>
<sys-set-table :key="tabName" :tabName="tabName" :loading="tableDataLoading" :data="tableData" @refresh="refresh">
<sys-set-table :key="tabName" :tabName="'yhq'" :loading="tableDataLoading" :data="tableData" settingType="platform" @refresh="refresh">
<template #content slot-scope="slotProps">
<div>
<span v-for="(item, index) in slotProps.scopeRow.couponList" :key="index">{{ (item && item.couponName) || '' }};</span>
......
......@@ -80,15 +80,15 @@
</div>
<div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">优惠券图片:</span>
<div style="display: inline-block; vertical-align: top;">
<!-- <el-upload class="avatar-uploader" v-model="couponPicture"
<!-- <div style="display: inline-block; vertical-align: top;">
<el-upload class="avatar-uploader" v-model="couponPicture"
action="https://admin.sj088.cn/sqx_fast/alioss/upload" :show-file-list="false"
:on-success="handleAvatarSuccess1">
<img v-if="couponPicture" :src="couponPicture" class="avatar" style="width: 148px;height: 148px;" />
<i v-else class="el-icon-plus avatar-uploader-icon" style="font-size: 28px;color: #8c939d"></i>
</el-upload> -->
<upload-image v-model="couponPicture" @input="handleAvatarSuccess1"></upload-image>
</div>
</el-upload>
</div> -->
<upload-image v-model="couponPicture" @input="handleAvatarSuccess1"></upload-image>
</div>
<div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">优惠券面值:</span>
......@@ -128,16 +128,14 @@
<el-input v-model="form.couponName" style="width:65%;" placeholder="请输入优惠券名称"></el-input>
</el-form-item>
<el-form-item label="优惠券图片:" :label-width="formLabelWidth">
<div>
<!-- <el-upload class="avatar-uploader" v-model="form.couponPicture"
<!-- <el-upload class="avatar-uploader" v-model="form.couponPicture"
action="https://admin.sj088.cn/sqx_fast/alioss/upload" :show-file-list="false"
:on-success="handleAvatarSuccess2">
<img v-if="form.couponPicture" :src="form.couponPicture" class="avatar"
style="width: 148px;height: 148px;" />
<i v-else class="el-icon-plus avatar-uploader-icon" style="font-size: 28px;color: #8c939d"></i>
</el-upload> -->
<upload-image v-model="form.couponPicture" @input="handleAvatarSuccess2"></upload-image>
</div>
<upload-image v-model="form.couponPicture" @input="handleAvatarSuccess2"></upload-image>
</el-form-item>
......@@ -303,8 +301,8 @@
</div>
<el-button style="margin-left:15px;" :disabled="userIdList.length <= 0" size="mini" type="primary"
icon="document" @click="closes2()">确定</el-button>
<el-table ref="multipleTableRef" v-loading="tableDataLoading1" @selection-change="changeFun1" :data="userData.list"
:row-key="(row) => { return row.userId }">
<el-table ref="multipleTableRef" v-loading="tableDataLoading1" @selection-change="changeFun1"
:data="userData.list" :row-key="(row) => { return row.userId }">
<el-table-column :reserve-selection="true" type="selection" fixed>
</el-table-column>
<el-table-column fixed prop="userId" label="id" width="80">
......@@ -906,15 +904,7 @@ export default {
}
})
this.dialogFormVisible0 = false
} else {
this.$message({
message: data.msg,
type: 'warning',
duration: 1500,
onClose: () => { }
})
}
})
},
......
......@@ -40,17 +40,17 @@
</div>
<div class="userInfoContent">
<div class="userInfoContentItem">
<span class="uItemTitle">{{ Number(dataInfos.balance).toFixed(2) }}</span>
<span class="uItemTitle">{{ dataInfos.balance | priceFilter }}</span>
<span class="uItemDesc">账户余额</span>
</div>
<div class="divider"></div>
<div class="userInfoContentItem">
<span class="uItemTitle">{{ Number(dataInfos.moneyUsed).toFixed(2) }}</span>
<span class="uItemTitle">{{ dataInfos.moneyUsed | priceFilter }}</span>
<span class="uItemDesc">累计消耗金额</span>
</div>
<div class="divider"></div>
<div class="userInfoContentItem">
<span class="uItemTitle">{{ Number(dataInfos.moneyCharge).toFixed(2) }}</span>
<span class="uItemTitle">{{ dataInfos.moneyCharge | priceFilter }}</span>
<span class="uItemDesc">累计充值金额</span>
</div>
</div>
......@@ -67,7 +67,7 @@
<el-row :gutter="10">
<el-col :span="8" v-for="(item, index) in feature" :key="index">
<el-card @click.native="() => gnClick(index)" shadow="hover"
:body-style="{ padding: '24px', cursor: 'pointer', textAlign: 'center' }"
:body-style="{ wdith: '100px', height: '69px', lineHeight: '69px', padding: '0 5px', cursor: 'pointer', textAlign: 'center' }"
style="border-radius: 0; margin-bottom: 8px;">
{{ item.title }}
</el-card>
......@@ -143,25 +143,29 @@
</el-row>
<el-row>
<el-col :span="24" style="display: flex;justify-content: space-between;">
<el-card shadow="never" class="card-common">
<el-card shadow="never" class="card-common order_error_count"
:body-style="{ padding: 0 }">
<div class="data-title">超重总数</div>
<div class="data-content">{{ dataInfos.errorSum }}</div>
</el-card>
<el-card shadow="never" class="card-common">
<el-card shadow="never" class="card-common order_error_count"
:body-style="{ padding: 0 }">
<div class="data-title">
<span class="badge—common primary"></span>
已处理
</div>
<div class="data-content">{{ dataInfos.errorHandled }}</div>
</el-card>
<el-card shadow="never" class="card-common">
<el-card shadow="never" class="card-common order_error_count"
:body-style="{ padding: 0 }">
<div class="data-title">
<span class="badge—common warning"></span>
处理中
</div>
<div class="data-content">{{ dataInfos.errorHandling }}</div>
</el-card>
<el-card shadow="never" class="card-common">
<el-card shadow="never" class="card-common order_error_count"
:body-style="{ padding: 0 }">
<div class="data-title">
<span class="badge—common danger"></span>
未处理
......@@ -184,7 +188,7 @@
<div class="grid-content">
<el-card shadow="never" class="card-common">
<div slot="header" class="card_header">
<span class="card_title">告通知</span>
<span class="card_title">告通知</span>
<el-button style="height: auto" type="text" @click="toNotice"
size="small">更多</el-button>
</div>
......@@ -217,9 +221,10 @@
</div>
<div class="adv_container">
<el-carousel :interval="4000" height="307px" v-if="bannerList && bannerList.length">
<el-carousel-item style="display: flex; justify-content: center; align-items: center;"
<el-carousel-item
style="display: flex; justify-content: center; align-items: center;"
v-for="(item, index) in bannerList" :key="index">
<el-image :src="item.picUrl"></el-image>
<el-image style="cursor: pointer;" :src="item.pic_url" @click="advJump(item.event_source.url)"></el-image>
</el-carousel-item>
</el-carousel>
<div class="not-list" v-else>暂无广告</div>
......@@ -321,6 +326,10 @@ export default {
this.getAdvList();
},
methods: {
// 广告点击跳转
advJump(url) {
if (url) window.open(url)
},
// 功能导航点击事件
gnClick(index) {
switch (index) {
......@@ -340,10 +349,11 @@ export default {
this.$router.push({ name: 'dataBase' })
break;
case 5:
this.$notify({
message: '该功能暂未开放',
type: 'warning'
});
// this.$notify({
// message: '该功能暂未开放',
// type: 'warning'
// });
window.open('https://support.qq.com/product/594756')
// this.$router.push({ name: 'message' })
break;
}
......@@ -389,7 +399,7 @@ export default {
// 通知列表
noticeList() {
let params = {
status: 1,
status: 0,
page: 1,
page_size: 10
}
......@@ -531,9 +541,9 @@ export default {
preChargeSumDetailAPI().then(response => {
let res = response.data;
if (res.error == 0 && res.data) {
this.dataInfos.moneyCharge = res.data.moneyCharge ? res.data.moneyCharge / 100 : 0
this.dataInfos.balance = res.data.balance ? res.data.balance / 100 : 0
this.dataInfos.moneyUsed = res.data.moneyUsed ? res.data.moneyUsed / 100 : 0
this.dataInfos.moneyCharge = res.data.moneyCharge
this.dataInfos.balance = res.data.balance
this.dataInfos.moneyUsed = res.data.moneyUsed
this.dataInfos.updatedAt = res.data.updatedAt || ''
}
}).finally(() => {
......@@ -543,10 +553,11 @@ export default {
// 广告位
getAdvList() {
let params = {
"category" : 1
"category": 1
}
getAdvListAPI(params).then(({data: res}) => {
if(res.error == 0 && res.data) {
getAdvListAPI(params).then((res) => {
console.log(res)
if (res.error == 0 && res.data) {
this.bannerList = res.data.info || []
}
})
......@@ -659,6 +670,17 @@ export default {
font-size: 24px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
.order_error_count {
flex: 1 1 0%;
padding: 20px 2px;
display: flex;
align-items: center;
justify-content: center;
// .data-content {
// text-align: center;
// }
}
}
// 通知
......@@ -672,6 +694,7 @@ export default {
.message_list {
.message_content {
border-bottom: 1px solid rgba(0, 0, 0, .06);
padding-top: 0.5em;
cursor: pointer;
.message_desc {
......@@ -686,6 +709,7 @@ export default {
}
}
}
.not-list {
position: absolute;
text-align: center;
......@@ -694,10 +718,12 @@ export default {
transform: translate(-50%, -50%);
}
}
.adv_container {
height: 307px;
overflow-y: auto;
position: relative;
.not-list {
position: absolute;
text-align: center;
......@@ -706,5 +732,4 @@ export default {
transform: translate(-50%, -50%);
}
}
}
</style>
}</style>
......@@ -73,7 +73,7 @@ export default {
getTableData() {
this.tableDataLoading = true
let params = {
status: 1,
status: 0,
page: this.page,
page_size: this.pageSize
}
......
......@@ -8,20 +8,29 @@
<template slot="empty">
<TableEmpty />
</template>
<el-table-column prop="amount" label="金额" :formatter="(row, column) => tableFormatter(row, column, null, '元')">
<el-table-column prop="orderNo" label="订单号">
<template slot-scope="scope">
<span>{{ scope.row.orderNo }}</span>
<span v-if="scope.row.orderNo" @click="copys(scope.row.orderNo)" class="copy_icon">
<i class="el-icon-document-copy"></i>
</span>
</template>
</el-table-column>
<el-table-column prop="beforeAmount" label="变化前" :formatter="(row, column) => tableFormatter(row, column, null, '元')">
<el-table-column prop="amount" label="金额"
:formatter="(row, column) => tableFormatter(row, column, null, '元')">
</el-table-column>
<el-table-column prop="afterAmount" label="变化后" :formatter="(row, column) => tableFormatter(row, column, null, '元')">
<el-table-column prop="beforeAmount" label="变化前"
:formatter="(row, column) => tableFormatter(row, column, null, '元')">
</el-table-column>
<el-table-column prop="afterAmount" label="变化后"
:formatter="(row, column) => tableFormatter(row, column, null, '元')">
</el-table-column>
<el-table-column prop="type" label="类型">
<template slot-scope="scope">
<span v-if="scope.row.type == 0"><span class="badge—common primary"></span>订单支付</span>
<span v-if="scope.row.type == 1"><span class="badge—common"></span>订单退款</span>
<span v-if="scope.row.type == 1"><span class="badge—common primary"></span>订单支付</span>
<span v-if="scope.row.type == 0"><span class="badge—common"></span>订单退款</span>
</template>
</el-table-column>
<el-table-column prop="orderNo" label="订单号">
</el-table-column>
<el-table-column prop="remark" label="备注">
</el-table-column>
<el-table-column prop="createdAt" label="创建时间">
......
<template>
<div class="billDayCount-view">
<div class="news-tips">
<!-- <div class="news-tips">
<div class="tips-box">
<p class="info">
对账单数据自2019年4月12日起更新;
......@@ -21,7 +21,7 @@
净收入为收入总计金额-支出总计金额(退款支出及交易手续费支出)。
</p>
</div>
</div>
</div> -->
<div class="container">
<el-tabs v-model="activeName" @tab-click="getData()" style="border-bottom: 1px solid #e8e8e8">
......@@ -50,34 +50,34 @@
<el-table :data="tableData" v-loading="tableDataLoading">
<el-table-column prop="time" label="日期" fixed>
</el-table-column>
<el-table-column prop="kd_order_pay" label="快递订单金额" :formatter="(row, column) => tableFormatter(row, column, null, '元')">
<el-table-column prop="kd_order_pay" label="快递订单金额(元)">
<template slot-scope="scope">
{{ (scope.row.kd_order_pay / 100).toFixed(2) }}
{{ scope.row.kd_order_pay | priceFilter }}
</template>
</el-table-column>
<el-table-column prop="coupon_order_pay" label="购买优惠券">
</el-table-column>
<el-table-column prop="vip_order_pay" label="购买会员">
</el-table-column>
<el-table-column prop="kd_add_order_pay" label="订单补缴费用">
<el-table-column prop="kd_add_order_pay" label="订单补缴费用(元)">
</el-table-column>
<el-table-column prop="refund_amount" label="退款支出" :formatter="(row, column) => tableFormatter(row, column, null, '元')">
<el-table-column prop="refund_amount" label="退款支出(元)">
<template slot-scope="scope">
{{ (scope.row.refund_amount / 100).toFixed(2) }}
{{ scope.row.refund_amount | priceFilter }}
</template>
</el-table-column>
<el-table-column prop="fee" label="交易手续费支出" :formatter="(row, column) => tableFormatter(row, column, null, '元')">
<el-table-column prop="fee" label="交易手续费支出(元)">
<template slot-scope="scope">
{{ (scope.row.fee / 100).toFixed(2) }}
{{ scope.row.fee | priceFilter }}
</template>
</el-table-column>
<el-table-column prop="income_count" label="收入条数">
</el-table-column>
<el-table-column prop="cost_count" label="退款条数">
</el-table-column>
<el-table-column prop="income" label="总计到账金额" :formatter="(row, column) => tableFormatter(row, column, null, '元')">
<el-table-column prop="income" label="总计到账金额(元)">
<template slot-scope="scope">
{{ (scope.row.income / 100).toFixed(2) }}
{{ scope.row.income | priceFilter }}
</template>
</el-table-column>
</el-table>
......@@ -300,5 +300,4 @@ export default {
.el-tab-pane,
.el-button {
/*margin-top:20px;*/
}
</style>
}</style>
......@@ -48,8 +48,7 @@
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-sizes="[5, 10, 15]"
:page-size="size" :current-page="page" layout="total,sizes, prev, pager, next,jumper"
:total="totalnum">
:page-size="size" :current-page="page" layout="total,sizes, prev, pager, next,jumper" :total="totalnum">
</el-pagination>
</div>
<rechargePop ref="rechargePopRef" :inputMoney="money" :tradeNo="tradeNo" @success="rechargeSuccess"></rechargePop>
......
......@@ -4,17 +4,17 @@
<el-tab-pane label="充值预存款" name="first">
<div class="precharge_box">
<div class="header-title">
累计充值(元)
可用余额(元)
</div>
<div class="detail">
<span class="num">{{ Number(tatalRechargeNumber).toFixed(2) }}</span>
<span class="num">{{ balanceNumber | priceFilter(2) }}</span>
<el-button type="primary" size="small" @click="toPayClick">充值
</el-button>
<el-button type="text" size="small" @click="tabClick('two')">充值记录
</el-button>
</div>
<!-- 充值弹窗 -->
<payUp ref="payUpRef" />
<payUp ref="payUpRef" @success="paySucccess" />
</div>
</el-tab-pane>
<el-tab-pane label="充值订单列表" name="two" lazy>
......@@ -39,6 +39,7 @@ export default {
return {
activeName: 'first',
tatalRechargeNumber: 0, //累计充值
balanceNumber: 0, //账户余额
}
},
......@@ -57,11 +58,16 @@ export default {
toPayClick() {
this.$refs.payUpRef.openDialog();
},
// 充值成功回调
paySucccess() {
this.gettotalRecharge();
},
// 获取充值金额
gettotalRecharge() {
preChargeSumDetailAPI().then(res => {
preChargeSumDetailAPI().then(({data: res}) => {
if (res.error == 0 && res.data) {
this.tatalRechargeNumber = res.data.moneyCharge ? (res.data.moneyCharge / 100) : 0;
this.tatalRechargeNumber = res.data.moneyCharge;
this.balanceNumber = res.data.balance;
}
});
}
......
<template>
<main class="site-content" :class="{ 'site-content--tabs': $route.meta.isTab }">
<!-- 主入口标签页 s -->
<el-tabs v-if="$route.meta.isTab" v-model="mainTabsActiveName" type="border-card" @tab-click="selectedTabHandle"
<el-tabs v-if="$route.meta.isTab" v-model="mainTabsActiveName" type="card" @tab-click="selectedTabHandle"
@tab-remove="removeTabHandle" class="navigation-tabs">
<!-- <el-dropdown class="site-tabs__tools" :show-timeout="0" trigger="click">
<i class="el-icon-arrow-down el-icon--right"></i>
......@@ -12,12 +12,14 @@
<el-dropdown-item @click.native="refresh()">刷新当前标签页</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown> -->
<ul v-show="tabMenuVisible" :style="{ left: tabMenuLeft + 'px', top: tabMenuTop + 'px' }" class="tabMenu">
<li @click="tabsCloseCurrentHandle" v-if="currentTabName != 'home'">关闭当前标签页</li>
<li @click="tabsCloseOtherHandle">关闭其它标签页</li>
<li @click="tabsCloseAllHandle">关闭全部标签页</li>
<!-- <li @click="refresh()">刷新当前标签页</li> -->
</ul>
<transition name="fade">
<ul v-show="tabMenuVisible" :style="{ left: tabMenuLeft + 'px', top: tabMenuTop + 'px' }" class="tabMenu">
<li @click="tabsCloseCurrentHandle" v-if="currentTabName != 'home'">关闭当前标签页</li>
<li @click="tabsCloseOtherHandle">关闭其它标签页</li>
<li @click="tabsCloseAllHandle">关闭全部标签页</li>
<!-- <li @click="refresh()">刷新当前标签页</li> -->
</ul>
</transition>
<el-tab-pane v-for="item in mainTabs" :key="item.name" :label="item.title" :name="item.name"
:closable="item.name != 'home'">
<span slot="label" :data-id="item.name">
......@@ -65,12 +67,7 @@ export default {
},
mounted() {
this.$nextTick(() => {
document.querySelector('.navigation-tabs .el-tabs__item').addEventListener('contextmenu', this.openRightMenu)
})
},
beforeDestroy() {
this.$nextTick(() => {
document.querySelector('.navigation-tabs .el-tabs__item').removeEventListener('contextmenu', this.openRightMenu)
document.querySelector('.navigation-tabs .el-tabs__nav').addEventListener('contextmenu', this.openRightMenu)
})
},
watch: {
......@@ -117,13 +114,18 @@ export default {
},
// tabs右键菜单
openRightMenu(e) {
this.closeRightMenu();
if (e.srcElement.id != '' || e.target.getAttribute('data-id')) {
if ((e.srcElement.id != '' || e.target.getAttribute('data-id'))) {
e.preventDefault()
this.currentTabName = e.srcElement.id || e.target.getAttribute('data-id')
let tabName = ''
if (e.srcElement.id) {
tabName = e.srcElement.id.split('tab-').length > 0 ? e.srcElement.id.split('tab-')[1] : e.srcElement.id
} else {
tabName = e.target.getAttribute('data-id')
}
this.currentTabName = tabName
// 右键点击的是tab
this.tabMenuLeft = e.clientX;
this.tabMenuTop = e.clientY + 10;
this.tabMenuTop = e.clientY;
this.tabMenuVisible = true;
}
},
......@@ -201,6 +203,14 @@ export default {
background-color: transparent;
border: none;
box-shadow: none;
/deep/ &>.el-tabs__header {
padding: 5px 24px 0 !important;
.el-tabs__item {
height: 38px;
line-height: 38px;
}
}
}
.not-tab-card {
......@@ -209,11 +219,25 @@ export default {
border: 0;
}
.fade-enter-active,
.fade-leave-active {
transition: opacity .2s;
}
.fade-enter,
.fade-leave-to
/* .fade-leave-active below version 2.1.8 */
{
opacity: 0;
}
.tabMenu {
position: fixed;
top: 0;
left: 0;
z-index: 10;
z-index: 2089;
min-width: 134px;
padding: 6px 0;
margin: 12px 0 5px;
background-color: #fff;
......@@ -236,7 +260,7 @@ export default {
font-size: 14px;
&:hover {
background-color: rgba(var(--primary-color-rgb), .4);
background-color: rgba(var(--primary-color-rgb), .1);
color: var(--primary-color);
}
}
......
......@@ -4,7 +4,8 @@
<template v-if="!loading">
<main-navbar />
<main-sidebar />
<div class="site-content__wrapper" :style="{ 'min-height': documentClientHeight + 'px' }">
<div class="site-content__wrapper"
:style="{ 'min-height': documentClientHeight + 'px' }">
<main-content v-if="!$store.state.common.contentIsNeedRefresh" />
<Setting />
</div>
......@@ -46,8 +47,13 @@ export default {
get() { return this.$store.state.common.documentClientHeight },
set(val) { this.$store.commit('common/updateDocumentClientHeight', val) }
},
documentClientWidth: {
get() { return this.$store.state.common.documentClientWidth },
set(val) { this.$store.commit('common/updateDocumentClientWidth', val) }
},
sidebarFold: {
get() { return this.$store.state.common.sidebarFold }
get() { return this.$store.state.common.sidebarFold },
set(val) { this.$store.commit('common/updateSidebarFold', val) }
},
userId: {
get() { return this.$store.state.user.id },
......@@ -63,6 +69,7 @@ export default {
},
mounted() {
this.resetDocumentClientHeight()
this.resetDocumentClientWidth()
},
methods: {
// 重置窗口可视高度
......@@ -72,6 +79,12 @@ export default {
this.documentClientHeight = document.documentElement['clientHeight']
}
},
resetDocumentClientWidth() {
this.sidebarFold = document.documentElement['clientWidth'] <= 992 ? true : false
window.onresize = () => {
this.sidebarFold = document.documentElement['clientWidth'] <= 992 ? true : false
}
},
// 获取当前管理员信息
getUserInfo() {
this.$http({
......
......@@ -70,11 +70,11 @@ export default {
state: null, //状态
},
formItems: [
{
label: '订单号',
prop: 'trade_no',
type: 'Input',
},
// {
// label: '订单号',
// prop: 'trade_no',
// type: 'Input',
// },
{
label: '套餐',
prop: 'remark',
......
......@@ -3,29 +3,7 @@
<!-- <search-form :searchForm="formItems" :searchData="searchData" @search="serachHandle">
</search-form> -->
<el-card shadow="never" class="card-common">
<el-table v-loading="tableDataLoading" :data="tableData">
<!-- ele 暂无数据插槽 -->
<template slot="empty">
<TableEmpty />
</template>
<!-- <el-table-column fixed prop="type" label="编号" align="center" width="80">
</el-table-column> -->
<el-table-column fixed type="index" label="编号" align="center" width="80">
</el-table-column>
<el-table-column prop="min" label="类型" width="250">
</el-table-column>
<el-table-column prop="value" label="内容">
</el-table-column>
<el-table-column prop="createAt" label="创建时间" width="180">
</el-table-column>
<el-table-column label="操作" prop="id" width="120">
<template slot-scope="scope">
<el-button size="mini" type="primary" :disabled="!isAuth('allocationList:update')"
@click="amend(scope.$index, scope.row)">编辑
</el-button>
</template>
</el-table-column>
</el-table>
<sys-set-table :key="'vip'" :tabName="'vip'" :loading="tableDataLoading" :data="tableData" @refresh="refresh"></sys-set-table>
</el-card>
<!-- 修改弹框 -->
<sysSetDialog ref="sysSetDialogRef" :formInfo="form" @confirm="sysConfirm" />
......@@ -34,11 +12,13 @@
<script>
import SearchForm from '@/components/SearchForm'
import sysSetTable from '@/components/sysSetTable'
import sysSetDialog from '@/components/sysSetDialog'
import moment from 'moment';
export default {
components: {
SearchForm,
sysSetTable,
sysSetDialog
},
data() {
......@@ -92,6 +72,9 @@ export default {
},
methods: {
refresh() {
this.getTableData();
},
// 查询
serachHandle() {
this.page = 1
......
......@@ -16,7 +16,7 @@
</div>
<div class="logistics_bottom">
<div class="price">
<span>{{ packageChecked.price | priceFilter }}元 / {{ packageChecked.amount }}</span>
<span>{{ packageChecked.price | priceFilter(0, true) }}元 / {{ packageChecked.amount }}</span>
</div>
<div class="right">
<el-button class="btn" type="primary" size="mini"
......@@ -42,7 +42,7 @@
{{ item.amount }}
</div>
<div class="checkcard-description">
{{ item.price | priceFilter }}
{{ item.price | priceFilter(2, true) }}
</div>
</div>
</div>
......
......@@ -1645,12 +1645,12 @@ export default {
}
})
} else {
this.$message({
message: data.msg,
type: 'warning',
duration: 1500,
onClose: () => { }
})
// this.$message({
// message: data.msg,
// type: 'warning',
// duration: 1500,
// onClose: () => { }
// })
}
......@@ -1785,12 +1785,12 @@ export default {
}
})
} else {
this.$message({
message: data.msg,
type: 'warning',
duration: 1500,
onClose: () => { }
})
// this.$message({
// message: data.msg,
// type: 'warning',
// duration: 1500,
// onClose: () => { }
// })
}
})
......@@ -1858,12 +1858,12 @@ export default {
}
})
} else {
this.$message({
message: data.msg,
type: 'warning',
duration: 1500,
onClose: () => { }
})
// this.$message({
// message: data.msg,
// type: 'warning',
// duration: 1500,
// onClose: () => { }
// })
}
})
......@@ -1948,12 +1948,12 @@ export default {
}
})
} else {
this.$message({
message: data.msg,
type: 'warning',
duration: 1500,
onClose: () => { }
})
// this.$message({
// message: data.msg,
// type: 'warning',
// duration: 1500,
// onClose: () => { }
// })
}
})
......@@ -1991,12 +1991,12 @@ export default {
}
})
} else {
this.$message({
message: data.msg,
type: 'warning',
duration: 1500,
onClose: () => { }
})
// this.$message({
// message: data.msg,
// type: 'warning',
// duration: 1500,
// onClose: () => { }
// })
}
})
......
<template>
<el-dialog class="pay-up-box" title="账户充值" :visible.sync="dialogVisible">
<el-dialog class="pay-up-box" title="账户充值" :visible.sync="dialogVisible" @close="closeDialog">
<div class="tips-box">
<p class="info">注意事项:</p>
<p class="info">1、每次充值金额不超过10000元;</p>
<p class="info">
2、充值成功后可以通过充值记录查看;</p>
<!-- <p class="info">1、每次充值金额不超过10000元;</p> -->
<p class="info">
1、充值成功后可以通过充值记录查看;</p>
<!-- <p class="info">
3、充值过程中遇到其他问题,联系客服400-6865539。
</p>
</p> -->
</div>
<div class="container-setting">
<el-form label-width="120px" size="small" class="form">
<el-form-item label="账户可用余额:" v-if="payType == 'FUPAY'">
<span class="can-use-money">
{{ balance }}
{{ balance | priceFilter(2) }}
</span>
</el-form-item>
<el-form-item label="累计充值:" v-else>
<!-- <el-form-item label="累计充值:" v-else>
<span class="can-use-money">
{{ Number(tatalRechargeNumber).toFixed(2) }}
{{ tatalRechargeNumber | priceFilter(2) }}
</span>
</el-form-item>
</el-form-item> -->
<el-form-item label="充值金额:">
<el-input class="money-input" v-model="money" placeholder="请输入充值金额"></el-input>
</el-form-item>
......@@ -53,7 +53,7 @@ export default {
dialogVisible: false,
money: '',
trade_no: '', //订单编号
balance: '0.00',
balance: 0,
payType: '',
tatalRechargeNumber: 0
};
......@@ -63,6 +63,11 @@ export default {
openDialog() {
this.dialogVisible = true;
},
// 关闭弹窗
closeDialog() {
this.money = ''
this.dialogVisible = false;
},
//判断金额的正则
checkIsMoney(value, info) {
let reg = /^([1-9]\d{0,5}|0)([.]?|(\.\d{1,2})?)$/;
......@@ -85,15 +90,18 @@ export default {
},
// 获取充值金额
gettotalRecharge() {
preChargeSumDetailAPI().then(res => {
preChargeSumDetailAPI().then(({ data: res }) => {
if (res.error == 0 && res.data) {
this.tatalRechargeNumber = res.data.moneyCharge ? (res.data.moneyCharge / 100) : 0;
this.tatalRechargeNumber = res.data.moneyCharge;
this.balance = res.data.balance;
}
});
},
//充值成功回调
rechargeSuccess() {
this.$emit('success')
this.throttleStatus = false;
this.dialogVisible = false;
}
},
activated() {
......
<template>
<div>
<sys-set-table :key="tabName" :loading="tableDataLoading" :data="tableData" @refresh="refresh"></sys-set-table>
<sys-set-table :key="tabName" :tabName="'kefu'" :loading="tableDataLoading" :data="tableData" settingType="platform" @refresh="refresh"></sys-set-table>
</div>
</template>
......@@ -49,7 +49,7 @@ export default {
}) => {
if (data && data.code === 0) {
this.tableDataLoading = false
let returnData = data.data;
let returnData = data.data || [];
this.tableData = returnData
}
})
......
......@@ -30,7 +30,7 @@
:autosize="{ minRows: 3, maxRows: 3 }"></el-input>
</el-form-item>
<el-form-item size="large">
<el-button type="primary" @click="submit">提交</el-button>
<el-button type="primary" @click="submit" :disabled="!isAuth('sysSetting:update')">提交</el-button>
</el-form-item>
</el-form>
</div>
......
<template>
<div class="sellRatioSetting_wrapper">
<div v-if="loading" v-loading="loading"></div>
<div v-if="false" v-loading="loading"></div>
<el-card v-else shadow="never" class="card-common">
<div slot="header" class="card_header">
<span class="card_title">*注:销售比例信息设置,用于总控成本价基础上进行加价。</span>
......@@ -26,7 +26,7 @@
:min="0"></el-input-number>
</el-form-item>
<el-form-item size="large">
<el-button type="primary" size="small" @click="save(1)">提交</el-button>
<el-button type="primary" size="small" :disabled="!isAuth('sysSetting:update')" @click="save(1)">提交</el-button>
</el-form-item>
</el-form>
<el-form v-if="tabPosition === 'bili'" ref="form" :model="ratioForm" label-suffix=" (%)" label-width="150px"
......@@ -40,7 +40,7 @@
:min="0"></el-input-number>
</el-form-item>
<el-form-item size="large">
<el-button type="primary" size="small" @click="save(2)">提交</el-button>
<el-button type="primary" size="small" :disabled="!isAuth('sysSetting:update')" @click="save(2)">提交</el-button>
</el-form-item>
</el-form>
</div>
......@@ -95,8 +95,8 @@ export default {
this.sumForm.first_weight = data.data.firstWeightAddPrice || 0
this.sumForm.renew_weight = data.data.xuWeightAddPrice || 0
this.ratioForm.first_weight = data.data.firstWeightAddRate || 0
this.ratioForm.renew_weight = data.data.xuWeightAddRate || 0
this.ratioForm.first_weight = (data.data.firstWeightAddRate || 0) * 100
this.ratioForm.renew_weight = (data.data.xuWeightAddRate || 0) * 100
}
}).catch(() => {
this.loading = false
......@@ -108,8 +108,8 @@ export default {
type,
firstWeightAddPrice: this.sumForm.first_weight,
xuWeightAddPrice: this.sumForm.renew_weight,
firstWeightAddRate: this.ratioForm.first_weight,
xuWeightAddRate: this.ratioForm.renew_weight
firstWeightAddRate: this.ratioForm.first_weight / 100,
xuWeightAddRate: this.ratioForm.renew_weight / 100
}
this.$http({
url: this.$http.adornUrl(`proxy/expressage/priceSetting/save`),
......
<template>
<div>
<sys-set-table :key="tabName" :loading="tableDataLoading" :data="tableData" @refresh="refresh"></sys-set-table>
<sys-set-table :key="tabName" :tabName="'kaiguan'" :loading="tableDataLoading" :data="tableData" settingType="platform" @refresh="refresh"></sys-set-table>
</div>
</template>
......@@ -49,7 +49,7 @@ export default {
}) => {
if (data && data.code === 0) {
this.tableDataLoading = false
let returnData = data.data;
let returnData = data.data || [];
this.tableData = returnData
}
})
......
<template>
<div>
<sys-set-table :key="tabName" :tabName="tabName" :loading="tableDataLoading" :data="tableData" @refresh="refresh"></sys-set-table>
</div>
</template>
<script>
import sysSetTable from '@/components/sysSetTable'
export default {
props: {
tabName: {
type: String,
default: ''
}
},
components: {
sysSetTable
},
watch: {
tabName: {
handler(val) {
if (val == 'xitong') {
this.getData()
}
},
immediate: true,
}
},
data() {
return {
tableDataLoading: false,
tableData: [],
}
},
activated() {
if (this.tabName == 'xitong')
this.getData();
},
methods: {
// 获取数据列表
getData() {
this.tableDataLoading = true
this.$http({
url: this.$http.adornUrl(`common/type/condition/xitong`),
method: 'get',
params: this.$http.adornParams({})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.tableDataLoading = false
let returnData = data.data;
this.tableData = returnData
}
})
},
refresh() {
this.getData();
}
}
}
</script>
<style></style>
\ No newline at end of file
<template>
<div>
<sys-set-table :key="tabName" :tabName="tabName" :loading="tableDataLoading" :data="tableData" @refresh="refresh"></sys-set-table>
</div>
</template>
<script>
import sysSetTable from '@/components/sysSetTable'
export default {
props: {
tabName: {
type: String,
default: ''
}
},
components: {
sysSetTable
},
watch: {
tabName: {
handler(val) {
if (val == 'gongzhonghao') {
this.getData()
}
},
immediate: true,
}
},
data() {
return {
tableDataLoading: false,
tableData: [],
}
},
activated() {
if (this.tabName == 'gongzhonghao')
this.getData();
},
methods: {
// 获取数据列表
getData() {
this.tableDataLoading = true
this.$http({
url: this.$http.adornUrl(`common/type/condition/gongzhonghao`),
method: 'get',
params: this.$http.adornParams({})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.tableDataLoading = false
let returnData = data.data;
this.tableData = returnData
}
})
},
refresh() {
this.getData();
}
}
}
</script>
<style></style>
\ No newline at end of file
<template>
<div>
<sys-set-table :key="tabName" :tabName="tabName" :loading="tableDataLoading" :data="tableData" @refresh="refresh"></sys-set-table>
</div>
</template>
<script>
import sysSetTable from '@/components/sysSetTable'
export default {
props: {
tabName: {
type: String,
default: ''
}
},
components: {
sysSetTable
},
watch: {
tabName: {
handler(val) {
if (val == 'image') {
this.getData()
}
},
immediate: true,
}
},
data() {
return {
tableDataLoading: false,
tableData: [],
}
},
activated() {
if (this.tabName == 'image')
this.getData();
},
methods: {
// 获取数据列表
getData() {
this.tableDataLoading = true
this.$http({
url: this.$http.adornUrl(`common/type/condition/image`),
method: 'get',
params: this.$http.adornParams({})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.tableDataLoading = false
let returnData = data.data || [];
this.tableData = returnData
}
})
},
refresh() {
this.getData();
}
}
}
</script>
<style></style>
\ No newline at end of file
<template>
<div class="setting_wrapper">
<el-tabs v-model="activeName">
<el-tab-pane label="服务费配置" name="fuwufei" lazy>
<cover-charge :tabName="activeName" ></cover-charge>
<el-tab-pane label="全局系统配置" name="xitong" lazy>
<global-setting :tabName="activeName" ></global-setting>
</el-tab-pane>
<!-- <el-tab-pane label="服务费配置" name="fuwufei" lazy>
<cover-charge :tabName="activeName" ></cover-charge>
</el-tab-pane> -->
<el-tab-pane label="短信配置" name="duanxin" lazy>
<note-setting :tabName="activeName"></note-setting>
</el-tab-pane>
<el-tab-pane label="微信配置" name="weixin" lazy>
<weixin-setting :tabName="activeName"></weixin-setting>
</el-tab-pane>
<el-tab-pane label="公众号配置" name="gongzhonghao" lazy>
<gongzhonghao-setting :tabName="activeName"></gongzhonghao-setting>
</el-tab-pane>
<el-tab-pane label="图片配置" name="image" lazy>
<image-setting :tabName="activeName"></image-setting>
</el-tab-pane>
<!-- <el-tab-pane label="公众号通知(订阅消息)通知商家" name="tongzhi" lazy>
<notice-setting :tabName="activeName"></notice-setting>
</el-tab-pane> -->
<el-tab-pane label="渠道管理" name="qudao" lazy>
<!-- <el-tab-pane label="渠道管理" name="qudao" lazy>
<channel-setting :tabName="activeName"></channel-setting>
</el-tab-pane>
<el-tab-pane label="协议配置" name="xieyi" lazy>
</el-tab-pane> -->
<!-- <el-tab-pane label="协议配置" name="xieyi" lazy>
<agreement-setting :tabName="activeName"></agreement-setting>
</el-tab-pane>
</el-tab-pane> -->
</el-tabs>
</div>
</template>
......@@ -24,16 +36,24 @@
import moment from 'moment';
import coverCharge from '@/views/setting/coverCharge';
import noteSetting from '@/views/setting/noteSetting';
import weixinSetting from '@/views/setting/weixinSetting';
import agreementSetting from '@/views/setting/agreementSetting';
import channelSetting from '@/views/setting/channelSetting';
import noticeSetting from '@/views/setting/noticeSetting';
import globalSetting from '@/views/setting/globalSetting';
import imageSetting from '@/views/setting/imageSetting';
import gongzhonghaoSetting from '@/views/setting/gongzhonghaoSetting';
export default {
components: {
coverCharge,
noteSetting,
weixinSetting,
agreementSetting,
channelSetting,
noticeSetting
noticeSetting,
globalSetting,
imageSetting,
gongzhonghaoSetting
},
data() {
return {
......@@ -59,7 +79,7 @@ export default {
},
},
created() {
this.activeName = 'fuwufei'
this.activeName = 'xitong'
},
};
</script>
......
<template>
<div>
<sys-set-table :key="tabName" :loading="tableDataLoading" :data="tableData" @refresh="refresh"></sys-set-table>
<sys-set-table :key="tabName" :tabName="tabName" :loading="tableDataLoading" :data="tableData" @refresh="refresh"></sys-set-table>
</div>
</template>
......
<template>
<div>
<sys-set-table :key="tabName" :tabName="tabName" :loading="tableDataLoading" :data="tableData" @refresh="refresh"></sys-set-table>
</div>
</template>
<script>
import sysSetTable from '@/components/sysSetTable'
export default {
props: {
tabName: {
type: String,
default: ''
}
},
components: {
sysSetTable
},
watch: {
tabName: {
handler(val) {
if (val == 'weixin') {
this.getData()
}
},
immediate: true,
}
},
data() {
return {
tableDataLoading: false,
tableData: [],
}
},
activated() {
if (this.tabName == 'weixin')
this.getData();
},
methods: {
// 获取数据列表
getData() {
this.tableDataLoading = true
this.$http({
url: this.$http.adornUrl(`common/type/condition/weixin`),
method: 'get',
params: this.$http.adornParams({})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.tableDataLoading = false
let returnData = data.data;
this.tableData = returnData
}
})
},
refresh() {
this.getData();
}
}
}
</script>
<style></style>
\ No newline at end of file
......@@ -155,7 +155,8 @@
</td>
<th class="border-bt">unionId</th>
<td class="border-bt">
{{ tableData && tableData.userEntity && tableData.userEntity.unionId ? tableData.userEntity.unionId : '-' }}</td>
{{ tableData && tableData.userEntity && tableData.userEntity.unionId ?
tableData.userEntity.unionId : '-' }}</td>
<th class="border-bt"></th>
<td class="border-bt border-rt">
</td>
......@@ -167,6 +168,10 @@
</el-tab-pane>
<el-tab-pane label="我的订单" name="jiedan">
<el-table v-loading="tableDataLoading" :data="userDataJ.list">
<!-- ele 暂无数据插槽 -->
<template slot="empty">
<TableEmpty />
</template>
<el-table-column prop="expressageId" label="编号" width="80" fixed="left">
</el-table-column>
<el-table-column prop="nickName" label="订单信息" width="370">
......@@ -543,6 +548,10 @@
</el-tab-pane>
<el-tab-pane label="提现记录" name="sixth">
<el-table v-loading="tableDataLoading" :data="withdrawData.list">
<!-- ele 暂无数据插槽 -->
<template slot="empty">
<TableEmpty />
</template>
<el-table-column fixed prop="id" label="编号" width="80">
</el-table-column>
<el-table-column prop="zhifubao" label="支付宝账号" width="150">
......@@ -587,6 +596,10 @@
</el-tab-pane>
<el-tab-pane label="钱包明细" name="eighth">
<el-table v-loading="tableDataLoading" :data="walletData.records">
<!-- ele 暂无数据插槽 -->
<template slot="empty">
<TableEmpty />
</template>
<el-table-column prop="id" label="编号" width="100"></el-table-column>
<el-table-column prop="title" label="标题" width="220"></el-table-column>
<el-table-column prop="content" label="内容"></el-table-column>
......@@ -625,6 +638,10 @@
</el-button>
</div> -->
<el-table v-loading="tableDataLoading" :data="sendData.list">
<!-- ele 暂无数据插槽 -->
<template slot="empty">
<TableEmpty />
</template>
<el-table-column prop="expressageId" label="编号" width="80" fixed="left">
</el-table-column>
<el-table-column prop="nickName" label="订单信息" width="370">
......@@ -1047,6 +1064,10 @@
</el-row>
</div>
<el-table v-loading="tableDataLoading" :data="tableData3.list">
<!-- ele 暂无数据插槽 -->
<template slot="empty">
<TableEmpty />
</template>
<el-table-column prop="userId" label="编号" width="80"></el-table-column>
<el-table-column prop="userName" label="用户名">
<template slot-scope="scope">
......@@ -1073,6 +1094,10 @@
</el-tab-pane>
<el-tab-pane label="我的优惠券" name="youhuiquan">
<el-table v-loading="tableDataLoading" :data="youhuiquanData.list">
<!-- ele 暂无数据插槽 -->
<template slot="empty">
<TableEmpty />
</template>
<el-table-column prop="id" label="编号" width="80">
</el-table-column>
<el-table-column prop="couponName" label="优惠券名称" width="150">
......@@ -1108,6 +1133,10 @@
</el-tab-pane>
<el-tab-pane label="我的粉丝" name="dailishang">
<el-table v-loading="tableDataLoading" :data="dailituiguangData.list">
<!-- ele 暂无数据插槽 -->
<template slot="empty">
<TableEmpty />
</template>
<el-table-column prop="userId" label="编号" width="80"></el-table-column>
<el-table-column prop="userName" label="用户名">
<template slot-scope="scope">
......@@ -1151,6 +1180,10 @@
</el-tab-pane>
<el-tab-pane label="我的地址" name="dizhis">
<el-table v-loading="tableDataLoading" :data="dizhiData.list">
<!-- ele 暂无数据插槽 -->
<template slot="empty">
<TableEmpty />
</template>
<el-table-column prop="addressId" label="编号" width="100"></el-table-column>
<el-table-column prop="userName" label="姓名"></el-table-column>
<el-table-column prop="userPhone" label="电话"></el-table-column>
......@@ -1180,6 +1213,10 @@
</el-tab-pane>
<el-tab-pane label="会员开通记录" name="vips">
<el-table v-loading="tableDataLoading" :data="huiyuanData.records">
<!-- ele 暂无数据插槽 -->
<template slot="empty">
<TableEmpty />
</template>
<el-table-column fixed prop="id" label="编号" width="80">
</el-table-column>
<el-table-column prop="title" label="标题">
......@@ -1216,6 +1253,10 @@
</el-tab-pane>
<el-tab-pane label="优惠券购买记录" name="yiuhuiquanM">
<el-table v-loading="tableDataLoading" :data="huiyuanData.records">
<!-- ele 暂无数据插槽 -->
<template slot="empty">
<TableEmpty />
</template>
<el-table-column fixed prop="id" label="编号" width="80">
</el-table-column>
<el-table-column prop="title" label="标题">
......@@ -1301,7 +1342,7 @@
</div>
<div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">头像:</span>
<div
<!-- <div
style=" width:148px;height:148px;background-color: #fbfdff; border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;display: inline-block;">
<el-upload class="avatar-uploader" v-model="imageUser"
action="https://admin.sj088.cn/sqx_fast/alioss/upload" :show-file-list="false"
......@@ -1311,7 +1352,8 @@
<i v-else class="el-icon-plus avatar-uploader-icon"
style="font-size: 28px;color: #8c939d"></i>
</el-upload>
</div>
</div> -->
<upload-image v-model="imageUser" @input="handleAvatarSuccess1"></upload-image>
</div>
</div>
......@@ -1803,7 +1845,9 @@ import {
CodeToText,
TextToCode
} from 'element-china-area-data'
import UploadImage from '@/components/UploadImage'
export default {
components: { UploadImage },
data() {
return {
openValue: 1,
......@@ -3487,4 +3531,5 @@ export default {
.text_color span {
margin-right: 5px;
}</style>
}
</style>
......@@ -1266,7 +1266,7 @@
</div>
<div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">头像:</span>
<div
<!-- <div
style=" width:148px;height:148px;background-color: #fbfdff; border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;display: inline-block;">
<el-upload class="avatar-uploader" v-model="imageUser"
action="https://admin.sj088.cn/sqx_fast/alioss/upload" :show-file-list="false"
......@@ -1275,7 +1275,8 @@
<i v-else class="el-icon-plus avatar-uploader-icon"
style="font-size: 28px;color: #8c939d"></i>
</el-upload>
</div>
</div> -->
<upload-image v-model="imageUser" @input="handleAvatarSuccess1"></upload-image>
</div>
</div>
......@@ -1761,7 +1762,9 @@ import {
CodeToText,
TextToCode
} from 'element-china-area-data'
import UploadImage from '@/components/UploadImage'
export default {
components: { UploadImage },
data() {
return {
openValue: 1,
......@@ -3445,4 +3448,5 @@ export default {
.text_color span {
margin-right: 5px;
}</style>
}
</style>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!