Commit 529151af by leic

系统配置调整

1 parent d518e97b
Showing with 1338 additions and 403 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"
<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-else type="text" icon="el-icon-arrow-up"
@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: []
}
},
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;
}
},
mounted() {
console.log(this.$scopedSlots, this.$slots)
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);
console.log("----当前主题色----", themeName);
try {
sessionStorage.setItem("theme", JSON.stringify(themeName));
let bodyEl = document.getElementsByTagName("body")[0];
bodyEl.className = "theme_" + themeName.split('#')[1]; //改成相应类名
bodyEl.style.setProperty("--primary-color", themeName);
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");
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);
}
}
......@@ -147,7 +147,8 @@
style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;overflow: hidden;max-height:80px;">
<div>
<div v-if="scope.row.couponList">
<span v-for="(item,index) in scope.row.couponList">{{item.couponName}};</span>
<span v-for="(item, index) in scope.row.couponList" :key="index">{{ item.couponName
}};</span>
</div>
</div>
......@@ -197,7 +198,7 @@
<template slot-scope="scope">
<div
style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;overflow: hidden;max-height:80px;">
{{scope.row.value}}
{{ scope.row.value }}
</div>
</template>
</el-table-column>
......@@ -222,7 +223,7 @@
<template slot-scope="scope">
<div
style="display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;overflow: hidden;max-height:80px;">
{{scope.row.value}}</div>
{{ scope.row.value }}</div>
</template>
</el-table-column>
<el-table-column prop="createAt" label="创建时间" width="180">
......@@ -245,29 +246,29 @@
<el-input v-model="form.min" style="width:65%;" readonly></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"
<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;">
</quill-editor>
<div v-else-if="form.conditionFrom=='image'">
<el-upload class="avatar-uploader" v-model="form.value"
<div v-else-if="form.conditionFrom == 'image'">
<!-- <el-upload class="avatar-uploader" v-model="form.value"
action="https://admin.sj088.cn/sqx_fast/alioss/upload" :show-file-list="false"
:on-success="handleAvatarSuccess1">
<img v-if="form.value" :src="form.value" 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>
</el-upload> -->
<upload-image v-model="form.value" @input="handleAvatarSuccess1"></upload-image>
</div>
<div v-else-if="form.conditionFrom=='coupon'">
<div
style="height: 150px;width: 72%;border: 1px solid #efefef;border-radius: 6px;padding: 10px;">
<span v-for="(item,index) in form.couponList"
style="border: 1px;margin-right: 5px;">{{item.couponName}} <i
class="el-icon-circle-close" @click="del(index,item)"></i> ;</span>
<div v-else-if="form.conditionFrom == 'coupon'">
<div style="height: 150px;width: 72%;border: 1px solid #efefef;border-radius: 6px;padding: 10px;">
<span v-for="(item, index) in form.couponList" style="border: 1px;margin-right: 5px;"
:key="index">{{ item.couponName }} <i class="el-icon-circle-close"
@click="del(index, item)"></i> ;</span>
</div>
<el-button type="primary" @click="yhqbtn()" style="margin: 5px;">选择优惠券</el-button>
</div>
<div v-else-if="form.conditionFrom=='kaiguan'">
<div v-else-if="form.conditionFrom == 'kaiguan'">
<div>
<el-radio-group v-model="form.value">
<el-radio label="是"></el-radio>
......@@ -295,8 +296,7 @@
</el-table-column>
<el-table-column prop="couponPicture" label="优惠券图片">
<template slot-scope="scope">
<img v-if="scope.row.couponPicture" :src="scope.row.couponPicture" alt="" width="40"
height="40">
<img v-if="scope.row.couponPicture" :src="scope.row.couponPicture" alt="" width="40" height="40">
</template>
</el-table-column>
<el-table-column prop="money" label="优惠券面值" width="100">
......@@ -307,7 +307,7 @@
</el-table-column>
<el-table-column label="操作" width="150" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="discuss(scope.$index,scope.row)">确认选择
<el-button size="mini" type="primary" @click="discuss(scope.$index, scope.row)">确认选择
</el-button>
</template>
</el-table-column>
......@@ -323,17 +323,19 @@
</template>
<script>
import {
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 '../locality/quill-config.js'
export default {
} 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 '../locality/quill-config.js'
import UploadImage from '@/components/UploadImage'
export default {
name: 'news',
components: {
quillEditor
quillEditor,
UploadImage
},
data() {
return {
......@@ -379,8 +381,8 @@
checkBoxData: [], //多选框选择的值
quillOption: quillConfig,
dialogFormVisibleYhq: false,
tableDataYhq:{},
tableDataLoadingY:false,
tableDataYhq: {},
tableDataLoadingY: false,
}
},
methods: {
......@@ -466,7 +468,7 @@
if (rows.couponList) {
this.form.couponList = rows.couponList
}else{
} else {
this.form.couponList = []
}
......@@ -474,7 +476,7 @@
},
// 修改
amendNoticeTo() {
if (this.form.conditionFrom=='coupon') {
if (this.form.conditionFrom == 'coupon') {
this.values = []
for (var i in this.form.couponList) {
this.values.push(this.form.couponList[i].couponId)
......@@ -621,11 +623,11 @@
mounted() {
this.dataSelect()
}
}
}
</script>
<style scoped="scoped">
.eit {
.eit {
height: 120px;
}
}
</style>
<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,16 +80,16 @@
</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> -->
</el-upload>
</div> -->
<upload-image v-model="couponPicture" @input="handleAvatarSuccess1"></upload-image>
</div>
</div>
<div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">优惠券面值:</span>
<el-input style="width:50%;" v-model="money" type="number" :min="0" placeholder="请输入优惠券面值">
......@@ -128,7 +128,6 @@
<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"
action="https://admin.sj088.cn/sqx_fast/alioss/upload" :show-file-list="false"
:on-success="handleAvatarSuccess2">
......@@ -137,7 +136,6 @@
<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>
</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> -->
<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>
......
......@@ -4,8 +4,7 @@
<div style="display: inline-block;">
<span>系统用户:</span>
<el-select v-model="userId" style="width:150px;margin-left: 10px;">
<el-option v-for="item in userRwData" :key="item.userId" :label="item.nickName"
:value="item.userId">
<el-option v-for="item in userRwData" :key="item.userId" :label="item.nickName" :value="item.userId">
</el-option>
</el-select>&nbsp;&nbsp;&nbsp;&nbsp;
<el-button style='margin:0 0 20px 20px;' :disabled="!isAuth('system:issue')" size="mini" type="primary"
......@@ -19,8 +18,8 @@
</el-table-column>
<el-table-column prop="nickName" label="用户姓名" width="150">
<template slot-scope="scope">
<span style="color: var(--primary-color);cursor: pointer;"
@click="updates(scope.row)">{{scope.row.nickName ? scope.row.nickName : '未绑定'}}</span>
<span style="color: var(--primary-color);cursor: pointer;" @click="updates(scope.row)">{{
scope.row.nickName ? scope.row.nickName : '未绑定' }}</span>
</template>
</el-table-column>
<el-table-column prop="title" label="标题">
......@@ -37,8 +36,8 @@
</el-table-column>
<el-table-column label="置顶状态" width="160">
<template slot-scope="scope">
<span v-if="scope.row.isTop==1" style="color: var(--primary-color);">置顶中</span>
<span v-if="scope.row.isTop==0">未置顶</span>
<span v-if="scope.row.isTop == 1" style="color: var(--primary-color);">置顶中</span>
<span v-if="scope.row.isTop == 0">未置顶</span>
</template>
</el-table-column>
<el-table-column prop="endNum" label="接单数量" width="160">
......@@ -53,11 +52,11 @@
</el-table-column>
<el-table-column fixed='right' prop="state" label="状态" width="100">
<template slot-scope="scope">
<span style="color: var(--primary-color);" v-if="scope.row.state === 0 ">待审核</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 1 ">进行中</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 2 ">已结束</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 3 ">已拒绝</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 4 ">已结算</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 0">待审核</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 1">进行中</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 2">已结束</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 3">已拒绝</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 4">已结算</span>
</template>
</el-table-column>
</el-table>
......@@ -82,7 +81,7 @@
<img :src="scope.row.label" alt="" width="60" height="60">
</template>
</el-table-column>
<el-table-column <el-table-column prop="title" label="标题">
<el-table-column prop="title" label="标题">
</el-table-column>
<el-table-column prop="content" label="任务要求" width="150">
</el-table-column>
......@@ -106,15 +105,15 @@
</el-table-column>
<el-table-column fixed='right' prop="state" label="状态" width="100">
<template slot-scope="scope">
<span style="color: var(--primary-color);" v-if="scope.row.state === 0 ">待审核</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 1 ">已通过</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 3 ">已拒绝</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 4 ">已结算</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 0">待审核</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 1">已通过</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 3">已拒绝</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 4">已结算</span>
</template>
</el-table-column>
<el-table-column fixed='right' label="操作" width="120">
<template slot-scope="scope">
<el-button size="mini" type="primary" v-if="scope.row.isTop == 0 && scope.row.state==1"
<el-button size="mini" type="primary" v-if="scope.row.isTop == 0 && scope.row.state == 1"
@click="stick(scope.row)">置顶
</el-button>
<el-button size="mini" type="primary" v-if="scope.row.isTop !== 0" disabled>置顶
......@@ -143,7 +142,7 @@
<img :src="scope.row.label" alt="" width="60" height="60">
</template>
</el-table-column>
<el-table-column <el-table-column prop="title" label="标题">
<el-table-column prop="title" label="标题">
</el-table-column>
<el-table-column prop="content" label="任务要求" width="150">
</el-table-column>
......@@ -167,11 +166,11 @@
</el-table-column>
<el-table-column fixed='right' prop="state" label="状态" width="100">
<template slot-scope="scope">
<span style="color: var(--primary-color);" v-if="scope.row.state === 0 ">待审核</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 1 ">进行中</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 2 ">已结束</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 3 ">已拒绝</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 4 ">已结算</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 0">待审核</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 1">进行中</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 2">已结束</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 3">已拒绝</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 4">已结算</span>
</template>
</el-table-column>
</el-table>
......@@ -189,7 +188,7 @@
<img :src="scope.row.label" alt="" width="60" height="60">
</template>
</el-table-column>
<el-table-column <el-table-column prop="title" label="标题">
<el-table-column prop="title" label="标题">
</el-table-column>
<el-table-column prop="content" label="任务要求" width="150">
</el-table-column>
......@@ -213,12 +212,12 @@
</el-table-column>
<el-table-column fixed='right' prop="state" label="状态" width="160">
<template slot-scope="scope">
<span style="color: var(--primary-color);" v-if="scope.row.state === 0 ">待审核</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 1 ">已通过</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 2 ">已拒绝</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 3 ">已维权</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 4 ">已放弃</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 5 ">已结束</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 0">待审核</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 1">已通过</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 2">已拒绝</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 3">已维权</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 4">已放弃</span>
<span style="color: var(--primary-color);" v-if="scope.row.state === 5">已结束</span>
</template>
</el-table-column>
<el-table-column fixed='right' label="操作">
......@@ -252,20 +251,19 @@
<el-table v-loading="tableDataLoading" :data="userData.list">
<el-table-column prop="nickName" label="昵称">
<template slot-scope="scope">
<span style="color: #f56c6c;">{{scope.row.nickName ? scope.row.nickName : '未绑定'}}</span>
<span style="color: #f56c6c;">{{ scope.row.nickName ? scope.row.nickName : '未绑定' }}</span>
</template>
</el-table-column>
<el-table-column label="图像">
<template slot-scope="scope">
<img v-if="scope.row.imageUrl==null" src="~@/assets/img/avatar.png" alt="" width="40"
height="40">
<img v-if="scope.row.imageUrl == null" src="~@/assets/img/avatar.png" alt="" width="40" height="40">
<img v-else :src="scope.row.imageUrl" alt="" width="40" height="40">
</template>
</el-table-column>
<el-table-column prop="phone" label="手机号">
<template slot-scope="scope">
<span style="color: var(--primary-color);cursor: pointer;"
@click="updates(scope.row)">{{scope.row.phone ? scope.row.phone : '未绑定'}}</span>
<span style="color: var(--primary-color);cursor: pointer;" @click="updates(scope.row)">{{
scope.row.phone ? scope.row.phone : '未绑定' }}</span>
</template>
</el-table-column>
<el-table-column prop="invitationCode" label="邀请码">
......@@ -297,8 +295,7 @@
<div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">选择任务:</span>
<el-select v-model="id" style="width:50%;">
<el-option v-for="item in renwuData" :key="item.id" :label="item.classifyName"
:value="item.list[0].id">
<el-option v-for="item in renwuData" :key="item.id" :label="item.classifyName" :value="item.list[0].id">
</el-option>
</el-select>
</div>
......@@ -341,27 +338,29 @@
<p style="font-size: 14px;color: #3E8EF7;padding-left:200px;">在步骤1中添加需要扫描的二维码图片</p>
</div>
<div style="margin-bottom: 10px;padding:0 25%;">
<div class="step_item" style="margin-bottom: 10px;" v-for="(item,index) in stepList" :key="index">
<div class="step_item" style="margin-bottom: 10px;" v-for="(item, index) in stepList" :key="index">
<div class="step_title" style="margin-bottom: 15px;background: rgb(240, 240, 240);padding: 0 10px;">
第{{index+1}}步 <span @click="deleteStep(index)" style="float: right;">删除</span></div>
第{{ index + 1 }}步 <span @click="deleteStep(index)" style="float: right;">删除</span></div>
<div style="display: flex;">
<div
<!-- <div
style="display: inline-block;width:148px;height:137px;background-color: #fbfdff; border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 137px;">
<el-upload class="avatar-uploader" v-model="picture"
action="https://admin.sj088.cn/sqx_fast/alioss/upload" :show-file-list="false"
:on-success="handleAvatarSuccess">
<img v-if="item.picture" :src="item.picture" class="avatar"
style="width: 148px;height:137px;" />
<i v-else class="el-icon-plus avatar-uploader-icon" @click="curRowIndex=index"></i>
<i v-else class="el-icon-plus avatar-uploader-icon" @click="curRowIndex = index"></i>
</el-upload>
</div>
</div> -->
<upload-image v-model="picture" @input="handleAvatarSuccess"
@click="curRowIndex = index"></upload-image>
<div style="display: inline-block;margin-left:50px;">
<el-input style="width:148px;" v-model="item.content" type="textarea" :rows="6"
placeholder="请输入步骤说明"></el-input>
</div>
</div>
<div>
<el-switch v-model="item.isVerify" @change="switch1Change(item.isVerify,index)"
<el-switch v-model="item.isVerify" @change="switch1Change(item.isVerify, index)"
:active-value="openValue" :inactive-value="closeValue" active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
......@@ -424,7 +423,7 @@
</div>
<div style="margin-bottom: 10px;display:flex;">
<span style="width: 200px;display: inline-block;text-align: right;">图像:</span>
<div
<!-- <div
style=" width:148px;height:148px;border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;">
<el-upload class="avatar-uploader" v-model="imageUrl"
action="https://admin.sj088.cn/sqx_fast/alioss/upload" :show-file-list="false"
......@@ -433,7 +432,8 @@
style="border-radius: 6px;width: 148px;height: 148px;" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
</div> -->
<upload-image v-model="imageUrl" @input="handleAvatarSuccess1"></upload-image>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible1 = false">取 消</el-button>
......@@ -456,7 +456,7 @@
<el-input v-model="form.zhifubaoName" placeholder="请输入支付宝名称" style="width:65%;"></el-input>
</el-form-item>
<el-form-item label="图像:" :label-width="formLabelWidth">
<div
<!-- <div
style=" width:148px;height:148px;border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;">
<el-upload class="avatar-uploader" v-model="imageUrl"
action="https://admin.sj088.cn/sqx_fast/alioss/upload" :show-file-list="false"
......@@ -465,7 +465,8 @@
style="border-radius: 6px;width: 148px;height: 148px;" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
</div> -->
<upload-image v-model="imageUrl" @input="handleAvatarSuccess2"></upload-image>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
......@@ -489,7 +490,9 @@
</template>
<script>
export default {
import UploadImage from '@/components/UploadImage'
export default {
components: { UploadImage },
data() {
return {
openValue: '1',
......@@ -1378,9 +1381,7 @@
this.renwuSelect()
this.userRwSelect()
}
};
};
</script>
<style>
</style>
<style></style>
......@@ -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>
......@@ -10,7 +10,7 @@
</el-table-column>
<el-table-column prop="memberImg" label="图片">
<template slot-scope="scope">
  <img :src="scope.row.memberImg" width="60" height="60" />
<img :src="scope.row.memberImg" width="60" height="60" />
</template>
</el-table-column>
<el-table-column prop="memberName" label="特权名称">
......@@ -29,14 +29,14 @@
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:page-sizes="[10, 20, 30, 50, 100]" :page-size="limit" :current-page="page" layout="total,sizes, prev, pager, next,jumper"
:total="tableData.totalCount">
:page-sizes="[10, 20, 30, 50, 100]" :page-size="limit" :current-page="page"
layout="total,sizes, prev, pager, next,jumper" :total="tableData.totalCount">
</el-pagination>
</div>
<el-dialog :title="title" :visible.sync="dialogFormVisible" center>
<div style="margin-bottom: 10px;display: flex;">
<span style="width: 200px;display: inline-block;text-align: right;">图片:</span>
<div style=" width:148px;height:148px;border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;">
<!-- <div style=" width:148px;height:148px;border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;">
<el-upload
class="avatar-uploader"
v-model="memberImg"
......@@ -47,7 +47,8 @@
<img v-if="memberImg" :src="memberImg" class="avatar" style="border-radius: 6px;width: 148px;height: 148px;"/>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
</div> -->
<upload-image v-model="memberImg" @input="handleAvatarSuccess"></upload-image>
</div>
<div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">名称:</span>
......@@ -55,7 +56,8 @@
</div>
<div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">排序:</span>
<el-input style="width:50%;" v-model="sort" placeholder="请输入排序" onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')"></el-input>
<el-input style="width:50%;" v-model="sort" placeholder="请输入排序"
onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')"></el-input>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取 消</el-button>
......@@ -66,19 +68,22 @@
</template>
<script>
export default {
import UploadImage from '@/components/UploadImage'
export default {
components: { UploadImage },
data() {
return {
page:1,
limit:10,
page: 1,
limit: 10,
tableDataLoading: true,
dialogFormVisible:false,
dialogFormVisible: false,
tableData: [],
memberName:'',
memberImg:'',
memberId:'',
sort:'',
title:'添加'
memberName: '',
memberImg: '',
memberId: '',
sort: '',
title: '添加'
}
},
methods: {
......@@ -96,7 +101,7 @@
data
}) => {
if (data && data.code === 0) {
console.log('会员列表',data)
console.log('会员列表', data)
this.tableDataLoading = false
let returnData = data.data;
this.tableData = returnData;
......@@ -106,21 +111,21 @@
},
//上传成功
handleAvatarSuccess(file) {
this.memberImg= file.data
this.memberImg = file.data
},
addNotice(){
addNotice() {
this.dialogFormVisible = true
},
handleCurrentChange(val){
handleCurrentChange(val) {
this.page = val
this.dataSelect()
},
handleSizeChange(val){
handleSizeChange(val) {
this.limit = val
this.dataSelect()
},
// 添加banner图
addNoticeTo(){
addNoticeTo() {
if (this.memberImg == '') {
this.$notify({
title: '提示',
......@@ -140,21 +145,21 @@
return
}
this.classify = 1
if(this.title=='添加'){
if (this.title == '添加') {
var url = 'member/insertMember'
}else{
} else {
var url = 'member/updateMember'
}
this.$http({
url: this.$http.adornUrl(url),
method: 'post',
data: this.$http.adornData({
'memberImg':this.memberImg,
'memberId':this.memberId,
'memberName':this.memberName,
'sort':this.sort
'memberImg': this.memberImg,
'memberId': this.memberId,
'memberName': this.memberName,
'sort': this.sort
})
}).then(({data}) => {
}).then(({ data }) => {
this.dialogFormVisible = false
this.$message({
message: '操作成功',
......@@ -163,19 +168,19 @@
onClose: () => {
this.memberImg = ''
this.memberId = ''
this.memberName=''
this.memberName = ''
this.sort = ''
this.title ='添加'
this.title = '添加'
this.dataSelect()
}
})
})
},
// 修改
amendBanner(index,rows,a){
if(a==1){
amendBanner(index, rows, a) {
if (a == 1) {
this.pl = 1
}else{
} else {
this.pl = 0
}
this.dialogFormVisible = true
......@@ -187,13 +192,13 @@
this.title = '修改'
},
// 修改
amendNoticeTo(){
amendNoticeTo() {
this.$http({
url: this.$http.adornUrl(`?memberId=${this.memberId}&memberImg=${this.memberImg}&sort=${this.sort}&memberName=${this.memberName}`),
method: 'post',
data: this.$http.adornData({
})
}).then(({data}) => {
}).then(({ data }) => {
this.dialogFormVisible = false
this.$message({
message: '操作成功',
......@@ -229,14 +234,13 @@
}
})
})
}).catch(() => {})
}).catch(() => { })
},
},
mounted() {
this.dataSelect()
}
}
}
</script>
<style>
</style>
<style></style>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!