新增需求

This commit is contained in:
Sliverber 2024-03-08 09:30:20 +08:00
parent bd8014b7bd
commit 37c50403de
16 changed files with 4710 additions and 372 deletions

View File

@ -4,8 +4,8 @@ ENV = 'development'
# base api
# VUE_APP_BASE_API = '/dev-api'
# VUE_APP_BASE_API = 'http://106.75.49.247:20400'
VUE_APP_BASE_API = 'https://yruibao.com/admin'
# VUE_APP_BASE_API = 'http://192.168.2.26:20401'
# VUE_APP_BASE_API = 'https://yruibao.com/admin'
VUE_APP_BASE_API = 'http://192.168.2.26:20401'
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,

View File

@ -4,5 +4,5 @@ ENV = 'production'
# base api
# VUE_APP_BASE_API = '/prod-api'
# VUE_APP_BASE_API = 'http://106.75.49.247:20400'
VUE_APP_BASE_API = 'https://yruibao.com/admin'
# VUE_APP_BASE_API = 'http://192.168.2.26:20401'
# VUE_APP_BASE_API = 'https://yruibao.com/admin'
VUE_APP_BASE_API = 'http://192.168.2.26:20401'

View File

@ -54,6 +54,7 @@
"js-cookie": "2.2.0",
"jsonlint": "1.6.3",
"jszip": "^3.10.1",
"mapbox-gl": "^3.2.0",
"mpvue-calendar": "^2.3.7",
"normalize.css": "7.0.0",
"nprogress": "0.2.0",
@ -72,6 +73,7 @@
"vue": "2.6.10",
"vue-awesome-swiper": "^3.1.3",
"vue-echarts": "^4.0.3",
"vue-image-lightbox": "^7.2.0",
"vue-pdf": "^4.3.0",
"vue-router": "3.0.2",
"vue-ydui": "^1.2.6",

View File

@ -50,6 +50,19 @@ export function ListChannel(pram) {
params: data,
});
}
export function getAuditList(pram) {
const data = {
page: pram.page,
limit: pram.limit,
};
return request({
url: 'admin/system/admin/auditorList',
method: 'GET',
params: data,
});
}
/**
* 渠道统计列表
* @param pram

View File

@ -37,6 +37,18 @@ export function orderListDataApi(params) {
params,
});
}
/**
* 订单 列表 数据统计
// * @param params
*/
export function getAuditnum(num) {
return request({
url: `/admin/store/order/claim?num=`+num,
method: 'get',
// params,
});
}
/**
* 订单 删除
* @param params
@ -177,7 +189,15 @@ export function orderStatisticsApi() {
method: 'get',
});
}
/**
* 订单 统计 待领取待审核订单数量
*/
export function getUnclaimed() {
return request({
url: `admin/store/order/getUnclaimed/num`,
method: 'get',
});
}
/**
* 核销订单 月列表数据
*/

View File

