Browse Source

更新

master
j1ack 2 years ago
parent
commit
32c99a9993
  1. BIN
      bitcopay后台-开发环境.zip
  2. 27
      src/App.vue
  3. 11
      src/api/system/user.js
  4. 2
      src/components/HeaderSearch/index.vue
  5. 3
      src/layout/components/Navbar.vue
  6. 47
      src/router/index.js
  7. 16
      src/views/dashboard/PanelGroup.vue
  8. 123
      src/views/dashboard/PieChartCreate.vue
  9. 173
      src/views/dashboard/demo.vue
  10. 218
      src/views/dashboard/radialindicator.vue
  11. 116
      src/views/index_v1.vue
  12. 303
      src/views/otc/OtcStoreBondConfig/index.vue
  13. 42
      src/views/otc/otcAppealConfig/index.vue
  14. 8
      src/views/otc/otcAppealOrder/appealDetail.vue
  15. 182
      src/views/otc/otcAppealOrder/index.vue
  16. 68
      src/views/otc/otcCoin/index.vue
  17. 46
      src/views/otc/otcCurrencyCoin/index.vue
  18. 24
      src/views/otc/otcFinance/index.vue
  19. 345
      src/views/otc/otcOrder/index.vue
  20. 307
      src/views/otc/otcPaymentType/index.vue
  21. 6
      src/views/otc/otcStore/index.vue
  22. 31
      src/views/otc/otcStoreDaiFuOrder/index.vue
  23. 457
      src/views/otc/otcStoreOrder/index.vue
  24. 498
      src/views/otc/otcStoreOrder/sonOrder.vue
  25. 36
      src/views/otc/otcStoreRechargeOrder/index.vue
  26. 42
      src/views/otc/otcSysDict/index.vue
  27. 110
      src/views/system/user/profile/userAvatar.vue
  28. 1
      src/views/system/user/profile/userInfo.vue
  29. 344
      src/views/user/UserCertification/index.vue
  30. 37
      src/views/user/UserCertification/userDetail.vue
  31. 12
      src/views/user/ad/index.vue
  32. 3
      src/views/user/mail/index.vue
  33. 16
      src/views/user/position/index.vue
  34. 127
      src/views/user/userCustomer/index.vue
  35. 383
      src/views/user/userCustomer/pkCouponScopeRangeStoreList.vue
  36. 486
      src/views/user/userCustomer/userCusDetail.vue
  37. 305
      src/views/user/userCustomer/walletList.vue
  38. 270
      src/views/user/walletAssetsRecord/index.vue

BIN
bitcopay后台-开发环境.zip

Binary file not shown.

27
src/App.vue

