Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/views/purchaseShop/inteAmend.vue
This commit is contained in:
曹磊 2025-03-17 15:39:07 +08:00
commit cc2394588b
55 changed files with 20376 additions and 5025 deletions

View File

@ -1,5 +1,5 @@
## 盛安到家1.0管理系统 ## 盛安小象1.0管理系统
- 盛安到家1.0管理系统基于vue、element-ui构建开发实现盛安到家1.0管理系统前端功能,提供一套更优的前端解决方案 - 盛安小象1.0管理系统基于vue、element-ui构建开发实现盛安小象1.0管理系统前端功能,提供一套更优的前端解决方案
- 前后端分离通过token进行数据交互可独立部署 - 前后端分离通过token进行数据交互可独立部署
- 主题定制通过scss变量统一一站式定制 - 主题定制通过scss变量统一一站式定制
- 动态菜单,通过菜单管理统一管理访问路由 - 动态菜单,通过菜单管理统一管理访问路由

View File

@ -15,8 +15,8 @@ module.exports = {
proxyTable: devEnv.OPEN_PROXY === false ? {} : { proxyTable: devEnv.OPEN_PROXY === false ? {} : {
'/proxyApi': { '/proxyApi': {
// target: "https://sausers.blxinchuang.com/sqx_fast/", // target: "https://sausers.blxinchuang.com/sqx_fast/",
// target: "http://192.168.2.222:8187/sqx_fast/", target: "http://localhost:8187/sqx_fast/",
target: "https://admin.sjajk.com/sqx_fast/", //生产需替换 // target: "https://admin.sjajk.com/sqx_fast/", //生产需替换
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/proxyApi': '' '^/proxyApi': ''

View File

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta http-equiv="X-UA-Compatible" content="ie=edge">
<!-- <script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=miP4RMG1yZoROVRSqTPghvUaRb68iGUB"></script> --> <!-- <script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=miP4RMG1yZoROVRSqTPghvUaRb68iGUB"></script> -->
<title>盛安到家1.0系统</title> <title>盛安小象1.0系统</title>
<% if (process.env.NODE_ENV === 'production') { %> <% if (process.env.NODE_ENV === 'production') { %>
<!-- 生产环境 --> <!-- 生产环境 -->
<script>document.write('<script src="./config/index.js?t=' + new Date().getTime() + '"><\/script>');</script> <script>document.write('<script src="./config/index.js?t=' + new Date().getTime() + '"><\/script>');</script>

14185
pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load Diff

BIN
src/assets/mp3/jjqz.mp3 Normal file

Binary file not shown.

BIN
src/assets/mp3/lts.mp3 Normal file

Binary file not shown.

BIN
src/assets/mp3/ts.mp3 Normal file

Binary file not shown.

BIN
src/assets/mp3/xxzx.mp3 Normal file

Binary file not shown.

BIN
src/assets/mp3/xyhzc.mp3 Normal file

Binary file not shown.

View File

@ -21,6 +21,41 @@ const globalRoutes = [
{ path: '/login', component: _import('common/login'), name: 'login', meta: { title: '登录' } } { path: '/login', component: _import('common/login'), name: 'login', meta: { title: '登录' } }
] ]
// 添加 dashboard 到 globalRoutes
globalRoutes.push({
path: '/dashboard',
component: _import('common/dashboard'),
name: 'dashboard',
meta: { title: '驾驶舱', isTab: true },
beforeEnter(to, from, next) {
let token = Vue.cookie.get('token')
if (!token || !/\S/.test(token)) {
clearLoginInfo()
next({ name: 'login' })
}
next();
}
});
// 添加 dashboard 到 globalRoutes
globalRoutes.push({
path: '/dashboard_',
component: _import('common/dashboard'),
name: 'dashboard_',
meta: { title: '驾驶舱', isTab: true },
beforeEnter(to, from, next) {
let token = Vue.cookie.get('token')
if (!token || !/\S/.test(token)) {
clearLoginInfo()
next({ name: 'login' })
}
// next()
window.open('/dashboard', '_blank');
// 取消当前导航
next(false);
}
});
// 主入口路由(需嵌套上左右整体布局) // 主入口路由(需嵌套上左右整体布局)
const mainRoutes = { const mainRoutes = {
path: '/', path: '/',
@ -38,6 +73,7 @@ const mainRoutes = {
{ path: '/allocationList', component: _import('allocation/allocationList'), name: 'allocationList', meta: { title: '配置列表', isTab: true } }, { path: '/allocationList', component: _import('allocation/allocationList'), name: 'allocationList', meta: { title: '配置列表', isTab: true } },
{ path: '/financeList', component: _import('finance/financeList'), name: 'financeList', meta: { title: '财务中心', isTab: true } }, { path: '/financeList', component: _import('finance/financeList'), name: 'financeList', meta: { title: '财务中心', isTab: true } },
{ path: '/message', component: _import('message/message'), name: 'message', meta: { title: '消息中心', isTab: true } }, { path: '/message', component: _import('message/message'), name: 'message', meta: { title: '消息中心', isTab: true } },
{ path: '/newUserTip', component: _import('newUserTip/newUserTip'), name: 'newUserTip', meta: { title: '新用户注册', isTab: true } },
{ path: '/taskConfig', component: _import('taskConfig/taskConfig'), name: 'taskConfig', meta: { title: '任务配置', isTab: true } }, { path: '/taskConfig', component: _import('taskConfig/taskConfig'), name: 'taskConfig', meta: { title: '任务配置', isTab: true } },
{ path: '/bannerList', component: _import('banner/bannerList'), name: 'bannerList', meta: { title: '首页装修', isTab: true } }, { path: '/bannerList', component: _import('banner/bannerList'), name: 'bannerList', meta: { title: '首页装修', isTab: true } },
{ path: '/materialPackage', component: _import('materialPackage/materialPackage'), name: 'materialPackage', meta: { title: '物料包', isTab: true } }, { path: '/materialPackage', component: _import('materialPackage/materialPackage'), name: 'materialPackage', meta: { title: '物料包', isTab: true } },
@ -156,7 +192,7 @@ const mainRoutes = {
{ path: '/artificerPartitioningDetails', component: _import('bl/artificer/artificerPartitioningDetails'), name: 'artificerPartitioningDetails', meta: { title: '技师分成明细配置列表', isTab: true } }, { path: '/artificerPartitioningDetails', component: _import('bl/artificer/artificerPartitioningDetails'), name: 'artificerPartitioningDetails', meta: { title: '技师分成明细配置列表', isTab: true } },
{ path: '/artificerRechargeReward', component: _import('bl/artificer/artificerRechargeReward'), name: 'artificerRechargeReward', meta: { title: '技师充值奖励配置列表', isTab: true } }, { path: '/artificerRechargeReward', component: _import('bl/artificer/artificerRechargeReward'), name: 'artificerRechargeReward', meta: { title: '技师充值奖励配置列表', isTab: true } },
{ path: '/blPingjiaTag', component: _import('bl/pingjiaTag/blPingjiaTag'), name: 'blPingjiaTag', meta: { title: '用户评价标签', isTab: true } }, { path: '/blPingjiaTag', component: _import('bl/pingjiaTag/blPingjiaTag'), name: 'blPingjiaTag', meta: { title: '用户评价标签', isTab: true } },
{ path: '/shipinquan', component: _import('bl/shipinquan/shipinquan'), name: 'shipinquan', meta: { title: '视频圈', isTab: true } }, { path: '/shipinquan', component: _import('bl/shipinquan/shipinquan'), name: 'shipinquan', meta: { title: '视频圈', isTab: true } }
], ],
beforeEnter(to, from, next) { beforeEnter(to, from, next) {
let token = Vue.cookie.get('token') let token = Vue.cookie.get('token')

View File

@ -1,7 +1,7 @@
import Vue from 'vue' import Vue from 'vue'
const serverUrl = "https://admin.sjajk.com/sqx_fast/";//生产需替换 // const serverUrl = "https://admin.sjajk.com/sqx_fast/";//生产需替换
// const serverUrl = "http://192.168.2.222:8187/sqx_fast/"; const serverUrl = "http://localhost:8187/sqx_fast/";
// const serverUrl = "http://120.46.52.165/sqx_fast/"; // const serverUrl = "http://120.46.52.165/sqx_fast/";
// const serverUrl = "https://sausers.blxinchuang.com/sqx_fast/"; // const serverUrl = "https://sausers.blxinchuang.com/sqx_fast/";

View File

@ -55,6 +55,52 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="front" label="身份证正面" width="150">
<template slot-scope="scope">
<div v-if="scope.row.front == null || scope.row.front == ''">
暂无图片
</div>
<div v-if="scope.row.front" style="display:flex;flex-wrap: wrap;">
<el-popover placement="top-start" title="" trigger="hover">
<img style="width: 50px; height: 50px" :src="scope.row.front" alt=""
slot="reference">
<img style="width: auto; height: 600px" :src="scope.row.front" alt="">
</el-popover>
</div>
</template>
</el-table-column>
<el-table-column prop="back" label="身份证返面" width="150">
<template slot-scope="scope">
<div v-if="scope.row.back == null || scope.row.back == ''">
暂无图片
</div>
<div v-if="scope.row.back" style="display:flex;flex-wrap: wrap;">
<el-popover placement="top-start" title="" trigger="hover">
<img style="width: 50px; height: 50px" :src="scope.row.back" alt=""
slot="reference">
<img style="width: auto; height: 600px" :src="scope.row.back" alt="">
</el-popover>
</div>
</template>
</el-table-column>
<el-table-column prop="certification" label="资格证书" >
<template slot-scope="scope">
<div v-if="!scope.row.certification || scope.row.certification.trim() === ''">
暂无图片
</div>
<div v-else style="display:flex;flex-wrap: wrap;">
<!-- 使用split方法根据逗号分割字符串 -->
<div v-for="(src, index) in scope.row.certification.split(',')" :key="index" style="margin-right: 10px;">
<el-popover placement="top-start" title="" trigger="hover">
<!-- 展示缩略图 -->
<img style="width: 50px; height: 50px;" :src="src.trim()" alt="" slot="reference">
<!-- 放大显示 -->
<img style="width: auto; height: 600px;" :src="src.trim()" alt="">
</el-popover>
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="age" label="年龄" > <el-table-column prop="age" label="年龄" >
</el-table-column> </el-table-column>
<el-table-column prop="phone" label="电话" > <el-table-column prop="phone" label="电话" >

View File

@ -3,10 +3,7 @@
<!-- 列表 --> <!-- 列表 -->
<div style="display: inline-block"> <div style="display: inline-block">
<span>状态</span> <span>状态</span>
<el-select <el-select clearable v-model="status" style="width: 150px;">
clearable
v-model="status"
style="width: 150px;">
<el-option value="" label="全部"></el-option> <el-option value="" label="全部"></el-option>
<el-option value="0" label="申请中"></el-option> <el-option value="0" label="申请中"></el-option>
<el-option value="1" label="已授权"></el-option> <el-option value="1" label="已授权"></el-option>
@ -15,123 +12,66 @@
</div> </div>
<div style="margin-left:10px;display: inline-block"> <div style="margin-left:10px;display: inline-block">
<span>姓名</span> <span>姓名</span>
<el-input <el-input style="width: 200px" placeholder="请输入姓名" v-model="name">
style="width: 200px"
placeholder="请输入姓名"
v-model="name">
</el-input> </el-input>
</div> </div>
<div style="margin-left:10px;display: inline-block"> <div style="margin-left:10px;display: inline-block">
<span>电话</span> <span>电话</span>
<el-input <el-input style="width: 200px" placeholder="请输入电话" v-model="phone">
style="width: 200px"
placeholder="请输入电话"
v-model="phone">
</el-input> </el-input>
</div> </div>
<div style="margin-left:10px;display: inline-block;"> <div style="margin-left:10px;display: inline-block;">
<span>申请开始时间</span> <span>申请开始时间</span>
<el-date-picker style="width: 160px;" v-model="startTime" align="right" <el-date-picker style="width: 160px;" v-model="startTime" align="right" type="datetime" format="yyyy-MM-dd"
type="datetime" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择开始时间"> value-format="yyyy-MM-dd" placeholder="选择开始时间">
</el-date-picker>&nbsp;&nbsp;&nbsp; </el-date-picker>&nbsp;&nbsp;&nbsp;
</div> </div>
<div style="margin-left:10px;display: inline-block;"> <div style="margin-left:10px;display: inline-block;">
<span>申请截止时间</span> <span>申请截止时间</span>
<el-date-picker style="width: 160px;" v-model="endTime" align="right" type="datetime" <el-date-picker style="width: 160px;" v-model="endTime" align="right" type="datetime" format="yyyy-MM-dd"
format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择截止时间"> value-format="yyyy-MM-dd" placeholder="选择截止时间">
</el-date-picker> </el-date-picker>
</div> </div>
<el-button <el-button style="margin-left: 10px" size="mini" type="primary" icon="document" @click="handleSelect">查询
style="margin-left: 10px"
size="mini"
type="primary"
icon="document"
@click="handleSelect"
>查询
</el-button> </el-button>
<el-button <el-button style="margin-left: 10px" size="mini" type="primary" icon="document" @click="handleClear">重置
style="margin-left: 10px"
size="mini"
type="primary"
icon="document"
@click="handleClear"
>重置
</el-button> </el-button>
<el-table v-loading="tableDataLoading" :data="tableData.list"> <el-table v-loading="tableDataLoading" :data="tableData.list">
<el-table-column <el-table-column prop="id" label="编号" width="80">
prop="id"
label="编号"
width="80"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="userId" label="用户ID" width="80">
prop="userId"
label="用户ID"
width="80"
>
</el-table-column> </el-table-column>
<el-table-column prop="avatar" label="头像"> <el-table-column prop="avatar" label="头像">
<template slot-scope="scope"> <template slot-scope="scope">
<img <img v-if="scope.row.avatar && scope.row.avatar != ''" :src="scope.row.avatar" width="40"
v-if="scope.row.avatar && scope.row.avatar != ''" height="40" />
:src="scope.row.avatar"
width="40"
height="40"
/>
<span v-else>暂无图片</span> <span v-else>暂无图片</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="userName" label="昵称" width="120">
prop="userName"
label="昵称"
width="120"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="name" label="姓名" width="120">
prop="name"
label="姓名"
width="120"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="phone" label="手机号" width="120">
prop="phone"
label="手机号"
width="120"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="level" label="等级" width="120">
prop="level"
label="等级"
width="120"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.level == 1">一级</span> <span v-if="scope.row.level == 1">一级</span>
<span v-if="scope.row.level == 2">二级</span> <span v-if="scope.row.level == 2">二级</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="agent" label="所属代理商" width="120">
prop="agent"
label="所属代理商"
width="120"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="superiorFxy" label="上级分销" width="120">
prop="superiorFxy"
label="上级分销"
width="120"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="remarks" label="备注" width="150">
prop="remarks"
label="备注"
width="150"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="createTime" label="申请时间" width="150">
prop="createTime" </el-table-column>
label="申请时间" <el-table-column label="到期时间" width="150">
width="150" <template slot-scope="scope">
> {{ calcDqsj(scope.row) }}
</template>
</el-table-column> </el-table-column>
<el-table-column label="状态" prop="status"> <el-table-column label="状态" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
@ -140,148 +80,77 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" prop="id" width="300" fixed="right"> <el-table-column label="操作" prop="id" width="300" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button size="mini" type="primary" style="margin: 5px" @click="handleView(scope.row)">查看
size="mini"
type="primary"
style="margin: 5px"
@click="handleView(scope.row)"
>查看
</el-button> </el-button>
<el-button v-if="scope.row.status == 0" <el-button v-if="scope.row.status == 0" size="mini" type="primary" style="margin: 5px"
size="mini" @click="handleEdit(scope.row)">修改
type="primary"
style="margin: 5px"
@click="handleEdit(scope.row)"
>修改
</el-button> </el-button>
<el-button v-if="scope.row.status == 0" <el-button v-if="scope.row.status == 0" size="mini" type="primary" style="margin: 5px"
size="mini" @click="handleDelete(scope.row)">删除
type="primary"
style="margin: 5px"
@click="handleDelete(scope.row)"
>删除
</el-button> </el-button>
<el-button v-if="scope.row.status != 1" <el-button v-if="scope.row.status != 1" size="mini" type="primary" style="margin: 5px"
size="mini" @click="handleApply(scope.row)">授权
type="primary"
style="margin: 5px"
@click="handleApply(scope.row)"
>授权
</el-button> </el-button>
<el-button v-if="scope.row.status == 1 || scope.row.status == 2" <el-button v-if="scope.row.status == 1 || scope.row.status == 2" size="mini" type="primary"
size="mini" style="margin: 5px" @click="handleCancelApply(scope.row)">取消授权
type="primary"
style="margin: 5px"
@click="handleCancelApply(scope.row)"
>取消授权
</el-button> </el-button>
<el-button v-if="scope.row.status == 1" <!-- <el-button v-if="scope.row.status == 1" size="mini" type="primary" style="margin: 5px"
size="mini" @click="handleAgent(scope.row)">修改代理
type="primary" </el-button> -->
style="margin: 5px" <el-button v-if="scope.row.status == 1 && scope.row.blFxyLevel == 1" size="mini" type="primary"
@click="handleAgent(scope.row)" style="margin: 5px" @click="handleSuperiorFxyView(scope.row)">修改上级分销
>修改代理
</el-button>
<el-button v-if="scope.row.status == 1 && scope.row.blFxyLevel == 1"
size="mini"
type="primary"
style="margin: 5px"
@click="handleSuperiorFxyView(scope.row)"
>修改上级分销
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div style="text-align: center; margin-top: 10px"> <div style="text-align: center; margin-top: 10px">
<el-pagination <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
@size-change="handleSizeChange" :page-sizes="[10, 20, 30, 40]" :page-size="limit" :current-page="page"
@current-change="handleCurrentChange" layout="total,sizes, prev, pager, next,jumper" :total="tableData.totalCount">
:page-sizes="[10, 20, 30, 40]"
:page-size="limit"
:current-page="page"
layout="total,sizes, prev, pager, next,jumper"
:total="tableData.totalCount"
>
</el-pagination> </el-pagination>
</div> </div>
<!-- 查看 --> <!-- 查看 -->
<el-dialog :title="titles" :visible.sync="dialogFormViewVisible" center @close="closeFxy"> <el-dialog :title="titles" :visible.sync="dialogFormViewVisible" center @close="closeFxy">
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">用户ID</span> <span style="width: 200px; display: inline-block; text-align: right">用户ID</span>
<el-input <el-input style="width: 50%" v-model="userId" type="text" placeholder="" :disabled="true">
style="width: 50%"
v-model="userId"
type="text"
placeholder=""
:disabled="true"
>
</el-input> </el-input>
</div> </div>
<div style="margin-bottom: 10px; display: flex"> <div style="margin-bottom: 10px; display: flex">
<span style="width: 200px; display: inline-block; text-align: right">头像</span> <span style="width: 200px; display: inline-block; text-align: right">头像</span>
<div <div style="
style="
width: 148px; width: 148px;
height: 148px; height: 148px;
border: 1px dashed #c0ccda; border: 1px dashed #c0ccda;
border-radius: 6px; border-radius: 6px;
text-align: center; text-align: center;
line-height: 148px; line-height: 148px;
" ">
> <img :src="avatar" class="avatar" style="border-radius: 6px; width: 148px; height: 148px" />
<img
:src="avatar"
class="avatar"
style="border-radius: 6px; width: 148px; height: 148px"
/>
</div> </div>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">昵称</span> <span style="width: 200px; display: inline-block; text-align: right">昵称</span>
<el-input <el-input style="width: 50%" v-model="userName" :disabled="true"></el-input>
style="width: 50%"
v-model="userName"
:disabled="true"
></el-input>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">姓名</span> <span style="width: 200px; display: inline-block; text-align: right">姓名</span>
<el-input <el-input style="width: 50%" v-model="name" :disabled="true"></el-input>
style="width: 50%"
v-model="name"
:disabled="true"
></el-input>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">手机号</span> <span style="width: 200px; display: inline-block; text-align: right">手机号</span>
<el-input <el-input style="width: 50%" v-model="phone" :disabled="true"></el-input>
style="width: 50%"
v-model="phone"
:disabled="true"
></el-input>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">等级</span> <span style="width: 200px; display: inline-block; text-align: right">等级</span>
<el-select <el-select clearable v-model="level" style="width: 150px;" :disabled="true">
clearable
v-model="level"
style="width: 150px;"
:disabled="true">
<el-option :value="1" :key="1" label="一级"></el-option> <el-option :value="1" :key="1" label="一级"></el-option>
<el-option :value="2" :key="2" label="二级"></el-option> <el-option :value="2" :key="2" label="二级"></el-option>
</el-select>&nbsp;&nbsp; </el-select>&nbsp;&nbsp;
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right" <span style="width: 200px; display: inline-block; text-align: right">备注</span>
>备注</span <el-input style="width: 50%" v-model="remarks" type="textarea" :rows="4" :disabled="true">
>
<el-input
style="width: 50%"
v-model="remarks"
type="textarea"
:rows="4"
:disabled="true"
>
</el-input> </el-input>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
@ -293,13 +162,7 @@
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">审批意见</span> <span style="width: 200px; display: inline-block; text-align: right">审批意见</span>
<el-input <el-input style="width: 50%" v-model="opinion" type="textarea" :rows="4" :disabled="true">
style="width: 50%"
v-model="opinion"
type="textarea"
:rows="4"
:disabled="true"
>
</el-input> </el-input>
</div> </div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -310,79 +173,44 @@
<el-dialog :title="titles" :visible.sync="dialogFormVisible" center @close="closeFxy"> <el-dialog :title="titles" :visible.sync="dialogFormVisible" center @close="closeFxy">
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">用户ID</span> <span style="width: 200px; display: inline-block; text-align: right">用户ID</span>
<el-input <el-input style="width: 50%" v-model="userId" type="text" placeholder="请选择用户" :disabled="true">
style="width: 50%"
v-model="userId"
type="text"
placeholder="请选择用户"
:disabled="true"
>
</el-input> </el-input>
</div> </div>
<div style="margin-bottom: 10px; display: flex"> <div style="margin-bottom: 10px; display: flex">
<span style="width: 200px; display: inline-block; text-align: right">头像</span> <span style="width: 200px; display: inline-block; text-align: right">头像</span>
<div <div style="
style="
width: 148px; width: 148px;
height: 148px; height: 148px;
border: 1px dashed #c0ccda; border: 1px dashed #c0ccda;
border-radius: 6px; border-radius: 6px;
text-align: center; text-align: center;
line-height: 148px; line-height: 148px;
" ">
> <img :src="avatar" class="avatar" style="border-radius: 6px; width: 148px; height: 148px" />
<img
:src="avatar"
class="avatar"
style="border-radius: 6px; width: 148px; height: 148px"
/>
</div> </div>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">昵称</span> <span style="width: 200px; display: inline-block; text-align: right">昵称</span>
<el-input <el-input style="width: 50%" v-model="userName" :disabled="true"></el-input>
style="width: 50%"
v-model="userName"
:disabled="true"
></el-input>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">姓名</span> <span style="width: 200px; display: inline-block; text-align: right">姓名</span>
<el-input <el-input style="width: 50%" v-model="name" placeholder="请输入姓名"></el-input>
style="width: 50%"
v-model="name"
placeholder="请输入姓名"
></el-input>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">手机号</span> <span style="width: 200px; display: inline-block; text-align: right">手机号</span>
<el-input <el-input style="width: 50%" v-model="phone" placeholder="请输入手机号"></el-input>
style="width: 50%"
v-model="phone"
placeholder="请输入手机号"
></el-input>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">等级</span> <span style="width: 200px; display: inline-block; text-align: right">等级</span>
<el-select <el-select clearable v-model="level" style="width: 150px;">
clearable
v-model="level"
style="width: 150px;">
<el-option :value="1" :key="1" label="一级"></el-option> <el-option :value="1" :key="1" label="一级"></el-option>
<el-option :value="2" :key="2" label="二级"></el-option> <el-option :value="2" :key="2" label="二级"></el-option>
</el-select>&nbsp;&nbsp; </el-select>&nbsp;&nbsp;
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right" <span style="width: 200px; display: inline-block; text-align: right">备注</span>
>备注</span <el-input style="width: 50%" v-model="remarks" type="textarea" :rows="4" placeholder="请输入备注">
>
<el-input
style="width: 50%"
v-model="remarks"
type="textarea"
:rows="4"
placeholder="请输入备注"
>
</el-input> </el-input>
</div> </div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -394,52 +222,27 @@
<el-dialog title="上级分销员列表" :visible.sync="dialogFxyListFormVisible" width="60%" center> <el-dialog title="上级分销员列表" :visible.sync="dialogFxyListFormVisible" width="60%" center>
<div style="margin-left: 10px; display: inline-block;"> <div style="margin-left: 10px; display: inline-block;">
<span>昵称</span> <span>昵称</span>
<el-input <el-input style="width: 200px" placeholder="请输入姓名" v-model="fxyName"></el-input>
style="width: 200px"
placeholder="请输入姓名"
v-model="fxyName"
></el-input>
</div> </div>
<div style="margin-left: 10px; display: inline-block"> <div style="margin-left: 10px; display: inline-block">
<span>手机号</span> <span>手机号</span>
<el-input <el-input style="width: 200px" placeholder="请输入手机号" v-model="fxyPhone"></el-input>
style="width: 200px"
placeholder="请输入手机号"
v-model="fxyPhone"
></el-input>
</div> </div>
<div style="margin-left: 10px; display: inline-block"> <div style="margin-left: 10px; display: inline-block">
<span>邀请码</span> <span>邀请码</span>
<el-input <el-input style="width: 200px" placeholder="请输入邀请码" v-model="invitationCode"></el-input>
style="width: 200px"
placeholder="请输入邀请码"
v-model="invitationCode"
></el-input>
</div> </div>
<el-button <el-button style="margin-left: 10px;" size="mini" type="primary" icon="document"
style="margin-left: 10px;"
size="mini"
type="primary"
icon="document"
@click="handleSelectSuperiorFxy">查询 @click="handleSelectSuperiorFxy">查询
</el-button> </el-button>
<el-button <el-button style="margin-left: 10px" size="mini" type="primary" icon="document" @click="handleClearFxy">重置
style="margin-left: 10px"
size="mini"
type="primary"
icon="document"
@click="handleClearFxy">重置
</el-button> </el-button>
<el-table :data="fxyTableData.list" style="width: 100%"> <el-table :data="fxyTableData.list" style="width: 100%">
<el-table-column prop="userId" label="用户ID"></el-table-column> <el-table-column prop="userId" label="用户ID"></el-table-column>
<el-table-column prop="avatar" label="头像"> <el-table-column prop="avatar" label="头像">
<template slot-scope="scope"> <template slot-scope="scope">
<img <img v-if="scope.row.avatar && scope.row.avatar != ''" :src="scope.row.avatar" width="40"
v-if="scope.row.avatar && scope.row.avatar != ''" height="40" />
:src="scope.row.avatar"
width="40"
height="40"
/>
<span v-else>暂无图片</span> <span v-else>暂无图片</span>
</template> </template>
</el-table-column> </el-table-column>
@ -448,26 +251,16 @@
<el-table-column prop="invitationCode" label="邀请码"></el-table-column> <el-table-column prop="invitationCode" label="邀请码"></el-table-column>
<el-table-column label="操作" prop="id"> <el-table-column label="操作" prop="id">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button style="margin: 10px 0" size="mini" type="primary" icon="document"
style="margin: 10px 0" @click="handleAddFxy(scope.row)">设置
size="mini"
type="primary"
icon="document"
@click="handleAddFxy(scope.row)"
>设置
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div style="text-align: center; margin-top: 10px"> <div style="text-align: center; margin-top: 10px">
<el-pagination <el-pagination @size-change="handleFxySizeChange" @current-change="handleFxyCurrentChange"
@size-change="handleFxySizeChange" :page-size="fxyLimit" :current-page="fxyPage" layout="total, prev, pager, next,jumper"
@current-change="handleFxyCurrentChange" :total="fxyTableData.totalCount"></el-pagination>
:page-size="fxyLimit"
:current-page="fxyPage"
layout="total, prev, pager, next,jumper"
:total="fxyTableData.totalCount"
></el-pagination>
</div> </div>
</el-dialog> </el-dialog>
<!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<用户列表<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< --> <!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<用户列表<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -->
@ -475,82 +268,44 @@
<el-dialog :title="titles" :visible.sync="dialogApproveFormVisible" center @close="closeFxy"> <el-dialog :title="titles" :visible.sync="dialogApproveFormVisible" center @close="closeFxy">
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">用户ID</span> <span style="width: 200px; display: inline-block; text-align: right">用户ID</span>
<el-input <el-input style="width: 50%" v-model="userId" type="text" placeholder="请选择用户" :disabled="true">
style="width: 50%"
v-model="userId"
type="text"
placeholder="请选择用户"
:disabled="true"
>
</el-input> </el-input>
</div> </div>
<div style="margin-bottom: 10px; display: flex"> <div style="margin-bottom: 10px; display: flex">
<span style="width: 200px; display: inline-block; text-align: right">头像</span> <span style="width: 200px; display: inline-block; text-align: right">头像</span>
<div <div style="
style="
width: 148px; width: 148px;
height: 148px; height: 148px;
border: 1px dashed #c0ccda; border: 1px dashed #c0ccda;
border-radius: 6px; border-radius: 6px;
text-align: center; text-align: center;
line-height: 148px; line-height: 148px;
" ">
> <img :src="avatar" class="avatar" style="border-radius: 6px; width: 148px; height: 148px" />
<img
:src="avatar"
class="avatar"
style="border-radius: 6px; width: 148px; height: 148px"
/>
</div> </div>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">昵称</span> <span style="width: 200px; display: inline-block; text-align: right">昵称</span>
<el-input <el-input style="width: 50%" v-model="userName" :disabled="true"></el-input>
style="width: 50%"
v-model="userName"
:disabled="true"
></el-input>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">姓名</span> <span style="width: 200px; display: inline-block; text-align: right">姓名</span>
<el-input <el-input style="width: 50%" v-model="name" placeholder="请输入姓名" :disabled="true"></el-input>
style="width: 50%"
v-model="name"
placeholder="请输入姓名"
:disabled="true"
></el-input>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">手机号</span> <span style="width: 200px; display: inline-block; text-align: right">手机号</span>
<el-input <el-input style="width: 50%" v-model="phone" placeholder="请输入手机号" :disabled="true"></el-input>
style="width: 50%"
v-model="phone"
placeholder="请输入手机号"
:disabled="true"
></el-input>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">等级</span> <span style="width: 200px; display: inline-block; text-align: right">等级</span>
<el-select <el-select clearable v-model="level" style="width: 150px;" :disabled="true">
clearable
v-model="level"
style="width: 150px;"
:disabled="true">
<el-option :value="1" :key="1" label="一级"></el-option> <el-option :value="1" :key="1" label="一级"></el-option>
<el-option :value="2" :key="2" label="二级"></el-option> <el-option :value="2" :key="2" label="二级"></el-option>
</el-select>&nbsp;&nbsp; </el-select>&nbsp;&nbsp;
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right" <span style="width: 200px; display: inline-block; text-align: right">备注</span>
>备注</span <el-input style="width: 50%" v-model="remarks" type="textarea" :rows="4" :disabled="true">
>
<el-input
style="width: 50%"
v-model="remarks"
type="textarea"
:rows="4"
:disabled="true"
>
</el-input> </el-input>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
@ -562,13 +317,7 @@
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">审批意见</span> <span style="width: 200px; display: inline-block; text-align: right">审批意见</span>
<el-input <el-input style="width: 50%" v-model="opinion" type="textarea" :rows="4" placeholder="请输入审批意见">
style="width: 50%"
v-model="opinion"
type="textarea"
:rows="4"
placeholder="请输入审批意见"
>
</el-input> </el-input>
</div> </div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -584,7 +333,7 @@
export default { export default {
data() { data() {
return { return {
statusData:[{id:0,value:'待授权'},{id:1,value:'已授权'},{id:2,value:'已驳回'}], statusData: [{ id: 0, value: '待授权' }, { id: 1, value: '已授权' }, { id: 2, value: '已驳回' }],
apiUrl: "", apiUrl: "",
titles: "", titles: "",
tableDataLoading: false, tableDataLoading: false,
@ -611,18 +360,64 @@ export default {
fxyPhone: "", fxyPhone: "",
fxyPage: 1, fxyPage: 1,
fxyLimit: 10, fxyLimit: 10,
fxyTableData:{}, fxyTableData: {},
invitationCode: "", invitationCode: "",
configInfo: {},//fxmLimit 1 2 +fxmLimitDays
}; };
}, },
methods: { methods: {
showDictValue(data, datas){ addDaysToDate(createTimeStr, daysToAdd) {
// Date
let date = new Date(createTimeStr.replace(' ', 'T'));
//
date.setDate(date.getDate() + daysToAdd);
//
let year = date.getFullYear();
let month = String(date.getMonth() + 1).padStart(2, '0');
let day = String(date.getDate()).padStart(2, '0');
let hours = String(date.getHours()).padStart(2, '0');
let minutes = String(date.getMinutes()).padStart(2, '0');
let seconds = String(date.getSeconds()).padStart(2, '0');
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
},
calcDqsj(row) {
if (this.configInfo.fxmLimit == 1) return '永久'
else return this.addDaysToDate(row.createTime, this.configInfo.fxmLimitDays)
},
queryConfig() {
return new Promise((resolve, reject) => {
this.$http({
url: this.$http.adornUrl("commission/fxyConfig/info"),
method: 'get',
params: this.$http.adornParams({
id: 1,
}),
}).then(({ data }) => {
if (data && data.code === 0) {
if (data.data != null) {
resolve(data.data);
} else {
resolve({});
}
} else {
resolve({});
}
}).catch(error => {
resolve({});
});
});
},
showDictValue(data, datas) {
const dictItem = datas.find(item => data === item.id); const dictItem = datas.find(item => data === item.id);
return dictItem ? dictItem.value : ''; return dictItem ? dictItem.value : '';
}, },
// //
handleSelect() { async handleSelect() {
this.tableDataLoading = true; this.tableDataLoading = true;
this.configInfo = await this.queryConfig()
this.$http({ this.$http({
url: this.$http.adornUrl("commission/fxyApply/findPage"), url: this.$http.adornUrl("commission/fxyApply/findPage"),
method: "get", method: "get",
@ -635,7 +430,7 @@ export default {
startTime: this.startTime, startTime: this.startTime,
endTime: this.endTime, endTime: this.endTime,
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.tableData = data.data; this.tableData = data.data;
console.log(this.tableData); console.log(this.tableData);
@ -653,7 +448,7 @@ export default {
// //
handleClear() { handleClear() {
this.name = ""; this.name = "";
this.phone =""; this.phone = "";
this.status = ""; this.status = "";
this.startTime = ""; this.startTime = "";
this.endTime = ""; this.endTime = "";
@ -687,7 +482,7 @@ export default {
this.dialogApproveFormVisible = true; this.dialogApproveFormVisible = true;
}, },
handleView(row){ handleView(row) {
this.titles = "查看"; this.titles = "查看";
this.id = row.id; this.id = row.id;
this.userId = row.userId; this.userId = row.userId;
@ -732,7 +527,7 @@ export default {
this.dialogFormVisible = true; this.dialogFormVisible = true;
}, },
closeFxy(){ closeFxy() {
this.handleClear(); this.handleClear();
}, },
// //
@ -798,7 +593,7 @@ export default {
level: this.level, level: this.level,
remarks: this.remarks, remarks: this.remarks,
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.dialogFormVisible = false; this.dialogFormVisible = false;
this.clearDatas(); this.clearDatas();
@ -821,7 +616,7 @@ export default {
} }
}); });
}, },
handleDelete(row){ handleDelete(row) {
this.$confirm(`确定删除此条信息?`, "提示", { this.$confirm(`确定删除此条信息?`, "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
@ -834,7 +629,7 @@ export default {
params: this.$http.adornParams({ params: this.$http.adornParams({
id: id id: id
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.clearDatas(); this.clearDatas();
this.$message({ this.$message({
@ -855,7 +650,7 @@ export default {
}); });
} }
}); });
}).catch(() => {}); }).catch(() => { });
}, },
// //
handleApprove() { handleApprove() {
@ -889,7 +684,7 @@ export default {
userId: this.userId, userId: this.userId,
level: this.level, level: this.level,
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.dialogApproveFormVisible = false; this.dialogApproveFormVisible = false;
this.clearDatas(); this.clearDatas();
@ -913,7 +708,7 @@ export default {
}); });
}, },
// //
handleCancelApply(row){ handleCancelApply(row) {
let id = row.id; let id = row.id;
let userId = row.userId; let userId = row.userId;
this.$http({ this.$http({
@ -925,7 +720,7 @@ export default {
status: 0, status: 0,
userId: userId userId: userId
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.clearDatas(); this.clearDatas();
this.$message({ this.$message({
@ -947,32 +742,32 @@ export default {
} }
}); });
}, },
clearDatas(){ clearDatas() {
this.apiUrl=""; this.apiUrl = "";
this.tableDataLoading= false; this.tableDataLoading = false;
this.id= ""; this.id = "";
this.name= ""; this.name = "";
this.phone= ""; this.phone = "";
this.level= ""; this.level = "";
this.status= ""; this.status = "";
this.startTime= ""; this.startTime = "";
this.endTime= ""; this.endTime = "";
this.page= 1; this.page = 1;
this.limit= 10; this.limit = 10;
this.dialogFormVisible= false; this.dialogFormVisible = false;
this.dialogApproveFormVisible= false; this.dialogApproveFormVisible = false;
}, },
closeDetail(){ closeDetail() {
this.handleSelect(); this.handleSelect();
}, },
handleSuperiorFxyView(row){ handleSuperiorFxyView(row) {
this.userId = row.userId, this.userId = row.userId,
this.handleClearFxy(); this.handleClearFxy();
this.dialogFxyListFormVisible = true; this.dialogFxyListFormVisible = true;
}, },
handleSelectSuperiorFxy(){ handleSelectSuperiorFxy() {
this.fxyTableDataLoading = true; this.fxyTableDataLoading = true;
this.$http({ this.$http({
url: this.$http.adornUrl("commission/fxyApply/findSuperiorFxyPage"), url: this.$http.adornUrl("commission/fxyApply/findSuperiorFxyPage"),
@ -984,7 +779,7 @@ export default {
phone: this.fxyPhone, phone: this.fxyPhone,
invitationCode: this.invitationCode, invitationCode: this.invitationCode,
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.fxyTableData = data.data; this.fxyTableData = data.data;
} else { } else {
@ -1021,7 +816,7 @@ export default {
this.handleSelectSuperiorFxy(); this.handleSelectSuperiorFxy();
}, },
handleAddFxy(row){ handleAddFxy(row) {
let userId = this.userId; let userId = this.userId;
let invitationCode = row.invitationCode; let invitationCode = row.invitationCode;
this.$http({ this.$http({
@ -1031,7 +826,7 @@ export default {
userId: userId, userId: userId,
invitationCode: invitationCode, invitationCode: invitationCode,
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.clearDatas(); this.clearDatas();
this.$message({ this.$message({
@ -1066,6 +861,7 @@ export default {
.customWidth { .customWidth {
width: 80% !important; width: 80% !important;
} }
.el-dialog--center { .el-dialog--center {
text-align: center; text-align: center;
margin-top: 1vh !important; margin-top: 1vh !important;

View File

@ -1,11 +1,18 @@
<template> <template>
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="220px"> <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()"
label-width="250px">
<el-row> <el-row>
<el-col style="background: #ff00001f;line-height: 40px;padding-left: 10px;margin-bottom: 10px;"> <el-col style="background: #ff00001f;line-height: 40px;padding-left: 10px;margin-bottom: 10px;">
<span>分销员的佣金应该由该笔订单服务技师和该技师绑定的上级代理承担</span> <span>分销员的佣金应该由该笔订单服务技师和该技师绑定的上级代理承担</span>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="启用分销员功能" prop="isOpen"> <el-form-item label="启用分销员功能" prop="isOpen">
<label slot="label">
启用分销员功能
<el-tooltip effect="dark" content="关闭后用户端不展示“我是经纪人”功能,并不参与分佣计算。" placement="right">
<i class="el-icon-question"></i>
</el-tooltip>
</label>
<el-radio-group v-model="dataForm.isOpen"> <el-radio-group v-model="dataForm.isOpen">
<el-radio :label="1">开启</el-radio> <el-radio :label="1">开启</el-radio>
<el-radio :label="0">关闭</el-radio> <el-radio :label="0">关闭</el-radio>
@ -14,6 +21,15 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="分销员审核" prop="isApprove"> <el-form-item label="分销员审核" prop="isApprove">
<label slot="label">
分销员审核
<el-tooltip effect="dark" placement="right">
<template slot="content">
关闭后用户端不展示申请经纪人功能并不参与分佣计算
</template>
<i class="el-icon-question"></i>
</el-tooltip>
</label>
<el-radio-group v-model="dataForm.isApprove"> <el-radio-group v-model="dataForm.isApprove">
<el-radio :label="1">开启</el-radio> <el-radio :label="1">开启</el-radio>
<el-radio :label="0">关闭</el-radio> <el-radio :label="0">关闭</el-radio>
@ -22,6 +38,15 @@
</el-col> </el-col>
<el-col> <el-col>
<el-form-item label="分销提成方式" prop="type"> <el-form-item label="分销提成方式" prop="type">
<label slot="label">
分销提成方式
<!-- <el-tooltip effect="dark" placement="right">
<template slot="content">
abc
</template>
<i class="el-icon-question"></i>
</el-tooltip> -->
</label>
<el-radio-group v-model="dataForm.type"> <el-radio-group v-model="dataForm.type">
<el-radio :label="1">按人员来提成</el-radio> <el-radio :label="1">按人员来提成</el-radio>
<el-radio :label="2">按服务项目来提成</el-radio> <el-radio :label="2">按服务项目来提成</el-radio>
@ -30,46 +55,88 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="一级分销返佣(%)" prop="oneRate"> <el-form-item label="一级分销返佣(%)" prop="oneRate">
<el-input-number v-model="dataForm.oneRate" controls-position="right" :precision="2" :min="0" :step="1"/> <label slot="label">
一级分销返佣(%)
<el-tooltip effect="dark" placement="right">
<template slot="content">
一级分销员分佣计算所使用的比例当为0时取一级推荐提成比例
</template>
<i class="el-icon-question"></i>
</el-tooltip>
</label>
<el-input-number v-model="dataForm.oneRate" controls-position="right" :precision="2" :min="0"
:step="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="二级分销返佣(%)" prop="twoRate"> <el-form-item label="二级分销返佣(%)" prop="twoRate">
<el-input-number v-model="dataForm.twoRate" controls-position="right" :precision="2" :min="0" :step="1"/> <label slot="label">
二级分销返佣(%)
<el-tooltip effect="dark" placement="right">
<template slot="content">
二级分销员分佣计算所使用的比例当为0时取二级推荐提成比例
</template>
<i class="el-icon-question"></i>
</el-tooltip>
</label>
<el-input-number v-model="dataForm.twoRate" controls-position="right" :precision="2" :min="0"
:step="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="技师承担(%)" prop="artificerRate"> <el-form-item label="技师承担(%)" prop="artificerRate">
<el-input-number v-model="dataForm.artificerRate" controls-position="right" :precision="2" :min="0" :step="1"/> <label slot="label">
技师承担(%)
<el-tooltip effect="dark" placement="right">
<template slot="content">
一级分销员分佣费用从技师身上扣除的百分比
</template>
<i class="el-icon-question"></i>
</el-tooltip>
</label>
<el-input-number v-model="dataForm.artificerRate" controls-position="right" :precision="2" :min="0"
:step="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="技师所属代理承担(%)" prop="agentRate"> <el-form-item label="技师所属代理承担(%)" prop="agentRate">
<el-input-number v-model="dataForm.agentRate" controls-position="right" :precision="2" :min="0" :step="1"/> <label slot="label">
技师所属代理承担(%)
<el-tooltip effect="dark" placement="right">
<template slot="content">
二级分销员分佣费用从技师身上扣除的百分比
</template>
<i class="el-icon-question"></i>
</el-tooltip>
</label>
<el-input-number v-model="dataForm.agentRate" controls-position="right" :precision="2" :min="0"
:step="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col> <el-col>
<el-form-item label="邀请用户/下级返佣最高比例(%)" prop="mostRate"> <el-form-item label="邀请用户/下级返佣最高比例(%)" prop="mostRate">
<el-input-number v-model="dataForm.mostRate" controls-position="right" :precision="2" :min="0" :step="1"/> <label slot="label">
邀请用户/下级返佣最高比例(%)
<el-tooltip effect="dark" placement="right">
<template slot="content">
二级分销员从一级分销员身上分润最大百分比如此处设置10%一级分销员分佣5元二级分销员从一级分销员分润5元*10%
</template>
<i class="el-icon-question"></i>
</el-tooltip>
</label>
<el-input-number v-model="dataForm.mostRate" controls-position="right" :precision="2" :min="0"
:step="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="邀请用户推广海报背景图" prop="userImage"> <el-form-item label="邀请用户推广海报背景图" prop="userImage">
<div style="width: 148px;height: 148px;border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;"> <div
<el-upload style="width: 148px;height: 148px;border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;">
class="avatar-uploader" <el-upload class="avatar-uploader" v-model="dataForm.userImage" :action="uploadUrl"
v-model="dataForm.userImage" :show-file-list="false" :on-success="handleUserImageSuccess"
:action="uploadUrl" :on-progress="onUserImageProgress">
:show-file-list="false" <img v-if="dataForm.userImage != ''" :src="dataForm.userImage" class="avatar"
:on-success="handleUserImageSuccess" style="border-radius: 6px; width: 148px; height: 148px" />
:on-progress="onUserImageProgress"
>
<img
v-if="dataForm.userImage != ''"
:src="dataForm.userImage"
class="avatar"
style="border-radius: 6px; width: 148px; height: 148px"
/>
<i v-else class="el-icon-plus avatar-uploader-icon iconss"></i> <i v-else class="el-icon-plus avatar-uploader-icon iconss"></i>
</el-upload> </el-upload>
</div> </div>
@ -77,21 +144,13 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="邀请分销员推广海报背景图" prop="fxyImage"> <el-form-item label="邀请分销员推广海报背景图" prop="fxyImage">
<div style="width: 148px;height: 148px;border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;"> <div
<el-upload style="width: 148px;height: 148px;border: 1px dashed #c0ccda;border-radius: 6px;text-align: center;line-height: 148px;">
class="avatar-uploader" <el-upload class="avatar-uploader" v-model="dataForm.fxyImage" :action="uploadUrl"
v-model="dataForm.fxyImage" :show-file-list="false" :on-success="handleFxyImageSuccess"
:action="uploadUrl" :on-progress="onFxyImageProgress">
:show-file-list="false" <img v-if="dataForm.fxyImage != ''" :src="dataForm.fxyImage" class="avatar"
:on-success="handleFxyImageSuccess" style="border-radius: 6px; width: 148px; height: 148px" />
:on-progress="onFxyImageProgress"
>
<img
v-if="dataForm.fxyImage != ''"
:src="dataForm.fxyImage"
class="avatar"
style="border-radius: 6px; width: 148px; height: 148px"
/>
<i v-else class="el-icon-plus avatar-uploader-icon iconss"></i> <i v-else class="el-icon-plus avatar-uploader-icon iconss"></i>
</el-upload> </el-upload>
</div> </div>
@ -102,22 +161,62 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="一级分销员门槛费" prop="oneFee"> <el-form-item label="一级分销员门槛费" prop="oneFee">
<el-input-number v-model="dataForm.oneFee" controls-position="right" :precision="2" :min="0" :step="1"/> <label slot="label">
一级分销员门槛费
<el-tooltip effect="dark" placement="right">
<template slot="content">
申请一级分销员时所缴的手续费
</template>
<i class="el-icon-question"></i>
</el-tooltip>
</label>
<el-input-number v-model="dataForm.oneFee" controls-position="right" :precision="2" :min="0"
:step="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="一级推荐提成(%)" prop="oneRecommendRate"> <el-form-item label="一级推荐提成(%)" prop="oneRecommendRate">
<el-input-number v-model="dataForm.oneRecommendRate" controls-position="right" :precision="2" :min="0" :step="1"/> <label slot="label">
一级推荐提成(%)
<el-tooltip effect="dark" placement="right">
<template slot="content">
一级分销员推荐提成比例
</template>
<i class="el-icon-question"></i>
</el-tooltip>
</label>
<el-input-number v-model="dataForm.oneRecommendRate" controls-position="right" :precision="2"
:min="0" :step="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="二级分销员门槛费" prop="twoFee"> <el-form-item label="二级分销员门槛费" prop="twoFee">
<el-input-number v-model="dataForm.twoFee" controls-position="right" :precision="2" :min="0" :step="1"/> <label slot="label">
二级分销员门槛费
<el-tooltip effect="dark" placement="right">
<template slot="content">
申请二级分销员时所缴的手续费
</template>
<i class="el-icon-question"></i>
</el-tooltip>
</label>
<el-input-number v-model="dataForm.twoFee" controls-position="right" :precision="2" :min="0"
:step="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="二级推荐提成(%)" prop="twoRecommendRate"> <el-form-item label="二级推荐提成(%)" prop="twoRecommendRate">
<el-input-number v-model="dataForm.twoRecommendRate" controls-position="right" :precision="2" :min="0" :step="1"/> <label slot="label">
二级推荐提成(%)
<el-tooltip effect="dark" placement="right">
<template slot="content">
二级分销员推荐提成比例
</template>
<i class="el-icon-question"></i>
</el-tooltip>
</label>
<el-input-number v-model="dataForm.twoRecommendRate" controls-position="right" :precision="2"
:min="0" :step="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col style="background: rgb(0,161,255,0.12);line-height: 40px;padding-left: 10px;margin-bottom: 10px;"> <el-col style="background: rgb(0,161,255,0.12);line-height: 40px;padding-left: 10px;margin-bottom: 10px;">
@ -125,6 +224,16 @@
</el-col> </el-col>
<el-col> <el-col>
<el-form-item label="分销码时效性" prop="fxmLimit"> <el-form-item label="分销码时效性" prop="fxmLimit">
<label slot="label">
分销码时效性
<el-tooltip effect="dark" placement="right">
<template slot="content">
永久性分销员分佣无时间天数限制<br/>
限制时效天数分销员有效分佣天数=注册开始时间+配置天数
</template>
<i class="el-icon-question"></i>
</el-tooltip>
</label>
<el-radio-group v-model="dataForm.fxmLimit"> <el-radio-group v-model="dataForm.fxmLimit">
<el-radio :label="1">永久性</el-radio> <el-radio :label="1">永久性</el-radio>
<el-radio :label="2">限制时效天数</el-radio> <el-radio :label="2">限制时效天数</el-radio>
@ -133,7 +242,8 @@
</el-col> </el-col>
<el-col v-if="dataForm.fxmLimit == 2"> <el-col v-if="dataForm.fxmLimit == 2">
<el-form-item label="" prop="fxmLimitDays"> <el-form-item label="" prop="fxmLimitDays">
<el-input-number v-model="dataForm.fxmLimitDays" controls-position="right" :precision="2" :min="0" :step="1"/> <el-input-number v-model="dataForm.fxmLimitDays" controls-position="right" :precision="2" :min="0"
:step="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col> <el-col>
@ -145,7 +255,7 @@
<script> <script>
let defReqRule = (message = '不能为空') => { return { required: true, message, trigger: 'blur' } }; let defReqRule = (message = '不能为空') => { return { required: true, message, trigger: 'blur' } };
import {serverPaths} from '@/utils/enumData' import { serverPaths } from '@/utils/enumData'
export default { export default {
data() { data() {
return { return {
@ -173,21 +283,21 @@ export default {
fxmLimitDays: "", fxmLimitDays: "",
}, },
dataRule: { dataRule: {
isOpen: [ defReqRule('请选择是否启用') ], isOpen: [defReqRule('请选择是否启用')],
isApprove: [ defReqRule('请选择是否审核') ], isApprove: [defReqRule('请选择是否审核')],
type: [ defReqRule('请选择提成方式') ], type: [defReqRule('请选择提成方式')],
oneRate: [ defReqRule('请输入一级分销返佣!') ], oneRate: [defReqRule('请输入一级分销返佣!')],
twoRate: [ defReqRule('请输入二级分销返佣') ], twoRate: [defReqRule('请输入二级分销返佣')],
artificerRate: [ defReqRule('请输入技师承担') ], artificerRate: [defReqRule('请输入技师承担')],
agentRate: [ defReqRule('请代理商承担') ], agentRate: [defReqRule('请代理商承担')],
mostRate: [ defReqRule('请输入返佣最高比例') ], mostRate: [defReqRule('请输入返佣最高比例')],
userImage: [ defReqRule('请上传邀请用户推广海报背景图') ], userImage: [defReqRule('请上传邀请用户推广海报背景图')],
fxyImage: [ defReqRule('请上传邀请分销员推广海报背景图') ], fxyImage: [defReqRule('请上传邀请分销员推广海报背景图')],
oneFee: [ defReqRule('请输入一级分销员门槛费') ], oneFee: [defReqRule('请输入一级分销员门槛费')],
oneRecommendRate: [ defReqRule('请输入一级推荐提成') ], oneRecommendRate: [defReqRule('请输入一级推荐提成')],
twoFee: [ defReqRule('请输入二级分销员门槛费') ], twoFee: [defReqRule('请输入二级分销员门槛费')],
twoRecommendRate: [ defReqRule('请输入二级推荐提成') ], twoRecommendRate: [defReqRule('请输入二级推荐提成')],
fxmLimit: [ defReqRule('请选择分销码时效性') ], fxmLimit: [defReqRule('请选择分销码时效性')],
}, },
} }
}, },
@ -204,7 +314,7 @@ export default {
}), }),
}).then(({ data }) => { }).then(({ data }) => {
if (data && data.code === 0) { if (data && data.code === 0) {
if(data.data!=null){ if (data.data != null) {
this.dataForm = data.data this.dataForm = data.data
} }
} }
@ -226,7 +336,7 @@ export default {
url: this.$http.adornUrl("commission/fxyConfig/save"), url: this.$http.adornUrl("commission/fxyConfig/save"),
method: 'post', method: 'post',
params: this.$http.adornParams(saveData) params: this.$http.adornParams(saveData)
}).then(({data}) => { }).then(({ data }) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.$message({ this.$message({
message: '操作成功', message: '操作成功',

View File

@ -3,190 +3,107 @@
<!-- 列表 --> <!-- 列表 -->
<div style="margin-left:10px;display: inline-block"> <div style="margin-left:10px;display: inline-block">
<span>姓名</span> <span>姓名</span>
<el-input <el-input style="width: 200px" placeholder="请输入姓名" v-model="name">
style="width: 200px"
placeholder="请输入姓名"
v-model="name">
</el-input> </el-input>
</div> </div>
<div style="margin-left:10px;display: inline-block"> <div style="margin-left:10px;display: inline-block">
<span>电话</span> <span>电话</span>
<el-input <el-input style="width: 200px" placeholder="请输入电话" v-model="phone">
style="width: 200px"
placeholder="请输入电话"
v-model="phone">
</el-input> </el-input>
</div> </div>
<div style="margin-left:10px;display: inline-block;"> <div style="margin-left:10px;display: inline-block;">
<span>入驻开始时间</span> <span>入驻开始时间</span>
<el-date-picker style="width: 160px;" v-model="startTime" align="right" <el-date-picker style="width: 160px;" v-model="startTime" align="right" type="datetime" format="yyyy-MM-dd"
type="datetime" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择开始时间"> value-format="yyyy-MM-dd" placeholder="选择开始时间">
</el-date-picker>&nbsp;&nbsp;&nbsp; </el-date-picker>&nbsp;&nbsp;&nbsp;
</div> </div>
<div style="margin-left:10px;display: inline-block;"> <div style="margin-left:10px;display: inline-block;">
<span>入驻截止时间</span> <span>入驻截止时间</span>
<el-date-picker style="width: 160px;" v-model="endTime" align="right" type="datetime" <el-date-picker style="width: 160px;" v-model="endTime" align="right" type="datetime" format="yyyy-MM-dd"
format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择截止时间"> value-format="yyyy-MM-dd" placeholder="选择截止时间">
</el-date-picker> </el-date-picker>
</div> </div>
<el-button <el-button style="margin-left: 10px" size="mini" type="primary" icon="document" @click="handleSelect">查询
style="margin-left: 10px"
size="mini"
type="primary"
icon="document"
@click="handleSelect"
>查询
</el-button> </el-button>
<el-button <el-button style="margin-left: 10px" size="mini" type="primary" icon="document" @click="handleClear">重置
style="margin-left: 10px"
size="mini"
type="primary"
icon="document"
@click="handleClear"
>重置
</el-button> </el-button>
<el-table v-loading="tableDataLoading" :data="tableData.list"> <el-table v-loading="tableDataLoading" :data="tableData.list">
<el-table-column <el-table-column prop="id" label="编号" width="80">
prop="id"
label="编号"
width="80"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="userId" label="用户ID">
prop="userId"
label="用户ID"
width="150"
>
</el-table-column> </el-table-column>
<el-table-column prop="avatar" label="头像"> <el-table-column prop="avatar" label="头像">
<template slot-scope="scope"> <template slot-scope="scope">
<img <img v-if="scope.row.avatar && scope.row.avatar != ''" :src="scope.row.avatar" width="40"
v-if="scope.row.avatar && scope.row.avatar != ''" height="40" />
:src="scope.row.avatar"
width="40"
height="40"
/>
<span v-else>暂无图片</span> <span v-else>暂无图片</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="级别">
prop="userName" <template slot-scope="scope">
label="昵称" <span>{{ calcLevel(scope.row) }}</span>
width="150" </template>
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="提成比例">
prop="name" <template slot-scope="scope">
label="姓名" <span>{{ calcRate(scope.row) }}</span>
width="150" </template>
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="userName" label="昵称">
prop="phone"
label="手机号"
width="150"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="name" label="姓名">
prop="approveTime"
label="入驻时间"
width="180"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="phone" label="手机号" width="150">
prop="artificerCount"
label="累计邀请技师"
width="150"
align="right"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="approveTime" label="入驻时间" width="180">
prop="ordersCount"
label="累计成交订单数量"
width="150"
align="right"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="artificerCount" label="累计邀请技师" align="right">
prop="money" </el-table-column>
label="累计获得佣金" <el-table-column prop="ordersCount" label="累计成交订单数量" width="150" align="right">
width="150" </el-table-column>
align="right" <el-table-column prop="money" label="累计获得佣金" width="150" align="right">
> <template slot-scope="scope">
<span style="color: #3E8EF7;cursor: pointer;" @click="moneyDetail(scope.row)">{{ scope.row.money }}</span>
</template>
</el-table-column> </el-table-column>
<el-table-column label="操作" prop="id" width="150" fixed="right"> <el-table-column label="操作" prop="id" width="150" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button size="mini" type="primary" style="margin: 5px"
size="mini" @click="handleInvitationView(scope.row)">邀请的技师
type="primary"
style="margin: 5px"
@click="handleInvitationView(scope.row)"
>邀请的技师
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div style="text-align: center; margin-top: 10px"> <div style="text-align: center; margin-top: 10px">
<el-pagination <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
@size-change="handleSizeChange" :page-sizes="[10, 20, 30, 40]" :page-size="limit" :current-page="page"
@current-change="handleCurrentChange" layout="total,sizes, prev, pager, next,jumper" :total="tableData.totalCount">
:page-sizes="[10, 20, 30, 40]"
:page-size="limit"
:current-page="page"
layout="total,sizes, prev, pager, next,jumper"
:total="tableData.totalCount"
>
</el-pagination> </el-pagination>
</div> </div>
<!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 用户列表弹框 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<--> <!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 用户列表弹框 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
<el-dialog title="邀请技师列表" :visible.sync="dialogUserListFormVisible" width="60%" center @close="closeUserList"> <el-dialog title="邀请技师列表" :visible.sync="dialogUserListFormVisible" width="60%" center @close="closeUserList">
<div style="margin-left: 10px; display: inline-block;"> <div style="margin-left: 10px; display: inline-block;">
<span>姓名</span> <span>姓名</span>
<el-input <el-input style="width: 200px" placeholder="请输入姓名" v-model="userName"></el-input>
style="width: 200px"
placeholder="请输入姓名"
v-model="userName"
></el-input>
</div> </div>
<div style="margin-left: 10px; display: inline-block"> <div style="margin-left: 10px; display: inline-block">
<span>手机号</span> <span>手机号</span>
<el-input <el-input style="width: 200px" placeholder="请输入手机号" v-model="userPhone"></el-input>
style="width: 200px"
placeholder="请输入手机号"
v-model="userPhone"
></el-input>
</div> </div>
<el-button <el-button style="margin-left: 10px;" size="mini" type="primary" icon="document"
style="margin-left: 10px;"
size="mini"
type="primary"
icon="document"
@click="handleSelectUsers">查询 @click="handleSelectUsers">查询
</el-button> </el-button>
<el-button <el-button style="margin-left: 10px" size="mini" type="primary" icon="document" @click="handleClearUsers">重置
style="margin-left: 10px"
size="mini"
type="primary"
icon="document"
@click="handleClearUsers">重置
</el-button> </el-button>
<el-button <el-button style="margin-left: 10px" size="mini" type="primary" icon="document"
style="margin-left: 10px"
size="mini"
type="primary"
icon="document"
@click="showArtificerView">技师列表 @click="showArtificerView">技师列表
</el-button> </el-button>
<el-table :data="userTableData.list" style="width: 100%"> <el-table :data="userTableData.list" style="width: 100%">
<el-table-column prop="userId" label="用户ID"></el-table-column> <el-table-column prop="userId" label="用户ID"></el-table-column>
<el-table-column prop="avatar" label="头像"> <el-table-column prop="avatar" label="头像">
<template slot-scope="scope"> <template slot-scope="scope">
<img <img v-if="scope.row.avatar && scope.row.avatar != ''" :src="scope.row.avatar" width="40"
v-if="scope.row.avatar && scope.row.avatar != ''" height="40" />
:src="scope.row.avatar"
width="40"
height="40"
/>
<span v-else>暂无图片</span> <span v-else>暂无图片</span>
</template> </template>
</el-table-column> </el-table-column>
@ -194,72 +111,43 @@
<el-table-column prop="phone" label="手机号"></el-table-column> <el-table-column prop="phone" label="手机号"></el-table-column>
<el-table-column label="操作" prop="id"> <el-table-column label="操作" prop="id">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button style="margin: 10px 0" size="mini" type="primary" icon="document"
style="margin: 10px 0" @click="handleCancelInvitation(scope.row)">取消邀请
size="mini"
type="primary"
icon="document"
@click="handleCancelInvitation(scope.row)"
>取消邀请
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div style="text-align: center; margin-top: 10px"> <div style="text-align: center; margin-top: 10px">
<el-pagination <el-pagination @size-change="handleUserSizeChange" @current-change="handleUserCurrentChange"
@size-change="handleUserSizeChange" :page-size="userLimit" :current-page="userPage" layout="total, prev, pager, next,jumper"
@current-change="handleUserCurrentChange" :total="userTableData.totalCount"></el-pagination>
:page-size="userLimit"
:current-page="userPage"
layout="total, prev, pager, next,jumper"
:total="userTableData.totalCount"
></el-pagination>
</div> </div>
</el-dialog> </el-dialog>
<!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<用户列表<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< --> <!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<用户列表<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -->
<!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 技师列表弹框 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<--> <!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 技师列表弹框 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
<el-dialog title="技师列表" :visible.sync="dialogArtificerListFormVisible" width="60%" center @close="closeInvitation"> <el-dialog title="技师列表" :visible.sync="dialogArtificerListFormVisible" width="60%" center
@close="closeInvitation">
<div style="margin-left: 10px; display: inline-block;"> <div style="margin-left: 10px; display: inline-block;">
<span>姓名</span> <span>姓名</span>
<el-input <el-input style="width: 200px" placeholder="请输入姓名" v-model="artificerName"></el-input>
style="width: 200px"
placeholder="请输入姓名"
v-model="artificerName"
></el-input>
</div> </div>
<div style="margin-left: 10px; display: inline-block"> <div style="margin-left: 10px; display: inline-block">
<span>手机号</span> <span>手机号</span>
<el-input <el-input style="width: 200px" placeholder="请输入手机号" v-model="artificerPhone"></el-input>
style="width: 200px"
placeholder="请输入手机号"
v-model="artificerPhone"
></el-input>
</div> </div>
<el-button <el-button style="margin-left: 10px;" size="mini" type="primary" icon="document"
style="margin-left: 10px;"
size="mini"
type="primary"
icon="document"
@click="handleSelectArtificer">查询 @click="handleSelectArtificer">查询
</el-button> </el-button>
<el-button <el-button style="margin-left: 10px" size="mini" type="primary" icon="document"
style="margin-left: 10px"
size="mini"
type="primary"
icon="document"
@click="handleClearArtificers">重置 @click="handleClearArtificers">重置
</el-button> </el-button>
<el-table :data="artificerTableData.list" style="width: 100%"> <el-table :data="artificerTableData.list" style="width: 100%">
<el-table-column prop="userId" label="用户ID"></el-table-column> <el-table-column prop="userId" label="用户ID"></el-table-column>
<el-table-column prop="avatar" label="头像"> <el-table-column prop="avatar" label="头像">
<template slot-scope="scope"> <template slot-scope="scope">
<img <img v-if="scope.row.avatar && scope.row.avatar != ''" :src="scope.row.avatar" width="40"
v-if="scope.row.avatar && scope.row.avatar != ''" height="40" />
:src="scope.row.avatar"
width="40"
height="40"
/>
<span v-else>暂无图片</span> <span v-else>暂无图片</span>
</template> </template>
</el-table-column> </el-table-column>
@ -267,30 +155,33 @@
<el-table-column prop="phone" label="手机号"></el-table-column> <el-table-column prop="phone" label="手机号"></el-table-column>
<el-table-column label="操作" prop="id"> <el-table-column label="操作" prop="id">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button style="margin: 10px 0" size="mini" type="primary" icon="document"
style="margin: 10px 0" @click="handleInvitation(scope.row)">邀请
size="mini"
type="primary"
icon="document"
@click="handleInvitation(scope.row)"
>邀请
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div style="text-align: center; margin-top: 10px"> <div style="text-align: center; margin-top: 10px">
<el-pagination <el-pagination @size-change="handleArtificerSizeChange" @current-change="handleArtificerCurrentChange"
@size-change="handleArtificerSizeChange" :page-size="artificerLimit" :current-page="artificerPage" layout="total, prev, pager, next,jumper"
@current-change="handleArtificerCurrentChange" :total="artificerTableData.totalCount"></el-pagination>
:page-size="artificerLimit" </div>
:current-page="artificerPage" </el-dialog>
layout="total, prev, pager, next,jumper" <!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<技师列表<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -->
:total="artificerTableData.totalCount" <!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 佣金详细信息弹框 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
></el-pagination> <el-dialog title="佣金详细信息列表" :visible.sync="yjxxVisible" width="60%" center @close="yjxxVisible = false">
<el-table :data="moneyDetailData.list" style="width: 100%">
<el-table-column prop="createTime" label="日期"></el-table-column>
<el-table-column prop="money" label="金额"></el-table-column>
<el-table-column prop="title" label="详情"></el-table-column>
</el-table>
<div style="text-align: center; margin-top: 10px">
<el-pagination @size-change="handleyjxxSizeChange" @current-change="handleyjxxCurrentChange"
:page-size="yjxxLimit" :current-page="yjxxPage" layout="total, prev, pager, next,jumper"
:total="moneyDetailData.totalCount"></el-pagination>
</div> </div>
</el-dialog> </el-dialog>
<!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<技师列表<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< --> <!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<技师列表<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -->
</div> </div>
</template> </template>
@ -318,18 +209,59 @@ export default {
userPhone: "", userPhone: "",
userPage: 1, userPage: 1,
userLimit: 10, userLimit: 10,
userTableData:{}, userTableData: {},
dialogArtificerListFormVisible: false, dialogArtificerListFormVisible: false,
artificerTableDataLoading: false, artificerTableDataLoading: false,
artificerName: "", artificerName: "",
artificerPhone: "", artificerPhone: "",
artificerPage: 1, artificerPage: 1,
artificerLimit: 10, artificerLimit: 10,
artificerTableData:{}, artificerTableData: {},
jsjb: [],// minNumber maxNumber level rate
moneyDetailData: [],
yjxxVisible:false,
yjxxPage:1,
yjxxLimit:10,
yjxxUserId:''
}; };
}, },
methods: { methods: {
showDictValue(data, datas){ calcLevel(row) {
let result = []
if (row.artificerCount == 0) {
result = this.jsjb.filter(item => { return item.minNumber == 0 })
} else {
result = this.jsjb.filter(item => { return row.artificerCount > item.minNumber && row.artificerCount <= item.maxNumber })
}
return result[0] ? result[0].level : ''
},
calcRate(row) {
let result = []
if (row.artificerCount == 0) {
result = this.jsjb.filter(item => { return item.minNumber == 0 })
} else {
result = this.jsjb.filter(item => { return row.artificerCount > item.minNumber && row.artificerCount <= item.maxNumber })
}
return result[0] ? result[0].rate + '%' : ''
},
queryJsjb() {
return new Promise((resolve, reject) => {
this.$http({
url: this.$http.adornUrl("commission/jjrConfigLevel/findList"),
method: "get",
params: this.$http.adornParams({}),
}).then(({ data }) => {
if (data.code == 0) {
resolve(data.data);
} else {
reject([]);
}
}).catch(error => {
reject([]);
});
});
},
showDictValue(data, datas) {
const dictItem = datas.find(item => data === item.id); const dictItem = datas.find(item => data === item.id);
return dictItem ? dictItem.value : ''; return dictItem ? dictItem.value : '';
}, },
@ -347,7 +279,7 @@ export default {
startTime: this.startTime, startTime: this.startTime,
endTime: this.endTime, endTime: this.endTime,
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.tableData = data.data; this.tableData = data.data;
console.log(this.tableData); console.log(this.tableData);
@ -365,7 +297,7 @@ export default {
// //
handleClear() { handleClear() {
this.name = ""; this.name = "";
this.phone =""; this.phone = "";
this.startTime = ""; this.startTime = "";
this.endTime = ""; this.endTime = "";
this.page = 1; this.page = 1;
@ -384,16 +316,35 @@ export default {
this.handleSelect(); this.handleSelect();
}, },
closeUserList(){ closeUserList() {
this.handleClear(); this.handleClear();
}, },
handleInvitationView(row){ handleInvitationView(row) {
this.invitationCode = row.invitationCode; this.invitationCode = row.invitationCode;
this.handleSelectUsers(); this.handleSelectUsers();
this.dialogUserListFormVisible = true; this.dialogUserListFormVisible = true;
}, },
handleSelectUsers(){ moneyDetail(row) {
if(row){
this.yjxxPage = 1
this.yjxxLimit = 10
this.yjxxUserId = row.userId
}
this.$http({
url: this.$http.adornUrl("commission/jjrData/moneyDetail"),
method: "get",
params: this.$http.adornParams({
page: this.yjxxPage,
limit: this.yjxxLimit,
userId: this.yjxxUserId
}),
}).then(({ data }) => {
this.moneyDetailData = data.data
this.yjxxVisible = true
})
},
handleSelectUsers() {
this.userTableDataLoading = true; this.userTableDataLoading = true;
this.$http({ this.$http({
url: this.$http.adornUrl("commission/jjrData/invitationArtificerPage"), url: this.$http.adornUrl("commission/jjrData/invitationArtificerPage"),
@ -405,7 +356,7 @@ export default {
name: this.userName, name: this.userName,
phone: this.userPhone phone: this.userPhone
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.userTableData = data.data; this.userTableData = data.data;
} else { } else {
@ -433,7 +384,7 @@ export default {
}, },
// //
handleCancelInvitation(row){ handleCancelInvitation(row) {
let userId = row.userId; let userId = row.userId;
this.$http({ this.$http({
url: this.$http.adornUrl("commission/jjrData/cancelInvitation"), url: this.$http.adornUrl("commission/jjrData/cancelInvitation"),
@ -441,7 +392,7 @@ export default {
params: this.$http.adornParams({ params: this.$http.adornParams({
artificerUserId: userId, artificerUserId: userId,
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.$message({ this.$message({
message: "取消成功", message: "取消成功",
@ -472,12 +423,12 @@ export default {
this.handleSelectUsers(); this.handleSelectUsers();
}, },
showArtificerView(){ showArtificerView() {
this.handleSelectArtificer(); this.handleSelectArtificer();
this.dialogArtificerListFormVisible = true; this.dialogArtificerListFormVisible = true;
}, },
handleSelectArtificer(){ handleSelectArtificer() {
this.artificerTableDataLoading = true; this.artificerTableDataLoading = true;
this.$http({ this.$http({
url: this.$http.adornUrl("commission/jjrData/artificerPage"), url: this.$http.adornUrl("commission/jjrData/artificerPage"),
@ -488,7 +439,7 @@ export default {
name: this.artificerName, name: this.artificerName,
phone: this.artificerPhone phone: this.artificerPhone
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.artificerTableData = data.data; this.artificerTableData = data.data;
} else { } else {
@ -502,7 +453,17 @@ export default {
this.artificerTableDataLoading = false; this.artificerTableDataLoading = false;
}); });
}, },
//
handleyjxxSizeChange(val) {
this.yjxxLimit = val;
this.moneyDetail();
},
//
handleyjxxCurrentChange(val) {
this.yjxxPage = val;
this.moneyDetail();
},
// //
handleArtificerSizeChange(val) { handleArtificerSizeChange(val) {
this.artificerLimit = val; this.artificerLimit = val;
@ -524,7 +485,7 @@ export default {
this.handleSelectArtificer(); this.handleSelectArtificer();
}, },
handleInvitation(row){ handleInvitation(row) {
let userId = row.userId; let userId = row.userId;
this.$http({ this.$http({
url: this.$http.adornUrl("commission/jjrData/modifyJjr"), url: this.$http.adornUrl("commission/jjrData/modifyJjr"),
@ -533,7 +494,7 @@ export default {
artificerUserId: userId, artificerUserId: userId,
invitationCode: this.invitationCode, invitationCode: this.invitationCode,
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.$message({ this.$message({
message: "邀请成功", message: "邀请成功",
@ -555,12 +516,14 @@ export default {
}); });
}, },
closeInvitation(){ closeInvitation() {
this.handleClearUsers(); this.handleClearUsers();
}, },
}, },
mounted() { async mounted() {
let a = await this.queryJsjb()
if (a) this.jsjb = a
this.handleSelect(); this.handleSelect();
}, },
}; };
@ -570,106 +533,107 @@ export default {
.customWidth { .customWidth {
width: 80% !important; width: 80% !important;
} }
.el-dialog--center { .el-dialog--center {
text-align: center; text-align: center;
margin-top: 1vh !important; margin-top: 1vh !important;
} }
.el-tooltip__popper { .el-tooltip__popper {
width: 200px; width: 200px;
padding: 10px; padding: 10px;
color: #000 !important; color: #000 !important;
box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.4); box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.4);
background-color: #fff !important; background-color: #fff !important;
} }
.adver_main.box a { .adver_main.box a {
display: flex; display: flex;
justify-content: center; justify-content: center;
height: 150px; height: 150px;
line-height: 150px; line-height: 150px;
text-decoration: none; text-decoration: none;
} }
.bannerManin span { .bannerManin span {
display: inline-block; display: inline-block;
margin-left: 5px; margin-left: 5px;
} }
.bannerManin img { .bannerManin img {
width: 48px; width: 48px;
height: 48px; height: 48px;
border-radius: 50%; border-radius: 50%;
} }
.bannerbtn a { .bannerbtn a {
flex: 1; flex: 1;
text-align: center; text-align: center;
color: #3e8ef7 !important; color: #3e8ef7 !important;
text-decoration: none; text-decoration: none;
} }
.imgs { .imgs {
position: relative; position: relative;
border-radius: 6px; border-radius: 6px;
width: 148px; width: 148px;
height: 148px; height: 148px;
margin-right: 10px; margin-right: 10px;
display: inline-block; display: inline-block;
} }
.dels { .dels {
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
display: none; display: none;
} }
.dels .el-icon-delete { .dels .el-icon-delete {
line-height: 148px; line-height: 148px;
padding-left: 58px; padding-left: 58px;
font-size: 25px; font-size: 25px;
color: #fff; color: #fff;
} }
.imgs:hover .dels { .imgs:hover .dels {
width: 100%; width: 100%;
height: 100%; height: 100%;
background: #000; background: #000;
display: block; display: block;
opacity: 0.5; opacity: 0.5;
} }
.bqList { .bqList {
padding: 4px 14px; padding: 4px 14px;
margin: 4px; margin: 4px;
border: 1px solid #efefef; border: 1px solid #efefef;
font-size: 12px; font-size: 12px;
color: #999; color: #999;
border-radius: 4px; border-radius: 4px;
margin-right: 15px; margin-right: 15px;
} }
.delss { .delss {
display: none; display: none;
position: relative; position: relative;
} }
.delss .el-icon-delete { .delss .el-icon-delete {
position: absolute; position: absolute;
top: 0; top: 0;
} }
.bqList:hover .delss { .bqList:hover .delss {
display: initial; display: initial;
opacity: 0.5; opacity: 0.5;
} }
.tj { .tj {
padding: 6px !important; padding: 6px !important;
margin: 4px; margin: 4px;
font-size: 12px; font-size: 12px;
border: 1px solid #ccc; border: 1px solid #ccc;
border-radius: 4px; border-radius: 4px;
} }
</style> </style>

View File

@ -3,87 +3,39 @@
<!-- 列表 --> <!-- 列表 -->
<div style="margin-left:10px;display: inline-block"> <div style="margin-left:10px;display: inline-block">
<span>编码</span> <span>编码</span>
<el-input <el-input style="width: 200px" placeholder="请输入编码" v-model="qdsCode">
style="width: 200px"
placeholder="请输入编码"
v-model="qdsCode">
</el-input> </el-input>
</div> </div>
<div style="margin-left:10px;display: inline-block"> <div style="margin-left:10px;display: inline-block">
<span>渠道商</span> <span>渠道商</span>
<el-input <el-input style="width: 200px" placeholder="请输入渠道商" v-model="name">
style="width: 200px"
placeholder="请输入渠道商"
v-model="name">
</el-input> </el-input>
</div> </div>
<el-button <el-button style="margin-left: 10px" size="mini" type="primary" icon="document" @click="handleSelect">查询
style="margin-left: 10px"
size="mini"
type="primary"
icon="document"
@click="handleSelect"
>查询
</el-button> </el-button>
<el-button <el-button style="margin-left: 10px" size="mini" type="primary" icon="document" @click="handleClear">重置
style="margin-left: 10px"
size="mini"
type="primary"
icon="document"
@click="handleClear"
>重置
</el-button> </el-button>
<el-button <el-button style="margin-left: 10px" size="mini" type="primary" icon="document" @click="handleEdit(0)">新增渠道码
style="margin-left: 10px"
size="mini"
type="primary"
icon="document"
@click="handleEdit(0)"
>新增渠道码
</el-button> </el-button>
<el-table v-loading="tableDataLoading" :data="tableData.list"> <el-table v-loading="tableDataLoading" :data="tableData.list">
<el-table-column <el-table-column prop="id" label="序号" width="80">
prop="id"
label="序号"
width="80"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="name" label="渠道码名称">
prop="name"
label="渠道码名称"
width="220"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="code" label="编码" width="150">
prop="code"
label="编码"
width="150"
>
</el-table-column> </el-table-column>
<el-table-column prop="lm" label="所属类目"> <el-table-column prop="lm" label="所属类目">
<template slot-scope="scope"> <template slot-scope="scope">
{{ showDictValue(scope.row.lm, lmData) }} {{ showDictValue(scope.row.lm, lmData) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="qdsName" label="渠道商" width="200">
prop="qdsName"
label="渠道商"
width="200"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="userName" label="绑定人员">
prop="userName"
label="绑定人员"
width="150"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="rate" label="渠道分成">
prop="rate"
label="渠道分成"
width="150"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.rate}}%</span> <span>{{ scope.row.rate }}%</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="codeImage" label="渠道码"> <el-table-column prop="codeImage" label="渠道码">
@ -95,132 +47,72 @@
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="推广时间" width="200">
prop="createTime"
label="创建时间"
width="150"
>
</el-table-column>
<el-table-column label="操作" prop="id" width="360" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <span>{{ scope.row.startDate }} ~ {{ scope.row.endDate }}</span>
size="mini" </template>
type="primary" </el-table-column>
style="margin: 5px" <el-table-column label="操作" prop="id" >
@click="handleEdit(scope.row)" <template slot-scope="scope">
>编辑 <el-button size="mini" type="primary" style="margin: 5px" @click="handleEdit(scope.row)">编辑
</el-button> </el-button>
<el-button <el-button size="mini" type="primary" style="margin: 5px" @click="handleDelete(scope.row)">删除
size="mini"
type="primary"
style="margin: 5px"
@click="handleDelete(scope.row)"
>删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div style="text-align: center; margin-top: 10px"> <div style="text-align: center; margin-top: 10px">
<el-pagination <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
@size-change="handleSizeChange" :page-sizes="[10, 20, 30, 40]" :page-size="limit" :current-page="page"
@current-change="handleCurrentChange" layout="total,sizes, prev, pager, next,jumper" :total="tableData.totalCount">
:page-sizes="[10, 20, 30, 40]"
:page-size="limit"
:current-page="page"
layout="total,sizes, prev, pager, next,jumper"
:total="tableData.totalCount"
>
</el-pagination> </el-pagination>
</div> </div>
<!-- 添加修改 --> <!-- 添加修改 -->
<el-dialog :title="titles" :visible.sync="dialogFormVisible" center @close="closeDialog"> <el-dialog :title="titles" :visible.sync="dialogFormVisible" center @close="closeDialog">
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">渠道码名称</span> <span style="width: 200px; display: inline-block; text-align: right">渠道码名称</span>
<el-input <el-input style="width: 50%" v-model="name" placeholder="请输入渠道码名称"></el-input>
style="width: 50%"
v-model="name"
placeholder="请输入渠道码名称"
></el-input>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">所属类目</span> <span style="width: 200px; display: inline-block; text-align: right">所属类目</span>
<el-select clearable v-model="lm" style="width: 50%"> <el-select clearable v-model="lm" style="width: 50%">
<el-option <el-option v-for="item in lmData" :key="item.id" :label="item.name" :value="item.id">
v-for="item in lmData"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">渠道分成%</span> <span style="width: 200px; display: inline-block; text-align: right">渠道分成%</span>
<el-input-number v-model="rate" controls-position="right" :precision="2" :min="0" :step="1" placeholder="请输入渠道分成(%)"/> <el-input-number v-model="rate" controls-position="right" :precision="2" :min="0" :step="1"
placeholder="请输入渠道分成(%)" />
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">绑定人员</span> <span style="width: 200px; display: inline-block; text-align: right">绑定人员</span>
<el-input <el-input style="width: 50%" v-model="userId" type="text" placeholder="请选择用户" :disabled="true"
style="width: 50%" v-show="false">
v-model="userId"
type="text"
placeholder="请选择用户"
:disabled="true"
v-show="false"
>
</el-input> </el-input>
<el-input <el-input style="width: 50%" v-model="userName" type="text" placeholder="请选择用户" :disabled="true">
style="width: 50%"
v-model="userName"
type="text"
placeholder="请选择用户"
:disabled="true"
>
</el-input> </el-input>
<el-button <el-button style="margin: 10px" size="mini" type="primary" icon="document" @click="showUsersView()">用户列表
style="margin: 10px"
size="mini"
type="primary"
icon="document"
@click="showUsersView()"
>用户列表
</el-button> </el-button>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">广告投放成本</span> <span style="width: 200px; display: inline-block; text-align: right">广告投放成本</span>
<el-input-number v-model="cost" controls-position="right" :precision="2" :min="0" :step="1" placeholder="请输入广告投放成本(元)"/> <el-input-number v-model="cost" controls-position="right" :precision="2" :min="0" :step="1"
placeholder="请输入广告投放成本(元)" />
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">推广时间段</span> <span style="width: 200px; display: inline-block; text-align: right">推广时间段</span>
<el-date-picker <el-date-picker v-model="tgDate" type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
v-model="tgDate" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
type="daterange"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker> </el-date-picker>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right">投放地点</span> <span style="width: 200px; display: inline-block; text-align: right">投放地点</span>
<el-input <el-input style="width: 50%" v-model="address" placeholder="请输入投放地点"></el-input>
style="width: 50%"
v-model="address"
placeholder="请输入投放地点"
></el-input>
</div> </div>
<div style="margin-bottom: 10px"> <div style="margin-bottom: 10px">
<span style="width: 200px; display: inline-block; text-align: right" <span style="width: 200px; display: inline-block; text-align: right">备注</span>
>备注</span <el-input style="width: 50%" v-model="remarks" type="textarea" :rows="4" placeholder="请输入备注">
>
<el-input
style="width: 50%"
v-model="remarks"
type="textarea"
:rows="4"
placeholder="请输入备注"
>
</el-input> </el-input>
</div> </div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -232,44 +124,23 @@
<el-dialog title="用户列表" :visible.sync="dialogUserListFormVisible" width="60%" center> <el-dialog title="用户列表" :visible.sync="dialogUserListFormVisible" width="60%" center>
<div style="margin-left: 10px; display: inline-block;"> <div style="margin-left: 10px; display: inline-block;">
<span>昵称</span> <span>昵称</span>
<el-input <el-input style="width: 200px" placeholder="请输入昵称" v-model="userName"></el-input>
style="width: 200px"
placeholder="请输入昵称"
v-model="userName"
></el-input>
</div> </div>
<div style="margin-left: 10px; display: inline-block"> <div style="margin-left: 10px; display: inline-block">
<span>手机号</span> <span>手机号</span>
<el-input <el-input style="width: 200px" placeholder="请输入手机号" v-model="phone"></el-input>
style="width: 200px"
placeholder="请输入手机号"
v-model="phone"
></el-input>
</div> </div>
<el-button <el-button style="margin-left: 10px;" size="mini" type="primary" icon="document"
style="margin-left: 10px;"
size="mini"
type="primary"
icon="document"
@click="handleSelectUsers">查询 @click="handleSelectUsers">查询
</el-button> </el-button>
<el-button <el-button style="margin-left: 10px" size="mini" type="primary" icon="document" @click="handleClearUsers">重置
style="margin-left: 10px"
size="mini"
type="primary"
icon="document"
@click="handleClearUsers">重置
</el-button> </el-button>
<el-table :data="userTableData.list" style="width: 100%"> <el-table :data="userTableData.list" style="width: 100%">
<el-table-column prop="userId" label="用户ID"></el-table-column> <el-table-column prop="userId" label="用户ID"></el-table-column>
<el-table-column prop="avatar" label="头像"> <el-table-column prop="avatar" label="头像">
<template slot-scope="scope"> <template slot-scope="scope">
<img <img v-if="scope.row.avatar && scope.row.avatar != ''" :src="scope.row.avatar" width="40"
v-if="scope.row.avatar && scope.row.avatar != ''" height="40" />
:src="scope.row.avatar"
width="40"
height="40"
/>
<span v-else>暂无图片</span> <span v-else>暂无图片</span>
</template> </template>
</el-table-column> </el-table-column>
@ -278,26 +149,16 @@
<el-table-column prop="qdsName" label="渠道商名称"></el-table-column> <el-table-column prop="qdsName" label="渠道商名称"></el-table-column>
<el-table-column label="操作" prop="id"> <el-table-column label="操作" prop="id">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button style="margin: 10px 0" size="mini" type="primary" icon="document"
style="margin: 10px 0" @click="handleAddUser(scope.row)">添加
size="mini"
type="primary"
icon="document"
@click="handleAddUser(scope.row)"
>添加
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div style="text-align: center; margin-top: 10px"> <div style="text-align: center; margin-top: 10px">
<el-pagination <el-pagination @size-change="handleUserSizeChange" @current-change="handleUserCurrentChange"
@size-change="handleUserSizeChange" :page-size="userLimit" :current-page="userPage" layout="total, prev, pager, next,jumper"
@current-change="handleUserCurrentChange" :total="userTableData.totalCount"></el-pagination>
:page-size="userLimit"
:current-page="userPage"
layout="total, prev, pager, next,jumper"
:total="userTableData.totalCount"
></el-pagination>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
@ -336,11 +197,11 @@ export default {
userTableDataLoading: false, userTableDataLoading: false,
userPage: 1, userPage: 1,
userLimit: 10, userLimit: 10,
userTableData:{}, userTableData: {},
}; };
}, },
methods: { methods: {
showDictValue(data, datas){ showDictValue(data, datas) {
const dictItem = datas.find(item => data === item.id); const dictItem = datas.find(item => data === item.id);
return dictItem ? dictItem.name : ''; return dictItem ? dictItem.name : '';
}, },
@ -350,7 +211,7 @@ export default {
url: this.$http.adornUrl("commission/qdsCode/lmList"), url: this.$http.adornUrl("commission/qdsCode/lmList"),
method: "get", method: "get",
params: this.$http.adornParams({}), params: this.$http.adornParams({}),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.lmData = data.data; this.lmData = data.data;
} else { } else {
@ -375,7 +236,7 @@ export default {
name: this.name, name: this.name,
code: this.qdsCode, code: this.qdsCode,
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.tableData = data.data; this.tableData = data.data;
} else { } else {
@ -392,7 +253,7 @@ export default {
// //
handleClear() { handleClear() {
this.name = ""; this.name = "";
this.qdsCode =""; this.qdsCode = "";
this.page = 1; this.page = 1;
this.handleSelect(); this.handleSelect();
}, },
@ -422,7 +283,7 @@ export default {
this.cost = row.cost; this.cost = row.cost;
this.startDate = row.startDate; this.startDate = row.startDate;
this.endDate = row.endDate; this.endDate = row.endDate;
this.tgDate = [row.startDate,row.endDate]; this.tgDate = [row.startDate, row.endDate];
this.address = row.address; this.address = row.address;
this.remarks = row.remarks; this.remarks = row.remarks;
} else { } else {
@ -436,14 +297,14 @@ export default {
this.cost = 0; this.cost = 0;
this.startDate = ""; this.startDate = "";
this.endDate = ""; this.endDate = "";
this.tgDate = [this.getCurrentDate(),this.getCurrentDate()]; this.tgDate = [this.getCurrentDate(), this.getCurrentDate()];
this.address = ""; this.address = "";
this.remarks = ""; this.remarks = "";
} }
this.dialogFormVisible = true; this.dialogFormVisible = true;
}, },
closeDialog(){ closeDialog() {
this.handleClear(); this.handleClear();
}, },
// //
@ -522,7 +383,7 @@ export default {
lm: this.lm, lm: this.lm,
remarks: this.remarks, remarks: this.remarks,
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.dialogFormVisible = false; this.dialogFormVisible = false;
this.closeDialog(); this.closeDialog();
@ -545,7 +406,7 @@ export default {
} }
}); });
}, },
handleDelete(row){ handleDelete(row) {
this.$confirm(`确定删除此条信息?`, "提示", { this.$confirm(`确定删除此条信息?`, "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
@ -558,7 +419,7 @@ export default {
params: this.$http.adornParams({ params: this.$http.adornParams({
id: id id: id
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.closeDialog(); this.closeDialog();
this.$message({ this.$message({
@ -579,14 +440,14 @@ export default {
}); });
} }
}); });
}).catch(() => {}); }).catch(() => { });
}, },
showUsersView(){ showUsersView() {
this.handleSelectUsers(); this.handleSelectUsers();
this.dialogUserListFormVisible = true; this.dialogUserListFormVisible = true;
}, },
handleSelectUsers(){ handleSelectUsers() {
this.userTableDataLoading = true; this.userTableDataLoading = true;
this.$http({ this.$http({
url: this.$http.adornUrl("commission/qdsCode/findUserPage"), url: this.$http.adornUrl("commission/qdsCode/findUserPage"),
@ -597,7 +458,7 @@ export default {
userName: this.userName, userName: this.userName,
phone: this.phone, phone: this.phone,
}), }),
}).then(({data}) => { }).then(({ data }) => {
if (data.code == 0) { if (data.code == 0) {
this.userTableData = data.data; this.userTableData = data.data;
} else { } else {
@ -633,12 +494,12 @@ export default {
this.handleSelectUsers(); this.handleSelectUsers();
}, },
handleAddUser(row){ handleAddUser(row) {
this.userId = row.userId; this.userId = row.userId;
this.userName = row.userName; this.userName = row.userName;
this.dialogUserListFormVisible = false; this.dialogUserListFormVisible = false;
}, },
getCurrentDate(){ getCurrentDate() {
const currentDate = new Date(); const currentDate = new Date();
const year = currentDate.getFullYear(); const year = currentDate.getFullYear();
const month = currentDate.getMonth() + 1; // 01 const month = currentDate.getMonth() + 1; // 01
@ -657,106 +518,107 @@ export default {
.customWidth { .customWidth {
width: 80% !important; width: 80% !important;
} }
.el-dialog--center { .el-dialog--center {
text-align: center; text-align: center;
margin-top: 1vh !important; margin-top: 1vh !important;
} }
.el-tooltip__popper { .el-tooltip__popper {
width: 200px; width: 200px;
padding: 10px; padding: 10px;
color: #000 !important; color: #000 !important;
box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.4); box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.4);
background-color: #fff !important; background-color: #fff !important;
} }
.adver_main.box a { .adver_main.box a {
display: flex; display: flex;
justify-content: center; justify-content: center;
height: 150px; height: 150px;
line-height: 150px; line-height: 150px;
text-decoration: none; text-decoration: none;
} }
.bannerManin span { .bannerManin span {
display: inline-block; display: inline-block;
margin-left: 5px; margin-left: 5px;
} }
.bannerManin img { .bannerManin img {
width: 48px; width: 48px;
height: 48px; height: 48px;
border-radius: 50%; border-radius: 50%;
} }
.bannerbtn a { .bannerbtn a {
flex: 1; flex: 1;
text-align: center; text-align: center;
color: #3e8ef7 !important; color: #3e8ef7 !important;
text-decoration: none; text-decoration: none;
} }
.imgs { .imgs {
position: relative; position: relative;
border-radius: 6px; border-radius: 6px;
width: 148px; width: 148px;
height: 148px; height: 148px;
margin-right: 10px; margin-right: 10px;
display: inline-block; display: inline-block;
} }
.dels { .dels {
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
display: none; display: none;
} }
.dels .el-icon-delete { .dels .el-icon-delete {
line-height: 148px; line-height: 148px;
padding-left: 58px; padding-left: 58px;
font-size: 25px; font-size: 25px;
color: #fff; color: #fff;
} }
.imgs:hover .dels { .imgs:hover .dels {
width: 100%; width: 100%;
height: 100%; height: 100%;
background: #000; background: #000;
display: block; display: block;
opacity: 0.5; opacity: 0.5;
} }
.bqList { .bqList {
padding: 4px 14px; padding: 4px 14px;
margin: 4px; margin: 4px;
border: 1px solid #efefef; border: 1px solid #efefef;
font-size: 12px; font-size: 12px;
color: #999; color: #999;
border-radius: 4px; border-radius: 4px;
margin-right: 15px; margin-right: 15px;
} }
.delss { .delss {
display: none; display: none;
position: relative; position: relative;
} }
.delss .el-icon-delete { .delss .el-icon-delete {
position: absolute; position: absolute;
top: 0; top: 0;
} }
.bqList:hover .delss { .bqList:hover .delss {
display: initial; display: initial;
opacity: 0.5; opacity: 0.5;
} }
.tj { .tj {
padding: 6px !important; padding: 6px !important;
margin: 4px; margin: 4px;
font-size: 12px; font-size: 12px;
border: 1px solid #ccc; border: 1px solid #ccc;
border-radius: 4px; border-radius: 4px;
} }
</style> </style>

View File

@ -20,11 +20,11 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col> <!-- <el-col>
<el-form-item label="渠道商返佣比例(%)" prop="rate"> <el-form-item label="渠道商返佣比例(%)" prop="rate">
<el-input-number v-model="dataForm.rate" controls-position="right" :precision="2" :min="0" :step="1"/> <el-input-number v-model="dataForm.rate" controls-position="right" :precision="2" :min="0" :step="1"/>
</el-form-item> </el-form-item>
</el-col> </el-col> -->
<el-col> <el-col>
<el-form-item label="技师承担(%)" prop="artificerRate"> <el-form-item label="技师承担(%)" prop="artificerRate">
<el-input-number v-model="dataForm.artificerRate" controls-position="right" :precision="2" :min="0" :step="1"/> <el-input-number v-model="dataForm.artificerRate" controls-position="right" :precision="2" :min="0" :step="1"/>

View File

@ -63,13 +63,12 @@
<el-table-column <el-table-column
prop="qdmName" prop="qdmName"
label="渠道码名称" label="渠道码名称"
width="220"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="qdsCode" prop="qdsCode"
width="130"
label="编码" label="编码"
width="150"
> >
</el-table-column> </el-table-column>
<el-table-column prop="lm" label="所属类目"> <el-table-column prop="lm" label="所属类目">
@ -80,40 +79,49 @@
<el-table-column <el-table-column
prop="qdsName" prop="qdsName"
label="渠道商" label="渠道商"
width="200"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="userName" prop="userName"
label="绑定人员" label="绑定人员"
width="150"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="rate" prop="rate"
label="渠道分成" label="渠道分成"
width="150"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.rate}}%</span> <span>{{scope.row.rate}}%</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="smCount" prop="xyhsmsl"
label="扫码数量" label="扫码数量-新用户"
width="150" >
</el-table-column>
<el-table-column
prop="lyhsmsl"
label="扫码数量-老客户"
>
</el-table-column>
<el-table-column
prop="yxzcpts"
label="有效注册平台数"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="ordersCount" prop="ordersCount"
label="订单数量" label="订单数量"
width="150"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="money" prop="zje"
label="订单总金额"
>
</el-table-column>
<el-table-column
prop="qdsfy"
label="累计获得佣金" label="累计获得佣金"
width="150"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column

View File

@ -43,6 +43,11 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- <el-col v-show="dataForm.type == 2">
<el-form-item label="抽成比例(%)">
<el-input-number v-model="dataForm.ccbl" controls-position="right" :precision="2" :min="0" :step="1"/>
</el-form-item>
</el-col> -->
<el-col> <el-col>
<el-form-item label="邀请业务员推广海报背景图" prop="salesmanImage"> <el-form-item label="邀请业务员推广海报背景图" prop="salesmanImage">
<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;">
@ -131,6 +136,15 @@ export default {
}, },
// //
dataFormSubmit() { dataFormSubmit() {
if(this.dataForm.type == 2){
if(!this.dataForm.ccbl){
this.$message({
message: '请输入抽成比例',
type: 'warning'
})
return
}
}
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (valid) {
let saveData = Object.assign({}, this.dataForm); let saveData = Object.assign({}, this.dataForm);

File diff suppressed because it is too large Load Diff

View File

@ -432,6 +432,17 @@ export default {
}); });
}).catch(() => {}); }).catch(() => {});
}, },
//
dataSelectSpq() {
this.$http({
url: this.$http.adornUrl('/bl/shipinquan/dataSelectSpq'),
method: 'get',
}).then(({ data }) => {
if (data.data >= 0) {
this.$cookie.set('numberSpq', data.data)
}
})
},
// //
handleApprove() { handleApprove() {
if (this.status == "") { if (this.status == "") {
@ -472,6 +483,7 @@ export default {
duration: 1500, duration: 1500,
onClose: () => { onClose: () => {
this.handleSelect(); this.handleSelect();
this.dataSelectSpq();
}, },
}); });
} else { } else {
@ -572,6 +584,7 @@ export default {
duration: 1500, duration: 1500,
onClose: () => { onClose: () => {
this.handleSelect(); this.handleSelect();
this.dataSelectSpq();
}, },
}); });
} else { } else {

View File

@ -34,11 +34,12 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="byUserName" label="被投诉用户" width="100"> <el-table-column prop="byUserName" label="被投诉技师" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="color: #4f9dec;cursor: pointer;" @click="updates(scope.row.byUserId)"> <span v-if="scope.row.byUserId != -1" style="color: #4f9dec;cursor: pointer;" @click="updates(scope.row.byUserId)">
{{ scope.row.byUserName?scope.row.byUserName:'未绑定'}} {{ scope.row.byUserName?scope.row.byUserName:'未绑定'}}
</span> </span>
<span v-else style="color: #333;" >平台</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="typeName" label="投诉类型" width="150"> <el-table-column prop="typeName" label="投诉类型" width="150">
@ -69,17 +70,22 @@
<el-table-column prop="createAt" label="投诉时间" width="100"></el-table-column> <el-table-column prop="createAt" label="投诉时间" width="100"></el-table-column>
<el-table-column prop="type" label="状态" width="100"> <el-table-column prop="type" label="状态" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.type=='0'">待审核</span> <span v-if="scope.row.type=='0' && scope.row.byUserId!='-1'">待审核</span>
<span v-if="scope.row.type=='1'">通过</span> <span v-if="scope.row.type=='0' && scope.row.byUserId=='-1'">待回复</span>
<span v-if="scope.row.type=='1' && scope.row.byUserId!='-1'">通过</span>
<span v-if="scope.row.type=='1' && scope.row.byUserId=='-1'">已回复</span>
<span v-if="scope.row.type=='2'">拒绝</span> <span v-if="scope.row.type=='2'">拒绝</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="100" align="center" fixed="right"> <el-table-column label="操作" width="100" align="center" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="primary" v-if="scope.row.type=='0'" @click="passClicks1(scope.row)" <el-button size="mini" type="primary" v-if="scope.row.type=='0' && scope.row.byUserId == '-1'" @click="passClicks1(scope.row,'回复')"
:disabled="!isAuth('business:tongguo')" style="margin:5px">回复
</el-button>
<el-button size="mini" type="primary" v-if="scope.row.type=='0' && scope.row.byUserId != '-1'" @click="passClicks1(scope.row,'通过')"
:disabled="!isAuth('business:tongguo')" style="margin:5px">通过 :disabled="!isAuth('business:tongguo')" style="margin:5px">通过
</el-button> </el-button>
<el-button size="mini" type="primary" v-if="scope.row.type=='0'" @click="refuseClick(scope.row)" <el-button size="mini" type="primary" v-if="scope.row.type=='0' && scope.row.byUserId != '-1'" @click="refuseClick(scope.row,'拒绝')"
:disabled="!isAuth('business:jujue')" style="margin:5px">拒绝 :disabled="!isAuth('business:jujue')" style="margin:5px">拒绝
</el-button> </el-button>
</template> </template>
@ -92,16 +98,16 @@
</el-pagination> </el-pagination>
</div> </div>
<!-- 任务拒绝弹框 --> <!-- 任务拒绝弹框 -->
<el-dialog title="拒绝" :visible.sync="dialogFormVisible" center> <el-dialog :title="tsbt" :visible.sync="dialogFormVisible" center>
<div style="margin-bottom: 10px;"> <div style="margin-bottom: 10px;">
<span <span
style="width: 200px;display: inline-block;text-align: right;position: relative;top: -70px;">拒绝理由</span> style="width: 200px;display: inline-block;text-align: right;position: relative;top: -70px;">{{(tsbt=='回复')?(tsbt+'内容'):(tsbt+'理由')}}</span>
<el-input style="width:50%;" v-model="content" type="textarea" :rows="4" placeholder="请输入拒绝理由"> <el-input style="width:50%;" v-model="content" type="textarea" :rows="4" :placeholder="'请输入'">
</el-input> </el-input>
</div> </div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false"> </el-button> <el-button @click="dialogFormVisible = false"> </el-button>
<el-button type="primary" @click="refuseto()"> </el-button> <el-button type="primary" @click="replyto()"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</el-tab-pane> </el-tab-pane>
@ -221,6 +227,7 @@
], ],
content: '', content: '',
status: 1, status: 1,
tsbt:'',
helpTakeId: '', helpTakeId: '',
indentNumbers: '', indentNumbers: '',
complaintId: '', complaintId: '',
@ -373,18 +380,19 @@
}) })
}, },
// //
refuseClick(rows) { refuseClick(rows,tip) {
this.tsbt = tip
this.status = 2 this.status = 2
this.helpTakeId = rows.id this.helpTakeId = rows.id
this.content = '' this.content = ''
this.dialogFormVisible = true this.dialogFormVisible = true
}, },
refuseto() { replyto() {
if (this.content == '') { if (this.content == '') {
this.$notify({ this.$notify({
title: '提示', title: '提示',
duration: 1800, duration: 1800,
message: '请输入拒绝理由', message: '请输入'+this.status==1?'通过':'拒绝'+'理由',
type: 'warning' type: 'warning'
}); });
return return
@ -410,6 +418,7 @@
this.content = '' this.content = ''
this.status = -1 this.status = -1
this.dataSelect() this.dataSelect()
this.dataSelectPy()
} }
}) })
} else { } else {
@ -424,7 +433,7 @@
}) })
}, },
// //
passClicks(row) { passClicks(row,tip) {
this.content = '同意' this.content = '同意'
this.$http({ this.$http({
url: this.$http.adornUrl('message/auditMessage'), url: this.$http.adornUrl('message/auditMessage'),
@ -463,46 +472,28 @@
}) })
}, },
// //
passClicks1(row) { dataSelectPy() {
this.status = 1
this.content = '同意'
this.$http({ this.$http({
url: this.$http.adornUrl('message/auditMessage'), url: this.$http.adornUrl('message/selectMessageCount'),
method: 'post', method: 'get',
params: this.$http.adornParams({ params: this.$http.adornParams({
'ids': row.id, 'state': 7,
'status': 1,
'auditContent': this.content,
}) })
}).then(({ }).then(({
data data
}) => { }) => {
if (data.code == 0) { if (data.data >= 0) {
this.$message({ this.$cookie.set('numberDts', data.data)
message: '操作成功', }
type: 'success', })
duration: 1500, },
onClose: () => { passClicks1(rows,tip){
this.tsbt = tip
this.status = 1
this.helpTakeId = rows.id
this.content = '' this.content = ''
this.status = -1 this.dialogFormVisible = true
this.dataSelect()
}
})
} else {
this.$message({
message: data.msg,
type: 'error',
duration: 1500,
onClose: () => {
this.content = ''
this.status = -1
this.dataSelect()
}
})
}
})
}, },
// //
advertNotice() { advertNotice() {

View File

@ -127,6 +127,22 @@
} }
}, },
methods: { methods: {
//
dataSelectJjqz() {
this.$http({
url: this.$http.adornUrl('message/selectMessageCount'),
method: 'get',
params: this.$http.adornParams({
'state': 9,
})
}).then(({
data
}) => {
if (data.data >= 0) {
this.$cookie.set('numberJjqz', data.data)
}
})
},
// //
changeFun(val) { changeFun(val) {
this.checkBoxData = val this.checkBoxData = val
@ -221,7 +237,7 @@
}, },
// //
classdelete(row) { classdelete(row) {
this.$confirm(`确定处理该投诉?`, '提示', { this.$confirm(`确定处理该请求?`, '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
@ -244,6 +260,7 @@
duration: 1500, duration: 1500,
onClose: () => { onClose: () => {
this.dataSelect() this.dataSelect()
this.dataSelectJjqz()
} }
}) })
} else { } else {

View File

@ -30,14 +30,16 @@
<div style="display: inline-block;margin-bottom: 6px;"> <div style="display: inline-block;margin-bottom: 6px;">
<span>是否超时</span> <span>是否超时</span>
<el-select v-model="overTimeOrders" style="width:150px;margin-left: 10px;" @change="select()"> <el-select v-model="overTimeOrders" style="width:150px;margin-left: 10px;" @change="select()">
<el-option v-for="item in statesnumCs" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in statesnumCs" :key="item.value" :label="item.label"
:value="item.value">
</el-option> </el-option>
</el-select>&nbsp;&nbsp;&nbsp;&nbsp; </el-select>&nbsp;&nbsp;&nbsp;&nbsp;
</div> </div>
<div style="display: inline-block;margin-bottom: 6px;"> <div style="display: inline-block;margin-bottom: 6px;">
<span>是否警告</span> <span>是否警告</span>
<el-select v-model="warning" style="width:150px;margin-left: 10px;" @change="select()"> <el-select v-model="warning" style="width:150px;margin-left: 10px;" @change="select()">
<el-option v-for="item in statesnumCs" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in statesnumCs" :key="item.value" :label="item.label"
:value="item.value">
</el-option> </el-option>
</el-select>&nbsp;&nbsp;&nbsp;&nbsp; </el-select>&nbsp;&nbsp;&nbsp;&nbsp;
</div> </div>
@ -53,25 +55,25 @@
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="cleans">重置 <el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="cleans">重置
</el-button> </el-button>
</div> </div>
<el-table v-loading="tableDataLoading" :data="tableData.list"> <el-table v-loading="tableDataLoading" :data="tableData.list" height="550px">
<el-table-column fixed prop="id" label="编号" width="80"> <el-table-column fixed prop="id" label="编号" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<span> <span>
{{scope.$index+1}} {{ scope.$index + 1 }}
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="userName" label="用户昵称" width="100"> <el-table-column prop="userName" label="用户昵称" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="color: #4f9dec;cursor: pointer;" @click="updates(scope.row.userId)"> <span style="color: #4f9dec;cursor: pointer;" @click="updates(scope.row.userId)">
{{ scope.row.userName?scope.row.userName:'未绑定'}} {{ scope.row.userName ? scope.row.userName : '未绑定' }}
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="artificerName" label="技师昵称" width="100"> <el-table-column prop="artificerName" label="技师昵称" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="color: #4f9dec;cursor: pointer;" @click="updates(scope.row.artificerId)"> <span style="color: #4f9dec;cursor: pointer;" @click="updates(scope.row.artificerId)">
{{ scope.row.artificerName?scope.row.artificerName:'未绑定'}} {{ scope.row.artificerName ? scope.row.artificerName : '未绑定' }}
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
@ -108,31 +110,32 @@
<el-table-column prop="createTime" label="创建时间" width="160"></el-table-column> <el-table-column prop="createTime" label="创建时间" width="160"></el-table-column>
<el-table-column prop="warning" label="是否警告" fixed="right" width="80"> <el-table-column prop="warning" label="是否警告" fixed="right" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="color: #f56c6c;" v-if="scope.row.warning==1"></span> <span style="color: #f56c6c;" v-if="scope.row.warning == 1"></span>
<span style="color: #999;" v-else></span> <span style="color: #999;" v-else></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="overTimeOrders" label="是否超时" fixed="right" width="80"> <el-table-column prop="overTimeOrders" label="是否超时" fixed="right" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="color: #f56c6c;" v-if="scope.row.overTimeOrders==1"></span> <span style="color: #f56c6c;" v-if="scope.row.overTimeOrders == 1"></span>
<span style="color: #999;" v-else></span> <span style="color: #999;" v-else></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="status" label="订单状态" fixed="right"> <el-table-column prop="status" label="订单状态" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="color: #f56c6c;" v-if="scope.row.status==1">待支付</span> <span style="color: #f56c6c;" v-if="scope.row.status == 1">待支付</span>
<span style="color: #E87D0D;" v-if="scope.row.status==2">待服务</span> <span style="color: #E87D0D;" v-if="scope.row.status == 2">待服务</span>
<span style="color: #009900;" v-if="scope.row.status==3">待评价</span> <span style="color: #009900;" v-if="scope.row.status == 3">待评价</span>
<span style="color: #999;" v-if="scope.row.status==4">已取消</span> <span style="color: #999;" v-if="scope.row.status == 4">已取消</span>
<span style="color: #999;" v-if="scope.row.status==5">已完成</span> <span style="color: #999;" v-if="scope.row.status == 5">已完成</span>
<span style="color: red;" v-if="scope.row.status==6">服务中</span> <span style="color: red;" v-if="scope.row.status == 6">服务中</span>
<span style="color: #E87D0D;" v-if="scope.row.status==7">技师出发</span> <span style="color: #E87D0D;" v-if="scope.row.status == 7">技师出发</span>
<span style="color: #E87D0D;" v-if="scope.row.status==8">技师到达</span> <span style="color: #E87D0D;" v-if="scope.row.status == 8">技师到达</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createAt" label="处理状态" width="120" fixed="right"> <el-table-column prop="createAt" label="处理状态" width="120" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="danger" :disabled="!isAuth('orderCenter:wancheng')" v-if="scope.row.status==2||scope.row.status==6||scope.row.status==7||scope.row.status==8" <el-button size="mini" type="danger" :disabled="!isAuth('orderCenter:wancheng')"
v-if="scope.row.status == 2 || scope.row.status == 6 || scope.row.status == 7 || scope.row.status == 8"
@click="wancheng(scope.row)" style="margin:5px;" plain>完成订单</el-button> @click="wancheng(scope.row)" style="margin:5px;" plain>完成订单</el-button>
<!-- <span v-if="scope.row.type=='1'" style="color: #13ce66;">已处理</span> <!-- <span v-if="scope.row.type=='1'" style="color: #13ce66;">已处理</span>
<span v-else style="color: #ff4949;">待处理</span> <span v-else style="color: #ff4949;">待处理</span>
@ -153,7 +156,7 @@
</el-tabs> </el-tabs>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
page: 1, page: 1,
@ -190,12 +193,12 @@
illegalId: '', illegalId: '',
forfeitMoney: '', forfeitMoney: '',
illegalList: [], illegalList: [],
phone:'', phone: '',
artificerName:'', artificerName: '',
userName:'', userName: '',
artificerPhone:'', artificerPhone: '',
overTimeOrders:0, overTimeOrders: 0,
warning:0, warning: 0,
statesnumCs: [{ statesnumCs: [{
value: 0, value: 0,
label: '全部' label: '全部'
@ -328,15 +331,15 @@
url: this.$http.adornUrl('artificer/selectArtificerOrdersList'), url: this.$http.adornUrl('artificer/selectArtificerOrdersList'),
method: 'get', method: 'get',
params: this.$http.adornParams({ params: this.$http.adornParams({
'page':this.page, 'page': this.page,
'limit':this.limit, 'limit': this.limit,
'artificerName':this.artificerName, 'artificerName': this.artificerName,
'phone':this.phone, 'phone': this.phone,
'artificerPhone':this.artificerPhone, 'artificerPhone': this.artificerPhone,
'userName':this.userName, 'userName': this.userName,
'overTimeOrders':this.overTimeOrders, 'overTimeOrders': this.overTimeOrders,
'status':'', 'status': '',
'warning':this.warning 'warning': this.warning
}) })
}).then(({ }).then(({
@ -390,30 +393,30 @@
message: data.msg, message: data.msg,
type: 'warning', type: 'warning',
duration: 1500, duration: 1500,
onClose: () => {} onClose: () => { }
}) })
} }
}) })
}).catch(() => {}) }).catch(() => { })
}, },
dataSelectD(){ dataSelectD() {
if(this.$route.query.types){ if (this.$route.query.types) {
if(this.$route.query.types==1){ if (this.$route.query.types == 1) {
this.warning =1 this.warning = 1
this.overTimeOrders =0 this.overTimeOrders = 0
}else{ } else {
this.warning =0 this.warning = 0
this.overTimeOrders =1 this.overTimeOrders = 1
} }
}else{ } else {
this.warning = 0 this.warning = 0
this.overTimeOrders = 0 this.overTimeOrders = 0
} }
this.dataSelect() this.dataSelect()
}, },
// //
wancheng(row){ wancheng(row) {
let delid = row.ordersId let delid = row.ordersId
this.$confirm(`确定进行完成订单操作吗?`, '提示', { this.$confirm(`确定进行完成订单操作吗?`, '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
@ -421,13 +424,17 @@
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$http({ this.$http({
url: this.$http.adornUrl('artificer/accomplishOrders?ordersId='+delid), url: this.$http.adornUrl('app/artificer/accomplishOrders'),
method: 'post', method: 'post',
params: this.$http.adornParams({}) params: this.$http.adornParams({
ordersId: delid,
earlyFinishReason:row.earlyFinishReason,
adminOperation:1
})
}).then(({ }).then(({
data data
}) => { }) => {
if(data.code==0){ if (data.code == 0) {
this.$message({ this.$message({
message: '操作成功', message: '操作成功',
type: 'success', type: 'success',
@ -436,7 +443,7 @@
this.dataSelect() this.dataSelect()
} }
}) })
}else{ } else {
this.$message({ this.$message({
message: data.msg, message: data.msg,
type: 'warning', type: 'warning',
@ -451,15 +458,15 @@
}, },
}, },
mounted() { mounted() {
if(this.$route.query.types){ if (this.$route.query.types) {
if(this.$route.query.types==1){ if (this.$route.query.types == 1) {
this.warning =1 this.warning = 1
this.overTimeOrders =0 this.overTimeOrders = 0
}else{ } else {
this.warning =0 this.warning = 0
this.overTimeOrders =1 this.overTimeOrders = 1
} }
}else{ } else {
this.warning = 0 this.warning = 0
this.overTimeOrders = 0 this.overTimeOrders = 0
} }
@ -468,11 +475,11 @@
watch: { watch: {
'$route': 'dataSelectD' '$route': 'dataSelectD'
} }
} }
</script> </script>
<style> <style>
.customWidth { .customWidth {
width: 80% !important; width: 80% !important;
} }
</style> </style>

View File

@ -13,8 +13,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="couponPicture" label="优惠券图片"> <el-table-column prop="couponPicture" label="优惠券图片">
<template slot-scope="scope"> <template slot-scope="scope">
<img v-if="scope.row.couponPicture" :src="scope.row.couponPicture" alt="" width="40" <img v-if="scope.row.couponPicture" :src="scope.row.couponPicture" alt="" width="40" height="40">
height="40">
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column prop="type" label="优惠券类型" width="100"> <!-- <el-table-column prop="type" label="优惠券类型" width="100">
@ -25,14 +24,16 @@
</el-table-column> --> </el-table-column> -->
<el-table-column prop="money" label="优惠券面值" width="100"> <el-table-column prop="money" label="优惠券面值" width="100">
</el-table-column> </el-table-column>
<el-table-column prop="goodsName" label="当前绑定商品" width="150">
</el-table-column>
<el-table-column prop="minMoney" label="优惠券最低消费" width="150"> <el-table-column prop="minMoney" label="优惠券最低消费" width="150">
</el-table-column> </el-table-column>
<el-table-column prop="endDate" label="优惠券有效期限(天)" width="150"> <el-table-column prop="endDate" label="优惠券有效期限(天)" width="150">
</el-table-column> </el-table-column>
<el-table-column prop="couType" label="优惠券类型"> <el-table-column prop="couType" label="优惠券类型">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.couType==1">新人优惠卷</span> <span v-if="scope.row.couType == 1">新人优惠卷</span>
<span v-if="scope.row.couType==2">其他</span> <span v-if="scope.row.couType == 2">其他</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="150"> <el-table-column label="操作" width="150">
@ -43,7 +44,7 @@
<el-button style='margin: 3px;' :disabled="!isAuth('couponYhq:zengsong')" size="mini" type="primary" <el-button style='margin: 3px;' :disabled="!isAuth('couponYhq:zengsong')" size="mini" type="primary"
icon="document" @click="songCoupon(scope.row)">赠送优惠券</el-button> icon="document" @click="songCoupon(scope.row)">赠送优惠券</el-button>
<el-button size="mini" type="primary" :disabled="!isAuth('couponYhq:update')" <el-button size="mini" type="primary" :disabled="!isAuth('couponYhq:update')"
@click="shopUpdates(scope.$index,scope.row)" style="margin: 3px;">修改 @click="shopUpdates(scope.$index, scope.row)" style="margin: 3px;">修改
</el-button> </el-button>
<el-button size="mini" type="danger" :disabled="!isAuth('couponYhq:delete')" <el-button size="mini" type="danger" :disabled="!isAuth('couponYhq:delete')"
@click="shopdeletes(scope.row)" style="margin: 3px;">删除 @click="shopdeletes(scope.row)" style="margin: 3px;">删除
@ -82,12 +83,11 @@
<span style="width: 200px;display: inline-block;text-align: right;">优惠券图片</span> <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;"> 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="couponPicture" <el-upload class="avatar-uploader" v-model="couponPicture" :action="uploadUrl"
:action="uploadUrl" :show-file-list="false" :show-file-list="false" :on-success="handleAvatarSuccess1">
:on-success="handleAvatarSuccess1"> <img v-if="couponPicture" :src="couponPicture" class="avatar"
<img v-if="couponPicture" :src="couponPicture" class="avatar" style="width: 148px;height: 148px;" /> style="width: 148px;height: 148px;" />
<i v-else class="el-icon-plus avatar-uploader-icon" <i v-else class="el-icon-plus avatar-uploader-icon" style="font-size: 28px;color: #8c939d"></i>
style="font-size: 28px;color: #8c939d"></i>
</el-upload> </el-upload>
</div> </div>
</div> </div>
@ -113,6 +113,17 @@
<el-radio :label="2">其他</el-radio> <el-radio :label="2">其他</el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
<div style="margin-bottom: 10px; display: flex; align-items: center">
<span style="width: 200px; display: inline-block; text-align: right">商城商品</span>
<!-- <el-input style="width:50%;" v-model="materialPackageMinNum" type="text" placeholder="请选择商城商品">
</el-input> -->
<el-button v-if="!addMaterialPackageTag.goodsName" size="mini" type="primary"
:disabled="!isAuth('shopAdmin:update')" @click="addGoodsBtn()">添加商品
</el-button>
<el-tag v-else type="info" closable @close="closeTag" disable-transitions>{{
addMaterialPackageTag.goodsName
}}</el-tag>
</div>
<!-- <div style="margin-bottom: 10px;"> <!-- <div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">排序</span> <span style="width: 200px;display: inline-block;text-align: right;">排序</span>
<el-input style="width:50%;" v-model="sort" type="number" :min="0" placeholder="请输入排序号"></el-input> <el-input style="width:50%;" v-model="sort" type="number" :min="0" placeholder="请输入排序号"></el-input>
@ -138,10 +149,10 @@
<el-form-item label="优惠券图片:" :label-width="formLabelWidth"> <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;"> 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.couponPicture" <el-upload class="avatar-uploader" v-model="form.couponPicture" :action="uploadUrl"
:action="uploadUrl" :show-file-list="false" :show-file-list="false" :on-success="handleAvatarSuccess2">
:on-success="handleAvatarSuccess2"> <img v-if="form.couponPicture" :src="form.couponPicture" class="avatar"
<img v-if="form.couponPicture" :src="form.couponPicture" class="avatar" style="width: 148px;height: 148px;" /> style="width: 148px;height: 148px;" />
<i v-else class="el-icon-plus avatar-uploader-icon" <i v-else class="el-icon-plus avatar-uploader-icon"
style="font-size: 28px;color: #8c939d"></i> style="font-size: 28px;color: #8c939d"></i>
</el-upload> </el-upload>
@ -164,6 +175,17 @@
<el-radio :label="2">其他</el-radio> <el-radio :label="2">其他</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<div style="margin-bottom: 10px; display: flex; align-items: center">
<span style="width: 200px; display: inline-block; text-align: right">商城商品</span>
<!-- <el-input style="width:50%;" v-model="materialPackageMinNum" type="text" placeholder="请选择商城商品">
</el-input> -->
<el-button v-if="!addMaterialPackageTag.goodsName" size="mini" type="primary"
:disabled="!isAuth('shopAdmin:update')" @click="addGoodsBtn()">添加商品
</el-button>
<el-tag v-else type="info" closable @close="closeTag" disable-transitions>{{
addMaterialPackageTag.goodsName
}}</el-tag>
</div>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible3 = false"> </el-button> <el-button @click="dialogFormVisible3 = false"> </el-button>
@ -248,7 +270,7 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" width="150"> <el-table-column label="操作" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="primary" @click="selectClick(scope.$index,scope.row)">选择 <el-button size="mini" type="primary" @click="selectClick(scope.$index, scope.row)">选择
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -270,11 +292,15 @@
<el-radio :label="2">所有用户</el-radio> <el-radio :label="2">所有用户</el-radio>
</el-radio-group> </el-radio-group>
</div> --> </div> -->
<div style="margin: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">赠送数量</span>
<el-input-number v-model="yhqzssl" size="small" :min="1" :step="1" :precision="0"></el-input-number>
</div>
<div style="margin: 10px;"> <div style="margin: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">选择用户</span> <span style="width: 200px;display: inline-block;text-align: right;">选择用户</span>
<el-tag :key="tag" v-for="(tag,j) in userNameList" closable :disable-transitions="false" <el-tag :key="tag" v-for="(tag, j) in userNameList" closable :disable-transitions="false"
@close="couponIdClose1(tag,j)"> @close="couponIdClose1(tag, j)">
{{tag}} {{ tag }}
</el-tag> </el-tag>
<el-button class="button-new-tag" size="small" @click="couponIdBtn1(couponIds)">添加</el-button> <el-button class="button-new-tag" size="small" @click="couponIdBtn1(couponIds)">添加</el-button>
</div> </div>
@ -324,23 +350,23 @@
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="cleans1">重置 <el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="cleans1">重置
</el-button> </el-button>
</div> </div>
<el-button style="margin-left:15px;" :disabled="userIdList.length <= 0 " size="mini" type="primary" <el-button style="margin-left:15px;" :disabled="userIdList.length <= 0" size="mini" type="primary"
icon="document" @click="closes2()">确定</el-button> icon="document" @click="closes2()">确定</el-button>
<el-table v-loading="tableDataLoading1" @selection-change="changeFun1" :data="userData.list" <el-table v-loading="tableDataLoading1" @selection-change="changeFun1" :data="userData.list"
:row-key="(row)=>{ return row.userId}"> :row-key="(row) => { return row.userId }">
<el-table-column :reserve-selection="true" type="selection" fixed> <el-table-column :reserve-selection="true" type="selection" fixed>
</el-table-column> </el-table-column>
<el-table-column fixed prop="userId" label="id" width="80"> <el-table-column fixed prop="userId" label="id" width="80">
</el-table-column> </el-table-column>
<el-table-column fixed prop="userName" label="昵称" width="120"> <el-table-column fixed prop="userName" label="昵称" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="color: #f56c6c;" <span style="color: #f56c6c;" @click="updates(scope.row)">{{ scope.row.userName ?
@click="updates(scope.row)">{{ scope.row.userName ? scope.row.userName : '未设置' }}</span> scope.row.userName : '未设置' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="图像"> <el-table-column label="图像">
<template slot-scope="scope"> <template slot-scope="scope">
<img v-if="scope.row.avatar==null" src="~@/assets/img/avatar.png" alt="" width="40" <img v-if="scope.row.avatar == null" src="~@/assets/img/avatar.png" alt="" width="40"
height="40"> height="40">
<img v-else :src="scope.row.avatar" alt="" width="40" height="40"> <img v-else :src="scope.row.avatar" alt="" width="40" height="40">
</template> </template>
@ -354,7 +380,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="member" label="是否是会员"> <el-table-column prop="member" label="是否是会员">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.member==1"></span> <span v-if="scope.row.member == 1"></span>
<span v-else></span> <span v-else></span>
</template> </template>
</el-table-column> </el-table-column>
@ -373,18 +399,18 @@
</el-dialog> </el-dialog>
<!-- 优惠券列表 --> <!-- 优惠券列表 -->
<el-dialog title="优惠券列表" :visible.sync="dialogFormVisible4" center> <el-dialog title="优惠券列表" :visible.sync="dialogFormVisible4" center>
<el-button style="margin-left:15px;" :disabled="couponIds.length <= 0 " size="mini" type="primary" <el-button style="margin-left:15px;" :disabled="couponIds.length <= 0" size="mini" type="primary"
icon="document" @click="closes2()">确定</el-button> icon="document" @click="closes2()">确定</el-button>
<el-table @selection-change="changeFun" v-loading="tableDataLoading" :data="tableData.content" <el-table @selection-change="changeFun" v-loading="tableDataLoading" :data="tableData.content"
:row-key="(row)=>{ return row.couponId}"> :row-key="(row) => { return row.couponId }">
<el-table-column :reserve-selection="true" type="selection" fixed> <el-table-column :reserve-selection="true" type="selection" fixed>
</el-table-column> </el-table-column>
<el-table-column prop="couponName" label="优惠券名称" width="150"> <el-table-column prop="couponName" label="优惠券名称" width="150">
</el-table-column> </el-table-column>
<el-table-column prop="type" label="优惠券类型" width="100"> <el-table-column prop="type" label="优惠券类型" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.type==1">通用券</span> <span v-if="scope.row.type == 1">通用券</span>
<span style="color: #3E8EF7;" v-if="scope.row.type==2">商品券</span> <span style="color: #3E8EF7;" v-if="scope.row.type == 2">商品券</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="money" label="优惠券面值" width="100"> <el-table-column prop="money" label="优惠券面值" width="100">
@ -411,14 +437,43 @@
</el-pagination> </el-pagination>
</div> </div>
</el-dialog> </el-dialog>
<!-- 商城 -->
<el-dialog title="添加商品" :visible.sync="shopDetailsStatus" center>
<el-table v-loading="shopDetailsLoading" :data="shopTableDataList">
<el-table-column fixed prop="id" label="编号" width="80">
</el-table-column>
<el-table-column fixed prop="coverImg" label="商品图片">
<template slot-scope="scope">
<img :src="scope.row.coverImg" alt="" width="60" height="60" />
</template>
</el-table-column>
<el-table-column prop="type" label="商品类型">
<template slot-scope="scope">
<span v-if="scope.row.type == null">暂无分类</span>
<span v-else>{{ scope.row.type.name }}</span>
</template>
</el-table-column>
<el-table-column prop="title" label="商品标题"> </el-table-column>
<el-table-column fixed="right" label="操作">
<template slot-scope="scope">
<el-button size="mini" type="primary" :disabled="!isAuth('shopAdmin:update')"
@click="addGoods(scope.$index, scope.row)">添加
</el-button>
</template>
</el-table-column>
</el-table>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { serverPaths } from '@/utils/enumData' import { serverPaths } from '@/utils/enumData'
export default { export default {
data() { data() {
return { return {
shopDetailsLoading: false,
shopDetailsStatus: false,
yhqzssl: 1,//
uploadUrl: serverPaths.uploadUrl, uploadUrl: serverPaths.uploadUrl,
size: 10, size: 10,
page: 1, page: 1,
@ -428,7 +483,7 @@ import { serverPaths } from '@/utils/enumData'
title: '', title: '',
typeId: '', typeId: '',
couponName: '', couponName: '',
couponPicture:'', couponPicture: '',
money: 0, money: 0,
minMoney: 0, minMoney: 0,
endDate: 1, endDate: 1,
@ -492,10 +547,52 @@ import { serverPaths } from '@/utils/enumData'
}, },
], ],
inviterCode: '', inviterCode: '',
shopTableDataList: [],
addMaterialPackageTag: {
goodsName: "",
goodsId: "",
},
} }
}, },
methods: { methods: {
addGoodsBtn() {
this.addMaterialPackageTag.goodsName = "";
this.addMaterialPackageTag.goodsId = "";
this.shopDetailsStatus = true;
this.getShopDataList()
},
closeTag() {
this.addMaterialPackageTag.goodsName = "";
this.addMaterialPackageTag.goodsId = "";
},
addGoods(index, row) {
this.addMaterialPackageTag.goodsName = row.title;
this.addMaterialPackageTag.goodsId = row.id;
this.shopDetailsStatus = false;
},
//
getShopDataList() {
this.shopDetailsLoading = true
this.$http({
url: this.$http.adornUrl("/admin/coupon/selectListByType"),
method: "get",
params: this.$http.adornParams({}),
}).then(({ data }) => {
if (data && data.data) {
this.shopDetailsLoading = false
let returnData = data.data;
this.shopTableDataList = returnData;
this.totalnum = returnData.totalElements;
} else {
this.shopDetailsLoading = false
this.shopTableDataList = []
}
}).catch(err => {
this.shopDetailsLoading = false
this.shopTableDataList = []
});
},
// / // /
couponClick(val) { couponClick(val) {
if (val = 1) { if (val = 1) {
@ -540,6 +637,8 @@ import { serverPaths } from '@/utils/enumData'
this.money = 0 this.money = 0
this.endDate = 1 this.endDate = 1
this.minMoney = 0 this.minMoney = 0
this.addMaterialPackageTag.goodsName = '';
this.addMaterialPackageTag.goodsId = '';
this.dialogFormVisible = true this.dialogFormVisible = true
}, },
handleAvatarSuccess1(file, fileList) { handleAvatarSuccess1(file, fileList) {
@ -608,11 +707,12 @@ import { serverPaths } from '@/utils/enumData'
'minMoney': this.minMoney, 'minMoney': this.minMoney,
'endDate': this.endDate, 'endDate': this.endDate,
'couType': this.couType, 'couType': this.couType,
'goodsId': this.addMaterialPackageTag.goodsId
}) })
}).then(({ }).then(({
data data
}) => { }) => {
if(data.code==0){ if (data.code == 0) {
this.$message({ this.$message({
message: '操作成功', message: '操作成功',
type: 'success', type: 'success',
@ -622,7 +722,7 @@ import { serverPaths } from '@/utils/enumData'
} }
}) })
this.dialogFormVisible = false this.dialogFormVisible = false
}else{ } else {
this.$message({ this.$message({
message: data.msg, message: data.msg,
type: 'warning', type: 'warning',
@ -644,11 +744,13 @@ import { serverPaths } from '@/utils/enumData'
this.form.endDate = row.endDate this.form.endDate = row.endDate
this.form.couponPicture = row.couponPicture this.form.couponPicture = row.couponPicture
this.form.couType = row.couType this.form.couType = row.couType
this.addMaterialPackageTag.goodsName = row.goodsName;
this.addMaterialPackageTag.goodsId = row.goodsId;
}, },
amendNoticeTo() { amendNoticeTo() {
this.form.minMoney = Number(this.form.minMoney) this.form.minMoney = Number(this.form.minMoney)
this.form.money = Number(this.form.money) this.form.money = Number(this.form.money)
console.log('this.form.money',typeof this.form.money ,this.form.money) console.log('this.form.money', typeof this.form.money, this.form.money)
if (this.form.minMoney < this.form.money) { if (this.form.minMoney < this.form.money) {
this.$notify({ this.$notify({
title: '提示', title: '提示',
@ -677,11 +779,12 @@ import { serverPaths } from '@/utils/enumData'
'minMoney': this.form.minMoney, 'minMoney': this.form.minMoney,
'endDate': this.form.endDate, 'endDate': this.form.endDate,
'couponPicture': this.form.couponPicture, 'couponPicture': this.form.couponPicture,
'goodsId': this.addMaterialPackageTag.goodsId
}) })
}).then(({ }).then(({
data data
}) => { }) => {
if(data.code==0){ if (data.code == 0) {
this.$message({ this.$message({
message: '操作成功', message: '操作成功',
type: 'success', type: 'success',
@ -691,7 +794,7 @@ import { serverPaths } from '@/utils/enumData'
} }
}) })
this.dialogFormVisible3 = false this.dialogFormVisible3 = false
}else{ } else {
this.$message({ this.$message({
message: data.msg, message: data.msg,
type: 'warning', type: 'warning',
@ -800,7 +903,7 @@ import { serverPaths } from '@/utils/enumData'
}) })
} }
}) })
}).catch(() => {}) }).catch(() => { })
}, },
// //
dataSelect() { dataSelect() {
@ -885,6 +988,7 @@ import { serverPaths } from '@/utils/enumData'
}, },
// //
songCoupon(row) { songCoupon(row) {
this.yhqzssl = 1 //1
this.userIdList = [] this.userIdList = []
this.couponIds = row.couponId this.couponIds = row.couponId
this.userNameList = [] this.userNameList = []
@ -930,7 +1034,8 @@ import { serverPaths } from '@/utils/enumData'
method: 'get', method: 'get',
params: this.$http.adornParams({ params: this.$http.adornParams({
'userIds': userIdList, 'userIds': userIdList,
'couponId': this.couponIds 'couponId': this.couponIds,
'amount': this.yhqzssl
}) })
}).then(({ }).then(({
data data
@ -955,7 +1060,7 @@ import { serverPaths } from '@/utils/enumData'
message: data.msg, message: data.msg,
type: 'warning', type: 'warning',
duration: 1500, duration: 1500,
onClose: () => {} onClose: () => { }
}) })
} }
@ -981,13 +1086,13 @@ import { serverPaths } from '@/utils/enumData'
// //
dataSelect1() { dataSelect1() {
let phone = -1 let phone = -1
if(this.member===1){ if (this.member === 1) {
var members = 1 var members = 1
var userType = '' var userType = ''
}else if(this.member===0){ } else if (this.member === 0) {
var members = '' var members = ''
var userType = 1 var userType = 1
}else{ } else {
var members = '' var members = ''
var userType = '' var userType = ''
} }
@ -1139,9 +1244,7 @@ import { serverPaths } from '@/utils/enumData'
mounted() { mounted() {
this.dataSelect() this.dataSelect()
} }
}; };
</script> </script>
<style> <style></style>
</style>

View File

@ -0,0 +1,337 @@
html,body{
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
html{
font-size: 100px;
}
ul,h1,h2,h3,h4,h5,h6,p{
list-style: 0;
padding: 0;
margin: 0;
}
a{
text-decoration: none;
}
/*正文*/
.t_container{
width: 100%;
height: 100%;
min-width: 1360px;
background: url('../img/true.png') no-repeat;
background-size: 100% 100%;
position: relative;
min-height: 756px;
}
.t_header{
width: 100%;
height: 80px;
background: url('../img/linx.png') no-repeat;
background-size: 100% 100%;
position: relative;
}
.t_header span{
color: #fff;
font-size: 0.36rem;
position: absolute;
top: 50%;
margin-top: -0.24rem;
left: 9%;
}
.t_main{
width: 98%;
height: 8.74rem;
margin: 0 auto;
margin-top: 0.2rem;
margin-bottom: 0;
}
.t_left_box{
position: relative;
width: 3.36rem;
height: 4.6rem;
display: inline-block;
text-align: center;
}
.t_l_line{
position: absolute;
top: 0;
left: 0;
}
.t_r_line{
position: absolute;
bottom: 0;
right: 0;
}
.t_center_box{
width: 6.82rem;
display: inline-block;
min-width: 490px;
}
.t_top_box{
width: 100%;
height: 1.13rem;
overflow: hidden;
position: relative;
margin-bottom: 0.2rem;
}
.t_bottom_box{
width: 100%;
height: 3.17rem;
overflow: hidden;
position: relative;
}
.t_right_box{
display: inline-block;
width: 7.8rem;
height: 4.6rem;
position: relative;
min-width: 560px;
}
.b_left_box{
display: inline-block;
width: 5.9rem;
height: 3.6rem;
position: relative;
min-width: 425px;
}
.b_center_box{
display: inline-block;
width: 6rem;
height: 3.6rem;
position: relative;
min-width: 432px;
}
.b_right_box{
display: inline-block;
width: 6rem;
height: 3.6rem;
position: relative;
min-width: 432px;
}
.t_mbox{
width: 3rem;
height: 1.28rem;
position: relative;
margin: 0 auto;
margin-top: 0.2rem;
}
.t_rbox{
background: #D9523F;
}
.t_gbox{
background: #13D0B2;
}
.t_ybox{
background: #F6A645;
}
.t_mbox i{
display: inline-block;
width: 0.46rem;
height: 0.48rem;
position: absolute;
top: 0;
bottom: 0;
left: 20%;
margin: auto;
}
.t_mbox h2{
font-size: 0.28rem;
color: #fff;
position: absolute;
top: 50%;
left: 50%;
}
.t_mbox span{
font-size: 0.2rem;
color: #fff;
position: absolute;
top: 24%;
left: 48%;
}
.t_rbox i{
background: url(../img/indent.png) no-repeat;
background-size: 100% 100%;
}
.t_gbox i{
background: url(../img/vip.png) no-repeat;
background-size: 100% 100%;
}
.t_ybox i{
background: url(../img/consumption.png) no-repeat;
background-size: 100% 100%;
}
.t_nav{
width: 100%;
height: 100%;
}
.t_nav li{
display: inline-block;
width: 30%;
height: 100%;
text-align: center;
position: relative;
}
.t_nav li span{
font-size: 0.16rem;
color: #1AA1FD;
position: absolute;
left: 0;
right: 0;
margin: auto;
top: 25%;
}
.t_nav li h1{
font-size: 0.30rem;
color: #fff;
position: absolute;
left: 0;
right: 0;
margin: auto;
top: 50%;
}
.t_nav li i{
width: 1px;
height: 100%;
position: absolute;
right: -0.2rem;
background: url('../img/sper.png') no-repeat;
background-size: 100% 100%;
}
.t_table{
font-size: 0.16rem;
color: #fff;
width: 94%;
margin: 0 auto;
border-spacing: 0;
text-align: center;
box-sizing: border-box;
margin-top: 12%;
}
.t_table tr{
margin: 0;
padding: 0;
height: 0.42rem;
}
.t_table thead tr{
background: #053A98;
}
.t_table tbody tr td:first-child{
border-left: 1px solid #053A98;
}
.t_table td{
border-bottom: 1px solid #053A98;
border-right: 1px solid #053A98;
}
.t_title{
position: absolute;
font-size: 0.18rem;
color: #fff;
left: 5%;
top: 10%;
}
.t_b_h,t_b_m{
position: absolute;
font-size: 0.16rem;
left: 54%;
width: 50%;
height: 4.6rem;
}
.t_b_h span{
position: absolute;
color: #fff;
top: 10%;
}
.t_b_h img{
position: absolute;
width: 0.53rem;
height: 0.53rem;
top: 6%;
left: 24%
}
.t_b_h h3{
font-size: 0.36rem;
color: #F0FF00;
position: absolute;
left: 55%;
top: 8%;
width: 1rem;
}
.t_b_h h3 span{
font-size: 0.2rem;
position: absolute;
left: 50%;
top: 28%;
color: #0072FF;
}
.t_b_m img{
position: absolute;
left: 52%;
top: 22%;
border-top: 1px dotted #F0FF00;
padding: 0 0.18rem;
padding-top: 20px;
width: 3.19rem;
height: 1.67rem;
}
.t_b_box,.t_b_box1,.t_b_box2,.t_b_box3{
width: 1.3rem;
height: 0.56rem;
border: 1px dotted #F0FF00;
border-radius: 5px;
position: absolute;
}
.t_b_box{
top: 68%;
left: 56%;
}
.t_b_box span,.t_b_box1 span,.t_b_box2 span,.t_b_box3 span{
font-size: 0.14rem;
color: #fff;
position: absolute;
left: 10%;
}
.t_b_box i,.t_b_box1 i,.t_b_box2 i,.t_b_box3 i{
width: 20px;
height: 20px;
position: absolute;
top: 50%;
left: 15%
}
.t_b_box i{
background: url('../img/t.png') no-repeat;
background-size: 100% 100%;
}
.t_b_box1 i{
background: url('../img/s.png') no-repeat;
background-size: 100% 100%;
}
.t_b_box2 i{
background: url('../img/j.png') no-repeat;
background-size: 100% 100%;
}
.t_b_box3 i{
background: url('../img/g.png') no-repeat;
background-size: 100% 100%;
}
.t_b_box h2,.t_b_box1 h2,.t_b_box2 h2,.t_b_box3 h2{
font-size: 0.18rem;
color: #fff;
position: absolute;
top: 30%;
left: 40%;
}
.t_b_box1{
top: 68%;
left: 78%;
}
.t_b_box2{
top: 84%;
left: 56%;
}
.t_b_box3{
top: 84%;
left: 78%;
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
src/views/common/img/g.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/views/common/img/j.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/views/common/img/s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
src/views/common/img/t.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1740643891246" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9900" xmlns:xlink="http://www.w3.org/1999/xlink" width="100" height="100"><path d="M424.87757431 440.0236721c4.2719763 0 8.54395259-1.68289975 11.90975211-5.04869927 3.23634569-3.23634569 4.91924543-7.63777581 4.91924543-11.90975208l-0.12945382-349.784241c0-2.20071506-1.29453827-4.2719763-3.49525334-5.17815308-2.20071506-0.9061768-4.53088395-0.38836148-6.08432987 1.29453827L313.6767368 187.07089383 155.09579852 29.26667852c-2.97743803-2.97743803-7.24941431-4.91924543-11.9097521-4.91924543-4.66033778 0-8.80286025 1.81235358-11.90975211 4.91924543l-107.70558418 107.18776889c-3.10689185 2.97743803-4.91924543 7.24941431-4.91924544 11.90975209 0 4.66033778 1.81235358 8.93231408 4.91924544 11.90975211l158.45148444 157.8042153-114.95499852 114.43718322c-1.55344592 1.55344592-2.07126124 3.88361482-1.16508444 6.2137837 0.9061768 2.20071506 2.97743803 3.49525333 5.17815308 3.49525334l353.79730962-2.20071507z m0 0M423.45358222 584.23523555c4.2719763 0 8.67340642 1.68289975 11.90975209 4.91924543 3.3657995 3.3657995 4.91924543 7.63777581 4.91924544 11.90975211l-0.12945383 352.76167901c0 2.20071506-1.29453827 4.2719763-3.49525333 5.17815308-2.20071506 0.9061768-4.53088395 0.38836148-6.08432987-1.16508443l-118.1913442-117.6735289-158.58093827 157.93366913c-2.97743803 2.97743803-7.24941431 4.91924543-11.9097521 4.91924544-4.66033778 0-8.80286025-1.81235358-11.9097521-4.91924544l-107.7055842-107.18776888c-3.10689185-3.10689185-4.91924543-7.24941431-4.91924543-11.9097521 0-4.66033778 1.81235358-8.93231408 4.91924543-11.9097521l158.45148445-157.67476148-114.95499852-114.56663703c-1.55344592-1.55344592-2.07126124-4.01306864-1.29453828-6.2137837 0.9061768-2.20071506 2.97743803-3.49525333 5.17815309-3.49525334l353.79730963-0.9061768z m0 0M601.71150222 437.43459555c-4.2719763 0-8.54395259-1.68289975-11.90975209-5.04869925-3.3657995-3.23634569-4.91924543-7.63777581-4.91924544-11.90975211l0.12945383-349.78424099c0-2.20071506 1.29453827-4.2719763 3.49525333-5.17815307 2.20071506-0.9061768 4.53088395-0.38836148 6.08432988 1.29453826l118.32079802 117.67352889 158.58093828-157.80421531c3.10689185-2.97743803 7.24941431-4.91924543 11.9097521-4.91924544 4.66033778 0 8.80286025 1.81235358 11.90975209 4.91924544l107.57613037 107.18776889c3.10689185 2.97743803 4.91924543 7.24941431 4.91924544 11.90975211 0 4.66033778-1.81235358 8.93231408-4.91924544 11.90975209L844.43742815 315.48909037l114.95499852 114.43718321c1.55344592 1.55344592 2.07126124 3.88361482 1.16508444 6.2137837-0.9061768 2.20071506-2.97743803 3.49525333-5.17815308 3.49525333l-353.66785581-2.20071506z m0 0M601.84095605 584.23523555c-4.2719763 0-8.67340642 1.68289975-11.9097521 4.91924543-3.3657995 3.3657995-5.04869925 7.63777581-5.04869926 11.90975211l0.12945383 352.76167901c0 2.20071506 1.29453827 4.2719763 3.49525333 5.17815308 2.20071506 0.9061768 4.53088395 0.38836148 6.08432988-1.16508443l118.32079802-117.6735289 158.58093828 157.93366913c3.10689185 2.97743803 7.24941431 4.91924543 11.9097521 4.91924544 4.66033778 0 8.80286025-1.81235358 11.90975209-4.91924544l107.57613037-107.18776888c3.10689185-3.10689185 4.91924543-7.24941431 4.91924544-11.9097521 0-4.66033778-1.81235358-8.93231408-4.91924544-11.9097521l-158.45148444-157.93366914 115.08445235-114.56663703c1.55344592-1.55344592 2.07126124-4.01306864 1.29453826-6.2137837-0.9061768-2.20071506-2.97743803-3.49525333-5.17815307-3.49525334l-353.79730964-0.64726914z m0 0" fill="#ffffff" p-id="9901"></path></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
$(function(){
var whdef = 100/1920;// 表示1920的设计图,使用100PX的默认值
var wH = window.innerHeight;// 当前窗口的高度
var wW = window.innerWidth;// 当前窗口的宽度
var rem = wW * whdef;// 以默认比例值乘以当前窗口宽度,得到该宽度下的相应FONT-SIZE值
$('html').css('font-size', rem + "px");
});
$(window).resize(function (){// 绑定到窗口的这个事件中
var whdef = 100/1920;// 表示1920的设计图,使用100PX的默认值
var wH = window.innerHeight;// 当前窗口的高度
var wW = window.innerWidth;// 当前窗口的宽度
var rem = wW * whdef;// 以默认比例值乘以当前窗口宽度,得到该宽度下的相应FONT-SIZE值
$('html').css('font-size', rem + "px");
});

View File

@ -3,7 +3,7 @@
<div class="site-content__wrapper"> <div class="site-content__wrapper">
<div class="site-content"> <div class="site-content">
<div class="login-main"> <div class="login-main">
<h3 class="login-title">盛安到家1.0管理系统</h3> <h3 class="login-title">盛安小象1.0管理系统</h3>
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" status-icon> <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" status-icon>
<el-form-item prop="userName"> <el-form-item prop="userName">
<el-input v-model="dataForm.userName" placeholder="帐号"></el-input> <el-input v-model="dataForm.userName" placeholder="帐号"></el-input>

File diff suppressed because it is too large Load Diff

View File

@ -2,15 +2,13 @@
<nav class="site-navbar" :class="'site-navbar--' + navbarLayoutType"> <nav class="site-navbar" :class="'site-navbar--' + navbarLayoutType">
<div class="site-navbar__header"> <div class="site-navbar__header">
<h1 class="site-navbar__brand"> <h1 class="site-navbar__brand">
<a class="site-navbar__brand-lg" href="javascript:;">盛安到家1.0系统</a> <a class="site-navbar__brand-lg" href="javascript:;">盛安小象1.0系统</a>
<a class="site-navbar__brand-mini" href="javascript:;"> <a class="site-navbar__brand-mini" href="javascript:;">
<img src="~@/assets/img/avatar.png" style="width: 30px;height: 30px; border-radius: 50%;"> <img src="~@/assets/img/avatar.png" style="width: 30px;height: 30px; border-radius: 50%;">
</a> </a>
</h1> </h1>
</div> </div>
<div><audio ref="audioPlayer" ></audio> <audio ref="audioPlayer" ></audio>
<el-button id="aaaaaaaaaa">播放</el-button>
</div>
<div class="site-navbar__body clearfix"> <div class="site-navbar__body clearfix">
<el-menu class="site-navbar__menu" mode="horizontal"> <el-menu class="site-navbar__menu" mode="horizontal">
<el-menu-item class="site-navbar__switch" index="0" @click="sidebarFold = !sidebarFold"> <el-menu-item class="site-navbar__switch" index="0" @click="sidebarFold = !sidebarFold">
@ -72,10 +70,10 @@
<script> <script>
import UpdatePassword from './main-navbar-update-password' import UpdatePassword from './main-navbar-update-password'
import tipmap3 from '@/assets/mp3/tip.mp3';
import { import {
clearLoginInfo clearLoginInfo
} from '@/utils' } from '@/utils'
import {speak} from '@/utils/speechReminder.js'
export default { export default {
data() { data() {
return { return {
@ -88,6 +86,9 @@ export default {
chatNumJl: 0, chatNumJl: 0,
chatNumSpq:0, chatNumSpq:0,
chatNumQy: 0, chatNumQy: 0,
chatNumLts: 0,
chatNumXxzx:0,
chatNumXyhzc:0,
chatNumJjqz: 0, chatNumJjqz: 0,
chatNumYh: 0, chatNumYh: 0,
chatNumJg: 0, chatNumJg: 0,
@ -161,6 +162,7 @@ export default {
this.$cookie.set('numberJg', '') this.$cookie.set('numberJg', '')
this.$cookie.set('numberLts', '') this.$cookie.set('numberLts', '')
this.$cookie.set('numberSpq', '') this.$cookie.set('numberSpq', '')
this.$cookie.set('numberXxzx', '')
sessionStorage.clear() sessionStorage.clear()
//router.options.isAddDynamicMenuRoutes = false; //router.options.isAddDynamicMenuRoutes = false;
this.$router.push({ this.$router.push({
@ -316,6 +318,7 @@ export default {
}) => { }) => {
if (data.data >= 0) { if (data.data >= 0) {
this.$cookie.set('numberDts', data.data) this.$cookie.set('numberDts', data.data)
if (data.data > 0) this.playAudio(require('@/assets/mp3/ts.mp3'))
} }
}) })
}, },
@ -332,6 +335,7 @@ export default {
}) => { }) => {
if (data.data >= 0) { if (data.data >= 0) {
this.$cookie.set('numberJjqz', data.data) this.$cookie.set('numberJjqz', data.data)
if (data.data > 0) this.playAudio(require('@/assets/mp3/jjqz.mp3'))
} }
}) })
}, },
@ -388,8 +392,8 @@ export default {
} }
}) })
}, },
playAudio(){ playAudio(media){
this.$refs.audioPlayer.src = require('@/assets/mp3/tip.mp3'); this.$refs.audioPlayer.src = media;
this.$refs.audioPlayer.play(); this.$refs.audioPlayer.play();
}, },
// //
@ -400,10 +404,31 @@ export default {
}).then(({ data }) => { }).then(({ data }) => {
if (data.data >= 0) { if (data.data >= 0) {
this.$cookie.set('numberSpq', data.data) this.$cookie.set('numberSpq', data.data)
document.getElementById('aaaaaaaaaa').addEventListener('click',()=>{ if (data.data > 0) this.playAudio(require('@/assets/mp3/spq.mp3'))
console.log("dddd") }
this.playAudio()
}) })
},
//
dataSelectXxzx() {
this.$http({
url: this.$http.adornUrl('/message/dataSelectXxzx'),
method: 'get',
}).then(({ data }) => {
if (data.data >= 0) {
this.$cookie.set('numberXxzx', data.data)
if (data.data > 0) this.playAudio(require('@/assets/mp3/xxzx.mp3'))
}
})
},
//
dataSelectXyhzc() {
this.$http({
url: this.$http.adornUrl('/message/dataSelectXyhzc'),
method: 'get',
}).then(({ data }) => {
if (data.data >= 0) {
this.$cookie.set('numberXyhzc', data.data)
if (data.data > 0) this.playAudio(require('@/assets/mp3/xyhzc.mp3'))
} }
}) })
}, },
@ -419,6 +444,7 @@ export default {
}).then(({ data }) => { }).then(({ data }) => {
if (data.data >= 0) { if (data.data >= 0) {
this.$cookie.set('numberLts', data.data) this.$cookie.set('numberLts', data.data)
if (data.data > 0) this.playAudio(require('@/assets/mp3/lts.mp3'))
} }
}) })
}, },
@ -547,6 +573,9 @@ export default {
} }
}, },
mounted() { mounted() {
// setInterval(() => {
// speak('',{})
// }, 3000);
this.getRingId(); this.getRingId();
this.userSelect() this.userSelect()
// this.chatSelect() // this.chatSelect()
@ -559,6 +588,8 @@ export default {
this.dataSelectYh() this.dataSelectYh()
this.dataSelectLts() this.dataSelectLts()
this.dataSelectSpq() this.dataSelectSpq()
this.dataSelectXxzx()
this.dataSelectXyhzc()
if ((this.userId && this.ringOrderId) && (this.userId == this.ringOrderId)) { if ((this.userId && this.ringOrderId) && (this.userId == this.ringOrderId)) {
this.dataSelectJg() this.dataSelectJg()
this.dataSelectCs() this.dataSelectCs()
@ -585,7 +616,25 @@ export default {
// this.chatNumQy = setInterval(() => { // this.chatNumQy = setInterval(() => {
// this.dataSelectPy() // this.dataSelectPy()
// }, 60000) // }, 60000)
// }, 8000); // }, 16000);
// //
// setTimeout(() => {
// this.chatNumLts = setInterval(() => {
// this.dataSelectLts()
// }, 60000)
// }, 24000);
// //
// setTimeout(() => {
// this.chatNumXxzx = setInterval(() => {
// this.dataSelectXxzx()
// }, 60000)
// }, 32000);
// //
// setTimeout(() => {
// this.chatNumXyhzc = setInterval(() => {
// this.dataSelectXyhzc()
// }, 60000)
// }, 40000);
// // // //
// this.chatNumJl = setInterval(() => { // this.chatNumJl = setInterval(() => {
// this.dataSelect() // this.dataSelect()
@ -608,15 +657,24 @@ export default {
}, },
beforeDestroy() { beforeDestroy() {
// //
//
// clearInterval(this.chatNumJjqz);
// //
// clearInterval(this.chatNumSpq);
// //
// clearInterval(this.chatNumQy);
// //
// clearInterval(this.chatNumLts);
// //
// clearInterval(this.chatNumXxzx);
// //
// clearInterval(this.chatNumXyhzc);
// clearInterval(this.chatNum) // clearInterval(this.chatNum)
// clearInterval(this.chatNumJl); // clearInterval(this.chatNumJl);
// clearInterval(this.chatNumQy);
// clearInterval(this.chatNumJjqz);
// clearInterval(this.chatNumYh); // clearInterval(this.chatNumYh);
// clearInterval(this.chatNumJg); // clearInterval(this.chatNumJg);
// clearInterval(this.chatNumCs); // clearInterval(this.chatNumCs);
// clearInterval(this.chatNumXdd); // clearInterval(this.chatNumXdd);
// clearInterval(this.chatNumSpq);
} }
} }
</script> </script>

View File

@ -15,6 +15,9 @@
<el-badge class="item" v-if="menu.menuId==195&&chatNumLts!=0" is-dot> <el-badge class="item" v-if="menu.menuId==195&&chatNumLts!=0" is-dot>
<span> </span> <span> </span>
</el-badge> </el-badge>
<el-badge class="item" v-if="menu.menuId==323&&havaMsg(323)" is-dot>
<span> </span>
</el-badge>
</template> </template>
<sub-menu v-for="item in menu.list" :key="item.menuId" :menu="item" :dynamicMenuRoutes="dynamicMenuRoutes"> <sub-menu v-for="item in menu.list" :key="item.menuId" :menu="item" :dynamicMenuRoutes="dynamicMenuRoutes">
</sub-menu> </sub-menu>
@ -28,6 +31,9 @@
<icon-svg :name="menu.icon || ''" class="site-sidebar__menu-icon"></icon-svg> <icon-svg :name="menu.icon || ''" class="site-sidebar__menu-icon"></icon-svg>
<span>{{ menu.name }}</span> <span>{{ menu.name }}</span>
</span> </span>
<el-badge class="item" v-if="menu.menuId==41&&chatNumXxzx!=0" :value="chatNumXxzx">
<span> </span>
</el-badge>
<el-badge class="item" v-if="menu.menuId==79&&chatNumLts!=0" :value="chatNumLts"> <el-badge class="item" v-if="menu.menuId==79&&chatNumLts!=0" :value="chatNumLts">
<span> </span> <span> </span>
</el-badge> </el-badge>
@ -49,6 +55,9 @@
<el-badge class="item" v-if="menu.menuId==314&&chatNumSpq!=0" :value="chatNumSpq"> <el-badge class="item" v-if="menu.menuId==314&&chatNumSpq!=0" :value="chatNumSpq">
<span> </span> <span> </span>
</el-badge> </el-badge>
<el-badge class="item" v-if="menu.menuId==321&&chatNumXyhzc!=0" :value="chatNumXyhzc">
<span> </span>
</el-badge>
</el-menu-item> </el-menu-item>
</template> </template>
@ -65,6 +74,8 @@ export default {
chatNumFwz:0, chatNumFwz:0,
chatNumLts:0, chatNumLts:0,
chatNumSpq:0, chatNumSpq:0,
chatNumXxzx:0,
chatNumXyhzc:0,
} }
}, },
props: { props: {
@ -100,7 +111,10 @@ export default {
// //
havaMsg(index){ havaMsg(index){
if(index == 311){ if(index == 311){
return this.chatNumDrz != 0 || this.chatNumDts != 0 || this.chatNumJjqz != 0 || this.chatNumDsm != 0 || this.chatNumFwz != 0 || this.chatNumLts != 0 || this.chatNumSpq != 0 return this.chatNumDrz != 0 || this.chatNumDts != 0 || this.chatNumJjqz != 0 || this.chatNumDsm != 0 || this.chatNumFwz != 0 || this.chatNumLts != 0 || this.chatNumSpq != 0 || this.chatNumXxzx != 0 || this.chatNumXyhzc != 0
}
if(index == 323){
return this.chatNumXxzx != 0 || this.chatNumXyhzc != 0
} }
return false return false
} }
@ -129,7 +143,12 @@ export default {
if(this.$cookie.get('numberSpq')){ if(this.$cookie.get('numberSpq')){
this.chatNumSpq = this.$cookie.get('numberSpq') this.chatNumSpq = this.$cookie.get('numberSpq')
} }
if(this.$cookie.get('numberXxzx')){
this.chatNumXxzx = this.$cookie.get('numberXxzx')
}
if(this.$cookie.get('numberXyhzc')){
this.chatNumXyhzc = this.$cookie.get('numberXyhzc')
}
}, 1000) }, 1000)
// this.chatNum2 = setInterval(() => { // this.chatNum2 = setInterval(() => {
// this.messageSelect2() // this.messageSelect2()

View File

@ -691,7 +691,6 @@ export default {
materialName: this.projectName, materialName: this.projectName,
}), }),
}).then(({ data }) => { }).then(({ data }) => {
console.log("12332hhhh", data);
if (data.code == 0) { if (data.code == 0) {
this.tableDataLoading = false; this.tableDataLoading = false;
let returnData = data.data; let returnData = data.data;

View File

@ -1,6 +1,10 @@
<template> <template>
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="意见反馈" name="first"> <el-tab-pane label="意见反馈" name="first">
<div style="margin-right:2%;text-align:right;">
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="dataSelect">刷新
</el-button>
</div>
<el-table v-loading="tableDataLoading" :data="tableData.list"> <el-table v-loading="tableDataLoading" :data="tableData.list">
<el-table-column prop="id" label="编号" width="80"> <el-table-column prop="id" label="编号" width="80">
</el-table-column> </el-table-column>
@ -10,6 +14,20 @@
</el-table-column> </el-table-column>
<el-table-column prop="createAt" label="创建时间" width="180"> <el-table-column prop="createAt" label="创建时间" width="180">
</el-table-column> </el-table-column>
<el-table-column prop="isSee" label="状态" width="180">
<template slot-scope="scope">
<span v-if="scope.row.isSee == 2" style="color: #67C23A;">已读</span>
<span v-else style="color: #909399;">未读</span>
</template>
</el-table-column>
<el-table-column label="操作" width="180" align="center">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="changeState(scope.row, true)"
v-if="scope.row.isSee != 2">标为已读</el-button>
<el-button type="info" size="small" @click="changeState(scope.row, false)"
v-if="scope.row.isSee == 2">标为未读</el-button>
</template>
</el-table-column>
</el-table> </el-table>
<div style="text-align: center;margin-top: 10px;"> <div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
@ -19,6 +37,10 @@
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="注销账号" name="fourth"> <el-tab-pane label="注销账号" name="fourth">
<div style="margin-right:2%;text-align:right;">
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="dataSelect">刷新
</el-button>
</div>
<el-table v-loading="tableDataLoading" :data="tableData.list"> <el-table v-loading="tableDataLoading" :data="tableData.list">
<el-table-column prop="id" label="编号" width="80"> <el-table-column prop="id" label="编号" width="80">
</el-table-column> </el-table-column>
@ -146,7 +168,7 @@
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
limit: 10, limit: 10,
@ -203,6 +225,53 @@
} }
}, },
methods: { methods: {
//
dataSelectXxzx() {
this.$http({
url: this.$http.adornUrl('/message/dataSelectXxzx'),
method: 'get',
}).then(({ data }) => {
if (data.data >= 0) {
this.$cookie.set('numberXxzx', data.data)
}
})
},
//
changeState(row, type) {
let isSee = 1
if (type) isSee = 2
else isSee = 1
this.$http({
url: this.$http.adornUrl('message/updateMessage'),
method: 'post',
data: this.$http.adornData({
'id': row.id,
'isSee': isSee
})
}).then(({
data
}) => {
if (data.code == 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.dataSelect()
this.dataSelectXxzx()
}
})
} else {
this.$notify({
title: '提示',
duration: 1800,
message: data.msg,
type: 'warning'
})
}
})
},
// //
updataDetails(row) { updataDetails(row) {
this.$router.push({ this.$router.push({
@ -381,9 +450,7 @@
mounted() { mounted() {
this.dataSelect() this.dataSelect()
} }
}; };
</script> </script>
<style> <style></style>
</style>

View File

@ -0,0 +1,312 @@
<template>
<div>
<div style="margin-right:2%;text-align:right;">
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="dataSelect">刷新
</el-button>
</div>
<el-table v-loading="tableDataLoading" :data="tableData.list">
<el-table-column prop="id" label="编号" width="80">
</el-table-column>
<el-table-column prop="title" label="联系方式">
</el-table-column>
<el-table-column prop="content" label="内容">
</el-table-column>
<el-table-column prop="createAt" label="创建时间" width="180">
</el-table-column>
<el-table-column prop="isSee" label="状态" width="180">
<template slot-scope="scope">
<span v-if="scope.row.isSee == 2" style="color: #67C23A;">已读</span>
<span v-else style="color: #909399;">未读</span>
</template>
</el-table-column>
<el-table-column label="操作" width="180" align="center">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="changeState(scope.row, true)"
v-if="scope.row.isSee != 2">标为已读</el-button>
<el-button type="info" size="small" @click="changeState(scope.row, false)"
v-if="scope.row.isSee == 2">标为未读</el-button>
</template>
</el-table-column>
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:page-sizes="[10, 20, 30, 40]" :page-size="limit" :current-page="page"
layout="total,sizes, prev, pager, next,jumper" :total="tableData.totalCount">
</el-pagination>
</div>
</div>
</template>
<script>
export default {
data() {
return {
limit: 10,
page: 1,
state: 99,
url: '',
title: '',
type: '',
id: '',
types: [{
value: 'word',
label: '文字'
},
{
value: 'url',
label: '链接'
}
],
form: {
id: '',
title: '',
url: '',
type: '',
state: '',
types: [{
value: 'word',
label: '文字'
},
{
value: 'url',
label: '链接'
}
],
},
phone: '',
content: '',
flag: '',
flags: [{
value: 1,
label: '单个用户'
},
{
value: 2,
label: '全部用户'
}
],
formLabelWidth: '200px',
activeName: 'first',
tableDataLoading: false,
dialogFormVisible1: false,
dialogFormVisible2: false,
dialogFormVisible: false,
tableData: [],
}
},
methods: {
//
dataSelectXyhzc() {
this.$http({
url: this.$http.adornUrl('/message/dataSelectXyhzc'),
method: 'get',
}).then(({ data }) => {
if (data.data >= 0) {
this.$cookie.set('numberXyhzc', data.data)
}
})
},
//
changeState(row, type) {
let isSee = 1
if (type) isSee = 2
else isSee = 1
this.$http({
url: this.$http.adornUrl('message/updateMessage'),
method: 'post',
data: this.$http.adornData({
'id': row.id,
'isSee': isSee
})
}).then(({
data
}) => {
if (data.code == 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.dataSelect()
this.dataSelectXyhzc()
}
})
} else {
this.$notify({
title: '提示',
duration: 1800,
message: data.msg,
type: 'warning'
})
}
})
},
//
updataDetails(row) {
this.$router.push({
path: '/userDetail',
query: {
userId: row.userId
}
});
},
handleSizeChange(val) {
this.limit = val;
this.dataSelect()
},
handleCurrentChange(val) {
this.page = val;
this.dataSelect()
},
handleClick(tab, event) {
this.page = 1
this.limit = 10
this.state = 99
this.dataSelect()
},
//
magNotice() {
this.dialogFormVisible2 = true
},
//
magNoticeTo() {
if (this.flag == '') {
this.$notify({
title: '提示',
duration: 1800,
message: '请选择类型',
type: 'warning'
});
return
}
if (this.title == '') {
this.$notify({
title: '提示',
duration: 1800,
message: '请输入标题',
type: 'warning'
});
return
}
if (this.content == '') {
this.$notify({
title: '提示',
duration: 1800,
message: '请输入内容',
type: 'warning'
});
return
}
if (this.flag == 1) {
if (this.phone == '') {
this.$notify({
title: '提示',
duration: 1800,
message: '请输入用户手机号',
type: 'warning'
});
return
}
this.$http({
url: this.$http.adornUrl('/cash/sendMsg'),
method: 'get',
params: this.$http.adornParams({
'title': this.title,
'content': this.content,
'phone': this.phone,
'flag': this.flag
})
}).then(({
data
}) => {
this.dialogFormVisible2 = false
if (data.code == -100) {
this.$message({
message: data.msg,
type: 'error',
duration: 1500,
onClose: () => {
this.title = ''
this.content = ''
this.phone = ''
this.flag = ''
this.dataSelect()
}
})
}
if (data.code == 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.title = ''
this.content = ''
this.phone = ''
this.flag = ''
this.dataSelect()
}
})
}
})
}
if (this.flag == 2) {
this.$http({
url: this.$http.adornUrl('/cash/sendMsg'),
method: 'get',
params: this.$http.adornParams({
'title': this.title,
'content': this.content,
'flag': this.flag,
})
}).then(({
data
}) => {
this.dialogFormVisible2 = false
if (data.code == 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.title = ''
this.content = ''
this.flag = ''
this.dataSelect()
}
})
}
})
}
},
//
dataSelect() {
this.tableDataLoading = true
this.$http({
url: this.$http.adornUrl(`message/page/${this.state}/${this.page}/${this.limit}`),
method: 'get',
params: this.$http.adornParams({})
}).then(({
data
}) => {
this.tableDataLoading = false
// for (var i in data.data.list) {
// var a = data.data.list[i].content.toString()
// var b = JSON.parse(a)
// data.data.list[i].content = b.content
// console.log('key', b.content)
// }
let returnData = data.data;
this.tableData = returnData
})
},
},
mounted() {
this.dataSelect()
}
};
</script>
<style></style>

View File

@ -1,107 +1,7 @@
<template> <template>
<div> <div>
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="风险记录" name="first"> <el-tab-pane label="投诉列表" name="fxjl">
<div style="margin:2% 0;display: inline-block;">
<span>用户昵称:</span>
<el-input style="width: 150px;" @keydown.enter.native="select" clearable placeholder="请输入用户昵称"
v-model="userName"></el-input>
</div>&emsp;&emsp;
<div style="margin:2% 0;display: inline-block;">
<span>手机号:</span>
<el-input style="width: 150px;" @keydown.enter.native="select" clearable placeholder="请输入手机号"
v-model="phone"></el-input>
</div>&emsp;&emsp;
<div style="margin:2% 0;display: inline-block;">
<span>风险类型</span>
<el-select filterable v-model="riskType" style="width:150px;margin-left: 10px;" @change="select">
<el-option v-for="item in platforms" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>&nbsp;&nbsp;&nbsp;
</div>&emsp;&emsp;
<div style="display: inline-block;">
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="select">查询
</el-button>
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document" @click="cleans">重置
</el-button>
</div>
<el-table v-loading="tableDataLoading" :data="tableData.list">
<el-table-column fixed prop="riskId" label="编号" width="80"></el-table-column>
<el-table-column fixed prop="userName" label="昵称" width="150">
<template slot-scope="scope">
<el-button size="mini" v-if="scope.row.user " style="color: #4f9dec;background: #fff;border: none;cursor: pointer;" type="primary" @click="updates(scope.row)">
{{scope.row.user.userName}}
</el-button>
<span v-else>未绑定</span>
</template>
</el-table-column>
<el-table-column label="图像" width="100">
<template slot-scope="scope">
<img v-if="!scope.row.user" src="~@/assets/img/avatar.png" alt="" width="40" height="40">
<img v-else :src="scope.row.user.avatar" alt="" width="40" height="40">
</template>
</el-table-column>
<el-table-column prop="phone" label="手机号" width="150">
<template slot-scope="scope">
<el-button size="mini" v-if="scope.row.user " style="color: #4f9dec;background: #fff;border: none;" type="primary"
@click="updates(scope.row)">
{{scope.row.user.phone}}
</el-button>
<span v-else>未绑定</span>
</template>
</el-table-column>
<el-table-column prop="riskType" label="风险类型" width="100">
<template slot-scope="scope">
<span v-if="scope.row.riskType==1">ip属地风险</span>
<!-- <span v-if="scope.row.riskType==2">动态</span>
<span v-if="scope.row.riskType==3">动态评价</span> -->
<span v-if="scope.row.riskType==4">项目评价</span>
<!-- <span v-if="scope.row.riskType==5">聊天</span> -->
<span v-if="scope.row.riskType==6">举报</span>
</template>
</el-table-column>
<el-table-column prop="content" label="触犯原因"></el-table-column>
<el-table-column prop="createTime" label="创建时间" width="160"></el-table-column>
<el-table-column prop="risk" label="是否标记为风险用户" width="80">
<template slot-scope="scope">
<el-switch v-if="scope.row.user" v-model="scope.row.user.risk" @change="changeRist(scope.row.user.risk,scope.row.user.userId)"
:active-value="openValue" :disabled="!isAuth('skynetCenter:fxyh')"
:inactive-value="closeValue" active-color="#13ce66" inactive-color="#ff4949">
</el-switch>
<span v-if="scope.row.user&&scope.row.user.risk == 1" style="color: #13ce66;"></span>
<span v-else style="color: #ff4949;"></span>
</template>
</el-table-column>
<el-table-column prop="state" label="状态" width="100">
<template slot-scope="scope">
<el-switch v-if="scope.row.user" v-model="scope.row.user.status" @change="changeStatus(scope.row.user.status,scope.row.user.userId)"
:active-value="openValue" :disabled="!isAuth('skynetCenter:fxyh')"
:inactive-value="closeValue" active-color="#13ce66" inactive-color="#ff4949">
</el-switch>
<span v-if="scope.row.user&&scope.row.user.status == 1 " style="color: #13ce66;">正常</span>
<span v-if="scope.row.user&&scope.row.user.status == 2 " style="color: #f56c6c;">禁用</span>
</template>
</el-table-column>
<!-- <el-table-column prop="risk" label="是否是风险用户" width="80">
<template slot-scope="scope">
<el-switch v-model="scope.row.risk" @change="changeRist(scope.row.risk,scope.row.userId)"
:active-value="openValue" :disabled="!isAuth('userList:delete')"
:inactive-value="closeValue" active-color="#13ce66" inactive-color="#ff4949">
</el-switch>
</template>
</el-table-column> -->
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:page-sizes="[5, 10, 15, 20]" :page-size="limit" :current-page="page"
layout="total,sizes, prev, pager, next,jumper" :total="tableData.totalCount">
</el-pagination>
</div>
</el-tab-pane>
<el-tab-pane label="用户风险列表" name="scond">
<div style="margin:2% 0;display: inline-block;"> <div style="margin:2% 0;display: inline-block;">
<span>用户昵称:</span> <span>用户昵称:</span>
<el-input style="width: 150px;" @keydown.enter.native="selectF" clearable placeholder="请输入用户昵称" <el-input style="width: 150px;" @keydown.enter.native="selectF" clearable placeholder="请输入用户昵称"
@ -131,8 +31,10 @@
<el-table-column fixed prop="userId" label="编号" width="80"></el-table-column> <el-table-column fixed prop="userId" label="编号" width="80"></el-table-column>
<el-table-column fixed prop="userName" label="昵称" width="150"> <el-table-column fixed prop="userName" label="昵称" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" v-if="scope.row.user" style="color: #4f9dec;background: #fff;border: none;" type="primary" @click="updates(scope.row)"> <el-button size="mini" v-if="scope.row.user"
{{scope.row.user.userName}} style="color: #4f9dec;background: #fff;border: none;" type="primary"
@click="updates(scope.row)">
{{ scope.row.user.userName }}
</el-button> </el-button>
<span v-else>未绑定</span> <span v-else>未绑定</span>
<!-- <span style="color: #f56c6c;">{{ scope.row.user ? scope.row.user.userName : '未绑定' }}</span> --> <!-- <span style="color: #f56c6c;">{{ scope.row.user ? scope.row.user.userName : '未绑定' }}</span> -->
@ -146,8 +48,10 @@
</el-table-column> </el-table-column>
<el-table-column prop="phone" label="手机号" width="150"> <el-table-column prop="phone" label="手机号" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-if="scope.row.user" size="mini" style="color: #4f9dec;background: #fff;border: none;" type="primary" @click="updates(scope.row)"> <el-button v-if="scope.row.user" size="mini"
{{scope.row.user ? scope.row.user.phone : '未绑定'}} style="color: #4f9dec;background: #fff;border: none;" type="primary"
@click="updates(scope.row)">
{{ scope.row.user ? scope.row.user.phone : '未绑定' }}
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -158,7 +62,7 @@
<el-table-column prop="serviceCommentCount" label="项目评价次数"></el-table-column> <el-table-column prop="serviceCommentCount" label="项目评价次数"></el-table-column>
<!-- <el-table-column prop="chatCount" label="聊天次数"></el-table-column> --> <!-- <el-table-column prop="chatCount" label="聊天次数"></el-table-column> -->
<el-table-column prop="messageCount" label="举报次数"></el-table-column> <el-table-column prop="messageCount" label="举报次数"></el-table-column>
<el-table-column prop="risk" label="是否标记为风险用户" width="80"> <!-- <el-table-column prop="risk" label="是否标记为风险用户" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch v-if="scope.row.user " v-model="scope.row.user.risk" @change="changeRist(scope.row.user.risk,scope.row.user.userId)" <el-switch v-if="scope.row.user " v-model="scope.row.user.risk" @change="changeRist(scope.row.user.risk,scope.row.user.userId)"
:active-value="openValue" :disabled="!isAuth('skynetCenter:fxyh')" :active-value="openValue" :disabled="!isAuth('skynetCenter:fxyh')"
@ -167,15 +71,23 @@
<span v-if="scope.row.user &&scope.row.user.risk == 1" style="color: #13ce66;"></span> <span v-if="scope.row.user &&scope.row.user.risk == 1" style="color: #13ce66;"></span>
<span v-else style="color: #ff4949;"></span> <span v-else style="color: #ff4949;"></span>
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column prop="state" label="状态" width="100"> <el-table-column prop="state" label="是否停牌" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch v-if="scope.row.user " v-model="scope.row.user.status" @change="changeStatus(scope.row.user.status,scope.row.user.userId)" <el-switch v-if="scope.row.user" v-model="scope.row.user.status"
@change="changeStatus(scope.row.user.status, scope.row.user.userId)"
:active-value="openValue" :disabled="!isAuth('skynetCenter:fxyh')" :active-value="openValue" :disabled="!isAuth('skynetCenter:fxyh')"
:inactive-value="closeValue" active-color="#13ce66" inactive-color="#ff4949"> :inactive-value="closeValue" active-color="#13ce66" inactive-color="#ff4949">
</el-switch> </el-switch>
<span v-if="scope.row.user &&scope.row.user.status == 1 " style="color: #13ce66;">正常</span> <span v-if="scope.row.user && scope.row.user.status == 2" style="color: #f56c6c;"></span>
<span v-if="scope.row.user &&scope.row.user.status == 2 " style="color: #f56c6c;">禁用</span> <span v-if="scope.row.user && scope.row.user.status == 1" style="color: #13ce66;"></span>
</template>
</el-table-column>
<el-table-column label="操作" width="100">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="fxjlFunc(scope.row)">
投诉详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -186,14 +98,189 @@
</el-pagination> </el-pagination>
</div> </div>
</el-tab-pane> </el-tab-pane>
<!-- 如需重新显示风险记录tab将div删掉即可不要保留div -->
<div v-show="false">
<el-tab-pane label="风险记录" name="tslb">
<div style="margin:2% 0;display: inline-block;">
<span>用户昵称:</span>
<el-input style="width: 150px;" @keydown.enter.native="select" clearable placeholder="请输入用户昵称"
v-model="userName"></el-input>
</div>&emsp;&emsp;
<div style="margin:2% 0;display: inline-block;">
<span>手机号:</span>
<el-input style="width: 150px;" @keydown.enter.native="select" clearable placeholder="请输入手机号"
v-model="phone"></el-input>
</div>&emsp;&emsp;
<div style="margin:2% 0;display: inline-block;">
<span>风险类型</span>
<el-select filterable v-model="riskType" style="width:150px;margin-left: 10px;"
@change="select">
<el-option v-for="item in platforms" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>&nbsp;&nbsp;&nbsp;
</div>&emsp;&emsp;
<div style="display: inline-block;">
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document"
@click="select">查询
</el-button>
<el-button style="margin-left:15px;" size="mini" type="primary" icon="document"
@click="cleans">重置
</el-button>
</div>
<el-table v-loading="tableDataLoading" :data="tableData.list">
<el-table-column fixed prop="riskId" label="编号" width="80"></el-table-column>
<el-table-column fixed prop="userName" label="昵称" width="150">
<template slot-scope="scope">
<el-button size="mini" v-if="scope.row.user"
style="color: #4f9dec;background: #fff;border: none;cursor: pointer;" type="primary"
@click="updates(scope.row)">
{{ scope.row.user.userName }}
</el-button>
<span v-else>未绑定</span>
</template>
</el-table-column>
<el-table-column label="图像" width="100">
<template slot-scope="scope">
<img v-if="!scope.row.user" src="~@/assets/img/avatar.png" alt="" width="40"
height="40">
<img v-else :src="scope.row.user.avatar" alt="" width="40" height="40">
</template>
</el-table-column>
<el-table-column prop="phone" label="手机号" width="150">
<template slot-scope="scope">
<el-button size="mini" v-if="scope.row.user"
style="color: #4f9dec;background: #fff;border: none;" type="primary"
@click="updates(scope.row)">
{{ scope.row.user.phone }}
</el-button>
<span v-else>未绑定</span>
</template>
</el-table-column>
<el-table-column prop="riskType" label="风险类型" width="100">
<template slot-scope="scope">
<span v-if="scope.row.riskType == 1">ip属地风险</span>
<!-- <span v-if="scope.row.riskType==2">动态</span>
<span v-if="scope.row.riskType==3">动态评价</span> -->
<span v-if="scope.row.riskType == 4">项目评价</span>
<!-- <span v-if="scope.row.riskType==5">聊天</span> -->
<span v-if="scope.row.riskType == 6">举报</span>
</template>
</el-table-column>
<el-table-column prop="content" label="触犯原因"></el-table-column>
<el-table-column prop="createTime" label="创建时间" width="160"></el-table-column>
<!-- <el-table-column prop="risk" label="是否标记为风险用户" width="80">
<template slot-scope="scope">
<el-switch v-if="scope.row.user" v-model="scope.row.user.risk" @change="changeRist(scope.row.user.risk,scope.row.user.userId)"
:active-value="openValue" :disabled="!isAuth('skynetCenter:fxyh')"
:inactive-value="closeValue" active-color="#13ce66" inactive-color="#ff4949">
</el-switch>
<span v-if="scope.row.user&&scope.row.user.risk == 1" style="color: #13ce66;"></span>
<span v-else style="color: #ff4949;"></span>
</template>
</el-table-column> -->
<el-table-column prop="state" label="是否停牌" width="100">
<template slot-scope="scope">
<el-switch v-if="scope.row.user" v-model="scope.row.user.status"
@change="changeStatus(scope.row.user.status, scope.row.user.userId)"
:active-value="openValue" :disabled="!isAuth('skynetCenter:fxyh')"
:inactive-value="closeValue" active-color="#13ce66" inactive-color="#ff4949">
</el-switch>
<span v-if="scope.row.user && scope.row.user.status == 2"
style="color: #f56c6c;"></span>
<span v-if="scope.row.user && scope.row.user.status == 1"
style="color: #13ce66;"></span>
</template>
</el-table-column>
<!-- <el-table-column prop="risk" label="是否是风险用户" width="80">
<template slot-scope="scope">
<el-switch v-model="scope.row.risk" @change="changeRist(scope.row.risk,scope.row.userId)"
:active-value="openValue" :disabled="!isAuth('userList:delete')"
:inactive-value="closeValue" active-color="#13ce66" inactive-color="#ff4949">
</el-switch>
</template>
</el-table-column> -->
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:page-sizes="[5, 10, 15, 20]" :page-size="limit" :current-page="page"
layout="total,sizes, prev, pager, next,jumper" :total="tableData.totalCount">
</el-pagination>
</div>
</el-tab-pane>
</div>
</el-tabs> </el-tabs>
<el-dialog title="风险记录" :visible.sync="fxjlShow" width="80%">
<el-table v-loading="fxjlTableDataLoading" :data="tableData.list">
<el-table-column fixed prop="riskId" label="编号" width="80"></el-table-column>
<el-table-column fixed prop="userName" label="昵称" width="150">
<template slot-scope="scope">
<el-button size="mini" v-if="scope.row.user"
style="color: #4f9dec;background: #fff;border: none;cursor: pointer;" type="primary"
@click="updates(scope.row)">
{{ scope.row.user.userName }}
</el-button>
<span v-else>未绑定</span>
</template>
</el-table-column>
<el-table-column label="图像" width="100">
<template slot-scope="scope">
<img v-if="!scope.row.user" src="~@/assets/img/avatar.png" alt="" width="40" height="40">
<img v-else :src="scope.row.user.avatar" alt="" width="40" height="40">
</template>
</el-table-column>
<el-table-column prop="phone" label="手机号" width="150">
<template slot-scope="scope">
<el-button size="mini" v-if="scope.row.user"
style="color: #4f9dec;background: #fff;border: none;" type="primary"
@click="updates(scope.row)">
{{ scope.row.user.phone }}
</el-button>
<span v-else>未绑定</span>
</template>
</el-table-column>
<el-table-column prop="riskType" label="风险类型" width="100">
<template slot-scope="scope">
<span v-if="scope.row.riskType == 1">ip属地风险</span>
<!-- <span v-if="scope.row.riskType==2">动态</span>
<span v-if="scope.row.riskType==3">动态评价</span> -->
<span v-if="scope.row.riskType == 4">项目评价</span>
<!-- <span v-if="scope.row.riskType==5">聊天</span> -->
<span v-if="scope.row.riskType == 6">举报</span>
</template>
</el-table-column>
<el-table-column prop="content" label="触犯原因"></el-table-column>
<el-table-column prop="createTime" label="创建时间" width="160"></el-table-column>
<!-- <el-table-column prop="state" label="是否停牌" width="100">
<template slot-scope="scope">
<el-switch v-if="scope.row.user" v-model="scope.row.user.status"
@change="changeStatus(scope.row.user.status, scope.row.user.userId)"
:active-value="openValue" :disabled="!isAuth('skynetCenter:fxyh')"
:inactive-value="closeValue" active-color="#13ce66" inactive-color="#ff4949">
</el-switch>
<span v-if="scope.row.user && scope.row.user.status == 2" style="color: #f56c6c;"></span>
<span v-if="scope.row.user && scope.row.user.status == 1" style="color: #13ce66;"></span>
</template>
</el-table-column> -->
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="fxjlShow = false"> </el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
fxjlTableDataLoading: false,
fxjlShow: false,//dialog
openValue: 1, openValue: 1,
closeValue: 2, closeValue: 2,
state: 'false', state: 'false',
@ -204,7 +291,7 @@
phone: '', phone: '',
payData: [], payData: [],
nickName: '', nickName: '',
activeName: 'first', activeName: 'fxjl',
tableDataLoading: true, tableDataLoading: true,
tableData: {}, tableData: {},
tableDataUser: {}, tableDataUser: {},
@ -220,7 +307,7 @@
// }, { // }, {
// value: 3, // value: 3,
// label: '' // label: ''
},{ }, {
value: 4, value: 4,
label: '项目评价' label: '项目评价'
// }, { // }, {
@ -250,7 +337,7 @@
// }, { // }, {
// value: 3, // value: 3,
// label: '' // label: ''
},{ }, {
value: 4, value: 4,
label: '项目评价' label: '项目评价'
// }, { // }, {
@ -265,7 +352,14 @@
} }
}, },
methods: { methods: {
//
fxjlFunc(row) {
this.fxjlTableDataLoading = true
console.log(row)
this.fxjlShow = true
this.dataSelectByUser(row)
},
// //
change(val, userId) { change(val, userId) {
this.$http({ this.$http({
@ -323,7 +417,7 @@
message: data.msg, message: data.msg,
type: 'warning', type: 'warning',
duration: 1500, duration: 1500,
onClose: () => {} onClose: () => { }
}) })
} }
}) })
@ -354,7 +448,7 @@
if (tab._props.label == '风险记录') { if (tab._props.label == '风险记录') {
this.dataSelect() this.dataSelect()
} }
if (tab._props.label == '用户风险列表') { if (tab._props.label == '投诉列表') {
this.dataSelectUser() this.dataSelectUser()
} }
@ -419,7 +513,7 @@
message: data.msg, message: data.msg,
type: 'warning', type: 'warning',
duration: 1500, duration: 1500,
onClose: () => {} onClose: () => { }
}) })
} }
}) })
@ -447,8 +541,22 @@
this.tableData = returnData this.tableData = returnData
}) })
}, },
//
// dataSelectByUser(row) {
this.$http({
url: this.$http.adornUrl('risk/selectRiskListByUserId'),
method: 'get',
params: this.$http.adornParams({
'userId': row.userId
})
}).then(({
data
}) => {
this.tableData = data.data
this.fxjlTableDataLoading = false
})
},
//
dataSelectUser() { dataSelectUser() {
this.tableDataLoading = true this.tableDataLoading = true
this.$http({ this.$http({
@ -509,14 +617,14 @@
}, },
}, },
mounted() { mounted() {
this.dataSelect() this.dataSelectUser()
}
} }
}
</script> </script>
<style scoped="scoped"> <style scoped="scoped">
.el-button+.el-button { .el-button+.el-button {
margin-left: 0 !important; margin-left: 0 !important;
margin-top: 5px !important; margin-top: 5px !important;
} }
</style> </style>

View File

@ -540,6 +540,18 @@ const maxReconnectMaxCn = 100;
let returnData = data.data; let returnData = data.data;
this.chatList = returnData.list; this.chatList = returnData.list;
// this.clickItem(this.chatList[this.current], this.current); // this.clickItem(this.chatList[this.current], this.current);
//
if(!!data.data && !!data.data.list){
let count = null
data.data.list.forEach(element => {
if(element.contentCount > 0){
if(!count)count = 0
count += element.contentCount
}
});
this.$cookie.set('numberLts', count)
}
}); });
}, },
// //