@ -63,7 +63,8 @@ export function AddInstallments(pram) {
amountComesUp: pram.amountComesUp,
downPaymentPercent: pram.downPaymentPercent,
downPaymentNumber: pram.downPaymentNumber,
cycle:pram.cycle
cycle:pram.cycle,
tips:pram.tips
};
return request({
url: '/admin/installments/save',
@ -84,7 +85,8 @@ export function UpdateInstallments(pram) {
amountComesUp: pram.amountComesUp,
downPaymentPercent: pram.downPaymentPercent,
downPaymentNumber: pram.downPaymentNumber,
cycle:pram.cycle
cycle:pram.cycle,
tips:pram.tips
};
return request({
url: '/admin/installments/update',

View File

@ -24,6 +24,7 @@ import appSettingRouter from './modules/appSetting';
import maintainRouter from './modules/maintain';
import mobileRouter from './modules/mobile';
import statistic from './modules/statistic';
import examineRouter from './modules/examine'
/**
* Note: sub-menu only appear when route children.length >= 1
@ -82,6 +83,9 @@ export const constantRoutes = [
mobileRouter,
// 统计管理
statistic,
// 审核管理
examineRouter,
{
path: '/404',
@ -154,6 +158,7 @@ export const constantRoutes = [
meta: { title: '渠道统计' },
component: () => import('@/views/statistic/channel/index'),
},
],
},
{

View File

@ -0,0 +1,29 @@
import Layout from '@/layout';
const examineRouter = {
path: '/examine',
component: Layout,
redirect: '/examine/index',
name: 'examine',
alwaysShow: true,
meta: {
title: '审核',
icon: 'clipboard',
},
children: [
{
path: 'index',
component: () => import('@/views/examine/index'),
name: 'examineIndex',
meta: { title: '审核看板' },
},
{
path: 'examineList',
component: () => import('@/views/examine/examineList'),
name: 'examineList',
meta: { title: '审核报表' },
},
],
};
export default examineRouter;

View File

@ -23,7 +23,7 @@
class="nav_grid_item"
v-for="(item, index) in businessList"
:key="index"
@click="navigatorTo(item.path)"
@click="navigatorTo(item.path,item.status)"
>
<p class="num_data">{{ item.num }}</p>
<p class="label">{{ item.title }}</p>
@ -110,13 +110,13 @@ export default {
// },
],
statisticData: [
{ title: '待发货订单', num: 0, path: '/order/index', perms: ['admin:order:list'] },
{ title: '退款中订单', num: 0, path: '/order/index', perms: ['admin:order:list'] },
{ title: '待审核订单', num: 0, perms: ['admin:order:list'] },
{ title: '待发货订单', num: 0, path: '/order/index', perms: ['admin:order:list'],status:'notShipped' },
{ title: '退款中订单', num: 0, path: '/order/index', perms: ['admin:order:list'],status:'refunding' },
{ title: '待审核订单', num: 0,path: '/order/index', perms: ['admin:order:list'],status:'audit' },
{ title: '昨日回款率', num: 0, perms: ['admin:product:list'] },
{ title: '明日到期', num: 0, perms: ['admin:product:list'] },
{ title: '仓库商品', num: 0, path: '/store/index', perms: ['admin:product:list'] },
{ title: '提现待审核', num: 0, path: '/financial/commission/template', perms: ['admin:finance:apply:list'] },
// { title: '', num: 0, path: '/financial/commission/template', perms: ['admin:finance:apply:list'] },
{ title: '账户充值', num: 0, path: '/financial/record/charge', perms: ['admin:recharge:list'] },
],
optionData: {},
@ -151,8 +151,10 @@ export default {
},
methods: {
checkPermi,
navigatorTo(path) {
this.$router.push(path);
navigatorTo(path,status) {
console.log(path,status,'pathpathpathpath');
this.$router.push({ path: path, query: { status: status }});
},
getbusinessData() {
businessData().then((res) => {

View File

@ -0,0 +1,524 @@
<template>
<div class="divBox">
<el-card class="box-card">
<div slot="header" class="clearfix">
</div>
<el-table v-loading="listLoading" :data="listData.list" style="width: 100%" size="mini" v-if="false">
<el-table-column prop="id" label="ID" min-width="50" />
<el-table-column prop="name" label="渠道名称" min-width="100" />
<el-table-column prop="url" label="链接" min-width="100" />
<el-table-column prop="status" label="开关" min-width="100">
<template slot-scope="scope" v-if="checkPermi(['admin:category:update:status'])">
<el-switch v-model="scope.row.status" :active-value="true" :inactive-value="false" active-text="打开"
inactive-text="关闭" @change="onchangeIsShow(scope.row)" />
</template>
</el-table-column>
<el-table-column prop="price" label="单价(元)" min-width="100" />
<el-table-column label="操作" min-width="120" fixed="right" align="center">
<template slot-scope="scope">
<el-button type="text" size="small" @click="edit(scope.row)" class="mr10"
v-hasPermi="['admin:channel:update']">编辑</el-button>
<el-button type="text" size="small" @click="handleDelete(scope.row.id, scope.$index)"
v-hasPermi="['admin:channel:delete']">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-table v-loading="listLoading" :data="listData.list" style="width: 100%" size="mini">
<el-table-column prop="name" label="审核员" min-width="50" align="center"/>
<el-table-column prop="createTime" label="总审核" min-width="50" align="center"/>
<el-table-column prop="totalClickNum" label="回款率" min-width="50" align="center"/>
<el-table-column prop="todayClickNum" label="今日审核" min-width="50" align="center"/>
<el-table-column prop="totalOrderNum" label="今日通过/金额" min-width="100" align="center">
<template slot-scope="scope" >
<div class="cont" >
{{scope.row. totalAmount}} / {{ scope.row. totalOrderNum}}
</div>
</template>
</el-table-column>
<el-table-column prop="totalConversionRatio" label="待审核" min-width="50" align="center"/>
<!-- <el-table-column prop="price" label="单价(元)" min-width="100" /> -->
<el-table-column label="操作" min-width="120" fixed="right" align="center">
<template slot-scope="scope">
<el-button type="text" size="small" @click="showdlg(scope.row)" class="mr10"
v-hasPermi="['admin:channel:update']">查看</el-button>
</template>
</el-table-column>
</el-table>
<el-dialog title="" :visible.sync="dialogVisibles" width="1388px" :before-close="handleClose">
<div class="detailbox">
<div class="tit"> <span :class="titindex==0?'act1':''" style="margin-right: 10px;" @click="titindex=0">统计报表</span> <span :class="titindex==1?'act1':''" @click="titindex=1"> 注册用户</span> </div>
<div class="tj" v-show="titindex==0">
<div class="mintit">基础信息</div>
<div class="infobox">
<div class="img_box">
<!-- <canvas ref="qrcodeCanvas"></canvas> -->
<!-- <div id="payQrcode"></div> -->
<div id="qrcode" ref="qrcode" style="margin-bottom: 20px;"></div>
<el-button type="primary" @click="downloadimg()" style="margin-left: 30px;" >下载图片</el-button>
</div>
<div class="infoli">
<div class="li">渠道名称{{ chooselist.name }} </div>
<div class="li"> 添加日期{{ chooselist.createTime }} </div>
<div class="li">备注{{ chooselist.remark }} </div>
</div>
<div class="infoli">
<div class="li"> 总点击{{ chooselist.totalClickNum }}</div>
<div class="li"> 总转化率{{ chooselist.totalConversionRatio }} </div>
<div class="li"> 回款率{{ chooselist.totalReturnRate }}</div>
</div>
<div class="infoli" >
<div class="li">总注册{{ chooselist.totalRegisterNum }}</div>
<div class="li"> 总订单金额{{ chooselist.totalAmount }}</div>
<div class="li">总订单数量{{ chooselist.totalOrderNum }} </div>
</div>
<div class="infoli">
<div class="li" style="width: 50%;">渠道链接{{ chooselist.url }}</div>
<div class="li">今日点击:{{ chooselist.todayClickNum }}</div>
</div>
<div class="infoli" style="justify-content: start;" v-if="chooselist.account">
<div class="li" style="width: 33%;">渠道账号{{ chooselist.account }}</div>
<div class="li" style="width: 30%;">渠道密码初始密码为123456</div>
</div>
</div>
<div class="mintit">日统计报表 </div>
<el-table :data="todaydata.list" stripe style="width: 100%">
<el-table-column prop="date" label="日期" width="180" align="center">
</el-table-column>
<el-table-column prop="clickNum" label="点击数" width="180" align="center">
</el-table-column>
<el-table-column prop="registerNum" label="进件" align="center">
</el-table-column>
<el-table-column prop="amount" label="订阅金额" align="center">
</el-table-column>
<el-table-column prop="num" label="订阅数量" align="center">
</el-table-column>
<el-table-column prop="conversionRatio" label="转化率" align="center">
</el-table-column>
<el-table-column prop="returnRate" label="回款率" align="center">
</el-table-column>
</el-table>
<el-pagination :page-sizes="[10, 15,]" :page-size="tableFrom.limit" :current-page="tableFrom.page"
layout="total, sizes, prev, pager, next, jumper" :total="todaydata.total" @size-change="handleSizeChanges"
@current-change="todaypageChange" />
</div>
<div class="yh" v-show="titindex==1" style="padding-top: 20px;">
<el-table :data="userdata.list" stripe style="width: 100%">
<el-table-column prop="realName" label="姓名" width="100" >
</el-table-column>
<el-table-column prop="createTime" label="注册日期 " align="center">
</el-table-column>
<el-table-column prop="phone" label="手机号" align="center">
</el-table-column>
<el-table-column prop="email" label="邮箱" min-width="130" align="center">
</el-table-column>
<el-table-column prop="idCardNumber" label="身份证" min-width="160" align="center">
</el-table-column>
<el-table-column prop="orderNum" label="订单数" align="center">
</el-table-column>
<el-table-column prop="orderAmount" label=" 订单总金额" align="center">
</el-table-column>
<el-table-column prop="pendingRepayment" label=" 待还金额" align="center">
</el-table-column>
<el-table-column prop="address" label=" 状态(逾期/待还款)" min-width="130" align="center">
<template slot-scope="scope" >
<div class="cont" style="width: 120px;" v-if="scope.row.repaymentStatus=='Pending'">
待还款
</div>
<div class="cont" style="width: 100px;" v-if="scope.row.repaymentStatus=='Late'">
已逾期
</div>
</template>
</el-table-column>
</el-table>
<el-pagination :page-sizes="[10, 15,]" :page-size="tableFrom.limit" :current-page="tableFrom.page"
layout="total, sizes, prev, pager, next, jumper" :total="userdata.total" @size-change="userhandleSizeChange"
@current-change="userpageChange" />
</div>
</div>
</el-dialog>
<div class="block mb20">
<el-pagination :current-page="listPram.page" :page-sizes="constants.page.limit" :layout="constants.page.layout"
:total="listData.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
</el-card>
<creat-channel ref="grades" :channelInfo="channelInfo"></creat-channel>
</div>
</template>
<script>
import QRCode from "qrcodejs2";
let qrcode = "";
import { getAuditList,ListChannels,Listuser, AddChannel, UpdateChannel, InfoChannel, DelChannel } from '@/api/channel';
// import creatChannel from './creatChannel';
import { checkPermi } from '@/utils/permission'; //
import download from "@/plugins/download";
export default {
name: 'Channel',
filters: {
typeFilter(status) {
const statusMap = {
wechat: '微信用户',
routine: '小程序你用户',
h5: 'H5用户',
};
return statusMap[status];
},
},
// components: { creatChannel },
data() {
return {
listLoading: false,
dialogVisibles: false,
titindex:0,
channelInfo: {},
chooselist:{},
todaydata:{ list: [], total: 0 },
userdata:{},
constants: this.$constants,
listPram: {
page: 1,
limit: this.$constants.page.limit[0],
},
listPrams: {
channelId: null,
page: 1,
limit: 10,
},
userPrams: {
channelId: null,
page: 1,
limit: 10,
},
tableFrom: {
page: 1,
limit: 10,
},
listData: { list: [], total: 0 },
tableData: {
data: [],
total: 0,
},
codeurl:'',
};
},
mounted() {
this.getList();
},
methods: {
qrcode(qWidth, qHeight, qText, qRender) {
new QRCode("qrcode", {
width: qWidth,
height: qHeight,
text: qText,
render: qRender,
});
},
downloadimg() {
// canvas
const canvas = document.querySelector("#qrcode canvas");
if (canvas) {
// a
const link = document.createElement('a');
// canvasDataURL
link.href = canvas.toDataURL("image/png");
//
link.download = 'qrcode.png';
//
link.click();
} else {
console.error("无法找到二维码画布。");
}
},
handleClose() {
this.userPrams.page=1
this.listPrams.page=1
this.dialogVisibles = false;
},
pageChange(page) {
this.tableFrom.page = page;
this.getList();
},
handleSizeChange(val) {
this.tableFrom.limit = val;
this.getList();
},
handleSizeChanges(val){
this.listPrams.limit = val;
this.gettodaylist()
},
userhandleSizeChange(val){
this.userPrams.limit = val;
this.getuserlist()
},
todaypageChange(page){
this.listPrams.page = page;
this.gettodaylist()
},
userpageChange(page){
this.userPrams.page = page;
this.getuserlist()
},
gettodaylist(){
ListChannels(this.listPrams)
.then((res) => {
this. todaydata= res;
})
.catch(() => {
});
},
copyurl(url){
console.log(url);
const textarea = document.createElement('textarea');
textarea.value = url;
document.body.appendChild(textarea);
textarea.select();
document.execCommand('copy');
document.body.removeChild(textarea);
// alert('');
this.$message.success('复制成功');
// navigator.clipboard.writeText(url)
// .then(() => {
// console.log('URL');
// this.$message.success('');
// })
// .catch(err => {
// console.error('URL:', err);
// });
},
getuserlist(){
Listuser(this.userPrams)
.then((res) => {
this.userdata = res;
console.log( this.todaydata,'returnRatereturnRatereturnRate');
})
.catch(() => {
});
},
async showdlg(row) {
this.listPrams.channelId=row.id
this.userPrams.channelId=row.id
this.gettodaylist()
this.getuserlist()
console.log(row,'rowrow');
this.chooselist=row
this.dialogVisibles = true
// await this.generateQRCode(row.url)
if (this.$refs.qrcode) this.$refs.qrcode.innerHTML = "";
this.$nextTick(function () {
this.qrcode(150, 150, row.url, "canvas");
console.log(QRCode.CorrectLevel.L);
});
},
formatPercentage(value) {
if (value == "0.00" || value == "0.0" || value == "0" || value == 0 || value == null) {
return "-";
} else {
return (value * 100).toFixed(2) + '%';
}
},
formatNumber(value) {
if (value == 0) {
return "-";
} else {
return value + "期";
}
},
checkPermi,
seachList() {
this.getList();
},
add() {
this.$refs.grades.dialogVisible = true;
this.channelInfo = { status: true };
},
edit(channelInfo) {
// this.$refs.grades.info(id)
// user.amountComesUpStr = user.amountComesUp*100;
// user.downPaymentPercentStr = user.downPaymentPercent*100;
this.channelInfo = channelInfo;
this.$refs.grades.dialogVisible = true;
},
//
getList() {
this.listLoading = true;
getAuditList(this.listPram)
.then((res) => {
this.listData = res;
this.listLoading = false;
})
.catch(() => {
this.listLoading = false;
});
},
//
handleDelete(id, idx) {
this.$modalSure('删除吗?删除会导致对应渠道数据清空,请谨慎操作!').then(() => {
DelChannel(id).then(() => {
this.$message.success('删除成功');
this.getList();
});
});
},
handleSizeChange(val) {
this.listPram.limit = val;
this.handlerGetListData(this.listPram);
},
handleCurrentChange(val) {
this.listPram.page = val;
this.handlerGetListData(this.listPram);
},
onchangeIsShow(row) {
if (row.isShow == false) {
row.isShow = !row.isShow;
UpdateChannel({ id: row.id, isShow: row.isShow })
.then(() => {
this.$message.success('修改成功');
this.getList();
})
.catch(() => {
row.isShow = !row.isShow;
});
} else {
this.$modalSure('确定修改渠道状态吗?').then(() => {
row.isShow = !row.isShow;
// console.log("row-----------"+JSON.stringify(row))
UpdateChannel(row)
.then(() => {
this.$message.success('修改成功');
this.getList();
})
.catch(() => {
row.isShow = !row.isShow;
});
});
}
},
},
};
</script>
<style scoped lang="scss">
.detailbox::-webkit-scrollbar {
width: 10px;
}
.detailbox::-webkit-scrollbar-track {
background-color: #FFFFFF;
}
.detailbox::-webkit-scrollbar-thumb {
background-color: #EAF4FF;
border-radius: 10px;
// height: .625rem;
}
.detailbox::-webkit-scrollbar-thumb:hover {
background-color: #EAF4FF;
}
.detailbox {
padding: 10px 60px;
width: 100%;
max-height: 670px;
overflow-x: hidden;
overflow-y: auto;
min-height: 600px;
.tit {
width: 100%;
text-align: center;
font-family: Source Han Sans;
font-weight: 400;
font-size: 20px;
font-variation-settings: "opsz" auto;
cursor: pointer;
.act1{
font-weight: 700;
font-size: 25px;
}
}
.mintit {
font-family: Source Han Sans;
font-size: 20px;
font-weight: bold;
line-height:30px;
letter-spacing: 0px;
}
.infobox {
position: relative;
width: 90%;
margin: 5px auto;
display: flex;
flex-wrap: wrap;
.img_box{
right: 70px;
position: absolute;
width: 100px;
height: 100px;
img{
width: 150px;
height: 150px;
background-color: red;
}
}
.infoli {
width: 100%;
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
align-items: flex-start; // 使
.li {
width: 33%;
font-size: 16px;
font-weight: normal;
line-height: 40px;
letter-spacing: 0px;
align-self: flex-start; // 使 .li
}
}
}
}
.el-switch.is-disabled {
opacity: 1;
}
::v-deep .el-switch__label {
cursor: pointer !important;
}
</style>

2163
src/views/examine/index.vue Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,16 +1,29 @@
<template>
<div class="divBox">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="今日还款列表" name="first">今日还款列表</el-tab-pane>
<el-tab-pane label="昨日日还款列表" name="second">昨日还款列表</el-tab-pane>
<el-tab-pane label="明日还款列表" name="third">明日还款列表</el-tab-pane>
<el-tab-pane label="全部还款列表" name="1"></el-tab-pane>
<el-tab-pane label="今日还款列表" name="first"></el-tab-pane>
<el-tab-pane label="昨日日还款列表" name="second"></el-tab-pane>
<el-tab-pane label="明日还款列表" name="third"></el-tab-pane>
</el-tabs>
<el-card class="box-card">
<div class="box" style="margin-bottom: 20px;display: flex;align-items: center;flex-wrap: nowrap;" >
<div class="text" style="font-size: 25px;margin-right: 20px;">状态:</div>
<el-radio-group v-model="tableFrom.repaymentStatus" @change="getlist()">
<el-radio-button label="">全部</el-radio-button>
<el-radio-button label="Pending">待还款</el-radio-button>
<el-radio-button label="Paid">已还款</el-radio-button>
<el-radio-button label="Late">逾期</el-radio-button>
<el-radio-button label="Partial">部分还款</el-radio-button>
</el-radio-group>
</div>
<el-table v-loading="listLoading" :data="tableDatass.data" style="width: 100%" size="mini">
<!-- <el-table-column prop="id" label="账单id" min-width="50" align="center"/> -->
<el-table-column prop="nickName" label="用户姓名" min-width="50" align="center" />
<el-table-column prop="id" label="订单号" min-width="50" align="center" />
<el-table-column prop="realName" label="用户姓名" min-width="50" align="center" />
<el-table-column prop="orderId" label="订单号" min-width="50" align="center" />
<el-table-column prop="installmentNumber" label="期数" min-width="50" align="center" />
<el-table-column prop="createTime" label="订单创建时间" min-width="50" align="center" />
<el-table-column prop="repaymentDeadline" label="还款时间" min-width="50" align="center" />
@ -50,162 +63,202 @@
:total="tableDatass.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
<el-dialog title="" :visible.sync="dialogVisibles" width="1388px" :before-close="handleClose">
<div class="detailbox" v-if="dialogVisibles">
<div class="titbox">
<div class="tit" v-for="(item, index) in detaillist" :key="index" :class="detailindex == index ? 'act' : ''"
@click="changeindex(index)">{{ item.tit }}</div>
<div class="detailbox" v-if="dialogVisibles">
<div class="titbox">
<div class="tit" v-for="(item, index) in detaillist" :key="index" v-if="index!=4&&index!=5&&index!=6&&index!=7&&index!=8" :class="detailindex == index ? 'act' : ''"
@click="changeindex(index)">{{ item.tit }}</div>
</div>
<div class="info_box" v-show="detailindex == 0">
<div class="info">
<div class="infoli">用户姓名{{ userinfo.detailinfo.realName }}</div>
<div class="infoli">手机号{{ userinfo.detailinfo.phoneNumber }}</div>
<div class="infoli">邮箱{{ userinfo.detailinfo.email }}</div>
<div class="infoli">身份证号{{ userinfo.detailinfo.idCardNumber }}</div>
</div>
<div class="info_box" v-show="detailindex == 0">
<div class="info">
<div class="infoli">用户姓名{{ userinfo.detailinfo.realName }}</div>
<div class="infoli">手机号{{ userinfo.detailinfo.phoneNumber }}</div>
<div class="infoli">邮箱{{ userinfo.detailinfo.email }}</div>
<div class="infoli">身份证号{{ userinfo.detailinfo.idCardNumber }}</div>
</div>
<div class="tit">
订单
<div class="tit" v-if="userinfo.detailinfo.userEmergencyContactsList">
紧急联系人
</div>
<div class="addbox" v-if="userinfo.detailinfo.userEmergencyContactsList">
<div class="addli" style="width: 100%;" v-for="(item, index) in userinfo.detailinfo.userEmergencyContactsList" :key="index">
<div class="addtxt">
姓名{{ item.contactName }}
</div>
<div class="addtxt">
手机号{{ item.phoneNumber }}
</div>
<div class="addtxt" v-show="item.relationship != null">
关系{{ getRelationship(item.relationship) }}
</div>
</div>
<!-- <a @click="downloadAndOpenPDF" href="#">下载并打开PDF文件</a> -->
<div class="info">
</div>
<div class="tit">
订单
</div>
<div class="infoli">总计订单{{ userinfo.detailinfo.allOrderCount }} </div>
<div class="infoli">总金额{{ userinfo.detailinfo.totalPendingRepayment }} </div>
<div class="infoli">待还金额{{ userinfo.detailinfo.allConsumeCount }} </div>
</div>
<div class="tit">
身份证照片
</div>
<div class="info">
<!-- <a @click="downloadAndOpenPDF" href="#">下载并打开PDF文件</a> -->
<div class="info">
<div class="infoimg" style="justify-content: start;">
<!-- <div class="infoimg_box">
<div class="infoli">总计订单{{ userinfo.detailinfo.allOrderCount }} </div>
<div class="infoli">总金额{{ userinfo.detailinfo.totalPendingRepayment }} </div>
<div class="infoli">待还金额{{ userinfo.detailinfo.allConsumeCount }} </div>
</div>
<div class="tit">
身份证照片
</div>
<div class="info">
<div class="infoimg" style="justify-content: start;">
<!-- <div class="infoimg_box">
<div class="noimg">手持身份证照片</div>
<img src=""
alt=""
v-show="false">
<div class="text">手持身份证照片</div>
</div> -->
<div class="infoimg_box" style="margin-right: 200px;">
<div class="noimg" v-show="userinfo.detailinfo.idCardFrontPhoto == null">身份证正面</div>
<img :src="userinfo.detailinfo.idCardFrontPhoto" alt=""
v-show="userinfo.detailinfo.idCardFrontPhoto != ''">
<div class="text">身份证正面</div>
<div class="infoimg_box" style="margin-right: 100px;">
<div class="noimg" v-show="userinfo.detailinfo.idCardFrontPhoto == null">身份证正面</div>
<img :src="userinfo.detailinfo.idCardFrontPhoto" alt=""
v-show="userinfo.detailinfo.idCardFrontPhoto != ''"
@click="openImage(userinfo.detailinfo.idCardFrontPhoto)">
<div class="text">身份证正面</div>
</div>
<div class="infoimg_box">
<div class="noimg" v-show="userinfo.detailinfo.idCardBackPhoto == null">身份证反面</div>
<img :src="userinfo.detailinfo.idCardBackPhoto" alt="" v-show="userinfo.detailinfo.idCardBackPhoto != ''">
<div class="text">身份证反面</div>
</div>
</div>
</div>
<div class="tit">
收货地址
</div>
<div class="addbox">
<div class="addli" v-for="(item, index) in userinfo.detailinfo.addresses" :key="index">
<div class="addtxt">
姓名{{ item.realName }}
</div>
<div class="addtxt">
手机号{{ item.phone }}
</div>
<div class="addtxt">
收件地址{{ item.city }} {{ item.district }}{{ item.detail }}
</div>
<div class="infoimg_box" style="margin-right: 100px;">
<div class="noimg" v-show="userinfo.detailinfo.idCardBackPhoto == null">身份证反面</div>
<img :src="userinfo.detailinfo.idCardBackPhoto" alt="" v-show="userinfo.detailinfo.idCardBackPhoto != ''"
@click="openImage(userinfo.detailinfo.idCardBackPhoto)">
<div class="text">身份证反面</div>
</div>
<div class="infoimg_box">
<div class="noimg" v-show="userinfo.detailinfo.handIdCard == null">手持身份证正面</div>
<img :src="userinfo.detailinfo.handIdCard" alt="" v-show="userinfo.detailinfo.handIdCard != null"
@click="openImage(userinfo.detailinfo.handIdCard)">
<div class="text">手持身份证正面</div>
</div>
</div>
<div class="tit">
IP记录
</div>
<div class="info" v-for="(item, index) in userinfo.detailinfo.ips" :key="index">
<div class="infoli">{{ item.loginTime }}</div>
<div class="infoli">{{ item.ipaddr }}</div>
<!-- <div class="infoli">福建省 福鼎市</div> -->
</div>
</div>
<div class="fkbox" v-if="detailindex == 3 && userinfo.tlxinfo && userinfo.zwxinfo">
<div class="titbox" style="justify-content: center;margin-top: 10px;">
<div class="tit" :class="fkxindex == 0 ? 'act' : ''" @click="fkxindex = 0">
天狼星报告
</div>
<div class="tit" :class="fkxindex == 1 ? 'act' : ''" @click="fkxindex = 1">
紫微星报告
</div>
<div v-if="isImageOpen" class="overlay" @click="closeImage">
<div class="image-container">
<img :src="openedImage" alt="" class="enlarged-image">
</div>
<div v-show="fkxindex == 0">
<img :src="userinfo.tlxinfo.url" alt="" v-show="userinfo.tlxinfo.url != null">
<div class="noreport">
<div class="tip" v-show="userinfo.tlxinfo.url == null">暂无报告</div>
<div class="btn" v-show="userinfo.tlxinfo.url == null" @click="tlxReport()">获取报告</div>
<div class="btn" v-show="userinfo.tlxinfo.url != null" @click="tlxReport()">重新获取报告</div>
</div>
<div class="tit">
收货地址
</div>
<div class="addbox">
<div class="addli" v-for="(item, index) in userinfo.detailinfo.addresses" :key="index">
<div class="addtxt">
姓名{{ item.realName }}
</div>
</div>
<div v-show="fkxindex == 1">
<img :src="userinfo.zwxinfo.url" alt="" v-show="userinfo.zwxinfo.url != null">
<div class="noreport">
<div class="tip" v-show="userinfo.zwxinfo.url == null">暂无报告</div>
<div class="btn" v-show="userinfo.zwxinfo.url == null" @click="zwxReport()">获取报告</div>
<div class="btn" v-show="userinfo.zwxinfo.url != null" @click="zwxReport()">重新获取报告</div>
<div class="addtxt">
手机号{{ item.phone }}
</div>
<div class="addtxt">
收件地址{{ item.city }} {{ item.district }}{{ item.detail }}
</div>
</div>
</div>
<div class="zdbox" v-if="detailindex != 0 && userinfo && detailindex != 3 && detailindex != 9"
style="width: 1500px;">
<el-col :span="20">
<el-table :data="tableDatas.data" style="width: 1200px;" v-loading="loading" max-height="700">
<el-table-column :prop="item.key" :label="item.title" width="item.minWidth" :show-overflow-tooltip="true"
v-for="(item, index) in columns" :key="index" />
</el-table>
<div class="block">
<el-pagination :page-sizes="[6, 12, 18, 24]" :page-size="tableFroms.limit" :current-page="tableFroms.page"
layout="total, sizes, prev, pager, next, jumper" :total="tableDatas.total"
@size-change="handleSizeChanges" @current-change="pageChanges" />
</div>
</el-col>
<div class="tit">
IP记录
</div>
<div class="remake" v-if="detailindex == 9">
<el-popover placement="right" width="400" trigger="manual" v-model="visibl">
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="adremake">
</el-input>
<el-button type="text" size="small" class="mr10" @click="addremark()">确认添加</el-button>
<el-button type="text" size="small" class="mr10" @click="visibl = false">取消</el-button>
<el-button type="text" size="small" slot="reference" class="mr10" @click="visibl = !visibl">添加备注</el-button>
</el-popover>
<el-table :data="remakeData.data" style="width: 100%" size="mini">
<div class="info" v-for="(item, index) in userinfo.detailinfo.ips" :key="index">
<el-table-column prop="updateTime" label="备注时间" min-width="50" align="center" />
<el-table-column prop="remark" label="备注内容" min-width="50" align="center" />
<el-table-column label="操作" min-width="120" fixed="right" align="center">
<template slot-scope="scope">
<el-button type="text" size="small" @click="delremark(scope.row)" class="mr10"
v-hasPermi="['admin:channel:update']">删除备注</el-button>
<el-popover placement="right" width="400" trigger="manual" v-model="visible">
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="upremake">
</el-input>
<el-button type="text" size="small" class="mr10" @click="upRemake(scope.row)">确认修改</el-button>
<el-button type="text" size="small" class="mr10" @click="visible = false">取消</el-button>
<el-button type="text" size="small" slot="reference" class="mr10"
@click="visible = !visible">修改备注</el-button>
</el-popover>
<!-- <el-switch v-model="scope.row.status" :active-value="true" :inactive-value="false" active-text="打开"
inactive-text="关闭" @change="onchangeIsShow(scope.row)" /> -->
</template>
</el-table-column>
<!-- <el-table-column prop="installmentNumber" label="期数" min-width="50" align="center"/> -->
</el-table>
<div class="infoli">{{ item.loginTime }}</div>
<div class="infoli">{{ item.ipaddr }}</div>
<!-- <div class="infoli">福建省 福鼎市</div> -->
<div class="infoli" style="color: red;">{{ item.loginLocation }}</div>
</div>
<!-- <div class="tit">
位置信息
</div>
<div ref="map" style="width: 100%; height: 400px;"></div> -->
</div>
<div class="fkbox" v-if="detailindex == 3 && userinfo.tlxinfo && userinfo.zwxinfo">
<div class="titbox" style="margin-top: 10px;">
<div class="tit" :class="fkxindex == 0 ? 'act' : ''" @click="fkxindex = 0">
天狼星报告
</div>
<div class="tit" :class="fkxindex == 1 ? 'act' : ''" @click="fkxindex = 1">
紫微星报告
</div>
</div>
<div v-show="fkxindex == 0">
<div class="noreport">
<div class="btn" v-show="userinfo.tlxinfo.url == null" @click="tlxReport()">获取报告</div>
<div class="btn" v-show="userinfo.tlxinfo.url != null" @click="tlxReport()">重新获取报告</div>
<div class="tip" v-show="userinfo.tlxinfo.url == null">暂无报告</div>
</div>
<img :src="userinfo.tlxinfo.url" alt="" v-show="userinfo.tlxinfo.url != null">
</div>
<div v-show="fkxindex == 1">
<div class="noreport">
<div class="btn" v-show="userinfo.zwxinfo.url == null" @click="zwxReport()">获取报告</div>
<div class="btn" v-show="userinfo.zwxinfo.url != null" @click="zwxReport()">重新获取报告</div>
<div class="tip" v-show="userinfo.zwxinfo.url == null">暂无报告</div>
</div>
<img :src="userinfo.zwxinfo.url" alt="" v-show="userinfo.zwxinfo.url != null">
</div>
</el-dialog>
</div>
<div class="zdbox" v-if="detailindex != 0 && userinfo && detailindex != 3 && detailindex != 9"
style="width: 1500px;">
<el-col :span="20">
<el-table :data="tableDatas.data" style="width: 1200px;" v-loading="loading" max-height="700">
<el-table-column :prop="item.key" :label="item.title" width="item.minWidth" :show-overflow-tooltip="true"
v-for="(item, index) in columns" :key="index" />
</el-table>
<div class="block">
<el-pagination :page-sizes="[6, 12, 18, 24]" :page-size="tableFroms.limit" :current-page="tableFroms.page"
layout="total, sizes, prev, pager, next, jumper" :total="tableDatas.total"
@size-change="handleSizeChanges" @current-change="pageChanges" />
</div>
</el-col>
</div>
<div class="remake" v-if="detailindex == 9">
<el-popover placement="right" width="400" trigger="manual" v-model="visibl">
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="adremake">
</el-input>
<el-button type="text" size="small" class="mr10" @click="addremark()">确认添加</el-button>
<el-button type="text" size="small" class="mr10" @click="visibl = false">取消</el-button>
<el-button type="text" size="small" slot="reference" class="mr10" @click="visibl = !visibl">添加备注</el-button>
</el-popover>
<el-table :data="remakeData.data" style="width: 100%" size="mini">
<el-table-column prop="updateTime" label="备注时间" min-width="50" align="center" />
<el-table-column prop="remark" label="备注内容" min-width="50" align="center" />
<el-table-column label="操作" min-width="120" fixed="right" align="center">
<template slot-scope="scope">
<el-button type="text" size="small" @click="delremark(scope.row)" class="mr10"
v-hasPermi="['admin:channel:update']">删除备注</el-button>
<el-popover placement="right" width="400" trigger="manual" v-model="visible">
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="upremake">
</el-input>
<el-button type="text" size="small" class="mr10" @click="upRemake(scope.row)">确认修改</el-button>
<el-button type="text" size="small" class="mr10" @click="visible = false">取消</el-button>
<el-button type="text" size="small" slot="reference" class="mr10"
@click="visible = !visible">修改备注</el-button>
</el-popover>
<!-- <el-switch v-model="scope.row.status" :active-value="true" :inactive-value="false" active-text="打开"
inactive-text="关闭" @change="onchangeIsShow(scope.row)" /> -->
</template>
</el-table-column>
<!-- <el-table-column prop="installmentNumber" label="期数" min-width="50" align="center"/> -->
</el-table>
</div>
</div>
</el-dialog>
<el-dialog title="还款处理" :visible.sync="refundVisible" width="500px" :before-close="refundhandleClose">
<el-radio v-model="ishk" label="待还款" >待还款</el-radio>
@ -252,7 +305,7 @@ export default {
],
detailindex: 0,
fkxindex: 0,
activeName: 'first',
activeName: '1',
refundVisible: false,
listLoading: false,
loading: false,
@ -284,9 +337,10 @@ export default {
tableFrom: {
page: 1,
limit: 6,
limit: 20,
type: '0',
time: 'yesterday'
time: '',
repaymentStatus:''
},
listData: { list: [], total: 0 },
tableDatass: {
@ -320,7 +374,9 @@ export default {
total: 0,
},
ishk:'',
hkid:''
hkid:'',
isImageOpen: false,
openedImage: '',
};
},
mounted() {
@ -328,6 +384,36 @@ export default {
this.getlist()
},
methods: {
getRelationship(value) {
console.log(value,'valuevaluevaluevalue');
switch(value) {
case '0':
return '父母';
case '1':
return '子女';
case '2':
return '兄弟';
case '3':
return '姐妹';
case '4':
return '亲戚';
case '5':
return '朋友';
case '6':
return '配偶';
case '7':
return '同事';
default:
return '未知关系';
}
},
openImage(image) {
this.openedImage = image;
this.isImageOpen = true;
},
closeImage() {
this.isImageOpen = false;
},
handleClick(tab, event) {
if (tab.name == 'first') {
this.tableFrom.time = 'today'
@ -335,6 +421,8 @@ export default {
this.tableFrom.time = 'yesterday'
} else if (tab.name == 'third') {
this.tableFrom.time = 'tomorrow'
}else if(tab.name=='1'){
this.tableFrom.time = ''
}
this.getlist()
@ -374,7 +462,7 @@ export default {
.then((res) => {
this.tableDatass.data = res.list;
this.tableDatass.total = res.total;
console.log(this.tableData, ' this.tableDatas this.tableDatas');
console.log(this.tableDatass, ' this.tableDatas this.tableDatas');
this.listLoading = false
})
@ -392,12 +480,15 @@ export default {
},
handleSizeChange(val) {
console.log(val,'orderIdorderIdorderId');
this.tableFrom.limit = val;
this.getList();
this.getlist();
},
handleCurrentChange(val) {
this.tableFrom.page = val;
this.getList();
this.getlist();
console.log('点击了');
},
handleClose() {
this.dialogVisibles = false;
@ -592,6 +683,11 @@ export default {
key: 'totalNum',
minWidth: 80,
},
{
title: '订单状态',
key: 'statusStr.value',
minWidth: 80,
},
{
title: '商品总价',
key: 'totalPrice',
@ -791,7 +887,28 @@ export default {
.detailbox::-webkit-scrollbar-thumb:hover {
background-color: #EAF4FF;
}
.overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.7);
z-index: 999;
display: flex;
justify-content: center;
align-items: center;
}
.image-container {
max-width: 80%;
max-height: 80%;
}
.enlarged-image {
max-width: 800px;
max-height: 800px;
}
.detailbox {
padding: 10px 60px;
width: 100%;

File diff suppressed because it is too large Load Diff

View File

@ -48,7 +48,9 @@
/>
<span class="el-input-group__append">%</span>
</el-form-item>
<el-form-item label="分期提示" prop="name">
<el-input v-model="user.tips" placeholder="请输入分期套餐提示"></el-input>
</el-form-item>
<el-form-item label="首付期数" >
<el-input-number style="width: 60%"
v-model="user.downPaymentNumber"
@ -83,6 +85,7 @@ const obj = {
icon: '',
image: '',
id: null,
tips:''
};
export default {
name: 'CreatSetting',
@ -171,7 +174,8 @@ export default {
// downPaymentPercent: (this.user.downPaymentPercent)/100,
downPaymentNumber: this.user.downPaymentNumber,
cycle: this.user.cycle,
id: this.user.id
id: this.user.id,
tips:this.user.tips
};
this.user.id
? UpdateInstallments(data)

View File

@ -10,6 +10,7 @@
<el-table-column prop="id" label="ID" min-width="50" />
<el-table-column prop="name" label="分期套餐名称" min-width="100" />
<el-table-column prop="installmentNumber" label="分期数" min-width="100" />
<el-table-column prop="tips" label="提示内容" min-width="100" />
<el-table-column prop="amountComesUp" label="上浮比例(%)" min-width="100" >
<template slot-scope="scope">
{{ formatPercentage(scope.row.amountComesUp) }}

View File

@ -309,7 +309,7 @@
</div>
</template>
</el-table-column>
</el-table-column>visible
<el-table-column label="操作" min-width="120" fixed="right" align="center">
<template slot-scope="scope">
<el-button type="text" size="small" @click="getuserinfo(scope.row.uid)" class="mr10"
@ -323,30 +323,40 @@
layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" @size-change="handleSizeChange"
@current-change="pageChange" />
</div>
<el-dialog title=""
:visible.sync="dialogVisibles"
width="1388px"
:before-close="loghandleClose">
<el-dialog title="" :visible.sync="dialogVisibles" width="1388px" :before-close="handleClose">
<div class="detailbox" v-if="dialogVisibles">
<div class="titbox">
<div class="tit"
v-for="(item, index) in detaillist"
:key="index"
:class="detailindex == index ? 'act' : ''"
@click="changeindex(index)">{{ item.tit }}</div>
<div class="tit" v-for="(item, index) in detaillist" :key="index" v-if="index!=4&&index!=5&&index!=6&&index!=7&&index!=8" :class="detailindex == index ? 'act' : ''"
@click="changeindex(index)">{{ item.tit }}</div>
</div>
<div class="info_box"
v-show="detailindex == 0">
<div class="info_box" v-show="detailindex == 0">
<div class="info">
<div class="infoli">用户姓名{{ userinfo.detailinfo.realName }}</div>
<div class="infoli">手机号{{ userinfo.detailinfo.phoneNumber }}</div>
<div class="infoli">邮箱{{userinfo.detailinfo.email }}</div>
<div class="infoli">身份证号{{userinfo.detailinfo.idCardNumber }}</div>
<div class="infoli">邮箱{{ userinfo.detailinfo.email }}</div>
<div class="infoli">身份证号{{ userinfo.detailinfo.idCardNumber }}</div>
</div>
<div class="tit" v-if="userinfo.detailinfo.userEmergencyContactsList">
紧急联系人
</div>
<div class="addbox" v-if="userinfo.detailinfo.userEmergencyContactsList">
<div class="addli" style="width: 100%;" v-for="(item, index) in userinfo.detailinfo.userEmergencyContactsList" :key="index">
<div class="addtxt">
姓名{{ item.contactName }}
</div>
<div class="addtxt">
手机号{{ item.phoneNumber }}
</div>
<div class="addtxt" v-show="item.relationship != null">
关系{{ getRelationship(item.relationship) }}
</div>
</div>
</div>
<div class="tit">
订单
</div>
<!-- <a @click="downloadAndOpenPDF" href="#">下载并打开PDF文件</a> -->
<div class="info">
@ -367,36 +377,46 @@
v-show="false">
<div class="text">手持身份证照片</div>
</div> -->
<div class="infoimg_box" style="margin-right: 200px;">
<div class="noimg" v-show="userinfo.detailinfo.idCardFrontPhoto==null">身份证正面</div>
<img :src="userinfo.detailinfo.idCardFrontPhoto"
alt=""
v-show="userinfo.detailinfo.idCardFrontPhoto!=''">
<div class="infoimg_box" style="margin-right: 100px;">
<div class="noimg" v-show="userinfo.detailinfo.idCardFrontPhoto == null">身份证正面</div>
<img :src="userinfo.detailinfo.idCardFrontPhoto" alt=""
v-show="userinfo.detailinfo.idCardFrontPhoto != ''"
@click="openImage(userinfo.detailinfo.idCardFrontPhoto)">
<div class="text">身份证正面</div>
</div>
<div class="infoimg_box">
<div class="noimg" v-show="userinfo.detailinfo.idCardBackPhoto==null">身份证反面</div>
<img :src="userinfo.detailinfo.idCardBackPhoto"
alt=""
v-show="userinfo.detailinfo.idCardBackPhoto!=''">
<div class="infoimg_box" style="margin-right: 100px;">
<div class="noimg" v-show="userinfo.detailinfo.idCardBackPhoto == null">身份证反面</div>
<img :src="userinfo.detailinfo.idCardBackPhoto" alt="" v-show="userinfo.detailinfo.idCardBackPhoto != ''"
@click="openImage(userinfo.detailinfo.idCardBackPhoto)">
<div class="text">身份证反面</div>
</div>
<div class="infoimg_box">
<div class="noimg" v-show="userinfo.detailinfo.handIdCard == null">手持身份证正面</div>
<img :src="userinfo.detailinfo.handIdCard" alt="" v-show="userinfo.detailinfo.handIdCard != null"
@click="openImage(userinfo.detailinfo.handIdCard)">
<div class="text">手持身份证正面</div>
</div>
</div>
</div>
<div v-if="isImageOpen" class="overlay" @click="closeImage">
<div class="image-container">
<img :src="openedImage" alt="" class="enlarged-image">
</div>
</div>
<div class="tit">
收货地址
</div>
<div class="addbox">
<div class="addli" v-for="(item,index) in userinfo.detailinfo.addresses" :key="index">
<div class="addli" v-for="(item, index) in userinfo.detailinfo.addresses" :key="index">
<div class="addtxt">
姓名{{ item.realName}}
姓名{{ item.realName }}
</div>
<div class="addtxt">
手机号{{ item.phone}}
手机号{{ item.phone }}
</div>
<div class="addtxt">
收件地址{{ item.city}} {{ item.district }}{{ item.detail }}
收件地址{{ item.city }} {{ item.district }}{{ item.detail }}
</div>
</div>
@ -404,70 +424,94 @@
<div class="tit">
IP记录
</div>
<div class="info" v-for="(item,index) in userinfo.detailinfo.ips" :key="index">
<div class="info" style="display: flex;flex-wrap: nowrap;" v-for="(item, index) in userinfo.detailinfo.ips":key="index">
<div class="infoli">{{ item.loginTime }}</div>
<div class="infoli">{{ item.ipaddr }}</div>
<!-- <div class="infoli">福建省 福鼎市</div> -->
<!-- <div class="infoli">{{item.loginLocation}}</div> -->
<div class="infoli" style="color: red;">{{ item.loginLocation }}</div>
</div>
</div>
<div class="fkbox"
v-if="detailindex == 3 && userinfo.tlxinfo && userinfo.zwxinfo" >
<div class="titbox"
style="justify-content: center;margin-top: 10px;">
<div class="tit"
:class="fkxindex == 0 ? 'act' : ''" @click="fkxindex=0">
<div class="fkbox" v-if="detailindex == 3 && userinfo.tlxinfo && userinfo.zwxinfo">
<div class="titbox" style="margin-top: 10px;">
<div class="tit" :class="fkxindex == 0 ? 'act' : ''" @click="fkxindex = 0">
天狼星报告
</div>
<div class="tit"
:class="fkxindex == 1 ? 'act' : ''" @click="fkxindex=1">
<div class="tit" :class="fkxindex == 1 ? 'act' : ''" @click="fkxindex = 1">
紫微星报告
</div>
</div>
<div v-show="fkxindex == 0">
<img :src="userinfo.tlxinfo.url" alt="" v-show="userinfo.tlxinfo.url!=null">
<div class="noreport">
<div class="tip" v-show="userinfo.tlxinfo.url==null">暂无报告</div>
<div class="btn" v-show="userinfo.tlxinfo.url==null" @click="tlxReport()">获取报告</div>
<div class="btn" v-show="userinfo.tlxinfo.url!=null" @click="tlxReport()">重新获取报告</div>
<div class="btn" v-show="userinfo.tlxinfo.url == null" @click="tlxReport()">获取报告</div>
<div class="btn" v-show="userinfo.tlxinfo.url != null" @click="tlxReport()">重新获取报告</div>
<div class="tip" v-show="userinfo.tlxinfo.url == null">暂无报告</div>
</div>
<img :src="userinfo.tlxinfo.url" alt="" v-show="userinfo.tlxinfo.url != null">
</div>
<div v-show="fkxindex == 1">
<img :src="userinfo.zwxinfo.url" alt="" v-show="userinfo.zwxinfo.url!=null">
<div class="noreport">
<div class="tip" v-show="userinfo.zwxinfo.url==null">暂无报告</div>
<div class="btn" v-show="userinfo.zwxinfo.url==null" @click="zwxReport()">获取报告</div>
<div class="btn" v-show="userinfo.zwxinfo.url!=null" @click="zwxReport()">重新获取报告</div>
<div class="btn" v-show="userinfo.zwxinfo.url == null" @click="zwxReport()">获取报告</div>
<div class="btn" v-show="userinfo.zwxinfo.url != null" @click="zwxReport()">重新获取报告</div>
<div class="tip" v-show="userinfo.zwxinfo.url == null">暂无报告</div>
</div>
<img :src="userinfo.zwxinfo.url" alt="" v-show="userinfo.zwxinfo.url != null">
</div>
</div>
<div class="zdbox" v-if="detailindex!=0 && userinfo && detailindex!=3 " style="width: 1500px;">
<div class="zdbox" v-if="detailindex != 0 && userinfo && detailindex != 3 && detailindex != 9 "
style="width: 1500px;">
<el-col :span="20">
<el-table :data="tableDatas.data" style="width: 1200px;" v-loading="loading" max-height="700">
<el-table-column
:prop="item.key"
:label="item.title"
width="item.minWidth"
:show-overflow-tooltip="true"
v-for="(item, index) in columns"
:key="index"
/>
</el-table>
<div class="block">
<el-pagination
:page-sizes="[6, 12, 18, 24]"
:page-size="tableFroms.limit"
:current-page="tableFroms.page"
layout="total, sizes, prev, pager, next, jumper"
:total="tableDatas.total"
@size-change="handleSizeChanges"
@current-change="pageChanges"
/>
<el-table :data="tableDatas.data" style="width: 1200px;" v-loading="loading" max-height="700">
<el-table-column :prop="item.key" :label="item.title" width="item.minWidth" :show-overflow-tooltip="true"
v-for="(item, index) in columns" :key="index" />
</el-table>
<div class="block">
<el-pagination :page-sizes="[6, 12, 18, 24]" :page-size="tableFroms.limit" :current-page="tableFroms.page"
layout="total, sizes, prev, pager, next, jumper" :total="tableDatas.total"
@size-change="handleSizeChanges" @current-change="pageChanges" />
</div>
</el-col>
</div>
<div class="remake" v-if="detailindex == 9">
<el-popover placement="right" width="400" trigger="manual" v-model="visibl">
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="adremake">
</el-input>
<el-button type="text" size="small" class="mr10" @click="addremark()">确认添加</el-button>
<el-button type="text" size="small" class="mr10" @click="visibl = false">取消</el-button>
<el-button type="text" size="small" slot="reference" class="mr10" @click="visibl = !visibl">添加备注</el-button>
</el-popover>
<el-table :data="remakeData.data" style="width: 100%" size="mini">
<el-table-column prop="updateTime" label="备注时间" min-width="50" align="center" />
<el-table-column prop="remark" label="备注内容" min-width="50" align="center" />
<el-table-column label="操作" min-width="120" fixed="right" align="center">
<template slot-scope="scope">
<el-button type="text" size="small" @click="delremark(scope.row)" class="mr10"
v-hasPermi="['admin:channel:update']">删除备注</el-button>
<el-popover placement="right" width="400" trigger="manual" v-model="visibless">
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="upremake">
</el-input>
<el-button type="text" size="small" class="mr10" @click="upRemake(scope.row)">确认修改</el-button>
<el-button type="text" size="small" class="mr10" @click="visibless = false">取消</el-button>
<el-button type="text" size="small" slot="reference" class="mr10"
@click="visibless = !visibless">修改备注</el-button>
</el-popover>
<!-- <el-switch v-model="scope.row.status" :active-value="true" :inactive-value="false" active-text="打开"
inactive-text="关闭" @change="onchangeIsShow(scope.row)" /> -->
</template>
</el-table-column>
<!-- <el-table-column prop="installmentNumber" label="期数" min-width="50" align="center"/> -->
</el-table>
</div>
</el-col>
</div>
</div>
</el-dialog>
@ -605,7 +649,7 @@ import { checkPermi } from '@/utils/permission'; // 权限判断函数
import { Debounce } from '@/utils/validate';
import { integralListApi } from '@/api/marketing';
import {
getIdentityInfos,getZwxReportCache,getTlxReportCache,infobyconditionApi,getZwxReport,getTlxReport
getIdentityInfos,getZwxReportCache,getTlxReportCache,infobyconditionApi,getZwxReport,getTlxReport,remarkList, remarkUpdata, addRemark, delRemark
} from '@/api/user'
export default {
name: 'UserIndex',
@ -623,6 +667,8 @@ export default {
},
data() {
return {
isImageOpen: false,
openedImage: '',
formExtension: {
image: '',
spreadUid: '',
@ -642,12 +688,15 @@ export default {
{ tit: '用户基础信息 ' },
{ tit: ' 订单记录 ' },
{ tit: '账单列表 ' },
{ tit: '分险报告 ' },
{ tit: '风控报告 ' },
{ tit: '余额变动 ' },
{ tit: '好友关系 ' },
{ tit: '积分明细 ' },
{ tit: '签到记录 ' },
{ tit: '持有优惠券 ' },
{ tit: '备注' },
],
dialogVisibles: false,
@ -754,6 +803,27 @@ export default {
checkedCities: ['ID', '头像', '姓名', '用户等级', '分组', '推荐人', '手机号', '余额', '积分'],
columnData: ['ID', '头像', '姓名', '用户等级', '分组', '推荐人', '手机号', '余额', '积分'],
isIndeterminate: true,
uid: '',
remarkFrom: {
page: 1,
limit: 6,
type: '0',
uid: ''
},
tableDatas: {
data: [],
total: 0,
},
remakeData: {
data: [],
total: 0,
},
Visible: false,
upremake: '',
adremake: '',
visible: false,
visibl: false,
visibless:false
};
},
activated() {
@ -769,6 +839,36 @@ export default {
this.getCityList();
},
methods: {
getRelationship(value) {
console.log(value,'valuevaluevaluevalue');
switch(value) {
case '0':
return '父母';
case '1':
return '子女';
case '2':
return '兄弟';
case '3':
return '姐妹';
case '4':
return '亲戚';
case '5':
return '朋友';
case '6':
return '配偶';
case '7':
return '同事';
default:
return '未知关系';
}
},
openImage(image) {
this.openedImage = image;
this.isImageOpen = true;
},
closeImage() {
this.isImageOpen = false;
},
checkPermi,
setPhone(row) {
this.$prompt('修改手机号', {
@ -844,31 +944,77 @@ export default {
});
console.log(this.userinfo,'detailinfodetailinfodetailinfo');
},
async upRemake(row) {
console.log(this.upremake, 'idididid');
let data = {
remark: this.upremake,
}
let id = row.id
await remarkUpdata(id, data).then((res) => {
this.upremake = ''
this.visible = false
this.getremake()
});
},
delremark(row) {
delRemark(row.id).then((res) => {
this.getremake()
});
},
addremark() {
let data = {
remark: this.adremake,
uid: this.uid
}
addRemark(data).then((res) => {
this.adremake = ''
this.visibl = false
this.getremake()
});
},
changeindex(index) {
console.log(index, 'indexindexindex');
this.detailindex = index
if(index==2){
this.tableFroms.type='6'
if (index == 2) {
this.tableFroms.type = '6'
this.getInfos()
}else if(index==1){
this.tableFroms.type='0'
} else if (index == 1) {
this.tableFroms.type = '0'
this.getInfos()
}else if(index==4){
this.tableFroms.type='4'
} else if (index == 4) {
this.tableFroms.type = '4'
this.getInfos()
}else if(index==5){
this.tableFroms.type='5'
} else if (index == 5) {
this.tableFroms.type = '5'
this.getInfos()
}else if(index==6){
} else if (index == 6) {
// this.tableFroms.type='2'
this.integral()
}else if(index==7){
this.tableFroms.type='2'
} else if (index == 7) {
this.tableFroms.type = '2'
this.getInfos()
}else if(index==8){
this.tableFroms.type='3'
} else if (index == 8) {
this.tableFroms.type = '3'
this.getInfos()
} else if (index == 9) {
this.getremake()
}
},
getremake() {
this.remarkFrom.uid = this.uid
remarkList(this.remarkFrom)
.then((res) => {
this.remakeData.data = res.list;
this.remakeData.total = res.total;
})
.catch(() => {
});
},
integral() {
// this.loading = true;
integralListApi({ limit: this.tableFroms.limit, page: this.tableFroms.page }, { uid: this.uid })
@ -932,6 +1078,11 @@ export default {
key: 'totalNum',
minWidth: 80,
},
{
title: '订单状态',
key: 'statusStr.value',
minWidth: 80,
},
{
title: '商品总价',
key: 'totalPrice',
@ -1108,18 +1259,39 @@ export default {
});
},
tlxReport(){
tlxReport() {
console.log("获取天狼星报告")
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
getTlxReport({ userId: this.uid }).then((res) => {
// console.log("11111111111111111---------"+JSON.stringify(res))
this.userinfo.tlxinfo=res
this.userinfo.tlxinfo = res
loading.close();
console.log(res,'resresres');
if(res.code==500){
this.$message.error(res.msg);
}
this.$forceUpdate()
});
},
zwxReport(){
zwxReport() {
console.log("获取紫微星报告")
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
getZwxReport({ userId: this.uid }).then((res) => {
this.userinfo.zwxinfo=res
this.userinfo.zwxinfo = res
loading.close();
if(res.code==500){
this.$message.error(res.msg);
}
this.$forceUpdate()
});
},
@ -1347,7 +1519,8 @@ export default {
},
handleClose() {
this.dialogVisible = false;
this.$refs['dynamicValidateForm'].resetFields();
this.dialogVisibles=false
// this.$refs['dynamicValidateForm'].resetFields();
},
//
onSelectTab(selection) {
@ -1573,6 +1746,28 @@ export default {
/*width: 87% !important;*/
/*}*/
/*}*/
.overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.7);
z-index: 999;
display: flex;
justify-content: center;
align-items: center;
}
.image-container {
max-width: 80%;
max-height: 80%;
}
.enlarged-image {
max-width: 800px;
max-height: 800px;
}
.el-dropdown-link {
cursor: pointer;
color: #409eff;
@ -1658,9 +1853,9 @@ export default {
.info {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.infoli {
width: 33%;
// width: 33%;
font-size: 18px;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 400;
@ -1768,10 +1963,10 @@ export default {
.noreport {
display: flex;
flex-wrap: wrap;
justify-content: center;
// justify-content: center;
.tip {
margin-top: 200px;
margin-top: 80px;
width: 100%;
font-size: 35px;
text-align: center;
@ -1781,16 +1976,17 @@ export default {
}
.btn {
margin-top: 70px;
cursor: pointer;
margin-top: 20px;
display: flex;
align-items: center;
justify-content: center;
width: 216px;
height: 50px;
width: 130px;
height: 40px;
background: #468DFF;
border-radius: 10px 10px 10px 10px;
font-size: 20px;
font-size: 16px;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 400;
color: #FFFFFF;