@ -61,6 +61,24 @@ export default {
/* .el-menu-item .svg-icon{
display: none;
} */
.circle {
width: 8px;
height: 8px;
background: rgba(9, 186, 122, 1);
margin-right: 10px;
}
.detailTit{
font-size: 16px;
font-weight: 500;
color: rgba(51, 51, 51, 1);
}
.text-green{
color: rgba(9, 186, 122, 1);
}
.text-red{
color: rgba(231, 53, 53, 1);
;
}
.flex{
display: flex;
align-items: center;
@ -76,12 +94,21 @@ export default {
.m-b-16{
margin-bottom: 16px;
}
.m-r-32{
margin-right: 32px;
}
.m-r-16{
margin-right: 16px;
}
.m-r-10{
margin-right: 10px;
}
.m-b-28{
margin-bottom: 28px;
}
.m-b-20{
margin-bottom: 20px;
}
.center{
display: table;
margin: 0 auto;

11
src/api/system/user.js

@ -1,5 +1,6 @@
import request from '@/utils/request'
import { parseStrEmpty } from "@/utils/ruoyi";
import qs from 'qs'
// 查询用户列表
export function listUser(query) {
@ -100,6 +101,16 @@ export function updateUserPwd(oldPassword, newPassword) {
})
}
// 头像保存
export function uploadAvatarFile(data) {
return request({
url: '/system/user/profile/setAvatar?' + qs.stringify(data),
method: 'post',
data: data
})
}
// 用户头像上传
export function uploadAvatar(data) {
return request({

2
src/components/HeaderSearch/index.vue

@ -176,6 +176,8 @@ export default {
box-shadow: none !important;
border-bottom: 1px solid #d9d9d9;
vertical-align: middle;
background: transparent;
color: #fff;
}
}

3
src/layout/components/Navbar.vue

@ -13,7 +13,7 @@
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper flex">
<img :src="avatar" class="user-avatar">
<img :src="user.avatar" class="user-avatar">
<span class="nickName">{{ user.nickName }}</span>
<i class="el-icon-caret-bottom" />
</div>
@ -85,6 +85,7 @@ export default {
};
},
created() {
// this.avatar=localStorage.getItem('adImgAbs')
this.getUser();
},
methods: {

47
src/router/index.js

@ -97,7 +97,37 @@ export const constantRoutes = [
component: (resolve) => require(['@/views/user/UserCertification/userDetail'], resolve),
name: 'userDetail',
meta: {
title: '详情'
title: '审核'
},
hidden: true
}]
},
{
path: '',
component: Layout,
redirect: 'userCusDetail',
children: [{
path: '/userCusDetail',
component: (resolve) => require(['@/views/user/userCustomer/userCusDetail'], resolve),
name: 'userCusDetail',
meta: {
title: '用户详情'
},
hidden: true
}]
},
{
path: '',
component: Layout,
redirect: 'walletList',
children: [{
path: '/walletList',
component: (resolve) => require(['@/views/user/userCustomer/walletList'], resolve),
name: 'walletList',
meta: {
title: '用户资产'
},
hidden: true
@ -118,6 +148,21 @@ export const constantRoutes = [
}]
},
{
path: '',
component: Layout,
redirect: 'sonOrder',
children: [{
path: '/sonOrder',
component: (resolve) => require(['@/views/otc/otcStoreOrder/sonOrder'], resolve),
name: 'sonOrder',
meta: {
title: '子单'
},
hidden: true
}]
},
]

16
src/views/dashboard/PanelGroup.vue

@ -20,8 +20,12 @@
<div class="item-time">{{chartData.beginTime}}~{{chartData.endTime}}</div>
<div class="flex-between">
<div style="font-size:46px;font-weight:500;color: #333;">
<count-to :start-val="0" :end-val="chartData.amount" :duration="3600" class="card-panel-num" />
<span style="font-size:14px;color:rgba(125, 140, 161, 1)">万元</span>
<count-to :start-val="0" :end-val="chartData.amount / 10000" :decimals="2" :duration="3600" class="card-panel-num" v-if="chartData.amount>=10000" />
<count-to :start-val="0" :end-val="chartData.amount" :decimals="2" :duration="3600" class="card-panel-num" v-else />
<span style="font-size:14px;color:rgba(125, 140, 161, 1)" v-if="chartData.amount>=10000">万元</span>
<span style="font-size:14px;color:rgba(125, 140, 161, 1)" v-else></span>
</div>
<img src="../../assets/images/Group1171275386.png" alt="" srcset="" style="width:86px;height:86px">
</div>
@ -34,8 +38,12 @@
<div class="item-time">{{chartData.beginTime}}~{{chartData.endTime}}</div>
<div class="flex-between">
<div style="font-size:46px;font-weight:500;color: #333;">
<count-to :start-val="0" :end-val="chartData.income" :duration="3600" class="card-panel-num" />
<span style="font-size:14px;color:rgba(125, 140, 161, 1)">万元</span>
<count-to :start-val="0" :end-val="chartData.income/10000" :decimals="2" :duration="3600" class="card-panel-num" v-if="chartData.income>=10000" />
<count-to :start-val="0" :end-val="chartData.income" :duration="3600" :decimals="2" class="card-panel-num" v-else />
<span style="font-size:14px;color:rgba(125, 140, 161, 1)" v-if="chartData.income>=10000">万元</span>
<span style="font-size:14px;color:rgba(125, 140, 161, 1)" v-else></span>
</div>
<img src="../../assets/images/Group1171275387.png" alt="" srcset="" style="width:86px;height:86px">
</div>

123
src/views/dashboard/PieChartCreate.vue

@ -13,18 +13,12 @@
</span>
</div>
<!-- <div class="module">
<demo :rate="chartData.collectionSuccessOrderNum / chartData.collectionTotalOrder" :circleColor="'#46F2BC'">
<span class="slot-font1">{{Math.floor((chartData.collectionSuccessOrderNum / chartData.collectionTotalOrder) * 100)}}%</span>
</demo>
</div> -->
<!-- <radial-indicator
:percentNum="this.chartData.collectionSuccessOrderNum?Math.floor((this.chartData.collectionSuccessOrderNum / this.chartData.collectionTotalOrder) * 100):0"
speed="3"
size="120"
color="linear-gradient(231.58deg, #2ED283 17.34%, #48F4C1 82.12%);"
backgroundColor="#ECF1F8"
content=""
/> -->
<div class="pieCon1 center" id="myChart1" style="width:150px;height:150px;margin-bottom: 15px;"></div>
<div class="center">
@ -43,14 +37,33 @@
代收成功金额
</span>
<span class="t2">
总金额{{ NumberDiv(chartData.collectionAllPrice, 10000) }}万元
总金额
<span v-if="chartData.collectionAllPrice>=10000">{{ NumberDiv(chartData.collectionAllPrice,10000) }}</span>
<span v-else>{{ chartData.collectionAllPrice }}</span>
<span v-if="chartData.collectionAllPrice>=10000">万元</span>
<span v-else></span>
</span>
</div>
<!-- <div class="module">
<demo :rate="chartData.collectionSuccessPrice / chartData.collectionAllPrice" :circleColor="'#FFD670'">
<span class="slot-font1">{{Math.floor((chartData.collectionSuccessPrice / chartData.collectionAllPrice) * 100)}}%</span>
</demo>
</div> -->
<div class="pieCon1 center" id="myChart2" style="width:150px;height:150px;margin-bottom: 15px;"></div>
<div class="center">
<count-to :start-val="0" :end-val="NumberDiv(chartData.collectionSuccessPrice, 10000)" :duration="3600"
class="card-panel-num" />
<span style="font-size:14px;color:rgba(125, 140, 161, 1)">万元</span>
<count-to :start-val="0" :end-val="chartData.collectionSuccessPrice/10000" :duration="3600"
class="card-panel-num" v-if="chartData.collectionSuccessPrice>=10000" :decimals="2" />
<count-to :start-val="0" :end-val="chartData.collectionSuccessPrice" :duration="3600"
class="card-panel-num" v-else :decimals="2" />
<span style="font-size:14px;color:rgba(125, 140, 161, 1)" v-if="chartData.collectionSuccessPrice>=10000">万元</span>
<span style="font-size:14px;color:rgba(125, 140, 161, 1)" v-else></span>
</div>
</div>
</el-col>
@ -81,14 +94,25 @@
代付成功金额
</span>
<span class="t2">
总金额{{ NumberDiv(chartData.paymentAllPrice, 10000) }}万元
总金额
<span v-if="chartData.paymentAllPrice>=10000">{{ NumberDiv(chartData.paymentAllPrice,10000) }}</span>
<span v-else>{{ chartData.paymentAllPrice }}</span>
<span v-if="chartData.paymentAllPrice>=10000">万元</span>
<span v-else></span>
</span>
</div>
<div class="pieCon1 center" id="myChart4" style="width:150px;height:150px;margin-bottom: 15px;"></div>
<div class="center">
<count-to :start-val="0" :end-val="NumberDiv(chartData.paymentSuccessPrice, 10000)" :duration="3600"
class="card-panel-num" />
<span style="font-size:14px;color:rgba(125, 140, 161, 1)">万元</span>
<count-to :start-val="0" :end-val="chartData.paymentSuccessPrice/10000" :duration="3600"
class="card-panel-num" v-if="chartData.paymentSuccessPrice>=10000" :decimals="2" />
<count-to :start-val="0" :end-val="chartData.paymentSuccessPrice" :duration="3600"
class="card-panel-num" v-else :decimals="2" />
<span style="font-size:14px;color:rgba(125, 140, 161, 1)" v-if="chartData.paymentSuccessPrice>=10000">万元</span>
<span style="font-size:14px;color:rgba(125, 140, 161, 1)" v-else></span>
</div>
</div>
</el-col>
@ -101,8 +125,7 @@
<script>
import radialIndicator from "./radialindicator";
import demo from './demo.vue'
import CountTo from 'vue-count-to'
import * as echarts from 'echarts';
require('echarts/theme/macarons') // echarts theme
@ -112,7 +135,7 @@ export default {
mixins: [resize],
components: {
CountTo,
radialIndicator
demo
},
props: {
className: {
@ -135,11 +158,20 @@ export default {
data() {
return {
config: {
borderWidth: "8px",
circleSize: "16px",
circleColor: "#e45739",
borderColor: "#d5f4ee",
startColor: "#eead99",
endColor: "#e45739",
borderBackground: "#ECF1F8",
centerCircleBg: "#fff",
clockwise: false,
showEyes: true,
},
chart: null,
myChart: '',
opinionData2: [
{ value: 86, name: '代收成功订单', itemStyle: 'red' },
]
}
},
mounted() {
@ -670,6 +702,47 @@ export default {
}
</script>
<style scoped>
.page-box {
width: 100%;
height: 100%;
overflow: auto;
}
.main-box {
display: flex;
flex-wrap: wrap;
width: 100%;
}
.module {
width: 100%;
height: 100%;
box-sizing: border-box;
padding: 20px;
position: absolute;
left: 135px;
z-index: 9999;
top: 67px;
}
.slot-bg {
display: flex;
align-items: center;
justify-content: center;
width: 75%;
height: 75%;
border-radius: 50%;
background: #fbedea;
}
.slot-font1 {
color: #333;
font-size: 20px;
font-weight: bold;
}
.slot-font2 {
color: #e45638;
font-size: 20px;
font-weight: bold;
}
.pieCon1 {}
.card-panel-num {

173
src/views/dashboard/demo.vue

@ -0,0 +1,173 @@
<template>
<div class="chart-box" :style="styObj">
<!-- 进度条部分 -->
<div class="outer-box">
<div class="inner-box">
<div class="pointer-box"></div>
</div>
</div>
<!-- 插槽内容 -->
<div class="slot-content">
<slot></slot>
</div>
</div>
</template>
<script>
export default {
props: {
rate: {
type: Number,
default: 0,
},
circleColor: {
type: String,
default: ' ',
},
config: {
type: Object,
default: () => {
return {};
},
},
},
computed: {
styObj() {
let rate = 0;
if (this.rate <= 0) {
rate = 0;
} else if (this.rate >= 1) {
rate = 1;
} else {
rate = this.rate;
}
let endPos = `${rate * 100}%`;
let obj = Object.assign({}, this.defaultConfig, this.config);
let rotate = `rotate(${360 * rate}deg)`;
let chartRotate = obj.clockwise ? "rotateY(0deg)" : "rotateY(180deg)";
let showEyes = obj.showEyes ? 1 : 0;
return {
"--background-image": `conic-gradient(${obj.startColor} 0%, ${obj.endColor} ${endPos}, transparent ${endPos})`,
"--border-width": obj.borderWidth,
"--dot-width": obj.circleSize,
"--pointer-rotate": rotate,
"--background-color": obj.borderBackground,
"--center-gap-bg": obj.centerCircleBg,
"--circle-color": obj.circleColor,
"--clockwise-wise": chartRotate,
"--show-eyes": showEyes,
"--eyes-size": obj.eyesSize,
"--start-color": obj.startColor,
};
},
},
data() {
return {
/* 此配置下所有属性均可在config中进行覆盖,实现个性化配置 */
defaultConfig: {
borderWidth: "1px", //
borderBackground: "#eee", //
circleSize: "16px", //
circleColor: "#2ec4a7", //
startColor: "#d5f4ee", //
endColor: "#2ec4a7", //
centerCircleBg: "#fff", //
clockwise: true, //
showEyes: false, //
eyesSize: "10px", //
},
};
},
};
</script>
<style scoped>
.chart-box {
position: relative;
width: 110px;
height: 110px;
}
/* 核心代码、控制进度条样式及进度 */
.outer-box {
width: 100%;
height: 100%;
border-radius: 50%;
box-sizing: border-box;
/* background-color: var(--background-color);
background-image: var(--background-image); */
background-color: #fff;
background-image: #fff;
padding: var(--border-width);
transform: var(--clockwise-wise);
}
/* 开始处增加一个圆形端点, 模拟圆角效果 */
.outer-box::after {
content: "";
width: var(--border-width);
height: var(--border-width);
border-radius: 50%;
position: absolute;
left: 50%;
top: 0;
transform: translateX(-50%);
background: var(--start-color);
}
/* 中间添加一个和背景色一样的圆圈 */
.inner-box {
position: relative;
width: 100%;
height: 100%;
border-radius: 50%;
background: var(--center-gap-bg);
}
/* 指示针 */
.pointer-box {
position: absolute;
left: 50%;
top: calc(0px - var(--border-width) / 2);
bottom: calc(0px - var(--border-width) / 2);
z-index: 1;
transform-origin: center center;
transform: var(--pointer-rotate);
}
/* 指示针的头部添加一个小圆点 */
.pointer-box::after {
content: "";
position: absolute;
left: 0%;
top: -6px;
width: var(--dot-width);
height: var(--dot-width);
border-radius: 50%;
background: var(--circle-color);
transform: translate(-50%, -50%);
background: var(--circle-color);
border: 1px solid #FFFFFF;
box-shadow: 0px 0px 6px 0px #00000040;
}
/* 进度条结尾处添加一个小眼睛,背景白色 */
.pointer-box::before {
content: "";
position: absolute;
left: 0%;
top: 0;
width: var(--eyes-size);
height: var(--eyes-size);
border-radius: 50%;
transform: translate(-50%, -50%);
z-index: 1;
opacity: var(--show-eyes);
}
/* 插槽内容样式 */
.slot-content {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
</style>

218
src/views/dashboard/radialindicator.vue

@ -1,218 +0,0 @@
<template>
<div class="radial-indicator-container" :style="{'width':size+'px','height':size+'px'}">
<div class="percentloop">
<div class="circle-left" :style="{ background: 'linear-gradient(231.58deg, #2ED283 17.34%, #48F4C1 82.12%)'}">
<div :style="{ background: backgroundColor}" ref="leftcontent"></div>
</div>
<div class="circle-right" :style="{ background: 'linear-gradient(231.58deg, #2ED283 17.34%, #48F4C1 82.12%)'}">
<div :style="{ background: backgroundColor}" ref="rightcontent"></div>
</div>
<div class="content-wrap">
<span class="content-number" :title="percent+'%'">{{percent}}%</span>
</div>
</div>
</div>
</template>
<script>
// Events: animationFinished
export default {
name: 'RadialIndicator',
props: {
size: {
type: [String, Number],
default: 155
},
icon: {
type: String,
default: 'mail'
},
content: String,
color: {
type: String,
default: '#00b3ef'
},
backgroundColor: {
type: String,
default: '#7fd9f7'
},
percentNum: {
type: [String, Number],
default: 0
},
speed: {
// suggest 1~3
type: [String, Number],
default: 1
}
},
data () {
return {
percent: 0,
initDeg: 0,
timeId: null,
animationing: false
}
},
created () {
this.goRotate(this.transformToDeg(this.percentNum))
},
watch: {
'percentNum': function (val) {
if (this.animationing) return
this.goRotate(this.transformToDeg(val))
}
},
methods: {
transformToDeg (percent) {
let deg = 0
if (percent >= 100) {
deg = 360
} else {
deg = parseInt(360 * percent / 100)
}
return deg
},
transformToPercent (deg) {
let percent = 0
if (deg >= 360) {
percent = 100
} else {
percent = parseInt(100 * deg / 360)
}
return percent
},
// > 180
rotateLeft (deg) {
this.$refs.leftcontent.style.transform = 'rotate(' + (deg - 180) + 'deg)'
},
// < 180
rotateRight (deg) {
this.$refs.rightcontent.style.transform = 'rotate(' + deg + 'deg)'
},
goRotate (deg) {
this.animationing = true
this.timeId = setInterval(() => {
if (deg > this.initDeg) {
this.initDeg += Number(this.speed)
if (this.initDeg >= 180) {
this.rotateLeft(this.initDeg)
this.rotateRight(180)
} else {
this.rotateRight(this.initDeg)
}
} else {
this.initDeg -= Number(this.speed)
if (this.initDeg >= 180) {
this.rotateLeft(this.initDeg)
} else {
this.rotateLeft(180)
this.rotateRight(this.initDeg)
}
}
this.percent = this.transformToPercent(this.initDeg)
const remainer = Number(deg) - this.initDeg
if (Math.abs(remainer) < this.speed) {
this.initDeg += remainer
if (this.initDeg > 180) {
this.rotateLeft(deg)
} else {
this.rotateRight(deg)
}
this.animationFinished()
}
}, 10)
},
animationFinished () {
this.percent = this.percentNum
this.animationing = false
clearInterval(this.timeId)
this.$emit('animationFinished')
}
}
}
</script>
<style>
.radial-indicator-container{
width: 120px;
height: 120px;
}
.radial-indicator-container .percentloop {
position: relative;
width: 100%;
height: 100%;
border-radius: 50%;
overflow: hidden;
}
.radial-indicator-container .circle-left,
.radial-indicator-container .circle-right {
position: absolute;
top: 0;
left: 0;
width: 50%;
height: 100%;
overflow: hidden;
}
.radial-indicator-container .circle-left>div,
.radial-indicator-container .circle-right>div {
width: 100%;
height: 100%;
transform-origin: right center;
/* transition: all .5s linear; */
}
.radial-indicator-container .circle-right {
left: 50%;
}
.radial-indicator-container .circle-right>div {
transform-origin: left center;
}
.radial-indicator-container .content-wrap {
position: absolute;
top: 9%;
bottom: 9%;
left: 9%;
right: 9%;
background-color: #fff;
border-radius: 50%;
overflow: hidden;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
color: #000;
}
.radial-indicator-container .content-wrap .content-number {
font-size: 24px;
padding: 5px 0 7px 0;
cursor: pointer;
}
.radial-indicator-container .content-wrap .content-text {
display: inline-block;
max-width: 90px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
}
</style>

116
src/views/index_v1.vue

@ -20,6 +20,12 @@
</div>
</div>
<pie-chart-create :chart-data="info" />
</div>
</template>
@ -59,10 +65,16 @@ export default {
RaddarChart,
PieChart,
BarChart,
PieChartCreate
PieChartCreate,
},
data() {
return {
percent: 30,
canvasId: 'canvasId',
canvasContent: null,
startAngle: -Math.PI / 2, //canvas390 12 0
lineChartData: lineChartData.newVisitis,
dateRange: [],
queryParams: {},
@ -74,7 +86,69 @@ export default {
this.addDate()
this.getData()
},
computed: {
box0Style() {
if (this.percent >= 50) {
return `transform: rotate(${180 + this.percent*3.6}deg)`
} else {
return ``
}
},
box1Style() {
if (this.percent <= 50) {
return `transform: rotate(${this.percent*3.6}deg)`
} else {
return `display: none;`
}
}
},
onShow() {
this.canvasContent = uni.createCanvasContext(this.canvasId, this)
this.drawCircleByProgress()
},
methods: {
onChange(value) {
// console.log(value.detail.value)
this.percent = value.detail.value
this.drawCircleByProgress()
},
drawCircleByProgress() {
//
this.canvasContent.setLineCap('round'); //
this.canvasContent.setLineCap('square'); //
let width = uni.upx2px(30)
// 线
this.canvasContent.setLineWidth(width);
this.canvasContent.setStrokeStyle('#ff0000');
let endAngle = ((2 * Math.PI) / 100) * this.percent + this.startAngle;
this.canvasContent.beginPath();
// canvas
let radius = uni.upx2px(284) / 2;
this.canvasContent.arc(radius, radius, radius - width, this.startAngle, endAngle, false);
this.canvasContent.stroke();
// 0.1
let p0x = radius + Math.cos(endAngle + .1) * (radius - width)
let p0y = radius + Math.sin(endAngle + .1) * (radius - width)
this.canvasContent.beginPath()
this.canvasContent.arc(p0x, p0y, width / 2, 0, 2 * Math.PI)
this.canvasContent.setFillStyle('#F0AD4E');
this.canvasContent.fill()
this.canvasContent.beginPath()
this.canvasContent.arc(p0x, p0y, width * 0.4, 0, 2 * Math.PI)
this.canvasContent.setFillStyle('#FFFFFF');
this.canvasContent.fill()
this.canvasContent.draw();
},
addDate() {
let nowDate = new Date();
let date = {
@ -113,6 +187,46 @@ export default {
</script>
<style lang="scss" scoped>
.circle{
width: 11px;
height: 11px;
background: linear-gradient(0deg, #FFD670, #FFD670),
linear-gradient(0deg, #FFFFFF, #FFFFFF);
border: 1px solid #FFFFFF;
box-shadow: 0px 0px 6px 0px #00000040;
border-radius: 50%;
position: absolute;
right: 0;
z-index: 10000;
}
.box3{
position: relative;
top: 16px;
left: 18px;
width: 250px;
height: 250px;
background-color: #F3F6F8;
clip: rect(0px, 284px, 284px, 142px);
border-radius: 50%;
z-index: 9999;
}
.box2{
position: relative;
top: 16px;
left: 18px;
width: 250px;
height: 250px;
background-color: #F3F6F8;
clip: rect(0px, 284px, 284px, 142px);
border-radius: 50%;
z-index: 9999;
}
.title {
font-size: 16px;
color: #333;

303
src/views/otc/OtcStoreBondConfig/index.vue

@ -1,6 +1,6 @@
div<template>
<template>
<div class="app-container">
<div class="search_con m-b-28">
<!-- <div class="search_con m-b-28">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="质押币种" prop="pledgeCoin">
<el-input
@ -11,25 +11,6 @@ div<template>
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="手续费类型" prop="feeType">-->
<!-- <el-select v-model="queryParams.feeType" placeholder="请选择手续费类型:" clearable size="small">-->
<!-- <el-option-->
<!-- v-for="dict in feeTypeOptions"-->
<!-- :key="dict.dictValue"-->
<!-- :label="dict.dictLabel"-->
<!-- :value="dict.dictValue"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="手续费" prop="fee">-->
<!-- <el-input-->
<!-- v-model="queryParams.fee"-->
<!-- placeholder="请输入手续费"-->
<!-- clearable-->
<!-- size="small"-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="medium">
<el-option
@ -40,151 +21,131 @@ div<template>
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="质押标识" prop="code">-->
<!-- <el-input-->
<!-- v-model="queryParams.code"-->
<!-- placeholder="请输入质押标识"-->
<!-- clearable-->
<!-- size="small"-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
</div> -->
<div class="bg bg-white">
<el-row :gutter="10" class="m-b-16">
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['otc:OtcStoreBondConfig:add']"-->
<!-- >新增</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['otc:OtcStoreBondConfig:edit']"-->
<!-- >修改</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['otc:OtcStoreBondConfig:remove']"-->
<!-- >删除</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
@click="handleExport"
v-hasPermi="['otc:OtcStoreBondConfig:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<div class="bg bg-white">
<el-row :gutter="10" class="m-b-16">
<el-table v-loading="loading" :data="OtcStoreBondConfigList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键" align="center" prop="id" />
<el-table-column label="质押币种" align="center" prop="pledgeCoin" />
<el-table-column label="最低质押数量" align="center" prop="pledgeMinNum" />
<!-- <el-table-column label="手续费类型" align="center" prop="feeType" :formatter="feeTypeFormat" />-->
<!-- <el-table-column label="手续费" align="center" prop="fee" />-->
<el-table-column label="是否开启" align="center" prop="status" :formatter="statusFormat" />
<el-table-column label="质押标识" align="center" prop="code" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['otc:OtcStoreBondConfig:edit']"
>修改</el-button>
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['otc:OtcStoreBondConfig:remove']"-->
<!-- >删除</el-button>-->
</template>
</el-table-column>
</el-table>
<el-col :span="1.5"><el-button type="primary" size="medium" @click="handleAdd"
v-hasPermi="['otc:OtcStoreBondConfig:add']">新增</el-button>
</el-col>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['otc:OtcStoreBondConfig:edit']"-->
<!-- >修改</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['otc:OtcStoreBondConfig:remove']"-->
<!-- >删除</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button type="primary" size="medium" @click="handleExport"
v-hasPermi="['otc:OtcStoreBondConfig:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="OtcStoreBondConfigList" @selection-change="handleSelectionChange">
<el-table-column label="质押币种" align="center" prop="pledgeCoin" />
<el-table-column label="质押数量" align="center" prop="pledgeMinNum" />
<!-- <el-table-column label="手续费" align="center" prop="fee" />-->
<!-- <el-table-column label="是否开启" align="center" prop="status" :formatter="statusFormat" /> -->
<el-table-column label="是否启用" align="center" prop="status" width="140px">
<template slot-scope="scope">
<el-switch v-model="scope.row.status" active-text="" inactive-text="" active-value="Y" inactive-value="N"
@change="switchStatusChange(scope.row)">
</el-switch>
</template>
</el-table-column>
<!-- <el-table-column label="赎回标记" align="center" prop="feeType" :formatter="feeTypeFormat" /> -->
<el-table-column label="赎回标记" align="center" prop="feeType" />
<!-- <el-table-column label="质押标识" align="center" prop="code" /> -->
<el-table-column label="赎回手续费" align="center" prop="fee" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handleUpdate(scope.row)"
v-hasPermi="['otc:OtcStoreBondConfig:edit']">修改</el-button>
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['otc:OtcStoreBondConfig:remove']"-->
<!-- >删除</el-button>-->
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</div>
<!-- 添加或修改承兑商质押金费率配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="质押币种" prop="pledgeCoin">
<el-input v-model="form.pledgeCoin" placeholder="请输入质押币种" disabled="disabled" />
<el-input v-model="form.pledgeCoin" placeholder="请输入质押币种" :disabled="form.id" />
</el-form-item>
<el-form-item label="质押币种最低数量" prop="pledgeMinNum">
<el-input v-model="form.pledgeMinNum" placeholder="请输入质押币种最低数量" />
</el-form-item>
<!-- <el-form-item label="手续费类型" prop="feeType">-->
<!-- <el-select v-model="form.feeType" placeholder="请选择类型:pen:按笔,percentage:百分比">-->
<!-- <el-option-->
<!-- v-for="dict in feeTypeOptions"-->
<!-- :key="dict.dictValue"-->
<!-- :label="dict.dictLabel"-->
<!-- :value="dict.dictValue"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="手续费" prop="fee">-->
<!-- <el-input v-model="form.fee" placeholder="请输入手续费" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="手续费类型" prop="feeType">-->
<!-- <el-select v-model="form.feeType" placeholder="请选择类型:pen:按笔,percentage:百分比">-->
<!-- <el-option-->
<!-- v-for="dict in feeTypeOptions"-->
<!-- :key="dict.dictValue"-->
<!-- :label="dict.dictLabel"-->
<!-- :value="dict.dictValue"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="手续费" prop="fee">-->
<!-- <el-input v-model="form.fee" placeholder="请输入手续费" />-->
<!-- </el-form-item>-->
<el-form-item label="是否开启">
<!-- <el-radio-group v-model="form.status">-->
<!-- <el-radio label="1">请选择字典生成</el-radio>-->
<!-- </el-radio-group>-->
<!-- <el-radio-group v-model="form.status">-->
<!-- <el-radio label="1">请选择字典生成</el-radio>-->
<!-- </el-radio-group>-->
<el-select v-model="form.status" placeholder="请选择">
<el-option
v-for="dict in statusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
<el-option v-for="dict in statusOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<!-- <el-form-item label="创建时间" prop="createTime">-->
<!-- <el-date-picker clearable size="small"-->
<!-- v-model="form.createTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="选择创建时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="创建时间" prop="createTime">-->
<!-- <el-date-picker clearable size="small"-->
<!-- v-model="form.createTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="选择创建时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<el-form-item label="质押标识" prop="code">
<el-input v-model="form.code" placeholder="请输入质押标识" disabled="disabled"/>
<el-input v-model="form.code" placeholder="请输入质押标识" :disabled="form.id" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -253,6 +214,17 @@ export default {
});
},
methods: {
//
switchStatusChange(row, type) {
this.reset()
const id = row.id || this.ids;
this.form = row;
this.form.status = row.status;
updateOtcStoreBondConfig(this.form).then(response => {
this.msgSuccess("修改成功");
this.getList();
});
},
/** 查询承兑商质押金费率配置列表 */
getList() {
this.loading = true;
@ -276,15 +248,6 @@ export default {
//
reset() {
this.form = {
id: null,
pledgeCoin: null,
pledgeMinNum: null,
feeType: null,
fee: null,
status: "0",
createTime: null,
updateTime: null,
code: null
};
this.resetForm("form");
},
@ -301,7 +264,7 @@ export default {
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
@ -344,28 +307,28 @@ export default {
handleDelete(row) {
const ids = row.id || this.ids;
this.$confirm('是否确认删除承兑商质押金费率配置编号为"' + ids + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return delOtcStoreBondConfig(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return delOtcStoreBondConfig(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有承兑商质押金费率配置数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return exportOtcStoreBondConfig(queryParams);
}).then(response => {
this.download(response.msg);
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return exportOtcStoreBondConfig(queryParams);
}).then(response => {
this.download(response.msg);
})
}
}
};

42
src/views/otc/otcAppealConfig/index.vue

@ -7,7 +7,7 @@
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="medium">
<el-option
v-for="dict in statusOptions"
v-for="dict in statusOptionsSearch"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
@ -31,7 +31,7 @@
v-hasPermi="['otc:otcAppealConfig:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button
type="primary"
size="medium"
@ -48,7 +48,7 @@
@click="handleDelete"
v-hasPermi="['otc:otcAppealConfig:remove']"
>删除</el-button>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button
type="primary"
@ -61,24 +61,29 @@
</el-row>
<el-table v-loading="loading" :data="otcAppealConfigList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="流水编号" align="center" prop="id" />
<el-table-column label="申诉描述" align="center" prop="remark" />
<el-table-column label="申诉终端" align="center" prop="terminalSource" :formatter="terminalSourceFormat" />
<el-table-column label="状态" align="center" prop="status" :formatter="statusFormat" />
<el-table-column label="状态" align="center" prop="status" width="140px">
<template slot-scope="scope">
<el-switch v-model="scope.row.status" active-text="" inactive-text="" active-value="Y"
inactive-value="N" @change="switchStatusChange(scope.row)">
</el-switch>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="medium"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['otc:otcAppealConfig:edit']"
>修改</el-button>
<el-button
size="medium"
type="text"
icon="el-icon-delete"
style="color:rgba(231, 53, 53, 1)"
@click="handleDelete(scope.row)"
v-hasPermi="['otc:otcAppealConfig:remove']"
>删除</el-button>
@ -166,6 +171,7 @@ export default {
//
otcAppealConfigList: [],
statusOptions: [],
statusOptionsSearch:[],
terminalSourceOptions: [],
//
title: "",
@ -190,12 +196,32 @@ export default {
this.getDicts("sys_yes_no").then(response => {
this.statusOptions = response.data;
});
this.getDicts("sys_yes_no").then(response => {
this.statusOptionsSearch = response.data;
this.statusOptionsSearch.unshift({
dictValue:null,
dictLabel:'全部'
})
});
this.getDicts("terminal_source").then(response => {
this.terminalSourceOptions = response.data;
});
},
methods: {
//
switchStatusChange(row, type) {
this.reset()
const id = row.id || this.ids;
this.form = row;
this.form.status = row.status;
updateOtcAppealConfig(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.getList();
});
},
/** 查询申诉类型配置列表 */
getList() {
this.loading = true;

8
src/views/otc/otcAppealOrder/appealDetail.vue

@ -1,6 +1,10 @@
<template>
<div class="app-container">
<div class="bg bg-white">
<div class="detailTit flex m-b-16">
<div class="circle"></div>
订单信息
</div>
<el-table v-loading="loading" :data="UserCertificationList">
<el-table-column :label="'订单编号'" align="center" prop="balance">
<template slot-scope="scope">
@ -481,7 +485,7 @@ export default {
}
.title {
font-size: 24px;
font-size: 16px;
font-weight: 500;
}
@ -498,7 +502,7 @@ export default {
}
.status .text {
font-size: 16px;
font-size: 12px;
font-weight: 500;
}
</style>

182
src/views/otc/otcAppealOrder/index.vue

@ -4,24 +4,40 @@
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="订单号" prop="otcOrderNo">
<el-input v-model="queryParams.otcOrderNo" placeholder="请输入订单号" clearable size="medium"
<el-form-item label="订单号" prop="otcOrderNo">
<el-input v-model="queryParams.otcOrderNo" placeholder="请输入订单号" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="申诉状态" prop="appealStatus">
<el-select size="medium" v-model="queryParams.appealStatus" placeholder="请选择申诉状态" clearable>
<el-form-item label="用户名称" prop="appealUserName">
<el-input v-model="queryParams.appealUserName" placeholder="请输入用户名称" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="类型" prop="tradeType">
<el-select v-model="queryParams.tradeType" placeholder="请选择类型" clearable size="medium">
<el-option
v-for="dict in tradeTypeStatusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="appealStatus">
<el-select size="medium" v-model="queryParams.appealStatus" placeholder="请选择状态" clearable>
<el-option v-for="dict in appealStatusOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="下单时间">
<el-date-picker v-model="dateRange" size="medium" style="width: 340px" value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
:unlink-panels="true" :default-time="['00:00:00', '23:59:59']"></el-date-picker>
</el-form-item>
<el-form-item label="申诉终端" prop="terminalSource">
<el-input v-model="queryParams.terminalSource" placeholder="请输入申诉终端" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button>
@ -59,28 +75,56 @@
</el-row>
<el-table v-loading="loading" :data="otcAppealOrderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键" align="center" prop="id" />
<el-table-column label="订单编号" align="center" prop="otcOrderId" />
<el-table-column label="订单号" align="center" prop="otcOrderNo" />
<el-table-column label="本申诉订单号" align="center" prop="otcAppealNo" />
<el-table-column label="申诉备注" align="center" prop="appealRemark" />
<!-- <el-table-column label="申诉图片" align="center" prop="appealImgUrl" >-->
<!-- <template slot-scope="scope">-->
<!-- <el-image v-if="scope.row.appealImgUrl!=null && scope.row.appealImgUrl!=''"-->
<!-- style="width: 120px; height: 120px"-->
<!-- :src="scope.row.appealImgUrl"-->
<!-- @click="previewImage(scope.row.appealImgUrl)"-->
<!-- :preview-src-list="srcList"-->
<!-- ></el-image>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="申诉状态" align="center" prop="appealStatus" :formatter="appealStatusFormat" />
<el-table-column label="申诉终端" align="center" prop="terminalSource" :formatter="terminalSourceFormat" />
<el-table-column label="申诉方用户" align="center" prop="appealUserName" />
<el-table-column label="被申诉方用户" align="center" prop="beAppealUserName" />
<el-table-column label="审核描述" align="center" prop="appealDesc" />
<el-table-column label="添加时间" align="center" prop="crateTime" width="180">
<el-table-column label="订单编号" align="center" prop="crateTime" width="180">
<template slot-scope="scope">
<span>{{ scope.row.otcOrderNo}}</span>
</template>
</el-table-column>
<el-table-column label="用户名称" align="center" prop="crateTime" width="180">
<template slot-scope="scope">
<span>{{ scope.row.appealUserName }}</span>
</template>
</el-table-column>
<el-table-column label="交易类型" align="center" prop="crateTime" width="100">
<template slot-scope="scope">
<span :style="{color:scope.row.order.tradeType=='sell'?'rgba(231, 53, 53, 1)':'rgba(9, 186, 122, 1)'}">{{ scope.row.order.tradeType=='sell'?'出售':'购买' }}</span>
</template>
</el-table-column>
<el-table-column label="交易币种" align="center" prop="crateTime" width="100">
<template slot-scope="scope">
<span>{{ scope.row.order.coin }}</span>
</template>
</el-table-column>
<el-table-column label="交易数量" align="center" prop="crateTime" width="100">
<template slot-scope="scope">
<span>{{ scope.row.order.realityCoinNum }}</span>
</template>
</el-table-column>
<el-table-column label="交易单价" align="center" prop="crateTime" width="100">
<template slot-scope="scope">
<span>{{ scope.row.order.legalCurrency }}</span>
</template>
</el-table-column>
<el-table-column label="交易总价" align="center" prop="crateTime" width="100">
<template slot-scope="scope">
<span>{{ scope.row.order.realityLegalNums }}</span>
</template>
</el-table-column>
<el-table-column label="法币币种" align="center" prop="crateTime" width="100">
<template slot-scope="scope">
<span>{{ scope.row.order.limitCoin}}</span>
</template>
</el-table-column>
<el-table-column label="订单状态" align="center" prop="crateTime" width="180">
<template slot-scope="scope">
<span :style="classObje(scope.row.order.appealStatus)">{{ appealStatusFormat(scope.row.order)}}</span>
</template>
</el-table-column>
<el-table-column label="下单时间" align="center" prop="crateTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
@ -94,7 +138,7 @@
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['otc:otcAppealOrder:edit']"-->
<!-- >申诉凭证</el-button>-->
<el-button v-if="scope.row.appealStatus == 'in_appeal'" size="mini" type="text" icon="el-icon-edit"
<el-button v-if="scope.row.appealStatus == 'in_appeal'" size="mini" type="text"
@click="handleApple(scope.row)" v-hasPermi="['otc:otcAppealOrder:edit']">审核处理</el-button>
<el-button size="mini" type="text" @click="handleView(scope.row)">详情</el-button>
@ -226,8 +270,22 @@ export default {
name: "OtcAppealOrder",
components: {
},
computed:{
classObje(status){
return(status)=>{
if(status=='in_appeal'){
return {'color':'rgba(231, 53, 53, 1)'}
}
if(status=='success_appeal'){
return {'color':'rgba(9, 186, 122, 1)'}
}
}
}
},
data() {
return {
tradeTypeStatusOptions: [],
dateRange: [],
//
loading: true,
//
@ -257,6 +315,7 @@ export default {
pageNum: 1,
pageSize: 10,
otcOrderId: null,
tradeType:null,
otcOrderNo: null,
otcAppealNo: null,
appealRemark: null,
@ -265,7 +324,9 @@ export default {
terminalSource: null,
appealUserId: null,
beAppealUserId: null,
appealDesc: null
appealDesc: null,
payee:null,
appealUserName:null,
},
//
form: {},
@ -290,14 +351,34 @@ export default {
},
created() {
this.getList();
this.getDicts("trade_type").then(response => {
this.tradeTypeStatusOptions = response.data;
this.tradeTypeStatusOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
});
this.getDicts("appeal_status").then(response => {
this.appealStatusOptions = response.data;
this.appealStatusOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
});
this.getDicts("terminal_source").then(response => {
this.terminalSourceOptions = response.data;
this.terminalSourceOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
});
this.getDicts("appeal_trade_type").then(response => {
this.appealTradeTypeOptions = response.data;
this.appealTradeTypeOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
});
},
methods: {
@ -314,7 +395,7 @@ export default {
/** 查询OTC申诉订单列表 */
getList() {
this.loading = true;
listOtcAppealOrder(this.queryParams).then(response => {
listOtcAppealOrder(this.addSESDateRange(this.queryParams, this.dateRange)).then(response => {
this.otcAppealOrderList = response.rows;
this.total = Number(response.total);
this.loading = false;
@ -340,44 +421,16 @@ export default {
//
reset() {
this.form = {
id: null,
otcOrderId: null,
otcOrderNo: null,
otcAppealNo: null,
appealRemark: null,
appealImgUrl: null,
appealStatus: "0",
createTime: null,
updateTime: null,
terminalSource: null,
appealUserId: null,
beAppealUserId: null,
appealDesc: null,
listUrl: []
};
this.dateRange = [];
this.resetForm("form");
},
//
resetApple() {
this.formApple = {
id: null,
otcOrderId: null,
otcOrderNo: null,
otcAppealNo: null,
appealRemark: null,
appealImgUrl: null,
appealStatus: "0",
createTime: null,
updateTime: null,
terminalSource: null,
appealUserId: null,
beAppealUserId: null,
appealDesc: null,
appealUserName: null,
beAppealUserName: null,
tradeType: null,
};
this.dateRange = [];
this.resetForm("formApple");
},
/** 搜索按钮操作 */
@ -387,6 +440,7 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.handleQuery();
},

68
src/views/otc/otcCoin/index.vue

@ -2,14 +2,14 @@
<div class="app-container">
<div class="search_con m-b-28">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="币种" prop="coinName">
<el-form-item label="币种名称" prop="coinName">
<el-input v-model="queryParams.coinName" placeholder="请输入币种" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="medium">
<el-option v-for="dict in statusOptions" :key="dict.dictValue" :label="dict.dictLabel"
<el-option v-for="dict in statusOptionsSearch" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
@ -57,22 +57,30 @@
</el-row>
<el-table v-loading="loading" :data="otcCoinList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="币种" align="center" prop="coinName" />
<el-table-column label="类型" align="center" prop="feeType" :formatter="feeTypeFormat" />
<el-table-column label="手续费率" align="center" prop="feeRate" />
<el-table-column label="全称" align="center" prop="nameEn" />
<el-table-column label="中文名称" align="center" prop="nameCn" />
<el-table-column label="卖出广告最低发布数量" align="center" prop="sellMinAmount" />
<el-table-column label="买入广告最低发布价值" align="center" prop="buyMinAmount" />
<el-table-column label="买入广告最大发布价值" align="center" prop="buyMaxAmount" />
<el-table-column label="币种全称" align="center" prop="coinName" />
<el-table-column label="币种简称" align="center" prop="nameEn" />
<el-table-column label="中文名" align="center" prop="nameCn" />
<el-table-column label="手续费类型" align="center" prop="feeType" :formatter="feeTypeFormat" />
<el-table-column label="手续费费率" align="center" prop="feeRate" />
<el-table-column label="sell发布最低数量" align="center" prop="sellMinAmount" />
<el-table-column label="buy发布最低数量" align="center" prop="buyMinAmount" />
<el-table-column label="buy发布最高数量" align="center" prop="buyMaxAmount" />
<el-table-column label="排序" align="center" prop="sort" />
<el-table-column label="状态" align="center" prop="status" :formatter="statusFormat" />
<el-table-column label="状态" align="center" prop="status" width="140px">
<template slot-scope="scope">
<el-switch v-model="scope.row.status" active-text="" inactive-text="" active-value="Y"
inactive-value="N" @change="switchStatusChange(scope.row)">
</el-switch>
</template>
</el-table-column>
<el-table-column label="精度" align="center" prop="accuracy" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="medium" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['otc:otcCoin:edit']">修改</el-button>
<el-button size="medium" type="text" @click="handleUpdate(scope.row)"
v-hasPermi="['otc:otcCoin:edit']">编辑</el-button>
<!-- <el-button-->
<!-- size="medium"-->
<!-- type="text"-->
@ -110,14 +118,14 @@
<el-form-item label="中文名称" prop="nameCn">
<el-input v-model="form.nameCn" placeholder="请输入中文名称" />
</el-form-item>
<el-form-item label="卖出广告最低发布数量" prop="sellMinAmount">
<el-input v-model="form.sellMinAmount" placeholder="请输入卖出广告最低发布数量" />
<el-form-item label="sell发布最低数量" prop="sellMinAmount">
<el-input v-model="form.sellMinAmount" placeholder="请输入sell发布最低数量" />
</el-form-item>
<el-form-item label="买入广告最低发布价值" prop="buyMinAmount">
<el-input v-model="form.buyMinAmount" placeholder="请输入买入广告最低发布价值" />
<el-form-item label="buy发布最低数量" prop="buyMinAmount">
<el-input v-model="form.buyMinAmount" placeholder="请输入buy发布最低数量" />
</el-form-item>
<el-form-item label="买入广告最大发布价值" prop="buyMaxAmount">
<el-input v-model="form.buyMaxAmount" placeholder="请输入买入广告最大发布价值" />
<el-form-item label="buy发布最高数量" prop="buyMaxAmount">
<el-input v-model="form.buyMaxAmount" placeholder="请输入buy发布最高数量" />
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input v-model="form.sort" placeholder="请输入排序" />
@ -167,6 +175,7 @@ export default {
// OTC
otcCoinList: [],
statusOptions: [],
statusOptionsSearch:[],
feeTypeOptions: [],
//
@ -213,6 +222,13 @@ export default {
this.getDicts("sys_yes_no").then(response => {
this.statusOptions = response.data;
});
this.getDicts("sys_yes_no").then(response => {
this.statusOptionsSearch = response.data;
this.statusOptionsSearch.unshift({
dictValue:null,
dictLabel:'全部'
})
});
this.getDicts("fee_type").then(response => {
this.feeTypeOptions = response.data;
});
@ -220,6 +236,17 @@ export default {
},
methods: {
//
switchStatusChange(row, type) {
this.reset()
const id = row.id || this.ids;
this.form = row;
this.form.status = row.status;
updateOtcCoin(this.form).then(response => {
this.msgSuccess("修改成功");
this.getList();
});
},
/** 查询OTC币种列表 */
getList() {
this.loading = true;
@ -230,7 +257,6 @@ export default {
});
},
statusFormat(row, column) {
return this.selectDictLabel(this.statusOptions, row.status);
},

46
src/views/otc/otcCurrencyCoin/index.vue

@ -2,7 +2,7 @@
<div class="app-container">
<div class="search_con m-b-28">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="法币名称" prop="fullName">
<el-form-item label="法币名称" prop="currencyCoin">
<el-input
v-model="queryParams.currencyCoin"
placeholder="请输入法币名称"
@ -11,6 +11,15 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="isDefault">
<el-select v-model="queryParams.isDefault" placeholder="请选择状态" clearable size="medium">
<el-option v-for="dict in statusOptionsSearch" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<!-- <el-form-item label="排序" prop="sort">-->
<!-- <el-input-->
<!-- v-model="queryParams.sort"-->
@ -83,18 +92,27 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="法币简称" align="center" prop="currencyCoin" />
<el-table-column label="法币全称" align="center" prop="fullName" />
<el-table-column label="状态" align="center" prop="isDefault" width="140px">
<template slot-scope="scope">
<el-switch v-model="scope.row.isDefault" active-text="" inactive-text="" active-value="Y"
inactive-value="N" @change="switchStatusChange(scope.row)">
</el-switch>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="排序" align="center" prop="sort" />
<el-table-column label="是否默认" align="center" prop="isDefault" :formatter="statusFormat" />
<!-- <el-table-column label="是否默认" align="center" prop="isDefault" :formatter="statusFormat" /> -->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="medium"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['otc:otcCurrencyCoin:edit']"
>修改</el-button>
>编辑</el-button>
<!-- <el-button-->
<!-- size="medium"-->
<!-- type="text"-->
@ -166,6 +184,7 @@ export default {
},
data() {
return {
statusOptionsSearch:[],
operate:'add',
//
loading: true,
@ -194,6 +213,7 @@ export default {
fullName: null,
sort: null,
isDefault: null,
status:null,
},
//
form: {},
@ -222,8 +242,26 @@ export default {
this.getDicts("sys_yes_no").then(response => {
this.statusOptions = response.data;
});
this.getDicts("sys_yes_no").then(response => {
this.statusOptionsSearch = response.data;
this.statusOptionsSearch.unshift({
dictValue:null,
dictLabel:'全部'
})
});
},
methods: {
//
switchStatusChange(row, type) {
this.reset()
const id = row.id || this.ids;
this.form = row;
this.form.status = row.status;
updateOtcCurrencyCoin(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.getList();
});
},
/** 查询法币信息列表 */
getList() {
this.loading = true;

24
src/views/otc/otcFinance/index.vue

@ -46,13 +46,13 @@
<div class="bg bg-white">
<el-row :gutter="10" class="m-b-16">
<el-col :span="1.5">
<el-button type="primary" size="medium"
@click="handleExport">导出</el-button>
<el-button type="primary" size="medium" @click="handleExport">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="otcCoinList">
<el-table v-loading="loading" :data="otcCoinList" @selection-change="handleSelectionChange">
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column label="账户名" align="center" prop="accountName" />
<el-table-column label="商户订单号" align="center" prop="merchantOrderNo" />
<el-table-column label="业务单号" align="center" prop="businessNo" />
@ -141,15 +141,33 @@ export default {
this.getList();
this.getDicts("amount_type").then(response => {
this.amountTypeStatus = response.data;
this.amountTypeStatus.unshift({
dictLabel: '全部',
dictValue: null,
});
});
this.getDicts("op_type").then(response => {
this.sourceTypeOptions = response.data;
this.sourceTypeOptions.unshift({
dictLabel: '全部',
dictValue: null,
});
});
this.getDicts("source_type_finance").then(response => {
this.sysOrderStatus = response.data;
this.sysOrderStatus.unshift({
dictLabel: '全部',
dictValue: null,
});
});
},
methods: {
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 查询OTC币种列表 */
getList() {
this.loading = true;

345
src/views/otc/otcOrder/index.vue

@ -12,10 +12,31 @@
/>
</el-form-item>
<el-form-item label="商家名称" prop="storeName">
<el-input
v-model="queryParams.storeName"
placeholder="请输入商家名称"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="交易类型" prop="tradeType">
<el-select v-model="queryParams.tradeType" placeholder="请选择交易类型" clearable size="medium">
<el-form-item label="类型" prop="tradeType">
<el-select v-model="queryParams.tradeType" placeholder="请选择类型" clearable size="medium">
<el-option
v-for="dict in tradeTypeStatusOptions"
:key="dict.dictValue"
@ -37,8 +58,8 @@
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="订单状态" prop="orderStatus">
<el-select v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable size="medium">
<el-form-item label="状态" prop="orderStatus">
<el-select v-model="queryParams.orderStatus" placeholder="请选择状态" clearable size="medium">
<el-option
v-for="dict in orderStatusOptions"
:key="dict.dictValue"
@ -48,6 +69,12 @@
</el-select>
</el-form-item>
<el-form-item label="下单时间">
<el-date-picker v-model="dateRange" size="medium" style="width: 340px" value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
:unlink-panels="true" :default-time="['00:00:00', '23:59:59']"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button>
@ -101,22 +128,34 @@
</el-row>
<el-table v-loading="loading" :data="otcOrderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="流水编号" align="center" prop="id" />-->
<el-table-column label="订单编号" align="center" prop="orderNo" />
<el-table-column label="总订单id" align="center" prop="storeOrder" />
<el-table-column label="交易类型" align="center" prop="tradeType" :formatter="tradeTypeFormat" />
<el-table-column label="商家昵称" align="center" prop="storeName" />
<el-table-column label="总单编号" align="center" prop="storeOrder" />
<!-- <el-table-column label="交易类型" align="center" prop="tradeType" :formatter="tradeTypeFormat" /> -->
<el-table-column label="交易类型" align="center" prop="tradeType" width="180">
<template slot-scope="scope">
<span :style="classObje(scope.row.tradeType)">{{ tradeTypeFormat(scope.row) }}</span>
</template>
</el-table-column>
<el-table-column label="订单状态" align="center" prop="tradeType" width="180">
<template slot-scope="scope">
<span :style="classObje(scope.row.orderStatus)">{{ orderStatusFormat(scope.row) }}</span>
</template>
</el-table-column>
<el-table-column label="用户名称" align="center" prop="userName" />
<el-table-column label="商家名称" align="center" prop="storeName" />
<el-table-column label="币种" align="center" prop="coin" />
<el-table-column label="交易数量" align="center" prop="realityCoinNum" />
<el-table-column label="实际数量" align="center" prop="realitySettleCoinNums" />
<el-table-column label="法币金额" align="center" prop="realityLegalNums" />
<el-table-column label="法币价格" align="center" prop="legalCurrency" />
<el-table-column label="数量" align="center" prop="realityCoinNum" />
<!-- <el-table-column label="实际数量" align="center" prop="realitySettleCoinNums" /> -->
<el-table-column label="单价" align="center" prop="legalCurrency" />
<el-table-column label="总金额" align="center" prop="realityLegalNums" />
<el-table-column label="法币币种" align="center" prop="limitCoin" />
<!-- <el-table-column label="手续费类型" align="center" prop="feeType" :formatter="feeTypeFormat"/>-->
<el-table-column label="手续费" align="center" prop="fee" />
<el-table-column label="订单状态" align="center" prop="orderStatus" :formatter="orderStatusFormat" />
<el-table-column label="支付方式" align="center" prop="paymentType" />
<!-- <el-table-column label="手续费" align="center" prop="fee" /> -->
<!-- <el-table-column label="支付方式" align="center" prop="paymentType" /> -->
<!-- <el-table-column label="付款时间倒计时" align="center" prop="paymentEndTime" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.paymentEndTime, '{y}-{m}-{d}') }}</span>-->
@ -137,15 +176,15 @@
<!-- <span>{{ parseTime(scope.row.closeTime) }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="收款人" align="center" prop="payee" />
<el-table-column label="收款银行" align="center" prop="collectionBank" />
<el-table-column label="收款账号" align="center" prop="collectionAccount" />
<!-- <el-table-column label="收款人" align="center" prop="payee" /> -->
<!-- <el-table-column label="收款银行" align="center" prop="collectionBank" /> -->
<!-- <el-table-column label="收款账号" align="center" prop="collectionAccount" /> -->
<!-- <el-table-column label="支付参考账号" align="center" prop="paymentAccount" />
<el-table-column label="是否可以申诉" align="center" prop="isAppeal" />
<el-table-column label="申诉订单编号" align="center" prop="appealOrderId" />
<el-table-column label="申诉状态" align="center" prop="appealStatus" />
<el-table-column label="取消类型" align="center" prop="cancelType" /> -->
<el-table-column label="添加时间" align="center" prop="crateTime" width="180">
<el-table-column label="下单时间" align="center" prop="crateTime" width="180">
<template slot-scope="scope">
<span>{{parseTime(scope.row.createTime) }}</span>
</template>
@ -155,7 +194,6 @@
<el-button
size="medium"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['otc:otcOrder:edit']"
>详情</el-button>
@ -181,153 +219,94 @@
<!-- 添加或修改用户otc订单对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="订单编号" prop="orderNo">
<el-input v-model="form.orderNo" placeholder="请输入订单编号" />
<el-form ref="form" :model="form" :rules="rules" label-width="100px" class="flex" style="justify-content: space-around;">
<div>
<el-form-item label="订单编号">
{{form.orderNo}}
</el-form-item>
<el-form-item label="总订单编号" prop="storeOrder">
<el-input v-model="form.storeOrder" placeholder="请输入总订单编号" />
<el-form-item label="总订单编号">
{{form.storeOrder}}
</el-form-item>
<el-form-item label="交易类型" prop="tradeType">
<el-select v-model="form.tradeType" placeholder="请选择交易类型">
<el-option
v-for="dict in tradeTypeStatusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
<el-form-item label="交易类型" v-if="form.tradeType">
{{ tradeTypeFormat(form) }}
</el-form-item>
<el-form-item label="商家编号" prop="storeId">
<el-input v-model="form.storeName" placeholder="请输入商家编号" />
<el-form-item label="商家编号">
{{form.storeName}}
</el-form-item>
<el-form-item label="用户编号" prop="userId">
<el-input v-model="form.userName" placeholder="请输入用户编号" />
<el-form-item label="用户编号">
{{form.userName}}
</el-form-item>
<el-form-item label="币种" prop="coin">
<el-input v-model="form.coin" placeholder="请输入币种" />
<el-form-item label="币种">
{{form.coin}}
</el-form-item>
<el-form-item label="交易数量" prop="realityCoinNum">
<el-input v-model="form.realityCoinNum" placeholder="请输入交易数量" />
<el-form-item label="交易数量">
{{form.realityCoinNum}}
</el-form-item>
<el-form-item label="得到数量" prop="realitySettleCoinNums">
<el-input v-model="form.realitySettleCoinNums" placeholder="请输入结算得到数量" />
<el-form-item label="得到数量">
{{form.realitySettleCoinNums}}
</el-form-item>
<el-form-item label="法币金额" prop="realityLegalNums">
<el-input v-model="form.realityLegalNums" placeholder="请输入法币金额" />
<el-form-item label="法币金额">
{{form.realityLegalNums}}
</el-form-item>
<el-form-item label="法币价格" prop="legalCurrency">
<el-input v-model="form.legalCurrency" placeholder="请输入法币价格" />
<el-form-item label="法币价格">
{{form.legalCurrency}}
</el-form-item>
<el-form-item label="手续费类型" prop="feeType">
<el-select v-model="form.feeType" placeholder="请选择类型">
<el-option
v-for="dict in feeTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
<el-form-item label="手续费类型" v-if="form.feeType">
{{ feeTypeFormat(form) }}
</el-form-item>
<el-form-item label="手续费" prop="fee">
<el-input v-model="form.fee" placeholder="请输入手续费" />
<el-form-item label="手续费">
{{form.fee}}
</el-form-item>
<el-form-item label="订单状态">
<!-- <el-radio-group v-model="form.orderStatus">-->
<!-- <el-radio label="1">请选择字典生成</el-radio>-->
<!-- </el-radio-group>-->
<el-select v-model="form.orderStatus" placeholder="请选择订单状态">
<el-option
v-for="dict in orderStatusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</div>
<div>
<el-form-item label="订单状态" v-if="form.orderStatus">
{{ orderStatusFormat(form) }}
</el-form-item>
<el-form-item label="支付方式" prop="paymentType">
<el-select v-model="form.paymentType" placeholder="请选择支付方式">
<el-option label="请选择字典生成" value="" />
</el-select>
<el-form-item label="支付方式" v-if="form.paymentType">
{{form.paymentType }}
</el-form-item>
<!-- <el-form-item label="付款结束时间" prop="paymentEndTime">-->
<!-- <el-date-picker clearable size="medium"-->
<!-- v-model="form.paymentEndTime"-->
<!-- type="dateTime"-->
<!-- value-format="yyyy-MM-dd hh:mm:ss"-->
<!-- placeholder="选择付款结束时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="确定放行时间" prop="releaseTime">-->
<!-- <el-date-picker clearable size="medium"-->
<!-- v-model="form.releaseTime"-->
<!-- type="dateTime"-->
<!-- value-format="yyyy-MM-dd hh:mm:ss"-->
<!-- placeholder="选择确定放行时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<el-form-item label="支付时间" prop="paymentTime">
<el-date-picker clearable size="medium"
v-model="form.paymentTime"
type="dateTime"
value-format="yyyy-MM-dd hh:mm:ss"
placeholder="选择支付时间">
</el-date-picker>
<el-form-item label="支付时间">
{{form.paymentTime }}
</el-form-item>
<el-form-item label="完成时间" prop="closeTime">
<el-date-picker clearable size="medium"
v-model="form.closeTime"
type="dateTime"
value-format="yyyy-MM-dd hh:mm:ss"
placeholder="选择完成时间">
</el-date-picker>
<el-form-item label="完成时间">
{{form.closeTime }}
</el-form-item>
<el-form-item label="收款人" prop="payee">
<el-input v-model="form.payee" placeholder="请输入收款人" />
<el-form-item label="收款人">
{{form.payee }}
</el-form-item>
<el-form-item label="收款银行" prop="collectionBank">
<el-input v-model="form.collectionBank" placeholder="请输入收款银行" />
<el-form-item label="收款银行">
{{form.collectionBank }}
</el-form-item>
<el-form-item label="收款账号" prop="collectionAccount">
<el-input v-model="form.collectionAccount" placeholder="请输入收款账号" />
<el-form-item label="收款账号" >
{{form.collectionAccount }}
</el-form-item>
<el-form-item label="支付参考账号" prop="paymentAccount">
<el-input v-model="form.paymentAccount" placeholder="请输入支付参考账号" />
<el-form-item label="支付参考账号">
{{form.paymentAccount }}
</el-form-item>
<el-form-item label="是否可以申诉" prop="isAppeal">
<el-input v-model="form.isAppeal" placeholder="请输入是否可以申诉" />
<el-form-item label="是否可以申诉">
{{form.isAppeal=='Y'?'是':'否' }}
</el-form-item>
<el-form-item label="申诉订单编号" prop="appealOrderId">
<el-input v-model="form.appealOrderId" placeholder="请输入申诉订单编号" />
<el-form-item label="申诉订单编号">
{{form.appealOrderId }}
</el-form-item>
<el-form-item label="申诉状态">
<!-- <el-radio-group v-model="form.appealStatus">-->
<!-- <el-radio label="1">请选择字典生成</el-radio>-->
<!-- </el-radio-group>-->
<el-select v-model="form.appealStatus" placeholder="请选择订单状态">
<el-option
v-for="dict in appealStatusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
<el-form-item label="申诉状态" v-if="form.appealStatus">
{{appealStatusFormat(form) }}
</el-form-item>
<el-form-item label="取消类型" prop="cancelType">
<el-select v-model="form.cancelType" placeholder="请选择取消类型">
<!-- <el-option label="请选择字典生成" value="" />-->
<el-option
v-for="dict in cancelTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
<el-form-item label="取消类型" v-if="form.cancelType">
{{cancelTypeOptionsFormat(form) }}
</el-form-item>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<!-- <el-button type="primary" @click="submitForm"> </el-button>-->
<el-button @click="cancel"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
@ -340,8 +319,29 @@ export default {
name: "OtcOrder",
components: {
},
computed:{
classObje(status){
return(status)=>{
if(status=='sell'){
return {'color':'rgba(231, 53, 53, 1)'}
}
if(status=='buy'){
return {'color':'rgba(9, 186, 122, 1)'}
}
if(status=='in_appeal'){
return {'color':'rgba(231, 53, 53, 1)'}
}
if(status=='released'){
return {'color':'rgba(255, 124, 30, 1)'}
}
}
}
},
data() {
return {
dateRange: [],
//
loading: true,
//
@ -373,7 +373,9 @@ export default {
orderNo: null,
storeOrder: null,
tradeType: null,
storeName:null,
storeId: null,
userName:null,
userId: null,
coin: null,
realityCoinNum: null,
@ -420,19 +422,39 @@ export default {
this.getList();
this.getDicts("trade_type").then(response => {
this.tradeTypeStatusOptions = response.data;
this.tradeTypeStatusOptions.unshift({
dictValue:null,
dictLabel:'全部'
})
});
this.getDicts("order_status").then(response => {
this.orderStatusOptions = response.data;
this.orderStatusOptions.unshift({
dictValue:null,
dictLabel:'全部'
})
});
this.getDicts("fee_type").then(response => {
this.feeTypeOptions = response.data;
this.feeTypeOptions.unshift({
dictValue:null,
dictLabel:'全部'
})
});
this.getDicts("appeal_status").then(response => {
this.appealStatusOptions = response.data;
this.appealStatusOptions.unshift({
dictValue:null,
dictLabel:'全部'
})
});
this.getDicts("cancel_type").then(response => {
this.cancelTypeOptions = response.data;
this.cancelTypeOptions.unshift({
dictValue:null,
dictLabel:'全部'
})
});
@ -441,18 +463,26 @@ export default {
/** 查询用户otc订单列表 */
getList() {
this.loading = true;
listOtcOrder(this.queryParams).then(response => {
listOtcOrder(this.addSESDateRange(this.queryParams, this.dateRange)).then(response => {
this.otcOrderList = response.rows;
this.total = Number(response.total);
this.loading = false;
});
},
tradeTypeFormat(row, column) {
cancelTypeOptionsFormat(row, column) {
return this.selectDictLabel(this.cancelTypeOptions, row.cancelType);
},
appealStatusFormat(row, column) {
return this.selectDictLabel(this.appealStatusOptions, row.appealStatus);
},
tradeTypeFormat(row, column) {
return this.selectDictLabel(this.tradeTypeStatusOptions, row.tradeType);
},
orderStatusFormat(row, column) {
return this.selectDictLabel(this.orderStatusOptions, row.orderStatus);
},
@ -468,34 +498,8 @@ export default {
//
reset() {
this.form = {
id: null,
orderNo: null,
storeOrder: null,
tradeType: null,
storeId: null,
userId: null,
coin: null,
realityCoinNum: null,
realityLegalNums: null,
realitySettleCoinNums: null,
legalCurrency: null,
feeType: null,
fee: null,
orderStatus: "0",
paymentType: null,
paymentEndTime: null,
releaseTime: null,
paymentTime: null,
closeTime: null,
payee: null,
collectionBank: null,
collectionAccount: null,
paymentAccount: null,
isAppeal: null,
appealOrderId: null,
appealStatus: "0",
cancelType: null
};
this.dateRange = [];
this.resetForm("form");
},
/** 搜索按钮操作 */
@ -506,6 +510,7 @@ export default {
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.dateRange = [];
this.handleQuery();
},
//

307
src/views/otc/otcPaymentType/index.vue

@ -1,121 +1,97 @@
<template>
<div class="app-container">
<!-- <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">-->
<!-- <el-form-item label="收款类型" prop="paymentType">-->
<!-- <el-select v-model="queryParams.paymentType" placeholder="请选择收款类型" clearable size="medium">-->
<!-- <el-option label="请选择字典生成" value="" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="排序" prop="sort">-->
<!-- <el-input-->
<!-- v-model="queryParams.sort"-->
<!-- placeholder="请输入排序"-->
<!-- clearable-->
<!-- size="medium"-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="图标" prop="icon">-->
<!-- <el-input-->
<!-- v-model="queryParams.icon"-->
<!-- placeholder="请输入图标"-->
<!-- clearable-->
<!-- size="medium"-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item>-->
<!-- <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">搜索</el-button>-->
<!-- <el-button icon="el-icon-refresh" size="medium" @click="resetQuery">重置</el-button>-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<div class="search_con m-b-28">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="收款类型" prop="paymentType">
<el-input v-model="queryParams.paymentType" placeholder="请输入收款类型" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<div class="bg bg-white">
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="medium">
<el-option v-for="dict in statusOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="bg bg-white">
<el-row :gutter="10" class="m-b-16">
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
@click="handleAdd"
v-hasPermi="['otc:otcPaymentType:add']"
>新增</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="medium"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['otc:otcPaymentType:edit']"-->
<!-- >修改</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="medium"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['otc:otcPaymentType:remove']"-->
<!-- >删除</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
@click="handleExport"
v-hasPermi="['otc:otcPaymentType:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-col :span="1.5">
<el-button type="primary" size="medium" @click="handleAdd"
v-hasPermi="['otc:otcPaymentType:add']">新增</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="medium"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['otc:otcPaymentType:edit']"-->
<!-- >修改</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="medium"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['otc:otcPaymentType:remove']"-->
<!-- >删除</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button type="primary" size="medium" @click="handleExport"
v-hasPermi="['otc:otcPaymentType:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="otcPaymentTypeList" @selection-change="handleSelectionChange">
<el-table-column label="收款类型" align="center" prop="paymentType" />
<el-table-column label="描述" align="center" prop="remark" />
<el-table-column label="默认图标" align="center" prop="icon">
<template slot-scope="scope">
<el-image style="width: 32px; height: 32px" :src="scope.row.icon" @click="previewImage(scope.row.icon)"
:preview-src-list="srcList" v-if="scope.row.icon"></el-image>
<span v-else></span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status" width="140px">
<template slot-scope="scope">
<el-switch v-model="scope.row.status" active-text="" inactive-text="" active-value="Y" inactive-value="N"
@change="switchStatusChange(scope.row)">
</el-switch>
</template>
</el-table-column>
<el-table-column label="排序" align="center" prop="sort" />
<el-table v-loading="loading" :data="otcPaymentTypeList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="" align="center" prop="id" />
<el-table-column label="收款类型" align="center" prop="paymentType" />
<el-table-column label="描述" align="center" prop="remark" />
<el-table-column label="排序" align="center" prop="sort" />
<el-table-column label="图标" align="center" prop="icon" >
<template slot-scope="scope">
<el-image
style="width: 120px; height: 120px"
:src="scope.row.icon"
@click="previewImage(scope.row.icon)"
:preview-src-list="srcList"
></el-image>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="medium"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['otc:otcPaymentType:edit']"
>修改</el-button>
<!-- <el-button-->
<!-- size="medium"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['otc:otcPaymentType:remove']"-->
<!-- >删除</el-button>-->
</template>
</el-table-column>
</el-table>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="medium" type="text" @click="handleUpdate(scope.row)"
v-hasPermi="['otc:otcPaymentType:edit']">编辑</el-button>
<!-- <el-button-->
<!-- size="medium"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['otc:otcPaymentType:remove']"-->
<!-- >删除</el-button>-->
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</div>
<!-- 添加或修改otc收款类型对话框 -->
@ -123,34 +99,35 @@
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="收款类型" prop="paymentType">
<el-input v-model="form.paymentType" placeholder="请选择收款类型" />
<!-- <el-select v-model="form.paymentType" placeholder="请选择收款类型">-->
<!-- <el-option label="请选择字典生成" value="" />-->
<!-- </el-select>-->
<!-- <el-select v-model="form.paymentType" placeholder="请选择收款类型">-->
<!-- <el-option label="请选择字典生成" value="" />-->
<!-- </el-select>-->
</el-form-item>
<!-- <el-form-item label="创建时间" prop="createTime">-->
<!-- <el-date-picker clearable size="medium"-->
<!-- v-model="form.createTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="选择创建时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="创建时间" prop="createTime">-->
<!-- <el-date-picker clearable size="medium"-->
<!-- v-model="form.createTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="选择创建时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<el-form-item label="描述" prop="remark">
<el-input v-model="form.remark" placeholder="请输入描述" />
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input v-model="form.sort" placeholder="请输入排序" />
</el-form-item>
<el-form-item label="状态" prop="status" width="140px">
<el-switch v-model="form.status" active-text="" inactive-text="" active-value="Y" inactive-value="N">
</el-switch>
</el-form-item>
<el-form-item label="图标" prop="icon">
<!-- <el-input v-model="form.icon" placeholder="请输入图标" />-->
<el-upload
class="avatar-uploader"
:show-file-list="false"
:action="uploadUrl()"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
:data="{path:'otc'}"
>
<!-- <el-input v-model="form.icon" placeholder="请输入图标" />-->
<el-upload class="avatar-uploader" :show-file-list="false" :action="uploadUrl()"
:on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload" :data="{ path: 'otc' }">
<img v-if="form.icon" :src="form.icon" class="avatar" style="width: 150px" height="150px">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
@ -173,6 +150,7 @@ export default {
},
data() {
return {
statusOptions: [],
//
loading: true,
//
@ -197,7 +175,8 @@ export default {
pageSize: 10,
paymentType: null,
sort: null,
icon: null
icon: null,
status:null,
},
//
form: {},
@ -216,8 +195,27 @@ export default {
},
created() {
this.getList();
this.getDicts("sys_yes_no").then(response => {
this.statusOptions = response.data;
this.statusOptions.unshift({
dictValue:null,
dictLabel:'全部'
})
});
},
methods: {
//
switchStatusChange(row, type) {
this.reset()
const id = row.id || this.ids;
this.form = row;
updateOtcPaymentType(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.getList();
});
},
/** 查询otc收款类型列表 */
getList() {
this.loading = true;
@ -227,9 +225,12 @@ export default {
this.loading = false;
});
},
uploadUrl(){
statusFormat(row, column) {
return this.selectDictLabel(this.statusOptions, row.status);
},
uploadUrl() {
//
return process.env.VUE_APP_BASE_API+"/system/ftpfile/uploadFile"
return process.env.VUE_APP_BASE_API + "/system/ftpfile/uploadFile"
},
//
previewImage(abUrl) {
@ -266,7 +267,7 @@ export default {
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
@ -309,28 +310,28 @@ export default {
handleDelete(row) {
const ids = row.id || this.ids;
this.$confirm('是否确认删除otc收款类型编号为"' + ids + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return delOtcPaymentType(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return delOtcPaymentType(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有otc收款类型数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return exportOtcPaymentType(queryParams);
}).then(response => {
this.download(response.msg);
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return exportOtcPaymentType(queryParams);
}).then(response => {
this.download(response.msg);
})
},
//
handleAvatarSuccess(res) {

6
src/views/otc/otcStore/index.vue

@ -8,8 +8,10 @@
<el-input size="medium" v-model="queryParams.username" placeholder="请输入商户名称"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" />
</el-form-item>
<el-form-item label="手机号或邮箱" prop="phone">
<el-input size="medium" v-model="queryParams.phone" placeholder="请输入手机号或邮箱"
<el-form-item label="商户编号" prop="merchantNo">
<el-input size="medium" v-model="queryParams.merchantNo" placeholder="请输入商户编号"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" />
</el-form-item>

31
src/views/otc/otcStoreDaiFuOrder/index.vue

@ -65,7 +65,7 @@
<el-table-column label="平台订单号" align="center" prop="noOrder" />
<el-table-column label="商户订单号" align="center" prop="outTradeNo" />
<el-table-column label="商户" align="center" prop="merchantName" />
<el-table-column label="商户名称" align="center" prop="merchantName" />
<el-table-column label="批次号" align="center" prop="batchNo" min-width="120" />
<el-table-column :label="'代付金额'" align="center" prop="tranAmt">
<template slot-scope="scope">
@ -93,7 +93,14 @@
<el-table-column label="卡号" align="center" prop="cardNumber" />
<el-table-column label="开户名" align="center" prop="accountName" />
<el-table-column label="开户行" align="center" prop="branchName" />
<el-table-column label="订单状态" align="center" prop="orderStatus" :formatter="sysOrderStatusFormat" />
<!-- <el-table-column label="订单状态" align="center" prop="orderStatus" :formatter="sysOrderStatusFormat" /> -->
<el-table-column label="订单状态" align="center" prop="orderStatus" width="180">
<template slot-scope="scope">
<span :style="classObje(scope.row.orderStatus)">{{ sysOrderStatusFormat(scope.row) }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="异步通知状态" align="center" prop="notifyStatus" :formatter="notifyStatusFormat" /> -->
<el-table-column label="备注" align="center" prop="orderMsg" />
@ -119,6 +126,18 @@ export default {
name: "otcStoreDaiFuOrder",
components: {
},
computed:{
classObje(status){
return(status)=>{
if(status=='processing'){
return {'color':'rgba(255, 124, 30, 1)'}
}
if(status=='fail_appeal'){
return {'color':'rgba(237, 80, 89, 1)'}
}
}
}
},
data() {
return {
dateRange: [],
@ -168,9 +187,17 @@ export default {
this.getDicts("d_order_status").then(response => {
this.sysOrderStatus = response.data;
this.sysOrderStatus.unshift({
dictLabel:'全部',
dictValue:null,
});
});
this.getDicts("notify_status").then(response => {
this.notifyStatusOptions = response.data;
this.notifyStatusOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
});
},
methods: {

457
src/views/otc/otcStoreOrder/index.vue

@ -1,172 +1,147 @@
<template>
<div class="app-container">
<div class="search_con m-b-28">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="订单编号" prop="orderNo">
<el-input
v-model="queryParams.orderNo"
placeholder="请输入订单编号"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="交易类型" prop="appealStatus">
<el-select v-model="queryParams.tradeType" placeholder="请选择交易类型" clearable size="medium">
<el-option
v-for="dict in tradeTypeStatusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="商家昵称" prop="storeId">
<el-input
v-model="queryParams.storeName"
placeholder="请输入商家昵称"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="币种" prop="coin">
<el-input
v-model="queryParams.coin"
placeholder="请输入币种"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="订单编号" prop="orderNo">
<el-input v-model="queryParams.orderNo" placeholder="请输入订单编号" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="订单状态" prop="orderStatus">
<el-select v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable size="medium">
<el-option
v-for="dict in orderStatusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
<el-form-item label="商家名称" prop="storeName">
<el-input v-model="queryParams.storeName" placeholder="请输入商家名称" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="类型" prop="tradeType">
<el-select v-model="queryParams.tradeType" placeholder="请选择类型" clearable size="medium">
<el-option v-for="dict in tradeTypeStatusOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<!-- <el-form-item label="币种" prop="coin">
<el-input v-model="queryParams.coin" placeholder="请输入币种" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item> -->
<el-form-item label="状态" prop="orderStatus">
<el-select v-model="queryParams.orderStatus" placeholder="请选择状态" clearable size="medium">
<el-option v-for="dict in orderStatusOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="下单时间">
<el-date-picker v-model="dateRange" size="medium" style="width: 340px" value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
:unlink-panels="true" :default-time="['00:00:00', '23:59:59']"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="bg bg-white">
<el-row :gutter="10" class="m-b-16">
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="medium"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['otc:otcStoreOrder:add']"-->
<!-- >新增</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="medium"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['otc:otcStoreOrder:edit']"-->
<!-- >修改</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="medium"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['otc:otcStoreOrder:remove']"-->
<!-- >删除</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
@click="handleExport"
v-hasPermi="['otc:otcStoreOrder:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="medium"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['otc:otcStoreOrder:add']"-->
<!-- >新增</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="medium"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['otc:otcStoreOrder:edit']"-->
<!-- >修改</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="medium"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['otc:otcStoreOrder:remove']"-->
<!-- >删除</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button type="primary" size="medium" @click="handleExport"
v-hasPermi="['otc:otcStoreOrder:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="otcStoreOrderList" @selection-change="handleSelectionChange">
<!-- <el-table-column label="流水编号" align="center" prop="id" />-->
<el-table-column label="订单编号" align="center" prop="orderNo" />
<!-- <el-table-column label="订单类型" align="center" prop="tradeType" :formatter="tradeTypeFormat" /> -->
<el-table v-loading="loading" :data="otcStoreOrderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="流水编号" align="center" prop="id" />-->
<el-table-column label="订单编号" align="center" prop="orderNo" />
<el-table-column label="交易类型" align="center" prop="tradeType" :formatter="tradeTypeFormat" />
<!-- <el-table-column label="商家编号" align="center" prop="storeId" />-->
<el-table-column label="商家昵称" align="center" prop="storeName" />
<el-table-column label="币种" align="center" prop="coin" />
<!-- <el-table-column label="币种数量" align="center" prop="coinNum" />-->
<el-table-column label="实际币种数量" align="center" prop="realityCoinNum" />
<el-table-column label="剩余数量" align="center" prop="remainNum" />
<el-table-column label="法币价格" align="center" prop="legalCurrency" />
<el-table-column label="订单状态" align="center" prop="orderStatus" :formatter="orderStatusFormat" />
<!-- <el-table-column label="最小限额" align="center" prop="minLimit" />-->
<!-- <el-table-column label="最大限额" align="center" prop="maxLimit" />-->
<el-table-column label="法币币种" align="center" prop="limitCoin" />
<!-- <el-table-column label="类型" align="center" prop="feeType" :formatter="feeTypeFormat"/>-->
<el-table-column label="手续费" align="center" prop="fee" />
<!-- <el-table-column label="费率" align="center" prop="feeRate" />-->
<el-table-column label="已扣除手续费" align="center" prop="deductedFee" />
<!-- <el-table-column label="收款方式多个逗号分割" align="center" prop="walletType" />-->
<el-table-column label="交易说明" align="center" prop="transactionDesc" />
<el-table-column label="添加时间" align="center" prop="crateTime" width="180">
<template slot-scope="scope">
<span>{{parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<!-- <el-button-->
<!-- size="medium"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['otc:otcStoreOrder:edit']"-->
<!-- >修改</el-button>-->
<el-button
size="medium"
type="text"
icon="el-icon-edit"
@click="handleDetail(scope.row)"
v-hasPermi="['otc:otcStoreOrder:edit']"
>详情</el-button>
<!-- <el-button-->
<!-- size="medium"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['otc:otcStoreOrder:remove']"-->
<!-- >删除</el-button>-->
</template>
</el-table-column>
</el-table>
<el-table-column label="订单类型" align="center" prop="crateTime" width="180">
<template slot-scope="scope">
<span
:class="scope.row.tradeType == 'buy' ? 'text-green' : 'text-red'">{{ scope.row.tradeType == 'buy' ? '买' : '卖' }}</span>
</template>
</el-table-column>
<el-table-column label="收款方式" align="center" prop="walletTypeName" />
<el-table-column label="商家名称" align="center" prop="storeName" />
<el-table-column label="币种" align="center" prop="coin" />
<!-- <el-table-column label="币种数量" align="center" prop="coinNum" />-->
<el-table-column label="订单数量" align="center" prop="realityCoinNum" />
<el-table-column label="剩余数量" align="center" prop="remainNum" />
<el-table-column label="价格" align="center" prop="legalCurrency" />
<el-table-column label="订单状态" align="center" prop="orderStatus" :formatter="orderStatusFormat" />
<!-- <el-table-column label="最小限额" align="center" prop="minLimit" />-->
<!-- <el-table-column label="最大限额" align="center" prop="maxLimit" />-->
<el-table-column label="法币币种" align="center" prop="limitCoin" />
<!-- <el-table-column label="类型" align="center" prop="feeType" :formatter="feeTypeFormat"/>-->
<el-table-column label="应付手续费" align="center" prop="fee" />
<!-- <el-table-column label="费率" align="center" prop="feeRate" />-->
<el-table-column label="已收手续费" align="center" prop="deductedFee" />
<!-- <el-table-column label="收款方式多个逗号分割" align="center" prop="walletType" />-->
<el-table-column label="交易说明" align="center" prop="transactionDesc" />
<el-table-column label="下单时间" align="center" prop="crateTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<!-- <el-button-->
<!-- size="medium"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['otc:otcStoreOrder:edit']"-->
<!-- >修改</el-button>-->
<el-button size="medium" type="text" @click="handleSon(scope.row)">子单</el-button>
<el-button size="medium" type="text" @click="handleDetail(scope.row)"
v-hasPermi="['otc:otcStoreOrder:edit']">详情</el-button>
<!-- <el-button-->
<!-- size="medium"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['otc:otcStoreOrder:remove']"-->
<!-- >删除</el-button>-->
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</div>
<!-- 添加或修改otc订单信息对话框 -->
@ -177,18 +152,14 @@
</el-form-item>
<el-form-item label="交易类型" prop="tradeType">
<el-select v-model="form.tradeType" placeholder="请选择交易类型">
<!-- <el-option label="请选择字典生成" value="" />-->
<el-option
v-for="dict in tradeTypeStatusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
<!-- <el-option label="请选择字典生成" value="" />-->
<el-option v-for="dict in tradeTypeStatusOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<!-- <el-form-item label="商家编号" prop="storeId">-->
<!-- <el-input v-model="form.storeId" placeholder="请输入商家编号" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="商家编号" prop="storeId">-->
<!-- <el-input v-model="form.storeId" placeholder="请输入商家编号" />-->
<!-- </el-form-item>-->
<el-form-item label="商家昵称" prop="storeId">
<el-input v-model="form.storeName" placeholder="请输入商家编号" />
</el-form-item>
@ -198,8 +169,8 @@
<el-form-item label="币种数量" prop="coinNum">
<el-input v-model="form.coinNum" placeholder="请输入币种数量" />
</el-form-item>
<el-form-item label="实际币种数量" prop="realityCoinNum">
<el-input v-model="form.realityCoinNum" placeholder="请输入实际币种数量" />
<el-form-item label="订单数量" prop="realityCoinNum">
<el-input v-model="form.realityCoinNum" placeholder="请输入订单数量" />
</el-form-item>
<el-form-item label="剩余数量" prop="remainNum">
<el-input v-model="form.remainNum" placeholder="请输入剩余数量" />
@ -208,16 +179,12 @@
<el-input v-model="form.legalCurrency" placeholder="请输入法币价格" />
</el-form-item>
<el-form-item label="订单状态">
<!-- <el-radio-group v-model="form.orderStatus">-->
<!-- <el-radio label="1">请选择字典生成</el-radio>-->
<!-- </el-radio-group>-->
<!-- <el-radio-group v-model="form.orderStatus">-->
<!-- <el-radio label="1">请选择字典生成</el-radio>-->
<!-- </el-radio-group>-->
<el-select v-model="form.orderStatus" placeholder="订单状态">
<el-option
v-for="dict in orderStatusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
<el-option v-for="dict in orderStatusOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="最小限额" prop="minLimit">
@ -231,13 +198,9 @@
</el-form-item>
<el-form-item label="手续费类型:" prop="feeType">
<el-select v-model="form.feeType" placeholder="手续费类型">
<!-- <el-option label="请选择字典生成" value="" />-->
<el-option
v-for="dict in feeTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
<!-- <el-option label="请选择字典生成" value="" />-->
<el-option v-for="dict in feeTypeOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="手续费" prop="fee">
@ -249,17 +212,17 @@
<el-form-item label="已扣除手续费" prop="deductedFee">
<el-input v-model="form.deductedFee" placeholder="请输入已扣除手续费" />
</el-form-item>
<!-- <el-form-item label="添加时间" prop="createTime">-->
<!-- <el-date-picker clearable size="medium"-->
<!-- v-model="form.createTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="选择添加时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="收款方式" prop="walletType">-->
<!-- <el-input v-model="form.walletType" placeholder="收款方式" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="添加时间" prop="createTime">-->
<!-- <el-date-picker clearable size="medium"-->
<!-- v-model="form.createTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="选择添加时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="收款方式" prop="walletType">-->
<!-- <el-input v-model="form.walletType" placeholder="收款方式" />-->
<!-- </el-form-item>-->
<el-form-item label="收款方式" prop="walletType">
<el-input v-model="form.walletTypeName" placeholder="收款方式" />
</el-form-item>
@ -268,10 +231,12 @@
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<!-- <el-button type="primary" @click="submitForm"> </el-button>-->
<!-- <el-button type="primary" @click="submitForm"> </el-button>-->
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
@ -284,6 +249,10 @@ export default {
},
data() {
return {
pkCouponScopeRangeParkingStoreOpen: false,
pkCouponStore: {},
pkCouponStoreId: '',
dateRange: [],
//
loading: true,
//
@ -299,8 +268,8 @@ export default {
// otc
otcStoreOrderList: [],
feeTypeOptions: [],
orderStatusOptions: [],
tradeTypeStatusOptions: [],
orderStatusOptions: [],
tradeTypeStatusOptions: [],
//
title: "",
//
@ -327,7 +296,7 @@ export default {
deductedFee: null,
walletType: null,
transactionDesc: null,
storeName: null
storeName: null,
},
//
form: {},
@ -361,38 +330,60 @@ export default {
this.getList();
this.getDicts("order_status").then(response => {
this.orderStatusOptions = response.data;
this.orderStatusOptions.unshift({
dictValue:null,
dictLabel:'全部'
})
});
this.getDicts("fee_type").then(response => {
this.feeTypeOptions = response.data;
this.feeTypeOptions.unshift({
dictValue:null,
dictLabel:'全部'
})
});
this.getDicts("trade_type").then(response => {
this.tradeTypeStatusOptions = response.data;
this.tradeTypeStatusOptions.unshift({
dictValue:null,
dictLabel:'全部'
})
});
},
methods: {
//
handleSon(row) {
// this.pkCouponStore = row;
// this.pkCouponStoreId = row.storeName;
// this.pkCouponScopeRangeParkingStoreOpen = true;
this.$router.push(
{
name: 'sonOrder', params: { row: row }
})
},
/** 查询otc订单信息列表 */
getList() {
this.loading = true;
listOtcStoreOrder(this.queryParams).then(response => {
listOtcStoreOrder(this.addSESDateRange(this.queryParams, this.dateRange)).then(response => {
this.otcStoreOrderList = response.rows;
this.total = Number(response.total);
this.loading = false;
});
},
orderStatusFormat(row, column) {
return this.selectDictLabel(this.orderStatusOptions, row.orderStatus);
orderStatusFormat(row, column) {
return this.selectDictLabel(this.orderStatusOptions, row.orderStatus);
},
feeTypeFormat(row, column) {
return this.selectDictLabel(this.feeTypeOptions, row.feeType);
return this.selectDictLabel(this.feeTypeOptions, row.feeType);
},
tradeTypeFormat(row, column) {
return this.selectDictLabel(this.tradeTypeStatusOptions, row.tradeType);
return this.selectDictLabel(this.tradeTypeStatusOptions, row.tradeType);
},
//
cancel() {
@ -402,29 +393,8 @@ export default {
//
reset() {
this.form = {
id: null,
orderNo: null,
tradeType: null,
storeId: null,
coin: null,
coinNum: null,
realityCoinNum: null,
remainNum: null,
legalCurrency: null,
orderStatus: "0",
minLimit: null,
maxLimit: null,
limitCoin: null,
feeType: null,
fee: null,
feeRate: null,
deductedFee: null,
createTime: null,
updateTime: null,
walletType: null,
transactionDesc: null,
walletTypeName:null
};
this.dateRange = [];
this.resetForm("form");
},
/** 搜索按钮操作 */
@ -435,12 +405,13 @@ export default {
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.dateRange = [];
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
@ -493,28 +464,28 @@ export default {
handleDelete(row) {
const ids = row.id || this.ids;
this.$confirm('是否确认删除otc订单信息编号为"' + ids + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return delOtcStoreOrder(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return delOtcStoreOrder(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有otc订单信息数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return exportOtcStoreOrder(queryParams);
}).then(response => {
this.download(response.msg);
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return exportOtcStoreOrder(queryParams);
}).then(response => {
this.download(response.msg);
})
}
}
};

498
src/views/otc/otcStoreOrder/sonOrder.vue

@ -0,0 +1,498 @@
<template>
<div class="app-container">
<div class="bg bg-white">
<div class="flex">
<div class="detailTit flex m-r-32">
<div class="circle"></div>
订单编号{{rowData.orderNo}}
</div>
<div class="detailTit flex">
<div class="circle"></div>
商家名称{{rowData.storeName}}
</div>
</div>
<el-row :gutter="10" class="m-b-16">
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="medium"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['otc:otcOrder:add']"-->
<!-- >新增</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="medium"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['otc:otcOrder:edit']"-->
<!-- >修改</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="medium"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['otc:otcOrder:remove']"-->
<!-- >删除</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">
<el-button type="primary" size="medium" @click="handleExport"
v-hasPermi="['otc:otcOrder:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> -->
</el-row>
<el-table v-loading="loading" :data="otcOrderList" @selection-change="handleSelectionChange">
<!-- <el-table-column label="流水编号" align="center" prop="id" />-->
<el-table-column label="订单编号" align="center" prop="orderNo" />
<el-table-column label="订单类型" align="center" prop="tradeType" :formatter="tradeTypeFormat" />
<!-- <el-table-column label="商家昵称" align="center" prop="storeName" /> -->
<el-table-column label="用户名称" align="center" prop="userName" />
<el-table-column label="币种" align="center" prop="coin" />
<el-table-column label="购买数量" align="center" prop="realityCoinNum" />
<!-- <el-table-column label="实际数量" align="center" prop="realitySettleCoinNums" /> -->
<!-- <el-table-column label="法币金额" align="center" prop="realityLegalNums" /> -->
<el-table-column label="价格" align="center" prop="legalCurrency" />
<!-- <el-table-column label="手续费类型" align="center" prop="feeType" :formatter="feeTypeFormat"/>-->
<!-- <el-table-column label="手续费" align="center" prop="fee" /> -->
<!-- <el-table-column label="订单状态" align="center" prop="orderStatus" :formatter="orderStatusFormat" /> -->
<el-table-column label="订单状态" align="center" prop="orderStatus" width="180">
<template slot-scope="scope">
<span :style="classObje(scope.row.orderStatus)">{{ orderStatusFormat(scope.row) }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="支付方式" align="center" prop="paymentType" /> -->
<!-- <el-table-column label="付款时间倒计时" align="center" prop="paymentEndTime" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.paymentEndTime, '{y}-{m}-{d}') }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="确定放行时间" align="center" prop="releaseTime" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.releaseTime) }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="支付时间" align="center" prop="paymentTime" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.paymentTime) }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="完成时间" align="center" prop="closeTime" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.closeTime) }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="收款人" align="center" prop="payee" />
<el-table-column label="收款银行" align="center" prop="collectionBank" />
<el-table-column label="收款账号" align="center" prop="collectionAccount" /> -->
<!-- <el-table-column label="支付参考账号" align="center" prop="paymentAccount" />
<el-table-column label="是否可以申诉" align="center" prop="isAppeal" />
<el-table-column label="申诉订单编号" align="center" prop="appealOrderId" />
<el-table-column label="申诉状态" align="center" prop="appealStatus" />
<el-table-column label="取消类型" align="center" prop="cancelType" /> -->
<el-table-column label="创建时间" align="center" prop="crateTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</div>
<!-- 添加或修改用户otc订单对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="订单编号" prop="orderNo">
<el-input v-model="form.orderNo" placeholder="请输入订单编号" />
</el-form-item>
<el-form-item label="总订单编号" prop="storeOrder">
<el-input v-model="form.storeOrder" placeholder="请输入总订单编号" />
</el-form-item>
<el-form-item label="交易类型" prop="tradeType">
<el-select v-model="form.tradeType" placeholder="请选择交易类型">
<el-option v-for="dict in tradeTypeStatusOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="商家编号" prop="storeId">
<el-input v-model="form.storeName" placeholder="请输入商家编号" />
</el-form-item>
<el-form-item label="用户编号" prop="userId">
<el-input v-model="form.userName" placeholder="请输入用户编号" />
</el-form-item>
<el-form-item label="币种" prop="coin">
<el-input v-model="form.coin" placeholder="请输入币种" />
</el-form-item>
<el-form-item label="交易数量" prop="realityCoinNum">
<el-input v-model="form.realityCoinNum" placeholder="请输入交易数量" />
</el-form-item>
<el-form-item label="得到数量" prop="realitySettleCoinNums">
<el-input v-model="form.realitySettleCoinNums" placeholder="请输入结算得到数量" />
</el-form-item>
<el-form-item label="法币金额" prop="realityLegalNums">
<el-input v-model="form.realityLegalNums" placeholder="请输入法币金额" />
</el-form-item>
<el-form-item label="法币价格" prop="legalCurrency">
<el-input v-model="form.legalCurrency" placeholder="请输入法币价格" />
</el-form-item>
<el-form-item label="手续费类型" prop="feeType">
<el-select v-model="form.feeType" placeholder="请选择类型">
<el-option v-for="dict in feeTypeOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="手续费" prop="fee">
<el-input v-model="form.fee" placeholder="请输入手续费" />
</el-form-item>
<el-form-item label="订单状态">
<!-- <el-radio-group v-model="form.orderStatus">-->
<!-- <el-radio label="1">请选择字典生成</el-radio>-->
<!-- </el-radio-group>-->
<el-select v-model="form.orderStatus" placeholder="请选择订单状态">
<el-option v-for="dict in orderStatusOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="支付方式" prop="paymentType">
<el-select v-model="form.paymentType" placeholder="请选择支付方式">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<!-- <el-form-item label="付款结束时间" prop="paymentEndTime">-->
<!-- <el-date-picker clearable size="medium"-->
<!-- v-model="form.paymentEndTime"-->
<!-- type="dateTime"-->
<!-- value-format="yyyy-MM-dd hh:mm:ss"-->
<!-- placeholder="选择付款结束时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="确定放行时间" prop="releaseTime">-->
<!-- <el-date-picker clearable size="medium"-->
<!-- v-model="form.releaseTime"-->
<!-- type="dateTime"-->
<!-- value-format="yyyy-MM-dd hh:mm:ss"-->
<!-- placeholder="选择确定放行时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<el-form-item label="支付时间" prop="paymentTime">
<el-date-picker clearable size="medium" v-model="form.paymentTime" type="dateTime"
value-format="yyyy-MM-dd hh:mm:ss" placeholder="选择支付时间">
</el-date-picker>
</el-form-item>
<el-form-item label="完成时间" prop="closeTime">
<el-date-picker clearable size="medium" v-model="form.closeTime" type="dateTime"
value-format="yyyy-MM-dd hh:mm:ss" placeholder="选择完成时间">
</el-date-picker>
</el-form-item>
<el-form-item label="收款人" prop="payee">
<el-input v-model="form.payee" placeholder="请输入收款人" />
</el-form-item>
<el-form-item label="收款银行" prop="collectionBank">
<el-input v-model="form.collectionBank" placeholder="请输入收款银行" />
</el-form-item>
<el-form-item label="收款账号" prop="collectionAccount">
<el-input v-model="form.collectionAccount" placeholder="请输入收款账号" />
</el-form-item>
<el-form-item label="支付参考账号" prop="paymentAccount">
<el-input v-model="form.paymentAccount" placeholder="请输入支付参考账号" />
</el-form-item>
<el-form-item label="是否可以申诉" prop="isAppeal">
<el-input v-model="form.isAppeal" placeholder="请输入是否可以申诉" />
</el-form-item>
<el-form-item label="申诉订单编号" prop="appealOrderId">
<el-input v-model="form.appealOrderId" placeholder="请输入申诉订单编号" />
</el-form-item>
<el-form-item label="申诉状态">
<!-- <el-radio-group v-model="form.appealStatus">-->
<!-- <el-radio label="1">请选择字典生成</el-radio>-->
<!-- </el-radio-group>-->
<el-select v-model="form.appealStatus" placeholder="请选择订单状态">
<el-option v-for="dict in appealStatusOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="取消类型" prop="cancelType">
<el-select v-model="form.cancelType" placeholder="请选择取消类型">
<!-- <el-option label="请选择字典生成" value="" />-->
<el-option v-for="dict in cancelTypeOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<!-- <el-button type="primary" @click="submitForm"> </el-button>-->
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listOtcOrder, getOtcOrder, delOtcOrder, addOtcOrder, updateOtcOrder, exportOtcOrder } from "@/api/otc/otcOrder";
export default {
name: "OtcOrder",
components: {
},
props: {
},
computed:{
classObje(status){
return(status)=>{
if(status=='in_appeal'){
return {'color':'rgba(237, 80, 89, 1)'}
}
if(status=='fail_appeal'){
return {'color':'rgba(237, 80, 89, 1)'}
}
if(status=='released'){
return {'color':'rgba(255, 124, 30, 1)'}
}
if(status=='success_appeal'){
return {'color':'rgba(80, 188, 146, 1)'}
}
}
}
},
data() {
return {
colorMany:null,
rowData:{},
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// otc
otcOrderList: [],
feeTypeOptions: [],
orderStatusOptions: [],
tradeTypeStatusOptions: [],
//
appealStatusOptions: [],
cancelTypeOptions: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
orderNo: null,
storeOrder: null,
tradeType: null,
storeId: null,
userId: null,
coin: null,
realityCoinNum: null,
realityLegalNums: null,
realitySettleCoinNums: null,
legalCurrency: null,
feeType: null,
fee: null,
orderStatus: null,
paymentType: null,
paymentEndTime: null,
releaseTime: null,
paymentTime: null,
closeTime: null,
payee: null,
collectionBank: null,
collectionAccount: null,
paymentAccount: null,
isAppeal: null,
appealOrderId: null,
appealStatus: null,
cancelType: null
},
//
form: {},
//
rules: {
orderNo: [
{ required: true, message: "订单编号不能为空", trigger: "blur" }
],
storeOrder: [
{ required: true, message: "总订单编号不能为空", trigger: "blur" }
],
tradeType: [
{ required: true, message: "交易类型不能为空", trigger: "change" }
],
storeId: [
{ required: true, message: "商家编号不能为空", trigger: "blur" }
],
}
};
},
created() {
this.queryParams.storeName = this.$route.params.row.storeName
this.rowData = this.$route.params.row
this.getList();
this.getDicts("trade_type").then(response => {
this.tradeTypeStatusOptions = response.data;
});
this.getDicts("order_status").then(response => {
this.orderStatusOptions = response.data;
});
this.getDicts("fee_type").then(response => {
this.feeTypeOptions = response.data;
});
this.getDicts("appeal_status").then(response => {
this.appealStatusOptions = response.data;
});
this.getDicts("cancel_type").then(response => {
this.cancelTypeOptions = response.data;
});
},
methods: {
/** 查询用户otc订单列表 */
getList() {
this.loading = true;
listOtcOrder(this.queryParams).then(response => {
this.otcOrderList = response.rows;
this.total = Number(response.total);
this.loading = false;
});
},
tradeTypeFormat(row, column) {
return this.selectDictLabel(this.tradeTypeStatusOptions, row.tradeType);
},
orderStatusFormat(row, column) {
return this.selectDictLabel(this.orderStatusOptions, row.orderStatus);
},
feeTypeFormat(row, column) {
return this.selectDictLabel(this.feeTypeOptions, row.feeType);
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加用户otc订单";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getOtcOrder(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "查询用户otc订单";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateOtcOrder(this.form).then(response => {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addOtcOrder(this.form).then(response => {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$confirm('是否确认删除用户otc订单编号为"' + ids + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return delOtcOrder(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有用户otc订单数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return exportOtcOrder(queryParams);
}).then(response => {
this.download(response.msg);
})
}
}
};
</script>
<style>
.tableRed{
color: rgba(237, 80, 89, 1);
}
</style>

36
src/views/otc/otcStoreRechargeOrder/index.vue

@ -55,8 +55,8 @@
<div class="bg bg-white">
<el-row :gutter="10" class="m-b-16">
<el-col :span="1.5">
<el-button type="primary" size="medium" @click="handleTest">测试下单</el-button>
<el-button type="primary" size="medium" @click="handleExport">导出</el-button>
<el-button type="primary" size="medium" @click="handleTest">测试下单</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -91,7 +91,12 @@
<el-table-column label="异步通知状态" align="center" prop="notifyStatus" :formatter="notifyStatusFormat" />
<el-table-column label="订单来源" align="center" prop="sourceType" :formatter="sourceTypeFormat" />
<el-table-column label="变动来源" align="center" prop="source" :formatter="sysOrderStatusFormat" />
<!-- <el-table-column label="变动来源" align="center" prop="source" :formatter="sysOrderStatusFormat" /> -->
<el-table-column :label="'变动来源'" align="center" prop="merchantSingleFee">
<template slot-scope="scope">
<span :style="classObje(scope.row.orderStatus)"> {{ sysOrderStatusFormat(scope.row) }}</span>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" min-width="180" />
<!-- <el-table-column label="更新时间" align="center" prop="updateTime" min-width="180" /> -->
@ -159,6 +164,21 @@ export default {
name: "otcStoreRechargeOrder",
components: {
},
computed:{
classObje(status){
return(status)=>{
if(status==1){
return {'color':'#FF7C1E'}
}
if(status==2){
return {'color':'#50BC92'}
}
if(status==3){
return {'color':'#ED5059'}
}
}
}
},
data() {
return {
orderStatusType: [
@ -227,12 +247,24 @@ export default {
this.getDicts("notify_status").then(response => {
this.notifyStatusOptions = response.data;
this.notifyStatusOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
});
this.getDicts("sys_source_type").then(response => {
this.sourceTypeOptions = response.data;
this.sourceTypeOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
});
this.getDicts("sys_order_status").then(response => {
this.sysOrderStatus = response.data;
this.sysOrderStatus.unshift({
dictLabel:'全部',
dictValue:null,
});
});
this.init();
},

42
src/views/otc/otcSysDict/index.vue

@ -20,15 +20,7 @@
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="值" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入值"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="提示" prop="tips">-->
<!-- <el-input-->
<!-- v-model="queryParams.tips"-->
@ -38,15 +30,26 @@
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="标识" prop="code">
<el-form-item label="key" prop="code">
<el-input
v-model="queryParams.code"
placeholder="请输入标识"
placeholder="请输入key"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="value" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入value"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="medium" @click="resetQuery">重置</el-button>
@ -64,7 +67,7 @@
v-hasPermi="['otc:otcSysDict:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button
type="primary"
size="medium"
@ -72,7 +75,7 @@
@click="handleUpdate"
v-hasPermi="['otc:otcSysDict:edit']"
>修改</el-button>
</el-col>
</el-col> -->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
@ -96,22 +99,21 @@
</el-row>
<el-table v-loading="loading" :data="otcSysDictList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column label="编号" align="center" prop="id" />
<el-table-column label="排序" align="center" prop="num" />
<el-table-column label="上级编号" align="center" prop="pid" />
<el-table-column label="" align="center" prop="name" />
<el-table-column label="提示" align="center" prop="tips" />
<el-table-column label="标识" align="center" prop="code" />
<el-table-column label="上级" align="center" prop="pid" />
<el-table-column label="key" align="center" prop="code" />
<el-table-column label="value" align="center" prop="name" />
<el-table-column label="备注" align="center" prop="tips" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="medium"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['otc:otcSysDict:edit']"
>修改</el-button>
>编辑</el-button>
<!-- <el-button-->
<!-- size="medium"-->
<!-- type="text"-->

110
src/views/system/user/profile/userAvatar.vue

@ -1,10 +1,28 @@
<template>
<div>
<div class="user-info-head" @click="editCropper()"><img v-bind:src="options.img" title="点击上传头像" class="img-circle img-lg" /></div>
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened" @close="closeDialog">
<!-- <div class="user-info-head"><img v-bind:src="options.img" title="点击上传头像"
class="img-circle img-lg" />
<el-upload class="avatar-uploader" :show-file-list="false" :action="uploadUrl()"
:on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload" :data="{ path: 'ad' }">
<img v-if="form.adImgAbs" :src="form.adImgAbs" class="avatar" style="width: 150px" height="150px">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div> -->
<el-upload class="avatar-uploader" :show-file-list="false" :action="uploadUrl()" :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload" :data="{ path: 'ad' }">
<div class="detailTit m-b-16">头像上传</div>
<img v-if="form.adImgAbs" :src="form.adImgAbs" class="avatar" style="width: 150px" height="150px">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened"
@close="closeDialog">
<el-row>
<el-col :xs="24" :md="12" :style="{height: '350px'}">
<vue-cropper
<el-col :xs="24" :md="12" :style="{ height: '350px' }">
<!-- <vue-cropper
ref="cropper"
:img="options.img"
:info="true"
@ -15,16 +33,20 @@
:outputType="options.outputType"
@realTime="realTime"
v-if="visible"
/>
/> -->
</el-col>
<el-col :xs="24" :md="12" :style="{height: '350px'}">
<el-col :xs="24" :md="12" :style="{ height: '350px' }">
<div class="avatar-upload-preview">
<img :src="previews.url" :style="previews.img" />
<img :src="form.adImgAbs" :style="previews.img" />
</div>
</el-col>
</el-row>
<br />
<el-row>
<!-- <el-row>
<el-col :lg="2" :sm="3" :xs="3">
<el-upload action="#" :http-request="requestUpload" :show-file-list="false" :before-upload="beforeUpload">
<el-button size="small">
@ -33,30 +55,31 @@
</el-button>
</el-upload>
</el-col>
<el-col :lg="{span: 1, offset: 2}" :sm="2" :xs="2">
<el-col :lg="{ span: 1, offset: 2 }" :sm="2" :xs="2">
<el-button icon="el-icon-plus" size="small" @click="changeScale(1)"></el-button>
</el-col>
<el-col :lg="{span: 1, offset: 1}" :sm="2" :xs="2">
<el-col :lg="{ span: 1, offset: 1 }" :sm="2" :xs="2">
<el-button icon="el-icon-minus" size="small" @click="changeScale(-1)"></el-button>
</el-col>
<el-col :lg="{span: 1, offset: 1}" :sm="2" :xs="2">
<el-col :lg="{ span: 1, offset: 1 }" :sm="2" :xs="2">
<el-button icon="el-icon-refresh-left" size="small" @click="rotateLeft()"></el-button>
</el-col>
<el-col :lg="{span: 1, offset: 1}" :sm="2" :xs="2">
<el-col :lg="{ span: 1, offset: 1 }" :sm="2" :xs="2">
<el-button icon="el-icon-refresh-right" size="small" @click="rotateRight()"></el-button>
</el-col>
<el-col :lg="{span: 2, offset: 6}" :sm="2" :xs="2">
<el-col :lg="{ span: 2, offset: 6 }" :sm="2" :xs="2">
<el-button type="primary" size="small" @click="uploadImg()"> </el-button>
</el-col>
</el-row>
</el-row> -->
</el-dialog>
</div>
</template>
<script>
import qs from 'qs'
import store from "@/store";
import { VueCropper } from "vue-cropper";
import { uploadAvatar } from "@/api/system/user";
import { uploadAvatar, uploadAvatarFile } from "@/api/system/user";
import { debounce } from '@/utils'
export default {
@ -66,8 +89,23 @@ export default {
type: Object
}
},
watch: {
user: {
handler(newVal, oldVal) {
if (newVal) {
this.form.adImgAbs = newVal.avatar
this.$forceUpdate()
}
},
deep: true, //
immediate: true, //
}
},
data() {
return {
form: {},
updateAddress: `${process.env.VUE_APP_BASE_API}/system/ftpfile/`,
//
open: false,
// cropper
@ -80,13 +118,46 @@ export default {
autoCropWidth: 200, //
autoCropHeight: 200, //
fixedBox: true, //
outputType:"png" // PNG
outputType: "png" // PNG
},
previews: {},
resizeHandler: null
};
},
methods: {
//
handleAvatarSuccess(res) {
this.form.adImgAbs = res.data.url;
this.form.adImg = res.data.path;
this.open = false;
this.options.img = this.form.adImgAbs;
let form = {
avatar: this.form.adImgAbs
}
uploadAvatarFile(form).then(response => {
});
store.commit('SET_AVATAR', this.form.adImgAbs);
this.$modal.msgSuccess("修改成功");
this.$forceUpdate()
},
beforeAvatarUpload(file) {
const isJPG = file.type === "image/jpeg" || "image/png";
const isLt2M = file.size / 1024 / 1024 < 10;
// if (!isJPG) {
// this.$message.error(' JPG !');
// }
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 10MB!");
}
return isJPG && isLt2M;
},
uploadUrl: function () {
return this.updateAddress + "uploadFile"
},
//
editCropper() {
this.open = true;
@ -136,9 +207,12 @@ export default {
//
uploadImg() {
this.$refs.cropper.getCropBlob(data => {
console.log(data)
let formData = new FormData();
formData.append("avatarfile", data);
uploadAvatar(formData).then(response => {
// avatarfile
formData.append("path", 'ad');
formData.append("file", data);
uploadAvatarFile(formData).then(response => {
this.open = false;
this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl;
store.commit('SET_AVATAR', this.options.img);

1
src/views/system/user/profile/userInfo.vue

@ -61,6 +61,7 @@ export default {
submit() {
this.$refs["form"].validate(valid => {
if (valid) {
this.user.avatar=localStorage.getItem('adImgAbs')
updateUserProfile(this.user).then(response => {
this.$modal.msgSuccess("修改成功");
});

344
src/views/user/UserCertification/index.vue

@ -1,152 +1,82 @@
<template>
<div class="app-container">
<div class="search_con m-b-28">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="业务单号" prop="witNo">
<el-input
v-model="queryParams.witNo"
placeholder="请输入业务单号"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="姓名" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入姓名"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="身份证号" prop="certId">
<el-input
v-model="queryParams.certId"
placeholder="请输入身份证号"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="审核状态" prop="auditStatus">
<el-select v-model="queryParams.auditStatus" placeholder="请选择审核状态" clearable size="medium">
<el-option
v-for="dict in auditStatusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="认证类型" prop="authType">
<el-select v-model="queryParams.authType" placeholder="请选择认证类型" clearable size="medium">
<el-option
v-for="dict in authTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="用户名" prop="name">
<el-input v-model="queryParams.name" placeholder="请输入用户名" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="认证类型" prop="authType">
<el-select v-model="queryParams.authType" placeholder="请选择认证类型" clearable size="medium">
<el-option v-for="dict in authTypeOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="bg bg-white">
<el-row :gutter="10" class="m-b-16">
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
@click="handleAdd"
v-hasPermi="['user:UserCertification:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['user:UserCertification:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['user:UserCertification:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
@click="handleExport"
v-hasPermi="['user:UserCertification:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-row :gutter="10" class="m-b-16">
<!-- <el-col :span="1.5">
<el-button type="primary" size="medium" @click="handleAdd"
v-hasPermi="['user:UserCertification:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" size="medium" :disabled="single" @click="handleUpdate"
v-hasPermi="['user:UserCertification:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" size="medium" :disabled="multiple" @click="handleDelete"
v-hasPermi="['user:UserCertification:remove']">删除</el-button>
</el-col> -->
<el-col :span="1.5">
<el-button type="primary" size="medium" @click="handleExport"
v-hasPermi="['user:UserCertification:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="UserCertificationList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键" align="center" prop="id" />
<el-table v-loading="loading" :data="UserCertificationList" @selection-change="handleSelectionChange">
<!-- <el-table-column label="主键" align="center" prop="id" />
<el-table-column label="业务单号" align="center" prop="witNo" />
<el-table-column label="用户ID" align="center" prop="userId" />
<el-table-column label="姓名" align="center" prop="name" />
<el-table-column label="证件类型" align="center" prop="typeName" />
<el-table-column label="身份证号" align="center" prop="certId" />
<el-table-column label="护照正面照" align="center" prop="certFrontImg" width="115">
<template width="90" slot-scope="scope">
<el-image
style="width: 80px; height: 80px"
:src="scope.row.certFrontImg"
@click="previewImage(scope.row.certFrontImg)"
:preview-src-list="srcList"
></el-image>
<!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.chainIconUrl"> -->
</template>
</el-table-column>
<el-table-column label="护照反面照" align="center" prop="certReverseImg" width="115">
<template width="90" slot-scope="scope">
<el-image
style="width: 80px; height: 80px"
:src="scope.row.certReverseImg"
@click="previewImage(scope.row.certReverseImg)"
:preview-src-list="srcList"
></el-image>
<el-table-column label="用户ID" align="center" prop="userId" /> -->
<el-table-column label="用户名" align="center" prop="name" />
<!-- <el-table-column label="证件类型" align="center" prop="typeName" /> -->
<el-table-column label="证件号" align="center" prop="certId" />
<el-table-column label="证件正面" align="center" prop="certFrontImg" width="115">
<template width="90" slot-scope="scope">
<el-image style="width: 80px; height: 80px" :src="scope.row.certFrontImg"
@click="previewImage(scope.row.certFrontImg)" :preview-src-list="srcList" v-if="scope.row.certFrontImg"></el-image>
<span v-else></span>
<!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.chainIconUrl"> -->
</template>
</el-table-column>
<el-table-column label="证件反面" align="center" prop="certReverseImg" width="115">
<template width="90" slot-scope="scope">
<el-image style="width: 80px; height: 80px" :src="scope.row.certReverseImg"
@click="previewImage(scope.row.certReverseImg)" :preview-src-list="srcList" v-if="scope.row.certReverseImg"></el-image>
<span v-else></span>
<!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.chainIconUrl"> -->
</template>
</el-table-column>
<el-table-column label="手持护照" align="center" prop="certHandImg" width="115">
<template width="90" slot-scope="scope">
<el-image
style="width: 80px; height: 80px"
:src="scope.row.certHandImg"
@click="previewImage(scope.row.certHandImg)"
:preview-src-list="srcList"
></el-image>
<!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.chainIconUrl"> -->
</template>
</el-table-column>
<el-table-column label="手持证件照" align="center" prop="certHandImg" width="115">
<template width="90" slot-scope="scope">
<el-image style="width: 80px; height: 80px" :src="scope.row.certHandImg"
@click="previewImage(scope.row.certHandImg)" :preview-src-list="srcList" v-if="scope.row.certHandImg"></el-image>
<span v-else></span>
<!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.chainIconUrl"> -->
</template>
<!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.chainIconUrl"> -->
</template>
</el-table-column>
<el-table-column label="手持idA拍照" align="center" prop="idaHandImg" width="115">
<!-- <el-table-column label="手持idA拍照" align="center" prop="idaHandImg" width="115">
<template width="90" slot-scope="scope">
<el-image
style="width: 80px; height: 80px"
@ -155,76 +85,55 @@
:preview-src-list="srcList"
></el-image>
<!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.chainIconUrl"> -->
</template>
</el-table-column>
<el-table-column label="公司执照" align="center" prop="corporateLicense" width="115">
<template width="90" slot-scope="scope">
<el-image
style="width: 80px; height: 80px"
:src="scope.row.corporateLicense"
@click="previewImage(scope.row.corporateLicense)"
:preview-src-list="srcList"
></el-image>
</el-table-column> -->
<el-table-column label="营业执照" align="center" prop="corporateLicense" width="115">
<template width="90" slot-scope="scope">
<el-image style="width: 80px; height: 80px" :src="scope.row.corporateLicense"
@click="previewImage(scope.row.corporateLicense)" :preview-src-list="srcList" v-if="scope.row.corporateLicense"></el-image>
<span v-else></span>
<!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.chainIconUrl"> -->
</template>
<!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.chainIconUrl"> -->
</template>
</el-table-column>
<el-table-column label="认证类型" align="center" prop="authType" :formatter="authTypeFormat" />
<el-table-column label="审核状态" align="center" prop="auditStatus" :formatter="auditStatusFormat" />
<el-table-column label="审核时间" align="center" prop="auditTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.auditTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="审核原因" align="center" prop="auditReason" />
<el-table-column label="添加时间" align="center" prop="addTime" width="180">
<el-table-column label="认证审核" align="center" prop="auditStatus" :formatter="auditStatusFormat" />
<el-table-column label="认证审核" align="center" prop="auditTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.auditTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<!--<el-table-column label="审核原因" align="center" prop="auditReason" /> -->
<!-- <el-table-column label="添加时间" align="center" prop="addTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.addTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="认证类型" align="center" prop="authType" :formatter="authTypeFormat" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="115">
<template slot-scope="scope">
<el-button v-if="scope.row.auditStatus=='apply'"
size="medium"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['user:certification:edit']"
>审核</el-button>
</el-table-column> -->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="115">
<template slot-scope="scope">
<!-- <el-button v-if="scope.row.auditStatus == 'apply'" size="medium" type="text" icon="el-icon-edit"
@click="handleUpdate(scope.row)" v-hasPermi="['user:certification:edit']">审核</el-button> -->
<el-button
size="medium"
type="text"
icon="el-icon-edit"
@click="handleView(scope.row)"
>详情</el-button>
<el-button size="medium" type="text" @click="handleView(scope.row)">审核</el-button>
</template>
</el-table-column>
</el-table>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</div>
<!-- 添加或修改实名认证信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="审核状态">
<el-radio-group v-model="form.auditStatus">
<el-radio label="agree">审核通过</el-radio>
<el-radio label="reject" >驳回</el-radio>
</el-radio-group>
</el-form-item>
<el-radio-group v-model="form.auditStatus">
<el-radio label="agree">审核通过</el-radio>
<el-radio label="reject">驳回</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="审核原因" prop="auditReason">
<el-input v-model="form.auditReason" placeholder="请输入审核原因" />
@ -264,8 +173,8 @@ export default {
//
UserCertificationList: [],
auditStatusOptions: [],
authTypeOptions: [],
auditStatusOptions: [],
authTypeOptions: [],
//
title: "",
//
@ -307,16 +216,25 @@ export default {
this.getList();
this.getDicts("audit_status").then(response => {
this.auditStatusOptions = response.data;
this.auditStatusOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
});
this.getDicts("auth_type").then(response => {
this.authTypeOptions = response.data;
this.authTypeOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
});
},
methods: {
handleView(row){
this.$router.push(
{ name: 'userDetail',params:{row:row}
})
handleView(row) {
this.$router.push(
{
name: 'userDetail', params: { row: row }
})
},
/** 查询实名认证信息列表 */
getList() {
@ -380,7 +298,7 @@ this.$router.push(
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
@ -423,28 +341,28 @@ this.$router.push(
handleDelete(row) {
const ids = row.id || this.ids;
this.$confirm('是否确认删除实名认证信息编号为"' + ids + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return delUserCertification(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return delUserCertification(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有实名认证信息数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return exportUserCertification(queryParams);
}).then(response => {
this.download(response.msg);
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return exportUserCertification(queryParams);
}).then(response => {
this.download(response.msg);
})
}
}
};

37
src/views/user/UserCertification/userDetail.vue

@ -1,21 +1,20 @@
<template>
<div class="app-container">
<div class="bg bg-white">
<div class="flex detailTit m-b-16">
<div class="circle"></div>
用户基本信息
</div>
<el-table v-loading="loading" :data="UserCertificationList">
<el-table-column label="姓名" align="center" prop="name" />
<el-table-column label="证件类型" align="center" prop="typeName" />
<el-table-column label="身份证号" align="center" prop="certId" />
<el-table-column label="审核时间" align="center" prop="auditTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.auditTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="添加时间" align="center" prop="addTime" width="180">
<el-table-column label="用户名" align="center" prop="name" />
<el-table-column label="邮箱" align="center" prop="email" />
<el-table-column label="用户类型" align="center" prop="userType" :formatter="userRoleFormat" />
<el-table-column label="注册时间" align="center" prop="addTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.addTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="认证类型" align="center" prop="authType" :formatter="authTypeFormat" />
</el-table>
<div class="flex status-con" v-if="UserCertificationList.length" style="align-items: flex-start;flex-wrap:wrap">
@ -198,6 +197,7 @@ export default {
},
data() {
return {
userRoleOptions: [],
openApple: false,
kycData: {},
storeData: {},
@ -234,7 +234,7 @@ export default {
},
//
formApple: {
auditReason:null,
auditReason: null,
},
//
rulesApple: {
@ -248,6 +248,9 @@ export default {
};
},
created() {
this.getDicts("user_role").then(response => {
this.userRoleOptions = response.data;
});
this.getDicts("audit_status").then(response => {
this.auditStatusOptions = response.data;
});
@ -258,6 +261,10 @@ export default {
this.getList()
},
methods: {
//
userRoleFormat(row, column) {
return this.selectDictLabel(this.userRoleOptions, row.userRole);
},
//
previewImage(abUrl) {
this.srcList[0] = abUrl;
@ -278,13 +285,13 @@ export default {
handleFail(v, d) {
this.resetApple()
this.formApple.auditStatus = v
this.formApple.witNo=d.witNo
this.formApple.witNo = d.witNo
this.openApple = true
},
handleSuccess(v, d) {
this.resetApple();
this.open = true;
this.formApple.witNo=d.witNo
this.formApple.witNo = d.witNo
this.formApple.auditStatus = v
},
/** 审核提交 */
@ -440,7 +447,7 @@ export default {
}
.title {
font-size: 24px;
font-size: 16px;
font-weight: 500;
color: #333;
}
@ -458,7 +465,7 @@ export default {
}
.status .text {
font-size: 16px;
font-size: 12px;
font-weight: 500;
}
</style>

12
src/views/user/ad/index.vue

@ -108,15 +108,13 @@
<!-- <el-table-column label="广告宣传图片相对路径" align="center" prop="adImg" />-->
<el-table-column label="广告图片" align="center" prop="adImgAbs" >
<template slot-scope="scope">
<el-image v-if="scope.row.adImgAbs!=null && scope.row.adImgAbs!=''"
<el-image v-if="scope.row.adImgAbs"
style="width: 120px; height: 120px"
:src="scope.row.adImgAbs"
@click="previewImage(scope.row.adImgAbs)"
:preview-src-list="srcList"
></el-image>
<el-icon v-if="scope.row.adImgAbs==null || scope.row.adImgAbs==''"
style="width: 120px; height: 120px"
></el-icon>
<span v-else></span>
</template>
<!-- <template width="90" slot-scope="scope">-->
<!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.adImgAbs">-->
@ -140,14 +138,12 @@
<el-button
size="medium"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['ad:ad:edit']"
>修改</el-button>
<el-button
size="medium"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['ad:ad:remove']"
>删除</el-button>
@ -389,16 +385,18 @@ import $ from "jquery";
};
},
created() {
console.log(this.updateAddress)
this.getList();
this.getDicts("terminal_type").then(response => {
this.terminalTypeOptions = response.data;
});
this.getDicts("ad_content_type").then(response => {
this.adContentTypeOptions = response.data;
});
this.getDicts("sys_yes_no").then(response => {
this.statusOptions = response.data;
});
this.getDicts("project_language").then(response => {
this.projectLanguageOptions = response.data;

3
src/views/user/mail/index.vue

@ -115,8 +115,9 @@
:src="scope.row.mailImg"
@click="previewImage(scope.row.mailImg)"
:preview-src-list="srcList"
v-if="scope.row.mailImg"
></el-image>
<span v-else></span>
<!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.chainIconUrl"> -->
</template>
</el-table-column>

16
src/views/user/position/index.vue

@ -68,20 +68,18 @@
<el-table-column label="主键" align="center" prop="id" />
<el-table-column label="广告位名称" align="center" prop="positionName" />
<el-table-column label="广告位类型" align="center" prop="positionType" />
<el-table-column label="广告位终端" align="center" prop="terminalType" :formatter="terminalTypeFormat" />
<!-- <el-table-column label="广告位终端" align="center" prop="terminalType" :formatter="terminalTypeFormat" /> -->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="medium"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['ad:position:edit']"
>修改</el-button>
<el-button
size="medium"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['ad:position:remove']"
>删除</el-button>
@ -111,7 +109,7 @@
<!-- <el-option label="请选择字典生成" value="" />-->
<!-- </el-select>-->
</el-form-item>
<el-form-item label="广告终端" prop="terminalType" style="width: 100%" >
<!-- <el-form-item label="广告终端" prop="terminalType" style="width: 100%" >
<el-radio-group v-model="form.terminalType">
<el-radio
v-for="dict in terminalTypeOptions"
@ -120,7 +118,7 @@
>{{dict.dictLabel}}</el-radio>
</el-radio-group
>
</el-form-item>
</el-form-item> -->
<!-- <el-form-item label="创建时间" prop="createTime">-->
<!-- <el-date-picker clearable size="medium"-->
<!-- v-model="form.createTime"-->
@ -163,6 +161,8 @@ export default {
AdPositionList: [],
//广
terminalTypeOptions:[],
adTypeOptions:[],
//
title: "",
//
@ -191,6 +191,9 @@ export default {
this.getDicts("terminal_type").then(response => {
this.terminalTypeOptions = response.data;
});
this.getDicts("ad_content_type").then(response => {
this.adTypeOptions = response.data;
});
this.getList();
},
methods: {
@ -207,6 +210,9 @@ export default {
terminalTypeFormat(row, column) {
return this.selectDictLabel(this.terminalTypeOptions, row.terminalType);
},
adTypeFormat(row, column) {
return this.selectDictLabel(this.adTypeOptions, row.terminalType);
},
//
cancel() {
this.open = false;

127
src/views/user/userCustomer/index.vue

@ -2,8 +2,8 @@
<div class="app-container">
<div class="search_con m-b-28">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="姓名" prop="name">
<el-input v-model="queryParams.name" placeholder="请输入姓名" clearable size="medium"
<el-form-item label="昵称" prop="name">
<el-input v-model="queryParams.name" placeholder="请输入昵称" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
@ -35,18 +35,25 @@
/>
</el-select>
</el-form-item> -->
<el-form-item label="会员角色" prop="userRole">
<el-select v-model="queryParams.userRole" placeholder="请选择会员角色" clearable size="medium">
<el-form-item label="用户类型" prop="userRole">
<el-select v-model="queryParams.userRole" placeholder="请选择用户类型" clearable size="medium">
<el-option v-for="dict in userRoleOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="认证级" prop="authLevel">
<el-select v-model="queryParams.authLevel" placeholder="请选择用户认证级" clearable size="medium">
<el-form-item label="认证级" prop="authLevel">
<el-select v-model="queryParams.authLevel" placeholder="请选择用户认证级" clearable size="medium">
<el-option v-for="dict in authLevelOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="注册时间">
<el-date-picker v-model="dateRange" size="medium" style="width: 340px" value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
:unlink-panels="true" :default-time="['00:00:00', '23:59:59']"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button>
@ -96,42 +103,57 @@
</el-row>
<el-table v-loading="loading" :data="userCustomerList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="用户id" align="center" prop="userId" />
<el-table-column label="姓名" align="center" prop="name" />
<el-table-column label="头像路径" align="center" prop="headImgPath">
<template width="90" slot-scope="scope">
<!-- <el-table-column label="用户id" align="center" prop="userId" /> -->
<el-table-column label="昵称" align="center" prop="nickname" />
<el-table-column label="头像" align="center" prop="headImgPath">
<template slot-scope="scope">
<el-image style="width: 80px; height: 80px" :src="scope.row.headImgPath"
@click="previewImage(scope.row.headImgPath)" :preview-src-list="srcList"></el-image>
@click="previewImage(scope.row.headImgPath)" :preview-src-list="srcList" v-if="scope.row.headImgPath"></el-image>
<span v-else></span>
<!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.chainIconUrl"> -->
</template>
</el-table-column>
<el-table-column label="邮箱" align="center" prop="email" />
<el-table-column label="用户类型" align="center" prop="userType" :formatter="userRoleFormat" />
<el-table-column label="余额" align="center" prop="balance" />
<!-- <el-table-column label="父级编号" align="center" prop="parentId" /> -->
<el-table-column label="创建时间" align="center" prop="addTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.addTime, '{y}-{m}-{d}') }}</span>
<el-table-column label="认证等级" align="center" prop="headImgPath">
<template slot-scope="scope">
{{scope.row.authLevel==1?'未认证':scope.row.authLevel==2?'KYC认证':scope.row.authLevel==3?'商户认证':'pro认证'}}
</template>
</el-table-column>
<el-table-column label="会员角色" align="center" prop="userRole" :formatter="userRoleFormat" />
<el-table-column label="用户认证级别" align="center" prop="authLevel" :formatter="authLevelFormat" />
<el-table-column label="是否质押" align="center" prop="headImgPath">
<template slot-scope="scope">
{{scope.row.isPledge?'是':'否'}}
</template>
</el-table-column>
<el-table-column label="状态" align="center" key="status">
<!-- <el-table-column label="用户认证级别" align="center" prop="authLevel" :formatter="authLevelFormat" /> -->
<el-table-column label="账号状态" align="center" key="status">
<template slot-scope="scope">
<el-switch v-model="scope.row.status" active-value="normal" inactive-value="frozen"
@change="handleStatusChange(scope.row)"></el-switch>
</template>
</el-table-column>
<el-table-column label="注册时间" align="center" prop="addTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.addTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button v-if="scope.row.authLevel == '1' || scope.row.authLevel == '2' || scope.row.authLevel == '3'" size="medium" type="text"
@click="handleUpdate(scope.row)" v-hasPermi="['user:userCustomer:edit']">修改认证级别
@click="handleUpdate(scope.row)" v-hasPermi="['user:userCustomer:edit']">编辑
</el-button>
<el-button size="medium" type="text" @click="handleMoreView(scope.row)">详情</el-button>
<el-button size="medium" type="text"
@click="handleView(scope.row)" >资产
</el-button>
</template>
</el-table-column> -->
</el-table>
@ -185,7 +207,8 @@ export default {
//
userCustomerList: [],
dateRange: [],
statusOptions: [],
//
@ -247,23 +270,51 @@ export default {
this.getList();
this.getDicts("user_status").then(response => {
this.statusOptions = response.data;
this.statusOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
});
this.getDicts("source").then(response => {
this.sourceOptions = response.data;
this.sourceOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
});
this.getDicts("user_role").then(response => {
this.userRoleOptions = response.data;
this.userRoleOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
});
this.getDicts("auth_level").then(response => {
this.authLevelOptions = response.data;
this.authLevelOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
});
},
methods: {
handleMoreView(row) {
this.$router.push(
{
name: 'userCusDetail', params: { row: row }
})
},
handleView(row) {
this.$router.push(
{
name: 'walletList', params: { row: row }
})
},
/** 查询个人用户列表 */
getList() {
this.loading = true;
listUserCustomer(this.queryParams).then(response => {
listUserCustomer(this.addSESDateRange(this.queryParams, this.dateRange)).then(response => {
this.userCustomerList = response.rows;
this.total = Number(response.total);
this.loading = false;
@ -284,6 +335,7 @@ export default {
return this.selectDictLabel(this.userRoleOptions, row.userRole);
},
//
authLevelFormat(row, column) {
return this.selectDictLabel(this.authLevelOptions, row.authLevel);
@ -313,30 +365,8 @@ export default {
//
reset() {
this.form = {
userId: null,
name: null,
nickname: null,
sex: null,
birthdate: null,
headImgPath: null,
email: null,
mobile: null,
telephone: null,
parent: null,
parentId: null,
status: "0",
addTime: null,
updateTime: null,
inviteCode: null,
userLevel: null,
membership: null,
treeLevel: null,
password: null,
payPassword: null,
source: null,
userRole: null,
authLevel: null
};
this.dateRange = [];
this.resetForm("form");
},
/** 搜索按钮操作 */
@ -346,6 +376,7 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.handleQuery();
},

383
src/views/user/userCustomer/pkCouponScopeRangeStoreList.vue

@ -0,0 +1,383 @@
<template>
<div class="app-container">
<div class="search_con m-b-28">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<!-- <el-form-item label="用户编号" prop="userId">
<el-input
v-model="queryParams.userId"
placeholder="请输入用户编号"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item label="转账类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择转账类型" clearable size="medium">
<el-option v-for="dict in typeOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="币种" prop="coinId">
<el-input
v-model="queryParams.coinId"
placeholder="请输入币种"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="业务编号" prop="serviceId">
<el-input
v-model="queryParams.serviceId"
placeholder="请输入业务编号"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="bg bg-white">
<el-row :gutter="10" class="m-b-16">
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
@click="handleAdd"
v-hasPermi="['user:walletAssetsRecord:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['user:walletAssetsRecord:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['user:walletAssetsRecord:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
@click="handleExport"
v-hasPermi="['user:walletAssetsRecord:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="walletAssetsRecordList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="流水编号" align="center" prop="id" />
<!-- <el-table-column label="用户编号" align="center" prop="userId" /> -->
<el-table-column label="用户姓名" align="center" prop="userName" />
<el-table-column label="转账类型" align="center" prop="type" :formatter="typeFormat"/>
<el-table-column label="币种" align="center" prop="coinId" />
<el-table-column label="数量" align="center" prop="num" />
<el-table-column label="手续费" align="center" prop="fee" />
<!-- <el-table-column label="类型 完成complete" align="center" prop="status" /> -->
<el-table-column label="剩下金额" align="center" prop="remainBalance" />
<el-table-column label="业务编号" align="center" prop="serviceId" />
<!-- <el-table-column label="是否显示" align="center" prop="isShow" /> -->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="medium"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['user:walletAssetsRecord:edit']"
>修改</el-button>
<el-button
size="medium"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['user:walletAssetsRecord:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
<!-- 添加或修改钱包资金流水记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="用户编号" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户编号" />
</el-form-item>
<el-form-item label="转账类型" prop="type">
<el-select v-model="form.type" placeholder="请选择转账类型" clearable size="medium">
<el-option v-for="dict in typeOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="币种" prop="coinId">
<el-input v-model="form.coinId" placeholder="请输入币种" />
</el-form-item>
<el-form-item label="数量" prop="num">
<el-input v-model="form.num" placeholder="请输入数量" />
</el-form-item>
<el-form-item label="地址" prop="address">
<el-input v-model="form.address" placeholder="请输入地址" />
</el-form-item>
<el-form-item label="手续费" prop="fee">
<el-input v-model="form.fee" placeholder="请输入手续费" />
</el-form-item>
<el-form-item label="类型 完成complete">
<el-radio-group v-model="form.status">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="剩下金额" prop="remainBalance">
<el-input v-model="form.remainBalance" placeholder="请输入剩下金额" />
</el-form-item>
<el-form-item label="添加时间" prop="createTime">
<el-date-picker clearable size="medium"
v-model="form.createTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择添加时间">
</el-date-picker>
</el-form-item>
<el-form-item label="业务编号" prop="serviceId">
<el-input v-model="form.serviceId" placeholder="请输入业务编号" />
</el-form-item>
<el-form-item label="是否显示" prop="isShow">
<el-input v-model="form.isShow" placeholder="请输入是否显示" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listWalletAssetsRecord, getWalletAssetsRecord, delWalletAssetsRecord, addWalletAssetsRecord, updateWalletAssetsRecord, exportWalletAssetsRecord } from "@/api/user/walletAssetsRecord";
export default {
name: "WalletAssetsRecord",
components: {
},
props: {
pkCouponId: {
type: Number,
default() {
return null;
},
},
pkCouponStore: {
type: Object,
default: {}
}
},
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
walletAssetsRecordList: [],
typeOptions: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
userId: null,
type: null,
coinId: null,
num: null,
address: null,
fee: null,
status: null,
remainBalance: null,
serviceId: null,
isShow: null,
userName:null,
},
//
form: {},
//
rules: {
userId: [
{ required: true, message: "用户编号不能为空", trigger: "blur" }
],
type: [
{ required: true, message: "转账类型不能为空", trigger: "change" }
],
}
};
},
created() {
this.pkCouponId && (this.queryParams.userName = this.pkCouponId);
this.getList();
this.getDicts("assets_type").then(response => {
this.typeOptions = response.data;
});
},
methods: {
/** 查询钱包资金流水记录列表 */
getList() {
this.loading = true;
listWalletAssetsRecord(this.queryParams).then(response => {
this.walletAssetsRecordList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
typeFormat(row, column) {
return this.selectDictLabel(this.typeOptions, row.type);
},
//
reset() {
this.form = {
id: null,
userId: null,
type: null,
coinId: null,
num: null,
address: null,
fee: null,
status: "0",
remainBalance: null,
createTime: null,
updateTime: null,
serviceId: null,
isShow: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加钱包资金流水记录";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getWalletAssetsRecord(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改钱包资金流水记录";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateWalletAssetsRecord(this.form).then(response => {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addWalletAssetsRecord(this.form).then(response => {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$confirm('是否确认删除钱包资金流水记录编号为"' + ids + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return delWalletAssetsRecord(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有钱包资金流水记录数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return exportWalletAssetsRecord(queryParams);
}).then(response => {
this.download(response.msg);
})
}
}
};
</script>

486
src/views/user/userCustomer/userCusDetail.vue

@ -0,0 +1,486 @@
<template>
<div class="app-container">
<div class="bg bg-white">
<div class="flex detailTit m-b-16">
<div class="circle"></div>
用户基本信息
</div>
<el-table v-loading="loading" :data="rowData">
<el-table-column label="昵称" align="center" prop="nickname" />
<el-table-column label="邮箱" align="center" prop="email" />
<el-table-column label="用户类型" align="center" prop="userType" :formatter="userRoleFormat" />
<el-table-column label="注册时间" align="center" prop="addTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.addTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="是否质押" align="center" prop="headImgPath">
<template slot-scope="scope">
{{scope.row.isPledge?'是':'否'}}
</template>
</el-table-column>
</el-table>
<div class="flex status-con" v-if="UserCertificationList.length" style="align-items: flex-start;flex-wrap:wrap">
<div class="let item m-r-16 m-b-16" v-if="kycData.authType">
<div class="title m-b-16 flex">
<div class="circle"></div>
KYC认证信息
</div>
<div class="status">
<div class="status-bar"
:style="{ background: kycData.auditStatus == 'agree' ? '#08B97A' : kycData.auditStatus == 'apply' ? '#F8A562' : '#E73535' }"
v-if="kycData.auditStatus">
<span class="status-text" v-if="kycData.authType == 'basic'">{{ kycData.auditStatus == 'agree' ?
'已通过' : kycData.auditStatus == 'apply' ? '审核中' : '不通过' }}
</span>
</div>
<div class="text m-b-10">
姓名{{ kycData.name ? kycData.name : '无' }}
</div>
<div class="text m-b-10">
证件号{{ kycData.certId ? kycData.certId : '无' }}
</div>
<div class="flex m-b-16" style="align-items:flex-start">
<div class="img-con m-r-16">
<div class="text m-b-10">
证件正面
</div>
<div class="img-con-border" v-if="kycData.certFrontImg">
<el-image @click="previewImage(kycData.certFrontImg)" :src="kycData.certFrontImg"
:preview-src-list="srcList" class="avatar">
</el-image>
</div>
<span class="text" v-else></span>
</div>
<div class="img-con">
<div class="text m-b-10">
证件反面
</div>
<div class="img-con-border" v-if="kycData.certReverseImg">
<el-image @click="previewImage(kycData.certReverseImg)" :src="kycData.certReverseImg"
:preview-src-list="srcList" class="avatar">
</el-image>
</div>
<span class="text" v-else></span>
</div>
</div>
<div class="img-con m-r-16 m-b-16">
<div class="text m-b-10">
手持证件照
</div>
<div class="img-con-border" v-if="kycData.certHandImg">
<el-image @click="previewImage(kycData.certHandImg)" :src="kycData.certHandImg"
:preview-src-list="srcList" class="avatar">
</el-image>
</div>
<span class="text" v-else></span>
</div>
<div style="color:red">
审核备注{{ kycData.auditReason ? kycData.auditReason : '无' }}
</div>
<!-- <div class="flex btnCon" v-if="kycData.auditStatus == 'apply'">
<el-button type="primary" @click="handleSuccess('agree', kycData)">通过</el-button>
<el-button type="danger" @click="handleFail('reject', kycData)">驳回</el-button>
</div> -->
</div>
</div>
<div class="right item" v-if="storeData.authType">
<div class="title m-b-16 flex">
<div class="circle"></div>
商家认证信息
</div>
<div class="status">
<div class="status-bar"
:style="{ background: storeData.auditStatus == 'agree' ? '#08B97A' : storeData.auditStatus == 'apply' ? '#F8A562' : '#E73535' }">
<span class="status-text">{{ storeData.auditStatus == 'agree' ? '已通过' : storeData.auditStatus ==
'apply' ? '审核中' : '不通过' }}
</span>
</div>
<div class="text m-b-10">
是否质押{{ storeData.storePledge ? '是' : '否' }}
</div>
<div class="text m-b-10">
质押金额{{ storeData.storePledgeBalance }}{{ storeData.pledgeCoin }}
</div>
<!-- <div class="flex btnCon" v-if="storeData.auditStatus == 'apply'">
<el-button type="primary" @click="handleSuccess('agree', storeData)">通过</el-button>
<el-button type="danger" @click="handleFail('reject', storeData)">驳回</el-button>
</div> -->
</div>
</div>
<div class="right item" v-if="proData.authType">
<div class="title m-b-16 flex">
<div class="circle"></div>
Pro商家认证信息
</div>
<div class="status">
<div class="status-bar"
:style="{ background: proData.auditStatus == 'agree' ? '#08B97A' : proData.auditStatus == 'apply' ? '#F8A562' : '#E73535' }">
<span class="status-text">{{ proData.auditStatus == 'agree' ? '已通过' : proData.auditStatus ==
'apply' ? '审核中' : '不通过' }}
</span>
</div>
<div class="text m-b-10">
是否质押{{ proData.storePledge ? '是' : '否' }}
</div>
<div class="text m-b-10">
质押金额{{ proData.storePledgeBalance }} {{ proData.pledgeCoin }}
</div>
<div class="flex m-b-16">
<div class="img-con m-r-16">
<div class="text m-b-10">
公司营业执照
</div>
<div class="img-con-border" v-if="proData.corporateLicense">
<el-image @click="previewImage(proData.corporateLicense)"
:src="proData.corporateLicense" :preview-src-list="srcList" class="avatar">
</el-image>
</div>
<span class="text" v-else></span>
</div>
</div>
<!-- <div class="flex btnCon" v-if="proData.auditStatus == 'apply'">
<el-button type="primary" @click="handleSuccess('agree', proData)">通过</el-button>
<el-button type="danger" @click="handleFail('reject', proData)">驳回</el-button>
</div> -->
</div>
</div>
</div>
</div>
<!-- 成功对话框 -->
<el-dialog title="通过" :visible.sync="open" width="400px" append-to-body>
<div class="sub-tit m-b-16">
是否通过该认证申请
</div>
<div slot="footer" class="dialog-footer flex-between">
<el-button type="text" @click="cancelApple">取消</el-button>
<el-button type="text" @click="submitFormApple('agree')">确定</el-button>
</div>
</el-dialog>
<!-- 驳回对话框 -->
<el-dialog title="驳回" :visible.sync="openApple" width="400px" append-to-body>
<el-form ref="form" :model="formApple" :rules="rulesApple" label-width="0px">
<div class="sub-tit m-b-16">
是否确认驳回该认证申请
</div>
<el-form-item label="" prop="auditReason">
<el-input v-model="formApple.auditReason" type="textarea" placeholder="驳回备注" rows="5" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer flex-between">
<el-button type="text" @click="cancelApple">取消</el-button>
<el-button type="text" @click="submitFormApple('reject')">确定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listUserCertification, getUserCertification, delUserCertification, addUserCertification, updateUserCertification, exportUserCertification } from "@/api/user/UserCertification";
export default {
name: "UserDetail",
components: {
},
data() {
return {
userRoleOptions: [],
rowData: [],
openApple: false,
kycData: {},
storeData: {},
proData: {},
//
loading: false,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
UserCertificationList: [],
auditStatusOptions: [],
authTypeOptions: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
witNo: null,
userId: null,
},
//
formApple: {
auditReason: null,
},
//
rulesApple: {
authType: [
{ required: true, message: "认证类型:基础basic 高级advanced不能为空", trigger: "change" }
]
},
//
srcList: ["http://118.25.187.239:9099/img/adImg/557097620301025280.jpg"],
};
},
created() {
this.getDicts("audit_status").then(response => {
this.auditStatusOptions = response.data;
});
this.getDicts("auth_type").then(response => {
this.authTypeOptions = response.data;
});
this.getDicts("user_role").then(response => {
this.userRoleOptions = response.data;
});
this.queryParams.userId = this.$route.params.row.userId
this.rowData[0] = this.$route.params.row
this.getList()
},
methods: {
//
userRoleFormat(row, column) {
return this.selectDictLabel(this.userRoleOptions, row.userRole);
},
//
previewImage(abUrl) {
this.srcList[0] = abUrl;
},
//
cancelApple() {
this.openApple = false;
this.open = false;
this.resetApple();
},
//
resetApple() {
this.formApple = {
};
this.resetForm("formApple");
},
handleFail(v, d) {
this.resetApple()
this.formApple.auditStatus = v
this.formApple.witNo = d.witNo
this.openApple = true
},
handleSuccess(v, d) {
this.resetApple();
this.open = true;
this.formApple.witNo = d.witNo
this.formApple.auditStatus = v
},
/** 审核提交 */
submitFormApple(v) {
if (!this.formApple.auditReason && v == 'reject') {
this.$message.error('驳回备注不能为空');
return;
}
updateUserCertification(this.formApple).then(response => {
this.msgSuccess("操作成功");
this.open = false;
this.openApple = false;
this.getList();
});
},
/** 查询实名认证信息列表 */
getList() {
this.loading = true;
listUserCertification(this.queryParams).then(response => {
this.UserCertificationList = response.rows;
this.loading = false;
for (var i = this.UserCertificationList.length - 1; i >= 0; i--) {
if (this.UserCertificationList[i].authType == 'advanced') {
this.storeData = this.UserCertificationList[i]
if (this.UserCertificationList[i].auditStatus == 'apply') {
this.storeData = this.UserCertificationList[i]
}
}
if (this.UserCertificationList[i].authType == 'basic') {
this.kycData = this.UserCertificationList[i]
if (this.UserCertificationList[i].auditStatus == 'apply') {
this.kycData = this.UserCertificationList[i]
}
}
if (this.UserCertificationList[i].authType == 'pro') {
this.proData = this.UserCertificationList[i]
if (this.UserCertificationList[i].auditStatus == 'apply') {
this.proData = this.UserCertificationList[i]
}
}
}
});
},
auditStatusFormat(row, column) {
return this.selectDictLabel(this.auditStatusOptions, row.auditStatus);
},
authTypeFormat(row, column) {
return this.selectDictLabel(this.authTypeOptions, row.authType);
},
}
};
</script>
<style scoped>
.status-con .item {
width: 46%;
}
::v-deep .el-dialog__footer {
border-top: 1px solid rgba(223, 230, 236, 1);
padding: 0;
height: 60px;
}
::v-deep .el-dialog__footer .el-button {
width: 50%;
height: 60px;
}
::v-deep .el-dialog__footer .el-button:nth-child(1) {
border-right: 1px solid rgba(223, 230, 236, 1);
}
::v-deep .el-dialog__footer .el-button:nth-child(1) span {
color: rgba(102, 102, 102, 1);
}
.sub-tit {
font-size: 13px;
font-weight: 500;
text-align: center;
color: rgba(51, 51, 51, 1);
}
::v-deep .el-textarea__inner {
background: #F3F6F8 !important;
}
::v-deep .el-dialog__body {
padding: 15px 20px;
}
::v-deep .el-dialog__header {
text-align: center;
font-size: 14px;
font-weight: 500;
}
.btnCon {
margin-top: 20px;
}
::v-deep .btnCon .el-button {
width: 110px;
height: 40px;
border-radius: 4px;
}
.status-text {}
.status-bar {
width: 40px;
height: 160px;
background: rgba(231, 53, 53, 1);
position: absolute;
right: 12px;
top: -32px;
color: rgba(255, 255, 255, 1);
font-size: 16px;
font-weight: 500;
transform: rotate(-40deg);
display: flex;
align-items: center;
writing-mode: vertical-lr;
justify-content: center;
letter-spacing: 8px;
}
.circle {
width: 8px;
height: 8px;
background: rgba(9, 186, 122, 1);
margin-right: 10px;
}
.img-con-border {
border: 1px solid rgba(223, 230, 236, 1);
padding: 9px;
width: 359px;
height: 203px;
border-radius: 4px;
}
.img-con-border .avatar {
width: 100%;
height: 100%;
}
.title {
font-size: 16px;
font-weight: 500;
color: #333;
}
.status-con {
margin-top: 52px;
}
.status {
border: 1px solid rgba(223, 230, 236, 1);
padding: 20px 16px;
border-radius: 8px;
position: relative;
overflow: hidden;
}
.status .text {
font-size: 12px;
font-weight: 500;
}
</style>

305
src/views/user/userCustomer/walletList.vue

@ -0,0 +1,305 @@
<template>
<div class="app-container">
<div class="bg bg-white">
<!-- <el-row :gutter="10" class="m-b-16">
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
@click="handleAdd"
v-hasPermi="['user:wallet:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['user:wallet:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['user:wallet:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
@click="handleExport"
v-hasPermi="['user:wallet:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> -->
<div class="flex m-b-20">
<div class="circle m-r-10"></div>
用户{{ queryParams.userName }}
</div>
<el-table v-loading="loading" :data="walletList" @selection-change="handleSelectionChange">
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column label="币种" align="center" prop="coinId" width="120" />
<el-table-column label="钱包地址" align="center" prop="address" />
<el-table-column label="可用余额" align="center" prop="balance" />
<el-table-column label="冻结余额" align="center" prop="frozenBalance" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="medium" type="text" @click="handleUpdate(scope.row)"
v-hasPermi="['user:wallet:edit']">修改余额</el-button>
<el-button size="medium" type="text" @click="handleWater(scope.row)"
>资金流水</el-button>
<!-- <el-button
size="medium"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['user:wallet:remove']"
>删除</el-button> -->
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</div>
<!-- 添加或修改otc钱包信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="类型" prop="alterationType">
<el-select v-model="form.alterationType" placeholder="请选择类型">
<el-option label="增加" value="add"></el-option>
<el-option label="减少" value="alterationType"></el-option>
</el-select>
</el-form-item>
<el-form-item label="修改金额" prop="updateAmount">
<el-input v-model="form.updateAmount" placeholder="请输入修改金额" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
<el-form-item label="谷歌验证码" prop="googleSecret">
<el-input v-model="form.googleSecret" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 通道列表 -->
<el-dialog v-dialogDrag title="资金流水" :visible.sync="pkCouponScopeRangeParkingStoreOpen" width="80%" append-to-body
:close-on-click-modal="false">
<pkCouponScopeRangeStoreList v-if="pkCouponScopeRangeParkingStoreOpen" :pkCouponStore="pkCouponStore"
:pkCouponId="pkCouponStoreId">
</pkCouponScopeRangeStoreList>
</el-dialog>
</div>
</template>
<script>
import { listWallet, getWallet, delWallet, addWallet, updateWallet, exportWallet } from "@/api/user/wallet";
import pkCouponScopeRangeStoreList from "./pkCouponScopeRangeStoreList";
export default {
name: "Wallet",
components: {
pkCouponScopeRangeStoreList
},
data() {
return {
pkCouponScopeRangeParkingStoreOpen: false,
pkCouponStore: {},
pkCouponStoreId: '',
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// otc
walletList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
coinId: null,
chainName: null,
balance: null,
frozenBalance: null,
isEnable: null,
userName: null,
},
//
form: {},
rules: {
alterationType: [
{ required: true, message: "类型不能为空", trigger: "blur" }
],
updateAmount: [
{ required: true, message: "金额不能为空", trigger: "blur" }
],
googleSecret: [
{ required: true, message: "谷歌验证码不能为空", trigger: "blur" }
],
}
};
},
created() {
this.queryParams.userName = this.$route.params.row.name
this.getList();
},
methods: {
/** 查询otc钱包信息列表 */
getList() {
this.loading = true;
listWallet(this.queryParams).then(response => {
this.walletList = response.rows;
this.total = Number(response.total);
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
userId: null,
coinId: null,
chainName: null,
balance: null,
frozenBalance: null,
isEnable: null,
createTime: null,
updateTime: null,
googleSecret: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加otc钱包信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getWallet(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "变改余额";
});
},
/** 修改按钮操作 */
handleWater(row) {
this.reset();
this.pkCouponStore = row;
this.pkCouponStoreId = row.userName;
this.pkCouponScopeRangeParkingStoreOpen = true;
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
updateWallet(this.form).then(response => {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
});
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$confirm('是否确认删除otc钱包信息编号为"' + ids + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return delWallet(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有otc钱包信息数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return exportWallet(queryParams);
}).then(response => {
this.download(response.msg);
})
}
}
};
</script>
<style scoped>
.search_con {
font-size: 16px;
font-weight: 500;
color: rgba(51, 51, 51, 1);
}
.circle {
width: 8px;
height: 8px;
background: rgba(9, 186, 122, 1);
}
</style>

270
src/views/user/walletAssetsRecord/index.vue

@ -1,8 +1,8 @@
<template>
<div class="app-container">
<div class="search_con m-b-28">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<!-- <el-form-item label="用户编号" prop="userId">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<!-- <el-form-item label="用户编号" prop="userId">
<el-input
v-model="queryParams.userId"
placeholder="请输入用户编号"
@ -12,129 +12,86 @@
/>
</el-form-item> -->
<el-form-item label="用户姓名" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户姓名"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="用户名" prop="userName">
<el-input v-model="queryParams.userName" placeholder="请输入用户名" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="转账类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择转账类型" clearable size="medium">
<el-option v-for="dict in typeOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="操作类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择操作类型" clearable size="medium">
<el-option v-for="dict in typeOptionsSearch" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="币种" prop="coinId">
<el-input
v-model="queryParams.coinId"
placeholder="请输入币种"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="币种" prop="coinId">
<el-input v-model="queryParams.coinId" placeholder="请输入币种" clearable size="medium"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="业务编号" prop="serviceId">
<el-input
v-model="queryParams.serviceId"
placeholder="请输入业务编号"
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="操作时间">
<el-date-picker v-model="dateRange" size="medium" style="width: 340px" value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
:unlink-panels="true" :default-time="['00:00:00', '23:59:59']"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="bg bg-white">
<el-row :gutter="10" class="m-b-16">
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
@click="handleAdd"
v-hasPermi="['user:walletAssetsRecord:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['user:walletAssetsRecord:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['user:walletAssetsRecord:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
size="medium"
@click="handleExport"
v-hasPermi="['user:walletAssetsRecord:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-row :gutter="10" class="m-b-16">
<!-- <el-col :span="1.5">
<el-button type="primary" size="medium" @click="handleAdd"
v-hasPermi="['user:walletAssetsRecord:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" size="medium" :disabled="single" @click="handleUpdate"
v-hasPermi="['user:walletAssetsRecord:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" size="medium" :disabled="multiple" @click="handleDelete"
v-hasPermi="['user:walletAssetsRecord:remove']">删除</el-button>
</el-col> -->
<el-col :span="1.5">
<el-button type="primary" size="medium" @click="handleExport"
v-hasPermi="['user:walletAssetsRecord:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="walletAssetsRecordList" @selection-change="handleSelectionChange">
<el-table-column label="用户名称" align="center" prop="userName" />
<el-table-column label="操作类型" align="center" prop="type" :formatter="typeFormat" />
<el-table-column label="币种" align="center" prop="coinId" />
<el-table-column label="数量" align="center" prop="num" />
<!-- <el-table-column label="手续费" align="center" prop="fee" /> -->
<!-- <el-table-column label="类型 完成complete" align="center" prop="status" /> -->
<el-table v-loading="loading" :data="walletAssetsRecordList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="流水编号" align="center" prop="id" />
<!-- <el-table-column label="用户编号" align="center" prop="userId" /> -->
<el-table-column label="用户姓名" align="center" prop="userName" />
<el-table-column label="转账类型" align="center" prop="type" :formatter="typeFormat"/>
<el-table-column label="币种" align="center" prop="coinId" />
<el-table-column label="数量" align="center" prop="num" />
<el-table-column label="手续费" align="center" prop="fee" />
<!-- <el-table-column label="类型 完成complete" align="center" prop="status" /> -->
<el-table-column label="剩下金额" align="center" prop="remainBalance" />
<el-table-column label="业务编号" align="center" prop="serviceId" />
<!-- <el-table-column label="是否显示" align="center" prop="isShow" /> -->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="medium"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['user:walletAssetsRecord:edit']"
>修改</el-button>
<el-button
size="medium"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['user:walletAssetsRecord:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<el-table-column label="变动前余额" align="center">
<template slot-scope="scope">
{{ scope.row.num + scope.row.remainBalance }}
</template>
</el-table-column>
<el-table-column label="变动后余额" align="center" prop="remainBalance" />
<el-table-column label="操作时间" align="center" prop="createTime" />
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- <el-table-column label="是否显示" align="center" prop="isShow" /> -->
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="medium" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['user:walletAssetsRecord:edit']">修改</el-button>
<el-button size="medium" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['user:walletAssetsRecord:remove']">删除</el-button>
</template>
</el-table-column> -->
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</div>
<!-- 添加或修改钱包资金流水记录对话框 -->
@ -144,8 +101,9 @@
<el-input v-model="form.userId" placeholder="请输入用户编号" />
</el-form-item>
<el-form-item label="转账类型" prop="type">
<el-select v-model="form.type" placeholder="请选择转账类型">
<el-option label="请选择字典生成" value="" />
<el-select v-model="form.type" placeholder="请选择转账类型" clearable size="medium">
<el-option v-for="dict in typeOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select>
</el-form-item>
<el-form-item label="币种" prop="coinId">
@ -160,7 +118,7 @@
<el-form-item label="手续费" prop="fee">
<el-input v-model="form.fee" placeholder="请输入手续费" />
</el-form-item>
<el-form-item label="类型 完成complete">
<el-form-item label="类型">
<el-radio-group v-model="form.status">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
@ -169,10 +127,7 @@
<el-input v-model="form.remainBalance" placeholder="请输入剩下金额" />
</el-form-item>
<el-form-item label="添加时间" prop="createTime">
<el-date-picker clearable size="medium"
v-model="form.createTime"
type="date"
value-format="yyyy-MM-dd"
<el-date-picker clearable size="medium" v-model="form.createTime" type="date" value-format="yyyy-MM-dd"
placeholder="选择添加时间">
</el-date-picker>
</el-form-item>
@ -200,6 +155,7 @@ export default {
},
data() {
return {
dateRange: [],
//
loading: true,
//
@ -214,7 +170,8 @@ export default {
total: 0,
//
walletAssetsRecordList: [],
typeOptions: [],
typeOptions: [],
typeOptionsSearch:[],
//
title: "",
//
@ -232,7 +189,8 @@ export default {
status: null,
remainBalance: null,
serviceId: null,
isShow: null
isShow: null,
userName:null,
},
//
form: {},
@ -242,13 +200,20 @@ export default {
{ required: true, message: "用户编号不能为空", trigger: "blur" }
],
type: [
{ required: true, message: "转账类型 提币withdrawal 充值recharge 转入entry_account 转出out_account 法币交易入账legal_tran_entry 法币交易出账legal_tran_out 法币交易出账冻结legal_tran_out_frozen、法币交易出账回退legal_tran_back 质押转出pledge_tran 商户冻结store_frozen 商户广告冻结回退store_frozen_back 商户订单完成扣除store_deduction 商户订单完成入账store_income不能为空", trigger: "change" }
{ required: true, message: "转账类型不能为空", trigger: "change" }
],
}
};
},
created() {
this.getList();
this.getDicts("assets_type").then(response => {
this.typeOptionsSearch = response.data;
this.typeOptionsSearch.unshift({
dictValue:null,
dictLabel:'全部'
})
});
this.getDicts("assets_type").then(response => {
this.typeOptions = response.data;
});
@ -257,7 +222,7 @@ export default {
/** 查询钱包资金流水记录列表 */
getList() {
this.loading = true;
listWalletAssetsRecord(this.queryParams).then(response => {
listWalletAssetsRecord(this.addSESDateRange(this.queryParams, this.dateRange)).then(response => {
this.walletAssetsRecordList = response.rows;
this.total = response.total;
this.loading = false;
@ -276,20 +241,8 @@ export default {
//
reset() {
this.dateRange = [];
this.form = {
id: null,
userId: null,
type: null,
coinId: null,
num: null,
address: null,
fee: null,
status: "0",
remainBalance: null,
createTime: null,
updateTime: null,
serviceId: null,
isShow: null
};
this.resetForm("form");
},
@ -300,13 +253,14 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
@ -349,28 +303,28 @@ export default {
handleDelete(row) {
const ids = row.id || this.ids;
this.$confirm('是否确认删除钱包资金流水记录编号为"' + ids + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return delWalletAssetsRecord(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return delWalletAssetsRecord(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有钱包资金流水记录数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return exportWalletAssetsRecord(queryParams);
}).then(response => {
this.download(response.msg);
})
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return exportWalletAssetsRecord(queryParams);
}).then(response => {
this.download(response.msg);
})
}
}
};

Loading…
Cancel
Save