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. 455
      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. 125
      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{ /* .el-menu-item .svg-icon{
display: none; 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{ .flex{
display: flex; display: flex;
align-items: center; align-items: center;
@ -76,12 +94,21 @@ export default {
.m-b-16{ .m-b-16{
margin-bottom: 16px; margin-bottom: 16px;
} }
.m-r-32{
margin-right: 32px;
}
.m-r-16{ .m-r-16{
margin-right: 16px; margin-right: 16px;
} }
.m-r-10{
margin-right: 10px;
}
.m-b-28{ .m-b-28{
margin-bottom: 28px; margin-bottom: 28px;
} }
.m-b-20{
margin-bottom: 20px;
}
.center{ .center{
display: table; display: table;
margin: 0 auto; margin: 0 auto;

11
src/api/system/user.js

@ -1,5 +1,6 @@
import request from '@/utils/request' import request from '@/utils/request'
import { parseStrEmpty } from "@/utils/ruoyi"; import { parseStrEmpty } from "@/utils/ruoyi";
import qs from 'qs'
// 查询用户列表 // 查询用户列表
export function listUser(query) { 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) { export function uploadAvatar(data) {
return request({ return request({

2
src/components/HeaderSearch/index.vue

@ -176,6 +176,8 @@ export default {
box-shadow: none !important; box-shadow: none !important;
border-bottom: 1px solid #d9d9d9; border-bottom: 1px solid #d9d9d9;
vertical-align: middle; 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"> <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper flex"> <div class="avatar-wrapper flex">
<img :src="avatar" class="user-avatar"> <img :src="user.avatar" class="user-avatar">
<span class="nickName">{{ user.nickName }}</span> <span class="nickName">{{ user.nickName }}</span>
<i class="el-icon-caret-bottom" /> <i class="el-icon-caret-bottom" />
</div> </div>
@ -85,6 +85,7 @@ export default {
}; };
}, },
created() { created() {
// this.avatar=localStorage.getItem('adImgAbs')
this.getUser(); this.getUser();
}, },
methods: { methods: {

47
src/router/index.js

@ -97,7 +97,37 @@ export const constantRoutes = [
component: (resolve) => require(['@/views/user/UserCertification/userDetail'], resolve), component: (resolve) => require(['@/views/user/UserCertification/userDetail'], resolve),
name: 'userDetail', name: 'userDetail',
meta: { 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 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="item-time">{{chartData.beginTime}}~{{chartData.endTime}}</div>
<div class="flex-between"> <div class="flex-between">
<div style="font-size:46px;font-weight:500;color: #333;"> <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" /> <count-to :start-val="0" :end-val="chartData.amount / 10000" :decimals="2" :duration="3600" class="card-panel-num" v-if="chartData.amount>=10000" />
<span style="font-size:14px;color:rgba(125, 140, 161, 1)">万元</span> <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> </div>
<img src="../../assets/images/Group1171275386.png" alt="" srcset="" style="width:86px;height:86px"> <img src="../../assets/images/Group1171275386.png" alt="" srcset="" style="width:86px;height:86px">
</div> </div>
@ -34,8 +38,12 @@
<div class="item-time">{{chartData.beginTime}}~{{chartData.endTime}}</div> <div class="item-time">{{chartData.beginTime}}~{{chartData.endTime}}</div>
<div class="flex-between"> <div class="flex-between">
<div style="font-size:46px;font-weight:500;color: #333;"> <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" /> <count-to :start-val="0" :end-val="chartData.income/10000" :decimals="2" :duration="3600" class="card-panel-num" v-if="chartData.income>=10000" />
<span style="font-size:14px;color:rgba(125, 140, 161, 1)">万元</span> <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> </div>
<img src="../../assets/images/Group1171275387.png" alt="" srcset="" style="width:86px;height:86px"> <img src="../../assets/images/Group1171275387.png" alt="" srcset="" style="width:86px;height:86px">
</div> </div>

123
src/views/dashboard/PieChartCreate.vue

@ -13,18 +13,12 @@
</span> </span>
</div> </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="pieCon1 center" id="myChart1" style="width:150px;height:150px;margin-bottom: 15px;"></div>
<div class="center"> <div class="center">
@ -43,14 +37,33 @@
代收成功金额 代收成功金额
</span> </span>
<span class="t2"> <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> </span>
</div> </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="pieCon1 center" id="myChart2" style="width:150px;height:150px;margin-bottom: 15px;"></div>
<div class="center"> <div class="center">
<count-to :start-val="0" :end-val="NumberDiv(chartData.collectionSuccessPrice, 10000)" :duration="3600" <count-to :start-val="0" :end-val="chartData.collectionSuccessPrice/10000" :duration="3600"
class="card-panel-num" /> class="card-panel-num" v-if="chartData.collectionSuccessPrice>=10000" :decimals="2" />
<span style="font-size:14px;color:rgba(125, 140, 161, 1)">万元</span> <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>
</div> </div>
</el-col> </el-col>
@ -81,14 +94,25 @@
代付成功金额 代付成功金额
</span> </span>
<span class="t2"> <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> </span>
</div> </div>
<div class="pieCon1 center" id="myChart4" style="width:150px;height:150px;margin-bottom: 15px;"></div> <div class="pieCon1 center" id="myChart4" style="width:150px;height:150px;margin-bottom: 15px;"></div>
<div class="center"> <div class="center">
<count-to :start-val="0" :end-val="NumberDiv(chartData.paymentSuccessPrice, 10000)" :duration="3600"
class="card-panel-num" /> <count-to :start-val="0" :end-val="chartData.paymentSuccessPrice/10000" :duration="3600"
<span style="font-size:14px;color:rgba(125, 140, 161, 1)">万元</span> 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>
</div> </div>
</el-col> </el-col>
@ -101,8 +125,7 @@
<script> <script>
import radialIndicator from "./radialindicator"; import demo from './demo.vue'
import CountTo from 'vue-count-to' import CountTo from 'vue-count-to'
import * as echarts from 'echarts'; import * as echarts from 'echarts';
require('echarts/theme/macarons') // echarts theme require('echarts/theme/macarons') // echarts theme
@ -112,7 +135,7 @@ export default {
mixins: [resize], mixins: [resize],
components: { components: {
CountTo, CountTo,
radialIndicator demo
}, },
props: { props: {
className: { className: {
@ -135,11 +158,20 @@ export default {
data() { data() {
return { return {
config: {
borderWidth: "8px",
circleSize: "16px",
circleColor: "#e45739",
borderColor: "#d5f4ee",
startColor: "#eead99",
endColor: "#e45739",
borderBackground: "#ECF1F8",
centerCircleBg: "#fff",
clockwise: false,
showEyes: true,
},
chart: null, chart: null,
myChart: '', myChart: '',
opinionData2: [
{ value: 86, name: '代收成功订单', itemStyle: 'red' },
]
} }
}, },
mounted() { mounted() {
@ -670,6 +702,47 @@ export default {
} }
</script> </script>
<style scoped> <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 {} .pieCon1 {}
.card-panel-num { .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>
</div> </div>
<pie-chart-create :chart-data="info" /> <pie-chart-create :chart-data="info" />
</div> </div>
</template> </template>
@ -59,10 +65,16 @@ export default {
RaddarChart, RaddarChart,
PieChart, PieChart,
BarChart, BarChart,
PieChartCreate PieChartCreate,
}, },
data() { data() {
return { return {
percent: 30,
canvasId: 'canvasId',
canvasContent: null,
startAngle: -Math.PI / 2, //canvas390 12 0
lineChartData: lineChartData.newVisitis, lineChartData: lineChartData.newVisitis,
dateRange: [], dateRange: [],
queryParams: {}, queryParams: {},
@ -74,7 +86,69 @@ export default {
this.addDate() this.addDate()
this.getData() 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: { 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() { addDate() {
let nowDate = new Date(); let nowDate = new Date();
let date = { let date = {
@ -113,6 +187,46 @@ export default {
</script> </script>
<style lang="scss" scoped> <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 { .title {
font-size: 16px; font-size: 16px;
color: #333; color: #333;

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

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

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

@ -7,7 +7,7 @@
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="medium"> <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="medium">
<el-option <el-option
v-for="dict in statusOptions" v-for="dict in statusOptionsSearch"
:key="dict.dictValue" :key="dict.dictValue"
:label="dict.dictLabel" :label="dict.dictLabel"
:value="dict.dictValue" :value="dict.dictValue"
@ -31,7 +31,7 @@
v-hasPermi="['otc:otcAppealConfig:add']" v-hasPermi="['otc:otcAppealConfig:add']"
>新增</el-button> >新增</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button <el-button
type="primary" type="primary"
size="medium" size="medium"
@ -48,7 +48,7 @@
@click="handleDelete" @click="handleDelete"
v-hasPermi="['otc:otcAppealConfig:remove']" v-hasPermi="['otc:otcAppealConfig:remove']"
>删除</el-button> >删除</el-button>
</el-col> </el-col> -->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="primary" type="primary"
@ -61,24 +61,29 @@
</el-row> </el-row>
<el-table v-loading="loading" :data="otcAppealConfigList" @selection-change="handleSelectionChange"> <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="remark" />
<el-table-column label="申诉终端" align="center" prop="terminalSource" :formatter="terminalSourceFormat" /> <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"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="medium" size="medium"
type="text" type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['otc:otcAppealConfig:edit']" v-hasPermi="['otc:otcAppealConfig:edit']"
>修改</el-button> >修改</el-button>
<el-button <el-button
size="medium" size="medium"
type="text" type="text"
icon="el-icon-delete" style="color:rgba(231, 53, 53, 1)"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['otc:otcAppealConfig:remove']" v-hasPermi="['otc:otcAppealConfig:remove']"
>删除</el-button> >删除</el-button>
@ -166,6 +171,7 @@ export default {
// //
otcAppealConfigList: [], otcAppealConfigList: [],
statusOptions: [], statusOptions: [],
statusOptionsSearch:[],
terminalSourceOptions: [], terminalSourceOptions: [],
// //
title: "", title: "",
@ -190,12 +196,32 @@ export default {
this.getDicts("sys_yes_no").then(response => { this.getDicts("sys_yes_no").then(response => {
this.statusOptions = response.data; 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.getDicts("terminal_source").then(response => {
this.terminalSourceOptions = response.data; this.terminalSourceOptions = response.data;
}); });
}, },
methods: { 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() { getList() {
this.loading = true; this.loading = true;

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

@ -1,6 +1,10 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="bg bg-white"> <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 v-loading="loading" :data="UserCertificationList">
<el-table-column :label="'订单编号'" align="center" prop="balance"> <el-table-column :label="'订单编号'" align="center" prop="balance">
<template slot-scope="scope"> <template slot-scope="scope">
@ -481,7 +485,7 @@ export default {
} }
.title { .title {
font-size: 24px; font-size: 16px;
font-weight: 500; font-weight: 500;
} }
@ -498,7 +502,7 @@ export default {
} }
.status .text { .status .text {
font-size: 16px; font-size: 12px;
font-weight: 500; font-weight: 500;
} }
</style> </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 :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="订单号" prop="otcOrderNo"> <el-form-item label="订单号" prop="otcOrderNo">
<el-input v-model="queryParams.otcOrderNo" placeholder="请输入订单号" clearable size="medium" <el-input v-model="queryParams.otcOrderNo" placeholder="请输入订单号" clearable size="medium"
@keyup.enter.native="handleQuery" /> @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="申诉状态" prop="appealStatus"> <el-form-item label="用户名称" prop="appealUserName">
<el-select size="medium" v-model="queryParams.appealStatus" placeholder="请选择申诉状态" clearable> <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" <el-option v-for="dict in appealStatusOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" /> :value="dict.dictValue" />
</el-select> </el-select>
</el-form-item> </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-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button> <el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button> <el-button size="medium" @click="resetQuery">重置</el-button>
@ -59,28 +75,56 @@
</el-row> </el-row>
<el-table v-loading="loading" :data="otcAppealOrderList" @selection-change="handleSelectionChange"> <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="crateTime" width="180">
<el-table-column label="主键" align="center" prop="id" /> <template slot-scope="scope">
<el-table-column label="订单编号" align="center" prop="otcOrderId" /> <span>{{ scope.row.otcOrderNo}}</span>
<el-table-column label="订单号" align="center" prop="otcOrderNo" /> </template>
<el-table-column label="本申诉订单号" align="center" prop="otcAppealNo" /> </el-table-column>
<el-table-column label="申诉备注" align="center" prop="appealRemark" /> <el-table-column label="用户名称" align="center" prop="crateTime" width="180">
<!-- <el-table-column label="申诉图片" align="center" prop="appealImgUrl" >--> <template slot-scope="scope">
<!-- <template slot-scope="scope">--> <span>{{ scope.row.appealUserName }}</span>
<!-- <el-image v-if="scope.row.appealImgUrl!=null && scope.row.appealImgUrl!=''"--> </template>
<!-- style="width: 120px; height: 120px"--> </el-table-column>
<!-- :src="scope.row.appealImgUrl"--> <el-table-column label="交易类型" align="center" prop="crateTime" width="100">
<!-- @click="previewImage(scope.row.appealImgUrl)"--> <template slot-scope="scope">
<!-- :preview-src-list="srcList"--> <span :style="{color:scope.row.order.tradeType=='sell'?'rgba(231, 53, 53, 1)':'rgba(9, 186, 122, 1)'}">{{ scope.row.order.tradeType=='sell'?'出售':'购买' }}</span>
<!-- ></el-image>--> </template>
<!-- </template>--> </el-table-column>
<!-- </el-table-column>-->
<el-table-column label="申诉状态" align="center" prop="appealStatus" :formatter="appealStatusFormat" /> <el-table-column label="交易币种" align="center" prop="crateTime" width="100">
<el-table-column label="申诉终端" align="center" prop="terminalSource" :formatter="terminalSourceFormat" /> <template slot-scope="scope">
<el-table-column label="申诉方用户" align="center" prop="appealUserName" /> <span>{{ scope.row.order.coin }}</span>
<el-table-column label="被申诉方用户" align="center" prop="beAppealUserName" /> </template>
<el-table-column label="审核描述" align="center" prop="appealDesc" /> </el-table-column>
<el-table-column label="添加时间" align="center" prop="crateTime" width="180">
<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"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
@ -94,7 +138,7 @@
<!-- @click="handleUpdate(scope.row)"--> <!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['otc:otcAppealOrder:edit']"--> <!-- v-hasPermi="['otc:otcAppealOrder:edit']"-->
<!-- >申诉凭证</el-button>--> <!-- >申诉凭证</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> @click="handleApple(scope.row)" v-hasPermi="['otc:otcAppealOrder:edit']">审核处理</el-button>
<el-button size="mini" type="text" @click="handleView(scope.row)">详情</el-button> <el-button size="mini" type="text" @click="handleView(scope.row)">详情</el-button>
@ -226,8 +270,22 @@ export default {
name: "OtcAppealOrder", name: "OtcAppealOrder",
components: { 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() { data() {
return { return {
tradeTypeStatusOptions: [],
dateRange: [],
// //
loading: true, loading: true,
// //
@ -257,6 +315,7 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
otcOrderId: null, otcOrderId: null,
tradeType:null,
otcOrderNo: null, otcOrderNo: null,
otcAppealNo: null, otcAppealNo: null,
appealRemark: null, appealRemark: null,
@ -265,7 +324,9 @@ export default {
terminalSource: null, terminalSource: null,
appealUserId: null, appealUserId: null,
beAppealUserId: null, beAppealUserId: null,
appealDesc: null appealDesc: null,
payee:null,
appealUserName:null,
}, },
// //
form: {}, form: {},
@ -290,14 +351,34 @@ export default {
}, },
created() { created() {
this.getList(); 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.getDicts("appeal_status").then(response => {
this.appealStatusOptions = response.data; this.appealStatusOptions = response.data;
this.appealStatusOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
}); });
this.getDicts("terminal_source").then(response => { this.getDicts("terminal_source").then(response => {
this.terminalSourceOptions = response.data; this.terminalSourceOptions = response.data;
this.terminalSourceOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
}); });
this.getDicts("appeal_trade_type").then(response => { this.getDicts("appeal_trade_type").then(response => {
this.appealTradeTypeOptions = response.data; this.appealTradeTypeOptions = response.data;
this.appealTradeTypeOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
}); });
}, },
methods: { methods: {
@ -314,7 +395,7 @@ export default {
/** 查询OTC申诉订单列表 */ /** 查询OTC申诉订单列表 */
getList() { getList() {
this.loading = true; this.loading = true;
listOtcAppealOrder(this.queryParams).then(response => { listOtcAppealOrder(this.addSESDateRange(this.queryParams, this.dateRange)).then(response => {
this.otcAppealOrderList = response.rows; this.otcAppealOrderList = response.rows;
this.total = Number(response.total); this.total = Number(response.total);
this.loading = false; this.loading = false;
@ -340,44 +421,16 @@ export default {
// //
reset() { reset() {
this.form = { 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"); this.resetForm("form");
}, },
// //
resetApple() { resetApple() {
this.formApple = { 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"); this.resetForm("formApple");
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
@ -387,6 +440,7 @@ export default {
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.dateRange = [];
this.resetForm("queryForm"); this.resetForm("queryForm");
this.handleQuery(); this.handleQuery();
}, },

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

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

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

@ -2,7 +2,7 @@
<div class="app-container"> <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 :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 <el-input
v-model="queryParams.currencyCoin" v-model="queryParams.currencyCoin"
placeholder="请输入法币名称" placeholder="请输入法币名称"
@ -11,6 +11,15 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </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-form-item label="排序" prop="sort">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="queryParams.sort"--> <!-- v-model="queryParams.sort"-->
@ -83,18 +92,27 @@
<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="currencyCoin" /> <el-table-column label="法币简称" align="center" prop="currencyCoin" />
<el-table-column label="法币全称" align="center" prop="fullName" /> <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="remark" />
<el-table-column label="排序" align="center" prop="sort" /> <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"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="medium" size="medium"
type="text" type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['otc:otcCurrencyCoin:edit']" v-hasPermi="['otc:otcCurrencyCoin:edit']"
>修改</el-button> >编辑</el-button>
<!-- <el-button--> <!-- <el-button-->
<!-- size="medium"--> <!-- size="medium"-->
<!-- type="text"--> <!-- type="text"-->
@ -166,6 +184,7 @@ export default {
}, },
data() { data() {
return { return {
statusOptionsSearch:[],
operate:'add', operate:'add',
// //
loading: true, loading: true,
@ -194,6 +213,7 @@ export default {
fullName: null, fullName: null,
sort: null, sort: null,
isDefault: null, isDefault: null,
status:null,
}, },
// //
form: {}, form: {},
@ -222,8 +242,26 @@ export default {
this.getDicts("sys_yes_no").then(response => { this.getDicts("sys_yes_no").then(response => {
this.statusOptions = response.data; this.statusOptions = response.data;
}); });
this.getDicts("sys_yes_no").then(response => {
this.statusOptionsSearch = response.data;
this.statusOptionsSearch.unshift({
dictValue:null,
dictLabel:'全部'
})
});
}, },
methods: { 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() { getList() {
this.loading = true; this.loading = true;

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

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

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

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

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

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

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

@ -8,8 +8,10 @@
<el-input size="medium" v-model="queryParams.username" placeholder="请输入商户名称" <el-input size="medium" v-model="queryParams.username" placeholder="请输入商户名称"
@keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" /> @keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" />
</el-form-item> </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" /> @keyup.enter.native="handleQuery" style="width: 180px; border-color: #e6f1ff" />
</el-form-item> </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="noOrder" />
<el-table-column label="商户订单号" align="center" prop="outTradeNo" /> <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="batchNo" min-width="120" />
<el-table-column :label="'代付金额'" align="center" prop="tranAmt"> <el-table-column :label="'代付金额'" align="center" prop="tranAmt">
<template slot-scope="scope"> <template slot-scope="scope">
@ -93,7 +93,14 @@
<el-table-column label="卡号" align="center" prop="cardNumber" /> <el-table-column label="卡号" align="center" prop="cardNumber" />
<el-table-column label="开户名" align="center" prop="accountName" /> <el-table-column label="开户名" align="center" prop="accountName" />
<el-table-column label="开户行" align="center" prop="branchName" /> <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="notifyStatus" :formatter="notifyStatusFormat" /> -->
<el-table-column label="备注" align="center" prop="orderMsg" /> <el-table-column label="备注" align="center" prop="orderMsg" />
@ -119,6 +126,18 @@ export default {
name: "otcStoreDaiFuOrder", name: "otcStoreDaiFuOrder",
components: { 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() { data() {
return { return {
dateRange: [], dateRange: [],
@ -168,9 +187,17 @@ export default {
this.getDicts("d_order_status").then(response => { this.getDicts("d_order_status").then(response => {
this.sysOrderStatus = response.data; this.sysOrderStatus = response.data;
this.sysOrderStatus.unshift({
dictLabel:'全部',
dictValue:null,
});
}); });
this.getDicts("notify_status").then(response => { this.getDicts("notify_status").then(response => {
this.notifyStatusOptions = response.data; this.notifyStatusOptions = response.data;
this.notifyStatusOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
}); });
}, },
methods: { methods: {

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

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

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

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

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

@ -1,10 +1,28 @@
<template> <template>
<div> <div>
<div class="user-info-head" @click="editCropper()"><img v-bind:src="options.img" title="点击上传头像" class="img-circle img-lg" /></div> <!-- <div class="user-info-head"><img v-bind:src="options.img" title="点击上传头像"
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened" @close="closeDialog"> 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-row>
<el-col :xs="24" :md="12" :style="{height: '350px'}"> <el-col :xs="24" :md="12" :style="{ height: '350px' }">
<vue-cropper <!-- <vue-cropper
ref="cropper" ref="cropper"
:img="options.img" :img="options.img"
:info="true" :info="true"
@ -15,16 +33,20 @@
:outputType="options.outputType" :outputType="options.outputType"
@realTime="realTime" @realTime="realTime"
v-if="visible" v-if="visible"
/> /> -->
</el-col> </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"> <div class="avatar-upload-preview">
<img :src="previews.url" :style="previews.img" /> <img :src="form.adImgAbs" :style="previews.img" />
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<br /> <br />
<el-row> <!-- <el-row>
<el-col :lg="2" :sm="3" :xs="3"> <el-col :lg="2" :sm="3" :xs="3">
<el-upload action="#" :http-request="requestUpload" :show-file-list="false" :before-upload="beforeUpload"> <el-upload action="#" :http-request="requestUpload" :show-file-list="false" :before-upload="beforeUpload">
<el-button size="small"> <el-button size="small">
@ -33,30 +55,31 @@
</el-button> </el-button>
</el-upload> </el-upload>
</el-col> </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-button icon="el-icon-plus" size="small" @click="changeScale(1)"></el-button>
</el-col> </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-button icon="el-icon-minus" size="small" @click="changeScale(-1)"></el-button>
</el-col> </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-button icon="el-icon-refresh-left" size="small" @click="rotateLeft()"></el-button>
</el-col> </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-button icon="el-icon-refresh-right" size="small" @click="rotateRight()"></el-button>
</el-col> </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-button type="primary" size="small" @click="uploadImg()"> </el-button>
</el-col> </el-col>
</el-row> </el-row> -->
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import qs from 'qs'
import store from "@/store"; import store from "@/store";
import { VueCropper } from "vue-cropper"; import { VueCropper } from "vue-cropper";
import { uploadAvatar } from "@/api/system/user"; import { uploadAvatar, uploadAvatarFile } from "@/api/system/user";
import { debounce } from '@/utils' import { debounce } from '@/utils'
export default { export default {
@ -66,8 +89,23 @@ export default {
type: Object type: Object
} }
}, },
watch: {
user: {
handler(newVal, oldVal) {
if (newVal) {
this.form.adImgAbs = newVal.avatar
this.$forceUpdate()
}
},
deep: true, //
immediate: true, //
}
},
data() { data() {
return { return {
form: {},
updateAddress: `${process.env.VUE_APP_BASE_API}/system/ftpfile/`,
// //
open: false, open: false,
// cropper // cropper
@ -80,13 +118,46 @@ export default {
autoCropWidth: 200, // autoCropWidth: 200, //
autoCropHeight: 200, // autoCropHeight: 200, //
fixedBox: true, // fixedBox: true, //
outputType:"png" // PNG outputType: "png" // PNG
}, },
previews: {}, previews: {},
resizeHandler: null resizeHandler: null
}; };
}, },
methods: { 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() { editCropper() {
this.open = true; this.open = true;
@ -136,9 +207,12 @@ export default {
// //
uploadImg() { uploadImg() {
this.$refs.cropper.getCropBlob(data => { this.$refs.cropper.getCropBlob(data => {
console.log(data)
let formData = new FormData(); let formData = new FormData();
formData.append("avatarfile", data); // avatarfile
uploadAvatar(formData).then(response => { formData.append("path", 'ad');
formData.append("file", data);
uploadAvatarFile(formData).then(response => {
this.open = false; this.open = false;
this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl; this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl;
store.commit('SET_AVATAR', this.options.img); store.commit('SET_AVATAR', this.options.img);

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

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

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

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

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

@ -1,21 +1,20 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="bg bg-white"> <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 v-loading="loading" :data="UserCertificationList">
<el-table-column label="姓名" align="center" prop="name" /> <el-table-column label="用户名" align="center" prop="name" />
<el-table-column label="证件类型" align="center" prop="typeName" /> <el-table-column label="邮箱" align="center" prop="email" />
<el-table-column label="身份证号" align="center" prop="certId" /> <el-table-column label="用户类型" align="center" prop="userType" :formatter="userRoleFormat" />
<el-table-column label="审核时间" align="center" prop="auditTime" width="180">
<template slot-scope="scope"> <el-table-column label="注册时间" align="center" prop="addTime" width="180">
<span>{{ parseTime(scope.row.auditTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="添加时间" align="center" prop="addTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.addTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.addTime, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="认证类型" align="center" prop="authType" :formatter="authTypeFormat" />
</el-table> </el-table>
<div class="flex status-con" v-if="UserCertificationList.length" style="align-items: flex-start;flex-wrap:wrap"> <div class="flex status-con" v-if="UserCertificationList.length" style="align-items: flex-start;flex-wrap:wrap">
@ -198,6 +197,7 @@ export default {
}, },
data() { data() {
return { return {
userRoleOptions: [],
openApple: false, openApple: false,
kycData: {}, kycData: {},
storeData: {}, storeData: {},
@ -234,7 +234,7 @@ export default {
}, },
// //
formApple: { formApple: {
auditReason:null, auditReason: null,
}, },
// //
rulesApple: { rulesApple: {
@ -248,6 +248,9 @@ export default {
}; };
}, },
created() { created() {
this.getDicts("user_role").then(response => {
this.userRoleOptions = response.data;
});
this.getDicts("audit_status").then(response => { this.getDicts("audit_status").then(response => {
this.auditStatusOptions = response.data; this.auditStatusOptions = response.data;
}); });
@ -258,6 +261,10 @@ export default {
this.getList() this.getList()
}, },
methods: { methods: {
//
userRoleFormat(row, column) {
return this.selectDictLabel(this.userRoleOptions, row.userRole);
},
// //
previewImage(abUrl) { previewImage(abUrl) {
this.srcList[0] = abUrl; this.srcList[0] = abUrl;
@ -278,13 +285,13 @@ export default {
handleFail(v, d) { handleFail(v, d) {
this.resetApple() this.resetApple()
this.formApple.auditStatus = v this.formApple.auditStatus = v
this.formApple.witNo=d.witNo this.formApple.witNo = d.witNo
this.openApple = true this.openApple = true
}, },
handleSuccess(v, d) { handleSuccess(v, d) {
this.resetApple(); this.resetApple();
this.open = true; this.open = true;
this.formApple.witNo=d.witNo this.formApple.witNo = d.witNo
this.formApple.auditStatus = v this.formApple.auditStatus = v
}, },
/** 审核提交 */ /** 审核提交 */
@ -440,7 +447,7 @@ export default {
} }
.title { .title {
font-size: 24px; font-size: 16px;
font-weight: 500; font-weight: 500;
color: #333; color: #333;
} }
@ -458,7 +465,7 @@ export default {
} }
.status .text { .status .text {
font-size: 16px; font-size: 12px;
font-weight: 500; font-weight: 500;
} }
</style> </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="adImg" />-->
<el-table-column label="广告图片" align="center" prop="adImgAbs" > <el-table-column label="广告图片" align="center" prop="adImgAbs" >
<template slot-scope="scope"> <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" style="width: 120px; height: 120px"
:src="scope.row.adImgAbs" :src="scope.row.adImgAbs"
@click="previewImage(scope.row.adImgAbs)" @click="previewImage(scope.row.adImgAbs)"
:preview-src-list="srcList" :preview-src-list="srcList"
></el-image> ></el-image>
<el-icon v-if="scope.row.adImgAbs==null || scope.row.adImgAbs==''" <span v-else></span>
style="width: 120px; height: 120px"
></el-icon>
</template> </template>
<!-- <template width="90" slot-scope="scope">--> <!-- <template width="90" slot-scope="scope">-->
<!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.adImgAbs">--> <!-- <img style="width:80px;height:80px;border:none;" :src="scope.row.adImgAbs">-->
@ -140,14 +138,12 @@
<el-button <el-button
size="medium" size="medium"
type="text" type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['ad:ad:edit']" v-hasPermi="['ad:ad:edit']"
>修改</el-button> >修改</el-button>
<el-button <el-button
size="medium" size="medium"
type="text" type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['ad:ad:remove']" v-hasPermi="['ad:ad:remove']"
>删除</el-button> >删除</el-button>
@ -389,16 +385,18 @@ import $ from "jquery";
}; };
}, },
created() { created() {
console.log(this.updateAddress)
this.getList(); this.getList();
this.getDicts("terminal_type").then(response => { this.getDicts("terminal_type").then(response => {
this.terminalTypeOptions = response.data; this.terminalTypeOptions = response.data;
}); });
this.getDicts("ad_content_type").then(response => { this.getDicts("ad_content_type").then(response => {
this.adContentTypeOptions = response.data; this.adContentTypeOptions = response.data;
}); });
this.getDicts("sys_yes_no").then(response => { this.getDicts("sys_yes_no").then(response => {
this.statusOptions = response.data; this.statusOptions = response.data;
}); });
this.getDicts("project_language").then(response => { this.getDicts("project_language").then(response => {
this.projectLanguageOptions = response.data; this.projectLanguageOptions = response.data;

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

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

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

@ -2,8 +2,8 @@
<div class="app-container"> <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 :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="姓名" prop="name"> <el-form-item label="昵称" prop="name">
<el-input v-model="queryParams.name" placeholder="请输入姓名" clearable size="medium" <el-input v-model="queryParams.name" placeholder="请输入昵称" clearable size="medium"
@keyup.enter.native="handleQuery" /> @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
@ -35,18 +35,25 @@
/> />
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-form-item label="会员角色" prop="userRole"> <el-form-item label="用户类型" prop="userRole">
<el-select v-model="queryParams.userRole" placeholder="请选择会员角色" clearable size="medium"> <el-select v-model="queryParams.userRole" placeholder="请选择用户类型" clearable size="medium">
<el-option v-for="dict in userRoleOptions" :key="dict.dictValue" :label="dict.dictLabel" <el-option v-for="dict in userRoleOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" /> :value="dict.dictValue" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="认证级" prop="authLevel"> <el-form-item label="认证级" prop="authLevel">
<el-select v-model="queryParams.authLevel" placeholder="请选择用户认证级" clearable size="medium"> <el-select v-model="queryParams.authLevel" placeholder="请选择用户认证级" clearable size="medium">
<el-option v-for="dict in authLevelOptions" :key="dict.dictValue" :label="dict.dictLabel" <el-option v-for="dict in authLevelOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" /> :value="dict.dictValue" />
</el-select> </el-select>
</el-form-item> </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-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button> <el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button> <el-button size="medium" @click="resetQuery">重置</el-button>
@ -96,42 +103,57 @@
</el-row> </el-row>
<el-table v-loading="loading" :data="userCustomerList" @selection-change="handleSelectionChange"> <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="用户id" align="center" prop="userId" /> <el-table-column label="昵称" align="center" prop="nickname" />
<el-table-column label="姓名" align="center" prop="name" /> <el-table-column label="头像" align="center" prop="headImgPath">
<el-table-column label="头像路径" align="center" prop="headImgPath"> <template slot-scope="scope">
<template width="90" slot-scope="scope">
<el-image style="width: 80px; height: 80px" :src="scope.row.headImgPath" <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="邮箱" align="center" prop="email" /> <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="headImgPath">
<!-- <el-table-column label="父级编号" align="center" prop="parentId" /> --> <template slot-scope="scope">
{{scope.row.authLevel==1?'未认证':scope.row.authLevel==2?'KYC认证':scope.row.authLevel==3?'商户认证':'pro认证'}}
<el-table-column label="创建时间" align="center" prop="addTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.addTime, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </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"> <template slot-scope="scope">
<el-switch v-model="scope.row.status" active-value="normal" inactive-value="frozen" <el-switch v-model="scope.row.status" active-value="normal" inactive-value="frozen"
@change="handleStatusChange(scope.row)"></el-switch> @change="handleStatusChange(scope.row)"></el-switch>
</template> </template>
</el-table-column> </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"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-if="scope.row.authLevel == '1' || scope.row.authLevel == '2' || scope.row.authLevel == '3'" size="medium" type="text" <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> </el-button>
</template> </template>
</el-table-column> --> </el-table-column> -->
</el-table> </el-table>
@ -185,6 +207,7 @@ export default {
// //
userCustomerList: [], userCustomerList: [],
dateRange: [],
statusOptions: [], statusOptions: [],
@ -247,23 +270,51 @@ export default {
this.getList(); this.getList();
this.getDicts("user_status").then(response => { this.getDicts("user_status").then(response => {
this.statusOptions = response.data; this.statusOptions = response.data;
this.statusOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
}); });
this.getDicts("source").then(response => { this.getDicts("source").then(response => {
this.sourceOptions = response.data; this.sourceOptions = response.data;
this.sourceOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
}); });
this.getDicts("user_role").then(response => { this.getDicts("user_role").then(response => {
this.userRoleOptions = response.data; this.userRoleOptions = response.data;
this.userRoleOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
}); });
this.getDicts("auth_level").then(response => { this.getDicts("auth_level").then(response => {
this.authLevelOptions = response.data; this.authLevelOptions = response.data;
this.authLevelOptions.unshift({
dictLabel:'全部',
dictValue:null,
});
}); });
}, },
methods: { methods: {
handleMoreView(row) {
this.$router.push(
{
name: 'userCusDetail', params: { row: row }
})
},
handleView(row) {
this.$router.push(
{
name: 'walletList', params: { row: row }
})
},
/** 查询个人用户列表 */ /** 查询个人用户列表 */
getList() { getList() {
this.loading = true; this.loading = true;
listUserCustomer(this.queryParams).then(response => { listUserCustomer(this.addSESDateRange(this.queryParams, this.dateRange)).then(response => {
this.userCustomerList = response.rows; this.userCustomerList = response.rows;
this.total = Number(response.total); this.total = Number(response.total);
this.loading = false; this.loading = false;
@ -284,6 +335,7 @@ export default {
return this.selectDictLabel(this.userRoleOptions, row.userRole); return this.selectDictLabel(this.userRoleOptions, row.userRole);
}, },
// //
authLevelFormat(row, column) { authLevelFormat(row, column) {
return this.selectDictLabel(this.authLevelOptions, row.authLevel); return this.selectDictLabel(this.authLevelOptions, row.authLevel);
@ -313,30 +365,8 @@ export default {
// //
reset() { reset() {
this.form = { 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"); this.resetForm("form");
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
@ -346,6 +376,7 @@ export default {
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.dateRange = [];
this.resetForm("queryForm"); this.resetForm("queryForm");
this.handleQuery(); 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> <template>
<div class="app-container"> <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 :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<!-- <el-form-item label="用户编号" prop="userId"> <!-- <el-form-item label="用户编号" prop="userId">
<el-input <el-input
v-model="queryParams.userId" v-model="queryParams.userId"
placeholder="请输入用户编号" placeholder="请输入用户编号"
@ -12,129 +12,86 @@
/> />
</el-form-item> --> </el-form-item> -->
<el-form-item label="用户姓名" prop="userName"> <el-form-item label="用户名" prop="userName">
<el-input <el-input v-model="queryParams.userName" placeholder="请输入用户名" clearable size="medium"
v-model="queryParams.userName" @keyup.enter.native="handleQuery" />
placeholder="请输入用户姓名" </el-form-item>
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="转账类型" prop="type"> <el-form-item label="操作类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择转账类型" clearable size="medium"> <el-select v-model="queryParams.type" placeholder="请选择操作类型" clearable size="medium">
<el-option v-for="dict in typeOptions" :key="dict.dictValue" :label="dict.dictLabel" <el-option v-for="dict in typeOptionsSearch" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" /> :value="dict.dictValue" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="币种" prop="coinId"> <el-form-item label="币种" prop="coinId">
<el-input <el-input v-model="queryParams.coinId" placeholder="请输入币种" clearable size="medium"
v-model="queryParams.coinId" @keyup.enter.native="handleQuery" />
placeholder="请输入币种" </el-form-item>
clearable
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="业务编号" prop="serviceId"> <el-form-item label="操作时间">
<el-input <el-date-picker v-model="dateRange" size="medium" style="width: 340px" value-format="yyyy-MM-dd HH:mm:ss"
v-model="queryParams.serviceId" type="datetimerange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
placeholder="请输入业务编号" :unlink-panels="true" :default-time="['00:00:00', '23:59:59']"></el-date-picker>
clearable </el-form-item>
size="medium"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" size="medium" @click="handleQuery">搜索</el-button> <el-button type="primary" size="medium" @click="handleQuery">搜索</el-button>
<el-button size="medium" @click="resetQuery">重置</el-button> <el-button size="medium" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div class="bg bg-white"> <div class="bg bg-white">
<el-row :gutter="10" class="m-b-16"> <el-row :gutter="10" class="m-b-16">
<el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button <el-button type="primary" size="medium" @click="handleAdd"
type="primary" v-hasPermi="['user:walletAssetsRecord:add']">新增</el-button>
size="medium" </el-col>
@click="handleAdd" <el-col :span="1.5">
v-hasPermi="['user:walletAssetsRecord:add']" <el-button type="primary" size="medium" :disabled="single" @click="handleUpdate"
>新增</el-button> v-hasPermi="['user:walletAssetsRecord:edit']">修改</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="primary" size="medium" :disabled="multiple" @click="handleDelete"
type="primary" v-hasPermi="['user:walletAssetsRecord:remove']">删除</el-button>
size="medium" </el-col> -->
:disabled="single" <el-col :span="1.5">
@click="handleUpdate" <el-button type="primary" size="medium" @click="handleExport"
v-hasPermi="['user:walletAssetsRecord:edit']" v-hasPermi="['user:walletAssetsRecord:export']">导出</el-button>
>修改</el-button> </el-col>
</el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
<el-col :span="1.5"> </el-row>
<el-button
type="primary" <el-table v-loading="loading" :data="walletAssetsRecordList" @selection-change="handleSelectionChange">
size="medium" <el-table-column label="用户名称" align="center" prop="userName" />
:disabled="multiple" <el-table-column label="操作类型" align="center" prop="type" :formatter="typeFormat" />
@click="handleDelete" <el-table-column label="币种" align="center" prop="coinId" />
v-hasPermi="['user:walletAssetsRecord:remove']" <el-table-column label="数量" align="center" prop="num" />
>删除</el-button> <!-- <el-table-column label="手续费" align="center" prop="fee" /> -->
</el-col> <!-- <el-table-column label="类型 完成complete" align="center" prop="status" /> -->
<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">
<el-table-column type="selection" width="55" align="center" /> <template slot-scope="scope">
<el-table-column label="流水编号" align="center" prop="id" /> {{ scope.row.num + scope.row.remainBalance }}
<!-- <el-table-column label="用户编号" align="center" prop="userId" /> --> </template>
<el-table-column label="用户姓名" align="center" prop="userName" /> </el-table-column>
<el-table-column label="转账类型" align="center" prop="type" :formatter="typeFormat"/> <el-table-column label="变动后余额" align="center" prop="remainBalance" />
<el-table-column label="币种" align="center" prop="coinId" /> <el-table-column label="操作时间" align="center" prop="createTime" />
<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 <!-- <el-table-column label="是否显示" align="center" prop="isShow" /> -->
v-show="total>0" <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
:total="total" <template slot-scope="scope">
:page.sync="queryParams.pageNum" <el-button size="medium" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
:limit.sync="queryParams.pageSize" v-hasPermi="['user:walletAssetsRecord:edit']">修改</el-button>
@pagination="getList" <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> </div>
<!-- 添加或修改钱包资金流水记录对话框 --> <!-- 添加或修改钱包资金流水记录对话框 -->
@ -144,8 +101,9 @@
<el-input v-model="form.userId" placeholder="请输入用户编号" /> <el-input v-model="form.userId" placeholder="请输入用户编号" />
</el-form-item> </el-form-item>
<el-form-item label="转账类型" prop="type"> <el-form-item label="转账类型" prop="type">
<el-select v-model="form.type" placeholder="请选择转账类型"> <el-select v-model="form.type" placeholder="请选择转账类型" clearable size="medium">
<el-option label="请选择字典生成" value="" /> <el-option v-for="dict in typeOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="币种" prop="coinId"> <el-form-item label="币种" prop="coinId">
@ -160,7 +118,7 @@
<el-form-item label="手续费" prop="fee"> <el-form-item label="手续费" prop="fee">
<el-input v-model="form.fee" placeholder="请输入手续费" /> <el-input v-model="form.fee" placeholder="请输入手续费" />
</el-form-item> </el-form-item>
<el-form-item label="类型 完成complete"> <el-form-item label="类型">
<el-radio-group v-model="form.status"> <el-radio-group v-model="form.status">
<el-radio label="1">请选择字典生成</el-radio> <el-radio label="1">请选择字典生成</el-radio>
</el-radio-group> </el-radio-group>
@ -169,10 +127,7 @@
<el-input v-model="form.remainBalance" placeholder="请输入剩下金额" /> <el-input v-model="form.remainBalance" placeholder="请输入剩下金额" />
</el-form-item> </el-form-item>
<el-form-item label="添加时间" prop="createTime"> <el-form-item label="添加时间" prop="createTime">
<el-date-picker clearable size="medium" <el-date-picker clearable size="medium" v-model="form.createTime" type="date" value-format="yyyy-MM-dd"
v-model="form.createTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择添加时间"> placeholder="选择添加时间">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
@ -200,6 +155,7 @@ export default {
}, },
data() { data() {
return { return {
dateRange: [],
// //
loading: true, loading: true,
// //
@ -214,7 +170,8 @@ export default {
total: 0, total: 0,
// //
walletAssetsRecordList: [], walletAssetsRecordList: [],
typeOptions: [], typeOptions: [],
typeOptionsSearch:[],
// //
title: "", title: "",
// //
@ -232,7 +189,8 @@ export default {
status: null, status: null,
remainBalance: null, remainBalance: null,
serviceId: null, serviceId: null,
isShow: null isShow: null,
userName:null,
}, },
// //
form: {}, form: {},
@ -242,13 +200,20 @@ export default {
{ required: true, message: "用户编号不能为空", trigger: "blur" } { required: true, message: "用户编号不能为空", trigger: "blur" }
], ],
type: [ 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() { created() {
this.getList(); 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.getDicts("assets_type").then(response => {
this.typeOptions = response.data; this.typeOptions = response.data;
}); });
@ -257,7 +222,7 @@ export default {
/** 查询钱包资金流水记录列表 */ /** 查询钱包资金流水记录列表 */
getList() { getList() {
this.loading = true; this.loading = true;
listWalletAssetsRecord(this.queryParams).then(response => { listWalletAssetsRecord(this.addSESDateRange(this.queryParams, this.dateRange)).then(response => {
this.walletAssetsRecordList = response.rows; this.walletAssetsRecordList = response.rows;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;
@ -276,20 +241,8 @@ export default {
// //
reset() { reset() {
this.dateRange = [];
this.form = { 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"); this.resetForm("form");
}, },
@ -300,13 +253,14 @@ export default {
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.dateRange = [];
this.resetForm("queryForm"); this.resetForm("queryForm");
this.handleQuery(); this.handleQuery();
}, },
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map(item => item.id)
this.single = selection.length!==1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
@ -349,28 +303,28 @@ export default {
handleDelete(row) { handleDelete(row) {
const ids = row.id || this.ids; const ids = row.id || this.ids;
this.$confirm('是否确认删除钱包资金流水记录编号为"' + ids + '"的数据项?', "警告", { this.$confirm('是否确认删除钱包资金流水记录编号为"' + ids + '"的数据项?', "警告", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning" type: "warning"
}).then(function() { }).then(function () {
return delWalletAssetsRecord(ids); return delWalletAssetsRecord(ids);
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.msgSuccess("删除成功"); this.msgSuccess("删除成功");
}) })
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
const queryParams = this.queryParams; const queryParams = this.queryParams;
this.$confirm('是否确认导出所有钱包资金流水记录数据项?', "警告", { this.$confirm('是否确认导出所有钱包资金流水记录数据项?', "警告", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning" type: "warning"
}).then(function() { }).then(function () {
return exportWalletAssetsRecord(queryParams); return exportWalletAssetsRecord(queryParams);
}).then(response => { }).then(response => {
this.download(response.msg); this.download(response.msg);
}) })
} }
} }
}; };

Loading…
Cancel
Save