Ver código fonte

Weenier 168otc项目部署 0630

wesmiler 3 anos atrás
pai
commit
4553231fb3

+ 6 - 1
addons/admin/src/App.vue

@@ -2,4 +2,9 @@
   <div id="app">
   <div id="app">
     <router-view/>
     <router-view/>
   </div>
   </div>
-</template>
+</template>
+<style>
+.chat-dialog .el-dialog__body {
+    padding: 0px !important;
+}
+</style>

+ 3 - 2
addons/admin/src/config/setting.js

@@ -4,8 +4,9 @@
 export default {
 export default {
     version: '1.0',
     version: '1.0',
     name: '系统后台管理',  // 项目名称
     name: '系统后台管理',  // 项目名称
-    baseURL: 'http://127.0.5.10/',  // 接口地址
-    // baseURL: 'http://otc.gxnwsoft.com/',  // 接口地址
+    // baseURL: 'http://127.0.5.10/',  // 接口地址
+    baseURL: 'http://otc.gxnwsoft.com/',  // 接口地址
+    socketUrl: 'ws://127.0.0.1:6420',  // Socket地址
     whiteList: ['/login', '/forget'],  // 路由白名单(不需要登录的)
     whiteList: ['/login', '/forget'],  // 路由白名单(不需要登录的)
     keepAliveList: [],  // 需要缓存的组件名称
     keepAliveList: [],  // 需要缓存的组件名称
     menuUrl: '/index/getMenuList',  // 菜单数据接口
     menuUrl: '/index/getMenuList',  // 菜单数据接口

+ 217 - 0
addons/admin/src/views/common/fragment/Chat.vue

@@ -0,0 +1,217 @@
+<!-- 修改密码弹窗 -->
+<template>
+    <el-dialog :custom-class="'chat-dialog'" :title="title" :visible.sync="show" width="480px" @closed="onClose"
+               :append-to-body="true" :show-close="true" :lock-scroll="true">
+        <div class="chat-box">
+            <div class="chat-head">
+                <span>您正在与sss对话</span>
+            </div>
+            <div class="message-box">
+
+            </div>
+            <div class="send-box">
+                <div class="send-menu">
+                    <i class="el-icon-picture-outline"></i>
+                </div>
+                <div class="send-content">
+                    <el-input type="textarea" v-model="formData.message" placeholder="请输入消息内容" maxlength="200"
+                              show-word-limit></el-input>
+                </div>
+            </div>
+        </div>
+        <div slot="footer">
+            <el-button @click="clear">清空</el-button>
+            <el-button type="primary" @click="send">发送</el-button>
+        </div>
+    </el-dialog>
+</template>
+
+<script>
+import setting from "@/config/setting";
+
+export default {
+    name: "EleTradePassword",
+    props: {
+        show: {
+            type: Boolean,
+            default: false,
+        },
+        title: {
+            type: String,
+            default: '客服对话',
+            required: true
+        },
+        chat_uid: {
+            type: Number,
+            default: 0,
+        },
+        info: {
+            type: Object,
+
+        },
+    },
+    data() {
+        return {
+            formData: {
+                type: 1,
+                message_type: 1,
+                message: '',
+                form_uid: 0,
+                to_uid: 0,
+                chat_key: '',
+            },  // 表单数据
+            sendData: {},
+            loading: false,  // 按钮loading
+            socket: null,
+            userInfo: {},
+            reconnect: 0,
+            heartbeat: {
+                timeout: 20000,
+                timerId: null,
+                serverId: null,
+                reset: function () {
+                    console.log('reset')
+                    clearTimeout(this.timerId);
+                    clearTimeout(this.serverId);
+                    return this;
+                },
+                start: function (socket) {
+                    let _this = this;
+                    if(socket){
+                        socket.send('ping');
+                    }
+                    console.log(socket)
+                    _this.timerId = setTimeout(function () {
+                        console.log('ping');
+                       if(socket){
+                           socket.send('ping');
+                       }
+                        _this.serverId = setTimeout(function () {
+                            console.log('heartbeat-close');
+                            if(socket){
+                                socket.close();
+                            }
+                        }, 10*_this.timeout)
+                    }, _this.timeout)
+                }
+            },
+
+        }
+    },
+    created() {
+        this.userInfo = this.$store.state.user.user
+        this.formData.form_uid = this.userInfo.id
+        this.formData.to_uid = this.userInfo.id==1003? 1005: 1003;
+        this.initChat('');
+    },
+    mounted() {
+
+    },
+    destroy() {
+
+    },
+    methods: {
+        initChat(data) {
+
+            let _this = this;
+            try {
+                console.log(setting.socketUrl)
+                _this.socket = new WebSocket(setting.socketUrl);
+                _this.socket.onopen = function (e) {
+                    console.log(e)
+                    if(data){
+                        _this.socket.send({op:'bind',from_uid: _this.formData.form_uid, scene: 'chat'});
+                    }
+
+                    _this.heartbeat.start(_this.socket);
+                }
+                _this.socket.onmessage = function (e) {
+                    if(e.data !== 'pong'){
+                        if(e.data.success == false){
+                            _this.onError(e);
+                        }else{
+                            _this.onMessage(e);
+                        }
+                    }
+                }
+                _this.socket.onclose = function (e) {
+                    _this.onClose(e);
+                }
+                _this.socket.onerror = function (e) {
+                    _this.onError(e);
+                }
+                return true;
+            } catch (e){
+                console.log(e)
+                return false;
+            }
+        },
+        // 错误
+        onError(e) {
+            console.log(e)
+            this.$message.closeAll();
+            // this.$message.error('连接错误:'+e.msg);
+        },
+        onOpen(e) {
+            console.log(e)
+
+        },
+        onMessage(e) {
+            console.log(e)
+        },
+        onClose(e) {
+            let _this = this
+            console.log(e)
+            this.socket.close();
+
+            // 自动重连次数
+            if(_this.reconnect <= 20){
+                setTimeout(function(){
+                    if(!_this.initChat('')){
+                        _this.reconnect++;
+                    }
+                }, 2000)
+            }
+
+        },
+        /* 发送消息 */
+        send() {
+            let _this = this
+            if(_this.socket){
+                _this.heartbeat.reset().start(_this.socket);
+                _this.socket.send(JSON.stringify(this.formData));
+            }else{
+                _this.initChat(JSON.stringify(this.formData));
+            }
+
+
+        },
+        /* 清空 */
+        clear() {
+            this.formData.message = '';
+        },
+    }
+}
+</script>
+<style scoped>
+
+.message-box {
+    padding: 10px 10px 10px 18px;
+    height: 320px;
+    width: calc(100% - 28px);
+    overflow-y: scroll;
+}
+
+.send-box {
+    border-top: 1px solid #ededed;
+    padding: 10px 10px 0px;
+}
+
+.send-content {
+    width: 100%;
+}
+
+.send-content .el-textarea__inner {
+    border-radius: 0;
+}
+</style>

+ 129 - 94
addons/admin/src/views/common/layout/Layout.vue

@@ -1,21 +1,26 @@
 <!-- 页面布局 -->
 <!-- 页面布局 -->
 <template>
 <template>
-  <div :class="layoutClass">
-    <ele-header/><!-- 顶栏 -->
-    <el-container class="ele-admin-main">
-      <ele-sidebar v-if="showSidebar"/><!-- 侧边栏 -->
-      <div class="ele-admin-body">
-        <ele-tabs v-if="theme.showTabs"/><!-- 多页签 -->
-        <keep-alive :include="$setting.keepAliveList">
-          <router-view v-if="!theme.reload"/><!-- 路由出口 -->
-        </keep-alive>
-      </div>
-    </el-container>
-    <div class="ele-admin-shade" @click="collapse"></div><!-- 小屏幕下遮罩层 -->
-    <ele-setting v-if="$setting.showSetting"/><!-- 主题设置抽屉 -->
-    <ele-password/><!-- 修改密码弹窗 -->
-    <ele-trade-password/><!-- 修改交易密码弹窗 -->
-  </div>
+    <div :class="layoutClass">
+        <ele-header/><!-- 顶栏 -->
+        <el-container class="ele-admin-main">
+            <ele-sidebar v-if="showSidebar"/><!-- 侧边栏 -->
+            <div class="ele-admin-body">
+                <ele-tabs v-if="theme.showTabs"/><!-- 多页签 -->
+                <keep-alive :include="$setting.keepAliveList">
+                    <router-view v-if="!theme.reload"/><!-- 路由出口 -->
+                </keep-alive>
+            </div>
+        </el-container>
+        <div class="ele-admin-shade" @click="collapse"></div><!-- 小屏幕下遮罩层 -->
+        <ele-setting v-if="$setting.showSetting"/><!-- 主题设置抽屉 -->
+        <ele-password/><!-- 修改密码弹窗 -->
+        <ele-trade-password/><!-- 修改交易密码弹窗 -->
+        <div class="chat-message">
+            <span class="icons" @click="showChat=true"><i class="el-icon-message-solid"></i></span>
+        </div>
+        <Chat title="客服聊天" :show="showChat"></Chat>
+    </div>
+
 </template>
 </template>
 
 
 <script>
 <script>
@@ -26,91 +31,121 @@ import EleTabs from './Tabs'
 import EleSetting from '../fragment/Setting'
 import EleSetting from '../fragment/Setting'
 import ElePassword from '../fragment/Password'
 import ElePassword from '../fragment/Password'
 import EleTradePassword from '../fragment/TradePassword'
 import EleTradePassword from '../fragment/TradePassword'
+import Chat from '../fragment/Chat'
 
 
 export default {
 export default {
-  name: "EleLayout",
-  components: {EleHeader, EleSidebar, EleTabs, EleSetting, ElePassword, EleTradePassword},
-  computed: {
-    /* 框架布局class */
-    layoutClass() {
-      return [
-        'ele-admin-layout',
-        {'ele-layout-collapse': this.theme.collapse},  // 折叠状态
-        {'ele-layout-fixed': this.theme.fixedLayout},  // 固定顶栏和侧栏
-        {'ele-side-dark': this.theme.sideStyle === 1},  // 暗色侧栏
-        {'ele-side-color-icon': this.theme.colorfulIcon},  // 侧栏彩色图标
-        {'ele-head-dark': this.theme.headStyle !== 0},  // 暗色顶栏
-        {'ele-logo-auto-size': this.theme.logoAutoSize || this.theme.layoutStyle === 1},  // logo宽度自适应
-        {'ele-tabs-show': this.theme.showTabs},  // 开启多页签
-        ['', 'ele-tab-dot', 'ele-tab-card'][this.theme.tabStyle],  // 页签风格
-        {'ele-admin-body-limit': !this.theme.bodyFull}  // 主体内容定宽
-      ]
+    name: "EleLayout",
+    components: {EleHeader, EleSidebar, EleTabs, EleSetting, ElePassword, EleTradePassword, Chat},
+    data() {
+        return {
+            showChat: false,
+        }
     },
     },
-    /* 是否显示侧边栏 */
-    showSidebar() {
-      return this.theme.layoutStyle !== 1 || this.theme.screenWidth < 768;  // 小屏幕强制左侧菜单模式
+    computed: {
+        /* 框架布局class */
+        layoutClass() {
+            return [
+                'ele-admin-layout',
+                {'ele-layout-collapse': this.theme.collapse},  // 折叠状态
+                {'ele-layout-fixed': this.theme.fixedLayout},  // 固定顶栏和侧栏
+                {'ele-side-dark': this.theme.sideStyle === 1},  // 暗色侧栏
+                {'ele-side-color-icon': this.theme.colorfulIcon},  // 侧栏彩色图标
+                {'ele-head-dark': this.theme.headStyle !== 0},  // 暗色顶栏
+                {'ele-logo-auto-size': this.theme.logoAutoSize || this.theme.layoutStyle === 1},  // logo宽度自适应
+                {'ele-tabs-show': this.theme.showTabs},  // 开启多页签
+                ['', 'ele-tab-dot', 'ele-tab-card'][this.theme.tabStyle],  // 页签风格
+                {'ele-admin-body-limit': !this.theme.bodyFull}  // 主体内容定宽
+            ]
+        },
+        /* 是否显示侧边栏 */
+        showSidebar() {
+            return this.theme.layoutStyle !== 1 || this.theme.screenWidth < 768;  // 小屏幕强制左侧菜单模式
+        },
+        ...mapGetters(['theme']),
     },
     },
-    ...mapGetters(['theme']),
-  },
-  mounted() {
-    this.getUserInfo();
-    if (this.$setting.watchResize) {
-      window.addEventListener('resize', this.onWindowResize);
-    }
-  },
-  methods: {
-    /* 获取当前用户信息 */
-    getUserInfo() {
-      if (this.$setting.userUrl) {
-        this.$http.get(this.$setting.userUrl).then(res => {
-          if (res.data.code === 0) {
-            if (this.$setting.parseUser) {
-              res.data = this.$setting.parseUser(res.data);
+    mounted() {
+        this.getUserInfo();
+        if (this.$setting.watchResize) {
+            window.addEventListener('resize', this.onWindowResize);
+        }
+    },
+    methods: {
+        /* 获取当前用户信息 */
+        getUserInfo() {
+            if (this.$setting.userUrl) {
+                this.$http.get(this.$setting.userUrl).then(res => {
+                    if (res.data.code === 0) {
+                        if (this.$setting.parseUser) {
+                            res.data = this.$setting.parseUser(res.data);
+                        }
+                        let user = res.data.data;
+                        this.$store.dispatch('user/setUser', user);
+                        this.$store.dispatch('user/setRoles', user ? user.roles : null);
+                        this.$store.dispatch('user/setAuthorities', user ? user.authorities : null);
+                        // 设置节点权限
+                        this.$store.dispatch('user/setPermission', user ? user.permissionList : null);
+                    } else {
+                        this.$message.error(res.data.msg);
+                    }
+                }).catch(e => {
+                    this.$message.error(e.message);
+                });
+            }
+        },
+        /* 折叠/展开侧边栏 */
+        collapse() {
+            this.$store.dispatch('theme/toggle', 'collapse');
+        },
+        /* 窗口大小改变监听 */
+        onWindowResize() {
+            let screenWidth = document.documentElement.clientWidth || document.body.clientWidth;
+            if (this.$store.state.theme.screenWidth !== screenWidth) {
+                this.$store.dispatch('theme/set', {
+                    key: 'screenWidth', value: screenWidth
+                });
             }
             }
-            let user = res.data.data;
-            this.$store.dispatch('user/setUser', user);
-            this.$store.dispatch('user/setRoles', user ? user.roles : null);
-            this.$store.dispatch('user/setAuthorities', user ? user.authorities : null);
-            // 设置节点权限
-            this.$store.dispatch('user/setPermission', user ? user.permissionList : null);
-          } else {
-            this.$message.error(res.data.msg);
-          }
-        }).catch(e => {
-          this.$message.error(e.message);
-        });
-      }
+        }
     },
     },
-    /* 折叠/展开侧边栏 */
-    collapse() {
-      this.$store.dispatch('theme/toggle', 'collapse');
+    destroyed() {
+        // 销毁屏幕resize监听
+        if (this.$setting.watchResize) {
+            window.removeEventListener('resize', this.onWindowResize);
+        }
     },
     },
-    /* 窗口大小改变监听 */
-    onWindowResize() {
-      let screenWidth = document.documentElement.clientWidth || document.body.clientWidth;
-      if (this.$store.state.theme.screenWidth !== screenWidth) {
-        this.$store.dispatch('theme/set', {
-          key: 'screenWidth', value: screenWidth
-        });
-      }
-    }
-  },
-  destroyed() {
-    // 销毁屏幕resize监听
-    if (this.$setting.watchResize) {
-      window.removeEventListener('resize', this.onWindowResize);
-    }
-  },
-  watch: {
-    /* 监听路由变化 */
-    $route() {
-      if (this.theme.screenWidth < 768) {
-        this.$store.dispatch('theme/set', {key: 'collapse', value: true});
-      }
-      if (!this.$setting.watchResize) {
-        this.onWindowResize();
-      }
+    watch: {
+        /* 监听路由变化 */
+        $route() {
+            if (this.theme.screenWidth < 768) {
+                this.$store.dispatch('theme/set', {key: 'collapse', value: true});
+            }
+            if (!this.$setting.watchResize) {
+                this.onWindowResize();
+            }
+        }
     }
     }
-  }
 }
 }
 </script>
 </script>
+<style scoped>
+.chat-message {
+    position: fixed;
+    right: 15px;
+    bottom: 15px;
+    z-index: 9996;
+}
+
+.chat-message .icons {
+    background-color: #3aa1ff;
+    display: inline-block;
+    width: 56px;
+    height: 42px;
+    line-height: 42px;
+    text-align: center;
+    border-radius: 8px;
+}
+
+.chat-message .icons i {
+    color: #fff;
+    font-size: 28px;
+    vertical-align: middle;
+}
+</style>

+ 37 - 4
addons/admin/src/views/dashboard/home.vue

@@ -15,7 +15,7 @@
             </el-col>
             </el-col>
             <el-col class="count">
             <el-col class="count">
                 <div class="title"><span>卖单当日限额</span></div>
                 <div class="title"><span>卖单当日限额</span></div>
-                <div class="total">¥{{ counts.day_sell_quota }} <span @click="changeQuota()">调整</span></div>
+                <div class="total">¥{{ counts.day_sell_quota }} <span @click="showChangeQuota()">调整</span></div>
             </el-col>
             </el-col>
             <el-col class="count">
             <el-col class="count">
                 <div class="title">平台15分钟内买卖量比</div>
                 <div class="title">平台15分钟内买卖量比</div>
@@ -135,6 +135,25 @@
                 </div>
                 </div>
             </el-col>
             </el-col>
         </el-row>
         </el-row>
+
+        <!-- 限额设置 -->
+        <el-dialog :title="'每日卖单限额设置'" :visible.sync="showChangeQuotaModal" width="600px"
+                   @closed="formData={}" :destroy-on-close="true" custom-class="ele-dialog-form"
+                   :lock-scroll="false">
+            <el-form :model="formData" ref="editForm" :rules="editRules" label-width="100px">
+                <el-row :gutter="15">
+                    <el-col :sm="24">
+                            <el-form-item label="限额:" prop="amount">
+                                <el-input placeholder="请填入每日卖单限额" v-model="formData.amount" maxlength="8"/>
+                            </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
+            <div slot="footer">
+                <el-button @click="showChangeQuotaModal=false">取消</el-button>
+                <el-button type="primary" @click="changeQuota">确定提交</el-button>
+            </div>
+        </el-dialog>
     </div>
     </div>
 </template>
 </template>
 
 
@@ -145,6 +164,10 @@ export default {
     data() {
     data() {
         return {
         return {
             counts: {},
             counts: {},
+            showChangeQuotaModal: false,
+            formData: {
+                amount: ''
+            },
             times: {
             times: {
                 advert: null,
                 advert: null,
                 buy: null,
                 buy: null,
@@ -163,7 +186,12 @@ export default {
             },
             },
             timer: {buy: null, sell:null},
             timer: {buy: null, sell:null},
             buyData: {id:0},
             buyData: {id:0},
-            sellData: {id:0}
+            sellData: {id:0},
+            editRules: {
+                amount: [
+                    {required: true, message: '请设置每日卖单限额', trigger: 'blur'}
+                ],
+            }
         }
         }
     },
     },
     created() {
     created() {
@@ -183,8 +211,11 @@ export default {
 
 
     },
     },
     methods: {
     methods: {
-        changeQuota(e) {
-
+        showChangeQuota(){
+          this.showChangeQuotaModal = true;
+        },
+        changeQuota() {
+            this.settingSubmit({day_sell_quota: this.formData.amount});
         },
         },
         changeAdvert(e) {
         changeAdvert(e) {
             this.settingSubmit({advert_online: e});
             this.settingSubmit({advert_online: e});
@@ -312,12 +343,14 @@ export default {
         },
         },
         // 提交设置
         // 提交设置
         settingSubmit(data) {
         settingSubmit(data) {
+            let _this = this
             this.$message.closeAll();
             this.$message.closeAll();
             const loading = this.$loading({lock: true});
             const loading = this.$loading({lock: true});
             this.$http.post('/setting/save', data).then(res => {
             this.$http.post('/setting/save', data).then(res => {
                 loading.close();
                 loading.close();
                 if (res.data.code === 0) {
                 if (res.data.code === 0) {
                     this.getData()
                     this.getData()
+                    _this.showChangeQuotaModal = false
                     this.$message.success(res.data.msg);
                     this.$message.success(res.data.msg);
                 } else {
                 } else {
                     this.$message.error(res.data.msg);
                     this.$message.error(res.data.msg);

+ 1 - 1
addons/admin/src/views/dashboard/workplace.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <div class="ele-body" >
+  <div class="ele-body" v-if="$store.state.user.user.id>0">
       <div v-if="$store.state.user.user.user_type==2">
       <div v-if="$store.state.user.user.user_type==2">
           <home></home>
           <home></home>
       </div>
       </div>

+ 29 - 18
addons/admin/src/views/member/member/index.vue

@@ -36,7 +36,7 @@
                             <el-button type="primary" @click="$refs.table.reload()" icon="el-icon-search"
                             <el-button type="primary" @click="$refs.table.reload()" icon="el-icon-search"
                                        class="ele-btn-icon">查询
                                        class="ele-btn-icon">查询
                             </el-button>
                             </el-button>
-                            <el-button @click="(table.where={user_type:'1',idcard_check:'0'})&&$refs.table.reload()">
+                            <el-button @click="(table.where={user_type:'1',idcard_check:0})&&$refs.table.reload()">
                                 重置
                                 重置
                             </el-button>
                             </el-button>
                             <el-button @click="remove()" type="danger" icon="el-icon-delete" class="ele-btn-icon"
                             <el-button @click="remove()" type="danger" icon="el-icon-delete" class="ele-btn-icon"
@@ -53,15 +53,15 @@
                     <el-table-column type="selection" width="45" align="center" fixed="left"/>
                     <el-table-column type="selection" width="45" align="center" fixed="left"/>
                     <el-table-column type="index" :index="index" label="编号" width="60" align="center" fixed="left"
                     <el-table-column type="index" :index="index" label="编号" width="60" align="center" fixed="left"
                                      show-overflow-tooltip/>
                                      show-overflow-tooltip/>
-                    <el-table-column label="头像" min-width="60" align="center">
+<!--                    <el-table-column label="头像" min-width="60" align="center">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
                             <el-avatar shape="circle" :size="35" >
                             <el-avatar shape="circle" :size="35" >
                                 {{substr(row.username, 1)}}
                                 {{substr(row.username, 1)}}
                             </el-avatar>
                             </el-avatar>
                         </template>
                         </template>
-                    </el-table-column>
+                    </el-table-column>-->
                     <el-table-column prop="username" label="账号" sortable="custom" show-overflow-tooltip
                     <el-table-column prop="username" label="账号" sortable="custom" show-overflow-tooltip
-                                     min-width="120"/>
+                                     min-width="120" fixed="left"/>
                     <el-table-column prop="user_type" label="账号类型" sortable="custom" show-overflow-tooltip
                     <el-table-column prop="user_type" label="账号类型" sortable="custom" show-overflow-tooltip
                                      min-width="120">
                                      min-width="120">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
@@ -77,7 +77,23 @@
                                      min-width="120"/>
                                      min-width="120"/>
                     <el-table-column prop="erc_hexaddress" label="ERC20钱包" sortable="custom" show-overflow-tooltip
                     <el-table-column prop="erc_hexaddress" label="ERC20钱包" sortable="custom" show-overflow-tooltip
                                      min-width="120"/>
                                      min-width="120"/>
-                    <el-table-column prop="idcard_check" label="认证状态" sortable="custom" :resizable="false" min-width="120">
+                    <el-table-column prop="trc_num" label="TRX余额" sortable="custom" show-overflow-tooltip
+                                     min-width="120"/>
+                    <el-table-column prop="trc_usdt_num" label="USDT-TRC余额/USDT" sortable="custom" show-overflow-tooltip
+                                     min-width="120"/>
+                    <el-table-column prop="erc_num" label="ERC余额/USDT" sortable="custom" show-overflow-tooltip
+                                     min-width="120"/>
+                    <el-table-column prop="erc_usdt_num" label="USDT-ERC余额/USDT" sortable="custom" show-overflow-tooltip
+                                     min-width="120"/>
+                    <el-table-column label="注册时间" sortable="custom" show-overflow-tooltip align="center"
+                                     min-width="160">
+                        <template slot-scope="{row}">{{ row.create_time }}</template>
+                    </el-table-column>
+                    <el-table-column label="最近登录时间" sortable="custom" show-overflow-tooltip align="center"
+                                     min-width="160">
+                        <template slot-scope="{row}">{{ (row.login_time>0?row.login_time:'') }}</template>
+                    </el-table-column>
+                    <el-table-column prop="idcard_check" label="认证状态" sortable="custom" :resizable="false" fixed="right" min-width="120">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
                             <span v-if="row.idcard_check == 1" class="ele-text-success">已认证</span>
                             <span v-if="row.idcard_check == 1" class="ele-text-success">已认证</span>
                             <span v-else-if="row.idcard_check == 2" class="ele-text-primary">待审核</span>
                             <span v-else-if="row.idcard_check == 2" class="ele-text-primary">待审核</span>
@@ -85,20 +101,12 @@
                             <span v-else class="ele-text-default">未提交</span>
                             <span v-else class="ele-text-default">未提交</span>
                         </template>
                         </template>
                     </el-table-column>
                     </el-table-column>
-                    <el-table-column prop="status" label="会员状态" sortable="custom" :resizable="false" min-width="120">
+                    <el-table-column prop="status" label="会员状态" sortable="custom" :resizable="false" fixed="right" min-width="120">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
                             <el-switch v-model="row.status" @change="editStatus(row)" :active-value="1"
                             <el-switch v-model="row.status" @change="editStatus(row)" :active-value="1"
                                        :inactive-value="2"/>
                                        :inactive-value="2"/>
                         </template>
                         </template>
                     </el-table-column>
                     </el-table-column>
-                    <el-table-column label="注册时间" sortable="custom" show-overflow-tooltip align="center"
-                                     min-width="160">
-                        <template slot-scope="{row}">{{ row.create_time }}</template>
-                    </el-table-column>
-                    <el-table-column label="最近登录时间" sortable="custom" show-overflow-tooltip align="center"
-                                     min-width="160">
-                        <template slot-scope="{row}">{{ (row.login_time>0?row.login_time:'') }}</template>
-                    </el-table-column>
                     <el-table-column label="操作" width="130px" align="center" :resizable="false" fixed="right">
                     <el-table-column label="操作" width="130px" align="center" :resizable="false" fixed="right">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
                             <el-link @click="edit(row)" icon="el-icon-edit" type="primary" :underline="false"
                             <el-link @click="edit(row)" icon="el-icon-edit" type="primary" :underline="false"
@@ -145,10 +153,10 @@
                             <el-input v-model="editForm.mobile" placeholder="请输入手机号码" clearable/>
                             <el-input v-model="editForm.mobile" placeholder="请输入手机号码" clearable/>
                         </el-form-item>
                         </el-form-item>
                         <el-form-item label="用户类型:" prop="user_type">
                         <el-form-item label="用户类型:" prop="user_type">
-                            <el-select v-model="editForm.user_type" placeholder="请选择用户类型" readonly class="ele-block">
+                            <el-select v-model="editForm.user_type" placeholder="请选择用户类型" class="ele-block">
                                 <el-option label="平台用户" :value="1"/>
                                 <el-option label="平台用户" :value="1"/>
-                                <el-option label="外汇用户" :value="3"/>
-                                <el-option label="BC平台" :value="4"/>
+                                <el-option label="外汇用户" :value="3" disabled/>
+                                <el-option label="BC平台" :value="4" disabled/>
                                 <el-option label="BC平台直接注册" :value="5"/>
                                 <el-option label="BC平台直接注册" :value="5"/>
                             </el-select>
                             </el-select>
                         </el-form-item>
                         </el-form-item>
@@ -215,6 +223,7 @@
                     <el-col :sm="12">
                     <el-col :sm="12">
                         <el-form-item label="认证状态:" prop="idcard_check">
                         <el-form-item label="认证状态:" prop="idcard_check">
                             <el-select v-model="editForm.idcard_check" placeholder="请选择认证状态" class="ele-block">
                             <el-select v-model="editForm.idcard_check" placeholder="请选择认证状态" class="ele-block">
+                                <el-option label="请选择" :value="0"/>
                                 <el-option label="已认证" :value="1"/>
                                 <el-option label="已认证" :value="1"/>
                                 <el-option label="待审核" :value="2"/>
                                 <el-option label="待审核" :value="2"/>
                                 <el-option label="驳回" :value="3"/>
                                 <el-option label="驳回" :value="3"/>
@@ -248,7 +257,7 @@ export default {
             provinceCity: [],  // 选中的省市
             provinceCity: [],  // 选中的省市
             province: [],  // 选中的省
             province: [],  // 选中的省
 
 
-            table: {url: '/member/index', where: {idcard_check: '0',user_type: '1'}, page: {limit: 20}},  // 表格配置
+            table: {url: '/member/index', where: {idcard_check: 0,user_type: '1'}, page: {limit: 20}},  // 表格配置
             choose: [],  // 表格选中数据
             choose: [],  // 表格选中数据
             showEdit: false,  // 是否显示表单弹窗
             showEdit: false,  // 是否显示表单弹窗
             showAuthEdit: false,  // 是否显示表单弹窗
             showAuthEdit: false,  // 是否显示表单弹窗
@@ -281,6 +290,7 @@ export default {
         edit(row) {
         edit(row) {
             this.editForm = Object.assign({}, row);
             this.editForm = Object.assign({}, row);
             this.editForm.password = ''
             this.editForm.password = ''
+            this.editForm.idcard_check = this.editForm.idcard_check? this.editForm.idcard_check : 2;
             this.showEdit = true;
             this.showEdit = true;
         },
         },
         /* 显示编辑 */
         /* 显示编辑 */
@@ -299,6 +309,7 @@ export default {
                         loading.close();
                         loading.close();
                         if (res.data.code === 0) {
                         if (res.data.code === 0) {
                             this.showEdit = false;
                             this.showEdit = false;
+                            this.showAuthEdit = false;
                             this.$message({type: 'success', message: res.data.msg});
                             this.$message({type: 'success', message: res.data.msg});
                             this.$refs.table.reload();
                             this.$refs.table.reload();
                         } else {
                         } else {

+ 2 - 2
addons/admin/src/views/system/account/capital.vue

@@ -46,7 +46,7 @@
                                     <el-button type="primary" @click="$refs.table.reload()" icon="el-icon-search"
                                     <el-button type="primary" @click="$refs.table.reload()" icon="el-icon-search"
                                                class="ele-btn-icon">查询
                                                class="ele-btn-icon">查询
                                     </el-button>
                                     </el-button>
-                                    <el-button @click="(table.where={})&&$refs.table.reload()">重置</el-button>
+                                    <el-button @click="(table.where={type:'0'})&&$refs.table.reload()">重置</el-button>
                                 </div>
                                 </div>
                             </el-col>
                             </el-col>
                         </el-row>
                         </el-row>
@@ -100,7 +100,7 @@ export default {
     components: {},
     components: {},
     data() {
     data() {
         return {
         return {
-            table: {url: '/capital/index', where: {},page:{limit: 30}},  // 表格配置
+            table: {url: '/capital/index', where: {type:'0'},page:{limit: 30}},  // 表格配置
             choose: [],  // 表格选中数据
             choose: [],  // 表格选中数据
             userInfo: {},
             userInfo: {},
             activeName: 'usdt',
             activeName: 'usdt',

+ 39 - 10
addons/admin/src/views/system/account/deposit.vue

@@ -61,19 +61,29 @@
                 </el-col>
                 </el-col>
             </el-row>
             </el-row>
 
 
+            <div class="ele-table-tool ele-table-tool-default">
+                <el-button @click="(table.where.type = 1) && getList()" type="success" icon="el-icon-delete" class="ele-btn-icon" size="small">
+                    存币明细
+                </el-button>
+                <el-button @click="(table.where.type = 2) && getList()" type="danger" icon="el-icon-delete" class="ele-btn-icon" size="small">
+                    提币明细
+                </el-button>
+            </div>
             <!--  明细  -->
             <!--  明细  -->
-            <ele-data-table ref="table" :config="table" :choose.sync="choose" height="calc(100vh - 315px)"
+            <ele-data-table ref="table" :data="dataList" :choose.sync="choose" height="calc(100vh - 315px)"
                             highlight-current-row>
                             highlight-current-row>
                 <template slot-scope="{index}">
                 <template slot-scope="{index}">
-                    <el-table-column prop="time_text" label="存币时间" show-overflow-tooltip min-width="150"/>
-                    <el-table-column prop="from" label="来源"  show-overflow-tooltip min-width="250"/>
+                    <el-table-column prop="time_text" v-if="table.where.type == 1" label="入账时间" show-overflow-tooltip min-width="150"/>
+                    <el-table-column prop="time_text" v-else label="出账时间" show-overflow-tooltip min-width="150"/>
+                    <el-table-column v-if="table.where.type==1" prop="from" label="来源"  show-overflow-tooltip min-width="250"/>
+                    <el-table-column v-else prop="to" label="转入"  show-overflow-tooltip min-width="250"/>
                     <el-table-column prop="contact_type" label="类型"  :resizable="false" min-width="120">
                     <el-table-column prop="contact_type" label="类型"  :resizable="false" min-width="120">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
                             <span v-if="row.contact_type == 1">TRC20</span>
                             <span v-if="row.contact_type == 1">TRC20</span>
                             <span v-else-if="row.contact_type == 2">ERC20</span>
                             <span v-else-if="row.contact_type == 2">ERC20</span>
                         </template>
                         </template>
                     </el-table-column>
                     </el-table-column>
-                    <el-table-column prop="num" label="存币量(USDT)"  show-overflow-tooltip min-width="150"/>
+                    <el-table-column prop="num" label="交易数量(USDT)"  show-overflow-tooltip min-width="150"/>
                     <el-table-column prop="status" label="状态"  :resizable="false" min-width="120">
                     <el-table-column prop="status" label="状态"  :resizable="false" min-width="120">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
                             <span v-if="row.status==1" class="ele-text-success">成功</span>
                             <span v-if="row.status==1" class="ele-text-success">成功</span>
@@ -93,6 +103,7 @@ export default {
     data() {
     data() {
         return {
         return {
             loading: false,  // 保存按钮loading
             loading: false,  // 保存按钮loading
+            dataList: [],
             table: {
             table: {
                 url: '/index/transfer',
                 url: '/index/transfer',
                 where: {type: 1, contact_type: 1},
                 where: {type: 1, contact_type: 1},
@@ -106,14 +117,19 @@ export default {
             },
             },
             timerId: null,
             timerId: null,
             choose: [],
             choose: [],
-            walletData: {},
+            walletData: {
+                wallet: {
+                    trc_usdt: '0.00',
+                    erc_usdt: '0.00',
+                    trc_out_usdt: '0.00',
+                    erc_out_usdt: '0.00',
+                },
+            },
         }
         }
     },
     },
     created() {
     created() {
         this.getData();
         this.getData();
         this.getConfig();
         this.getConfig();
-
-
     },
     },
     mounted(){
     mounted(){
         this.getDataList();
         this.getDataList();
@@ -125,8 +141,8 @@ export default {
             let time = 12000 + parseInt(Math.random()*2000);
             let time = 12000 + parseInt(Math.random()*2000);
             this.timerId =setInterval(function(){
             this.timerId =setInterval(function(){
                 if(_this.$refs.table){
                 if(_this.$refs.table){
-                    _this.$refs.table.reload();
-                    _this.getData()
+                    //_this.$refs.table.reload();
+                    _this.getList()
                 }
                 }
             }, time);
             }, time);
 
 
@@ -150,6 +166,7 @@ export default {
                 if (res.data.success === true) {
                 if (res.data.success === true) {
                     this.walletData = res.data.data
                     this.walletData = res.data.data
                     this.table.where.address = this.walletData.trc_out_address;
                     this.table.where.address = this.walletData.trc_out_address;
+                    this.getList()
                 } else {
                 } else {
                     this.$message.error(res.data.msg);
                     this.$message.error(res.data.msg);
                 }
                 }
@@ -171,7 +188,19 @@ export default {
                 loading.close();
                 loading.close();
                 this.$message.error(e.message);
                 this.$message.error(e.message);
             });
             });
-        }
+        },
+        getList() {
+            this.$http.post('/index/transfer', this.table.where).then(res => {
+                if (res.data.success === true) {
+                    this.dataList = res.data.data
+                } else {
+                    this.$message.error(res.data.msg);
+                }
+            }).catch(e => {
+                loading.close();
+                this.$message.error(e.message);
+            });
+        },
     }
     }
 }
 }
 </script>
 </script>

+ 37 - 10
addons/admin/src/views/system/account/trigger.vue

@@ -32,10 +32,10 @@
                         <span class="label">类型:</span>
                         <span class="label">类型:</span>
                         <el-button-group class="el-types">
                         <el-button-group class="el-types">
                             <el-button size="small" :type="table.where.contact_type == 1? 'primary':'default'"
                             <el-button size="small" :type="table.where.contact_type == 1? 'primary':'default'"
-                                       @click="(table.where.contact_type = 1) && (table.where.address = walletData.trc_address) && $refs.table.reload()">USDT-TRC20
+                                       @click="(table.where.contact_type = 1) && (table.where.address = walletData.trc_address) && getList()">USDT-TRC20
                             </el-button>
                             </el-button>
                             <el-button size="small" :type="table.where.contact_type == 2? 'primary':'default'"
                             <el-button size="small" :type="table.where.contact_type == 2? 'primary':'default'"
-                                       @click="(table.where.contact_type = 2) && (table.where.address = walletData.erc_address) && $refs.table.reload()">USDT-ERC20
+                                       @click="(table.where.contact_type = 2) && (table.where.address = walletData.erc_address) && getList()">USDT-ERC20
                             </el-button>
                             </el-button>
                         </el-button-group>
                         </el-button-group>
                     </div>
                     </div>
@@ -52,7 +52,7 @@
                         <div class="qrcode-box" v-else-if="table.where.contact_type==2">
                         <div class="qrcode-box" v-else-if="table.where.contact_type==2">
                             <img class="qrcode" :src="walletData.erc_qrcode" alt="">
                             <img class="qrcode" :src="walletData.erc_qrcode" alt="">
                         </div>
                         </div>
-                        <div class="op"><el-button type="primary" @click="trigger()">一键归集</el-button></div>
+                        <div class="op" v-if="permission.includes('sys:trigger:submit')"><el-button type="primary" @click="trigger()">一键归集</el-button></div>
                     </div>
                     </div>
 
 
                 </el-col>
                 </el-col>
@@ -60,11 +60,11 @@
 
 
 
 
             <!--  明细  -->
             <!--  明细  -->
-            <ele-data-table ref="table" :config="table" :choose.sync="choose" height="calc(100vh - 315px)"
+            <ele-data-table ref="table" :data="dataList" :choose.sync="choose" height="calc(100vh - 315px)"
                             highlight-current-row>
                             highlight-current-row>
                 <template slot-scope="{index}">
                 <template slot-scope="{index}">
-                    <el-table-column prop="time_text" label="交易时间" show-overflow-tooltip min-width="150"/>
-                    <el-table-column prop="from" label="来源"  show-overflow-tooltip min-width="250"/>
+                    <el-table-column prop="time_text" label="入账时间" show-overflow-tooltip min-width="150"/>
+                    <el-table-column  prop="from" label="来源"  show-overflow-tooltip min-width="250"/>
                     <el-table-column prop="contact_type" label="类型"  :resizable="false" min-width="120">
                     <el-table-column prop="contact_type" label="类型"  :resizable="false" min-width="120">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
                             <span v-if="row.contact_type == 1">TRC20</span>
                             <span v-if="row.contact_type == 1">TRC20</span>
@@ -86,11 +86,13 @@
 </template>
 </template>
 
 
 <script>
 <script>
+import {mapGetters} from "vuex";
 export default {
 export default {
-    name: "Deposit",
+    name: "Trigger",
     data() {
     data() {
         return {
         return {
             loading: false,  // 保存按钮loading
             loading: false,  // 保存按钮loading
+            dataList: [],
             table: {
             table: {
                 url: '/index/transfer',
                 url: '/index/transfer',
                 where: {type: 1, contact_type: 1, change_type: 1},
                 where: {type: 1, contact_type: 1, change_type: 1},
@@ -104,7 +106,14 @@ export default {
             },
             },
             timerId: null,
             timerId: null,
             choose: [],
             choose: [],
-            walletData: {},
+            walletData: {
+                wallet: {
+                    trc_usdt: '0.00',
+                    erc_usdt: '0.00',
+                    trc_out_usdt: '0.00',
+                    erc_out_usdt: '0.00',
+                },
+            },
         }
         }
     },
     },
     created() {
     created() {
@@ -114,6 +123,9 @@ export default {
     mounted(){
     mounted(){
         this.getDataList();
         this.getDataList();
     },
     },
+    computed: {
+        ...mapGetters(["permission"]),
+    },
     methods: {
     methods: {
         getDataList(){
         getDataList(){
             let _this = this
             let _this = this
@@ -121,7 +133,8 @@ export default {
             let time = 12000 + parseInt(Math.random()*2000);
             let time = 12000 + parseInt(Math.random()*2000);
             this.timerId =setInterval(function(){
             this.timerId =setInterval(function(){
                 if(_this.$refs.table){
                 if(_this.$refs.table){
-                    _this.$refs.table.reload();
+                    // _this.$refs.table.reload();
+                    _this.getList()
                 }
                 }
             }, time);
             }, time);
 
 
@@ -138,6 +151,18 @@ export default {
                 }
                 }
             );
             );
         },
         },
+        getList() {
+            this.$http.post('/index/transfer', this.table.where).then(res => {
+                if (res.data.success === true) {
+                    this.dataList = res.data.data
+                } else {
+                    this.$message.error(res.data.msg);
+                }
+            }).catch(e => {
+                loading.close();
+                this.$message.error(e.message);
+            });
+        },
         getData() {
         getData() {
             const loading = this.$loading({lock: true});
             const loading = this.$loading({lock: true});
             this.$http.get('/index/wallet', {}).then(res => {
             this.$http.get('/index/wallet', {}).then(res => {
@@ -145,6 +170,8 @@ export default {
                 if (res.data.success === true) {
                 if (res.data.success === true) {
                     this.walletData = res.data.data
                     this.walletData = res.data.data
                     this.table.where.address = this.walletData.trc_address
                     this.table.where.address = this.walletData.trc_address
+
+                    this.getList()
                 } else {
                 } else {
                     this.$message.error(res.data.msg);
                     this.$message.error(res.data.msg);
                 }
                 }
@@ -170,7 +197,7 @@ export default {
         trigger(){
         trigger(){
             this.$confirm('确定要一键归集符合条件的子钱包吗?该操作需要消耗TRX手续费,且不可逆,谨慎操作', '提示', {type: 'warning'}).then(() => {
             this.$confirm('确定要一键归集符合条件的子钱包吗?该操作需要消耗TRX手续费,且不可逆,谨慎操作', '提示', {type: 'warning'}).then(() => {
                 const loading = this.$loading({lock: true});
                 const loading = this.$loading({lock: true});
-                this.$http.post('/index/trigger', {address: this.table.where.address}).then(res => {
+                this.$http.post('/index/trigger', {type: this.table.where.contact_type}).then(res => {
                     loading.close();
                     loading.close();
                     if (res.data.code === 0) {
                     if (res.data.code === 0) {
                         this.$message({type: 'success', message: res.data.msg});
                         this.$message({type: 'success', message: res.data.msg});

+ 25 - 6
addons/admin/src/views/system/account/withdraw.vue

@@ -39,8 +39,8 @@
             <ele-data-table ref="table" :config="table" :choose.sync="choose" height="calc(100vh - 315px)"
             <ele-data-table ref="table" :config="table" :choose.sync="choose" height="calc(100vh - 315px)"
                             highlight-current-row>
                             highlight-current-row>
                 <template slot-scope="{index}">
                 <template slot-scope="{index}">
-                    <el-table-column prop="time_text" label="提币时间" show-overflow-tooltip min-width="150"/>
-                    <el-table-column prop="username" label="提币用户" show-overflow-tooltip min-width="150"/>
+                    <el-table-column prop="time_text" label="提币时间" show-overflow-tooltip min-width="150" fixed="left"/>
+                    <el-table-column prop="username" label="提币用户" show-overflow-tooltip min-width="150" fixed="left"/>
                     <el-table-column prop="to_address" label="提币地址" show-overflow-tooltip min-width="250"/>
                     <el-table-column prop="to_address" label="提币地址" show-overflow-tooltip min-width="250"/>
                     <el-table-column prop="contact_type" label="类型" :resizable="false" min-width="120">
                     <el-table-column prop="contact_type" label="类型" :resizable="false" min-width="120">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
@@ -50,18 +50,27 @@
                     </el-table-column>
                     </el-table-column>
                     <el-table-column prop="num" label="提币量(USDT)" show-overflow-tooltip min-width="150"/>
                     <el-table-column prop="num" label="提币量(USDT)" show-overflow-tooltip min-width="150"/>
                     <el-table-column prop="free" label="手续费(USDT)" show-overflow-tooltip min-width="150"/>
                     <el-table-column prop="free" label="手续费(USDT)" show-overflow-tooltip min-width="150"/>
-                    <el-table-column prop="status" label="状态" :resizable="false" min-width="120">
+                    <el-table-column prop="status" label="状态" :resizable="false" min-width="120" fixed="right">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
                             <span v-if="row.status==1" class="ele-text-success">成功</span>
                             <span v-if="row.status==1" class="ele-text-success">成功</span>
                             <span v-else-if="row.status==3" class="ele-text-primary">待审核</span>
                             <span v-else-if="row.status==3" class="ele-text-primary">待审核</span>
-                            <span v-else-if="row.status==4" class="ele-text-warning">待打款</span>
+                            <span v-else-if="row.status==4" class="ele-text-warning" >
+                                 <el-tooltip placement="top">
+                                       <div slot="content">交易单号:{{row.txid}}</div>
+                                       <span>待交易打款</span>
+                                   </el-tooltip>
+                            </span>
                             <span v-else class="ele-text-danger">失败</span>
                             <span v-else class="ele-text-danger">失败</span>
                         </template>
                         </template>
                     </el-table-column>
                     </el-table-column>
                     <el-table-column label="操作" width="130px" align="center" :resizable="false" fixed="right">
                     <el-table-column label="操作" width="130px" align="center" :resizable="false" fixed="right">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
                             <el-link @click="showConfirm(row)" icon="el-icon-edit" type="primary" :underline="false"
                             <el-link @click="showConfirm(row)" icon="el-icon-edit" type="primary" :underline="false"
-                                     v-if="row.status == 3 && permission.includes('sys:advert:edit')">审核
+                                     v-if="(row.status == 3) && permission.includes('sys:advert:edit')">审核
+                            </el-link>
+
+                            <el-link @click="showConfirm(row)" icon="el-icon-edit" type="danger" :underline="false"
+                                     v-if="(row.status == 4) && permission.includes('sys:advert:edit')">异常
                             </el-link>
                             </el-link>
                         </template>
                         </template>
                     </el-table-column>
                     </el-table-column>
@@ -88,6 +97,14 @@
                         <el-form-item label="提币数量:" prop="num">
                         <el-form-item label="提币数量:" prop="num">
                             <span>{{formData.num}} USDT</span>
                             <span>{{formData.num}} USDT</span>
                         </el-form-item>
                         </el-form-item>
+                        <el-form-item label="审核状态:" prop="status">
+                            <el-select v-model="formData.status" placeholder="请选择" class="ele-fluid">
+<!--                                <el-option label="已完成" value="1"/>-->
+                                <el-option label="确认出币" :value="4"/>
+                                <el-option label="驳回申请" :value="2"/>
+                                <el-option label="待审核" :value="3" disabled/>
+                            </el-select>
+                        </el-form-item>
                         <el-form-item label="登录密码:" prop="password">
                         <el-form-item label="登录密码:" prop="password">
                             <el-input v-model="formData.password" placeholder="请输入登录密码" type="password" clearable/>
                             <el-input v-model="formData.password" placeholder="请输入登录密码" type="password" clearable/>
                         </el-form-item>
                         </el-form-item>
@@ -105,7 +122,7 @@
 <script>
 <script>
 import {mapGetters} from "vuex";
 import {mapGetters} from "vuex";
 export default {
 export default {
-    name: "Deposit",
+    name: "Withdraw",
     data() {
     data() {
         return {
         return {
             loading: false,  // 保存按钮loading
             loading: false,  // 保存按钮loading
@@ -117,6 +134,7 @@ export default {
             },
             },
             formData: {
             formData: {
                 password: '',
                 password: '',
+                sttaus: '4'
             },
             },
             editRules: {  // 表单验证规则
             editRules: {  // 表单验证规则
                 password: [
                 password: [
@@ -153,6 +171,7 @@ export default {
         // 提币审核
         // 提币审核
         showConfirm(row){
         showConfirm(row){
             this.formData = Object.assign({}, row);
             this.formData = Object.assign({}, row);
+            this.formData.status = this.formData.status;
             this.showConfirmEdit = true;
             this.showConfirmEdit = true;
         },
         },
         // 用户信息
         // 用户信息

+ 55 - 39
addons/admin/src/views/system/advert/hall.vue

@@ -23,9 +23,9 @@
                     <el-table-column label="发布用户" min-width="60" align="center">
                     <el-table-column label="发布用户" min-width="60" align="center">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
                             <el-avatar shape="circle" :size="35" :class="'color'+row.logo_index">
                             <el-avatar shape="circle" :size="35" :class="'color'+row.logo_index">
-                                {{substr(row.realname?row.realname : row.username, 1)}}
+                                {{ substr(row.realname ? row.realname : row.username, 1) }}
                             </el-avatar>
                             </el-avatar>
-                            <p>{{row.username}}</p>
+                            <p>{{ row.username }}</p>
                         </template>
                         </template>
                     </el-table-column>
                     </el-table-column>
                     <el-table-column prop="limit" label="单笔限额(USDT)" show-overflow-tooltip min-width="150">
                     <el-table-column prop="limit" label="单笔限额(USDT)" show-overflow-tooltip min-width="150">
@@ -52,10 +52,12 @@
                     </el-table-column>
                     </el-table-column>
                     <el-table-column label="" width="130px" align="center" :resizable="false" fixed="right">
                     <el-table-column label="" width="130px" align="center" :resizable="false" fixed="right">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
-                            <el-button v-if="table.where.type == 2" type="primary" size="small" @click="showBuy(row)" icon="el-icon-shopping-cart-2"
+                            <el-button v-if="table.where.type == 2" type="primary" size="small" @click="showBuy(row)"
+                                       icon="el-icon-shopping-cart-2"
                                        class="ele-btn-icon">购买 USDT
                                        class="ele-btn-icon">购买 USDT
                             </el-button>
                             </el-button>
-                            <el-button v-else type="primary" size="small" @click="showBuy(row)" icon="el-icon-shopping-cart-2"
+                            <el-button v-else type="primary" size="small" @click="showBuy(row)"
+                                       icon="el-icon-shopping-cart-2"
                                        class="ele-btn-icon">出售 USDT
                                        class="ele-btn-icon">出售 USDT
                             </el-button>
                             </el-button>
                         </template>
                         </template>
@@ -66,47 +68,56 @@
 
 
         <!-- 购买弹窗 -->
         <!-- 购买弹窗 -->
         <el-dialog :title="'购买确定'" :visible.sync="showBuyEdit" width="600px"
         <el-dialog :title="'购买确定'" :visible.sync="showBuyEdit" width="600px"
-                   @closed="buyForm={}" :destroy-on-close="true" custom-class="ele-dialog-form" :lock-scroll="false">
-            <el-form :model="buyForm" ref="editForm" :rules="editRules" label-width="82px">
+                   @closed="formData={}" :destroy-on-close="true" custom-class="ele-dialog-form" :lock-scroll="false">
+            <el-form :model="buyForm" ref="editForm" :rules="editRules" label-width="100px">
                 <el-row :gutter="15">
                 <el-row :gutter="15">
                     <el-col :sm="16">
                     <el-col :sm="16">
                         <el-form-item label="发布用户:" prop="username">
                         <el-form-item label="发布用户:" prop="username">
-                            <span>{{buyForm.username}}</span>
+                            <span>{{ formData.username }}</span>
                         </el-form-item>
                         </el-form-item>
                         <el-form-item label="单笔限额:" prop="limit">
                         <el-form-item label="单笔限额:" prop="limit">
-                            <span>¥{{(buyForm.limit_mix? buyForm.limit_mix:0)}}~{{buyForm.limit_max}}</span>
+                            <span>¥{{ (formData.limit_mix ? formData.limit_mix : 0) }}~{{ formData.limit_max }}</span>
                         </el-form-item>
                         </el-form-item>
                         <el-form-item label="单价:" prop="price">
                         <el-form-item label="单价:" prop="price">
-                            <span>{{buyForm.real_price}} CNY</span>
+                            <span>{{ formData.real_price }} CNY</span>
                         </el-form-item>
                         </el-form-item>
-                        <el-col :sm="12">
-                        <el-form-item label="收款方式:" prop="payment_id" v-if="buyForm.type==1">
-                            <el-select v-model="buyForm.payment_id" filterable
-                                       remote
-                                       reserve-keyword
-                                       placeholder="请输入关键词"
-                                       :remote-method="getPayment"
-                                       :loading="loading" class="ele-fluid reassign">
-                                <el-option v-for="(v,k) in payments" :key="k" :label="v.username" :value="v.id">
-                                        <span class="label"
-                                              :title="'ID:'+v.id+', USDT:'+v.usdt_num">{{ v.username }}</span>
-                                    <span class="credit">信誉:{{ v.credit }}分</span>
+                    </el-col>
+                    <el-col :sm="16">
+                        <el-form-item label="收款方式:" prop="payment_id" v-if="formData.type == 1">
+                            <el-select v-model="formData.payment_id" placeholder="请选择" class="ele-fluid payment">
+                                <el-option v-for="(v,k) in payments" :key="k" :label="v.bank_card_text" :value="v.id">
+                                    <template v-if="v.type==1">
+                                            <span class="label"
+                                                  :title="'ID:'+v.id+',姓名:'+v.real_name+', 卡号:'+v.bank_card+' ('+v.bank_name+' '+v.branch_name+')'">{{ v.bank_card_text }}</span>
+                                        <span class="text">银行:{{ v.bank_name }}</span>
+                                    </template>
+                                    <template v-else>
+                                            <span class="label"
+                                                  :title="'ID:'+v.id+', 账号:'+v.account">{{ v.real_name }}</span>
+                                        <span class="text">:{{ v.credit }}分</span>
+                                    </template>
                                 </el-option>
                                 </el-option>
                             </el-select>
                             </el-select>
                         </el-form-item>
                         </el-form-item>
                         <el-form-item label="交易数量:" prop="num">
                         <el-form-item label="交易数量:" prop="num">
-                            <el-input v-model="buyForm.num" placeholder="请输入您要购买的数量" @input="countTotal()" clearable/>
+                            <el-input v-model="formData.num" placeholder="请输入您要购买的数量" @input="countTotal()"
+                                      clearable>
+                                <template slot="append">USDT</template>
+                            </el-input>
                         </el-form-item>
                         </el-form-item>
-                        </el-col>
                         <el-form-item label="总价:" prop="pay_total">
                         <el-form-item label="总价:" prop="pay_total">
-                            <span>{{buyForm.total?buyForm.total:'0.00'}} CNY</span>
+                            <span>{{ formData.total ? formData.total : '0.00' }} CNY</span>
+                        </el-form-item>
+                        <el-form-item label="交易密码:" class="is-required">
+                            <el-input type="password" v-model="formData.trade_password" placeholder="请输入交易密码" clearable/>
                         </el-form-item>
                         </el-form-item>
+
                     </el-col>
                     </el-col>
                 </el-row>
                 </el-row>
             </el-form>
             </el-form>
             <div slot="footer">
             <div slot="footer">
                 <el-button @click="showBuyEdit=false">取消</el-button>
                 <el-button @click="showBuyEdit=false">取消</el-button>
-                <el-button type="primary" v-if="buyForm.type == 1" @click="sell()">确定出售</el-button>
+                <el-button type="primary" v-if="formData.type == 1" @click="sell()">确定出售</el-button>
                 <el-button type="primary" v-else @click="buy()">确定购买</el-button>
                 <el-button type="primary" v-else @click="buy()">确定购买</el-button>
             </div>
             </div>
         </el-dialog>
         </el-dialog>
@@ -146,7 +157,7 @@ export default {
             payments: [],
             payments: [],
             timer: {buy: null, sell: null},
             timer: {buy: null, sell: null},
             showBuyEdit: false,  // 是否显示表单弹窗
             showBuyEdit: false,  // 是否显示表单弹窗
-            buyForm: {num: 0, pay_type: 1},  // 表单数据
+            formData: {num: 0, pay_type: 1},  // 表单数据
             editRules: {  // 表单验证规则
             editRules: {  // 表单验证规则
                 pay_type: [
                 pay_type: [
                     {required: true, message: '请选择支付方式', trigger: 'blur'}
                     {required: true, message: '请选择支付方式', trigger: 'blur'}
@@ -164,14 +175,14 @@ export default {
         this.getData();
         this.getData();
     },
     },
     methods: {
     methods: {
-        substr(str, length){
-            return str? str.slice(0,length) : '';
+        substr(str, length) {
+            return str ? str.slice(0, length) : '';
         },
         },
         // 计算总价
         // 计算总价
-        countTotal(){
+        countTotal() {
             console.log(this.buyForm)
             console.log(this.buyForm)
-            if(this.buyForm.num>0){
-                this.buyForm.total = (this.buyForm.num*this.buyForm.real_price).toFixed(2);
+            if (this.formData.num > 0) {
+                this.formData.total = (this.formData.num * this.formData.real_price).toFixed(2);
             }
             }
         },
         },
         timeLock() {
         timeLock() {
@@ -200,20 +211,20 @@ export default {
             this.settingSubmit({advert_online: e});
             this.settingSubmit({advert_online: e});
         },
         },
         // 购买弹窗
         // 购买弹窗
-        showBuy(row,index){
-            this.buyForm = Object.assign({}, row);
-            this.buyForm.index = index;
+        showBuy(row, index) {
+            this.formData = Object.assign({}, row);
+            this.formData.index = index;
             this.showBuyEdit = true;
             this.showBuyEdit = true;
         },
         },
-        getPayment(){
+        getPayment() {
 
 
         },
         },
         // 购买广告
         // 购买广告
-        buy(){
+        buy() {
             this.$confirm('确定以该价格购买吗?', '提示', {type: 'warning'}).then(() => {
             this.$confirm('确定以该价格购买吗?', '提示', {type: 'warning'}).then(() => {
                 this.$message.closeAll();
                 this.$message.closeAll();
                 const loading = this.$loading({lock: true});
                 const loading = this.$loading({lock: true});
-                this.$http.post('/advert/buy', this.buyForm).then(res => {
+                this.$http.post('/advert/buy', this.formData).then(res => {
                     loading.close();
                     loading.close();
                     if (res.data.success === true) {
                     if (res.data.success === true) {
                         this.$refs.table.reload();
                         this.$refs.table.reload();
@@ -228,11 +239,11 @@ export default {
             })
             })
         },
         },
         // 购买广告
         // 购买广告
-        sell(){
+        sell() {
             this.$confirm('确定以该价格出售吗?', '提示', {type: 'warning'}).then(() => {
             this.$confirm('确定以该价格出售吗?', '提示', {type: 'warning'}).then(() => {
                 this.$message.closeAll();
                 this.$message.closeAll();
                 const loading = this.$loading({lock: true});
                 const loading = this.$loading({lock: true});
-                this.$http.post('/advert/sell', this.buyForm).then(res => {
+                this.$http.post('/advert/sell', this.formData).then(res => {
                     loading.close();
                     loading.close();
                     if (res.data.success === true) {
                     if (res.data.success === true) {
                         this.$refs.table.reload();
                         this.$refs.table.reload();
@@ -296,18 +307,23 @@ export default {
 .color1 {
 .color1 {
     background-color: #3aa1ff;
     background-color: #3aa1ff;
 }
 }
+
 .color2 {
 .color2 {
     background-color: #fbb52c;
     background-color: #fbb52c;
 }
 }
+
 .color3 {
 .color3 {
     background-color: #00C777;
     background-color: #00C777;
 }
 }
+
 .color4 {
 .color4 {
     background-color: #9266F9;
     background-color: #9266F9;
 }
 }
+
 .color5 {
 .color5 {
     background-color: #f7868c;
     background-color: #f7868c;
 }
 }
+
 .color0 {
 .color0 {
     background-color: #ff0080;
     background-color: #ff0080;
 }
 }

+ 28 - 19
addons/admin/src/views/system/advert/myorder.vue

@@ -10,7 +10,15 @@
                             <el-input v-model="table.where.order_no" placeholder="请输入订单号" clearable/>
                             <el-input v-model="table.where.order_no" placeholder="请输入订单号" clearable/>
                         </el-form-item>
                         </el-form-item>
                     </el-col>
                     </el-col>
-                    <el-col :md="4" :sm="12">
+                    <el-col :md="6" :sm="12">
+                        <el-form-item label="类型:">
+                            <el-select v-model="table.where.type" placeholder="请选择" class="ele-fluid">
+                                <el-option label="购买订单" value="1"/>
+                                <el-option label="出售订单" value="2"/>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :md="6" :sm="12">
                         <el-form-item label="订单状态:">
                         <el-form-item label="订单状态:">
                             <el-select v-model="table.where.status" placeholder="请选择" class="ele-fluid">
                             <el-select v-model="table.where.status" placeholder="请选择" class="ele-fluid">
                                 <el-option label="全部" value="0"/>
                                 <el-option label="全部" value="0"/>
@@ -25,7 +33,7 @@
                             </el-select>
                             </el-select>
                         </el-form-item>
                         </el-form-item>
                     </el-col>
                     </el-col>
-                    <el-col :md="4" :sm="12">
+                    <el-col :md="6" :sm="12">
                         <el-form-item label="异常状态:">
                         <el-form-item label="异常状态:">
                             <el-select v-model="table.where.exception_status" placeholder="请选择" class="ele-fluid">
                             <el-select v-model="table.where.exception_status" placeholder="请选择" class="ele-fluid">
                                 <el-option label="全部" value="0"/>
                                 <el-option label="全部" value="0"/>
@@ -34,8 +42,9 @@
                             </el-select>
                             </el-select>
                         </el-form-item>
                         </el-form-item>
                     </el-col>
                     </el-col>
-
-                    <el-col :md="4" :sm="12">
+                </el-row>
+                <el-row :gutter="15">
+                    <el-col :md="8" :sm="12">
                         <el-form-item label="起止日期:" prop="date">
                         <el-form-item label="起止日期:" prop="date">
                             <el-date-picker
                             <el-date-picker
                                 v-model="table.where.date"
                                 v-model="table.where.date"
@@ -47,17 +56,17 @@
                             </el-date-picker>
                             </el-date-picker>
                         </el-form-item>
                         </el-form-item>
                     </el-col>
                     </el-col>
-                    <el-col :md="12" :sm="12">
-                        <div class="ele-form-actions">
-                            <el-button type="primary" @click="$refs.table.reload()" icon="el-icon-search"
-                                       class="ele-btn-icon">查询
-                            </el-button>
-                            <el-button
-                                @click="(table.where={type: '1',status: '0', exception_status: '0'})&&$refs.table.reload()">
-                                重置
-                            </el-button>
-                            <el-button @click="exportData" icon="el-icon-download" type="success" class="ele-btn-icon" v-if="permission.includes('sys:buyorder:export')">导出</el-button>
-                        </div>
+                    <el-col :md="16" :sm="12">
+                    <div class="ele-form-actions">
+                        <el-button type="primary" @click="$refs.table.reload()" icon="el-icon-search"
+                                   class="ele-btn-icon">查询
+                        </el-button>
+                        <el-button
+                            @click="(table.where={type: '1',status: '0', exception_status: '0'})&&$refs.table.reload()">
+                            重置
+                        </el-button>
+                        <el-button @click="exportData" icon="el-icon-download" type="success" class="ele-btn-icon" v-if="permission.includes('sys:buyorder:export')">导出</el-button>
+                    </div>
                     </el-col>
                     </el-col>
                 </el-row>
                 </el-row>
             </el-form>
             </el-form>
@@ -548,7 +557,7 @@ export default {
     name: "SysUser",
     name: "SysUser",
     data() {
     data() {
         return {
         return {
-            table: {url: '/tradeorder/index', where: {type: '1', status: '0', exception_status: '0'}},  // 表格配置
+            table: {url: '/advertorder/business', where: {type: '1', status: '0', exception_status: '0'}},  // 表格配置
             choose: [],  // 表格选中数据
             choose: [],  // 表格选中数据
             reassigns: [],
             reassigns: [],
             loading: false,
             loading: false,
@@ -820,7 +829,7 @@ export default {
             const loading = this.$loading({lock: true});
             const loading = this.$loading({lock: true});
             let params = this.table.where;
             let params = this.table.where;
             params.pageSize = 2000;
             params.pageSize = 2000;
-            this.$http.post('/tradeorder/index', params).then(res => {
+            this.$http.post('/tradeorder/business', params).then(res => {
                 loading.close();
                 loading.close();
                 if (res.data.code === 0) {
                 if (res.data.code === 0) {
                     let statusArr = ['未知','待付款','待付款','已打款','交易完成','异常订单','退款订单','超时订单','已取消'];
                     let statusArr = ['未知','待付款','待付款','已打款','交易完成','异常订单','退款订单','超时订单','已取消'];
@@ -840,7 +849,7 @@ export default {
                         ]);
                         ]);
                     });
                     });
                     let sheet = XLSX.utils.aoa_to_sheet(array);
                     let sheet = XLSX.utils.aoa_to_sheet(array);
-                    this.$util.exportSheet(XLSX, sheet, '客户买单订单记录');
+                    this.$util.exportSheet(XLSX, sheet, '我的广告订单记录');
                 } else {
                 } else {
                     this.$message.error(res.data.msg);
                     this.$message.error(res.data.msg);
                 }
                 }
@@ -925,6 +934,6 @@ export default {
     color: #fbb52c;
     color: #fbb52c;
 }
 }
 .el-date-editor--daterange.el-input__inner {
 .el-date-editor--daterange.el-input__inner {
-    width: 230px;
+    width: auto;
 }
 }
 </style>
 </style>

+ 40 - 153
addons/admin/src/views/system/advert/order.vue

@@ -10,7 +10,15 @@
                             <el-input v-model="table.where.order_no" placeholder="请输入订单号" clearable/>
                             <el-input v-model="table.where.order_no" placeholder="请输入订单号" clearable/>
                         </el-form-item>
                         </el-form-item>
                     </el-col>
                     </el-col>
-                    <el-col :md="4" :sm="12">
+                    <el-col :md="6" :sm="12">
+                        <el-form-item label="类型:">
+                            <el-select v-model="table.where.type" placeholder="请选择" class="ele-fluid">
+                                <el-option label="购买订单" value="1"/>
+                                <el-option label="出售订单" value="2"/>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :md="6" :sm="12">
                         <el-form-item label="订单状态:">
                         <el-form-item label="订单状态:">
                             <el-select v-model="table.where.status" placeholder="请选择" class="ele-fluid">
                             <el-select v-model="table.where.status" placeholder="请选择" class="ele-fluid">
                                 <el-option label="全部" value="0"/>
                                 <el-option label="全部" value="0"/>
@@ -25,7 +33,7 @@
                             </el-select>
                             </el-select>
                         </el-form-item>
                         </el-form-item>
                     </el-col>
                     </el-col>
-                    <el-col :md="4" :sm="12">
+                    <el-col :md="6" :sm="12">
                         <el-form-item label="异常状态:">
                         <el-form-item label="异常状态:">
                             <el-select v-model="table.where.exception_status" placeholder="请选择" class="ele-fluid">
                             <el-select v-model="table.where.exception_status" placeholder="请选择" class="ele-fluid">
                                 <el-option label="全部" value="0"/>
                                 <el-option label="全部" value="0"/>
@@ -34,8 +42,9 @@
                             </el-select>
                             </el-select>
                         </el-form-item>
                         </el-form-item>
                     </el-col>
                     </el-col>
-
-                    <el-col :md="4" :sm="12">
+                </el-row>
+                <el-row :gutter="15">
+                    <el-col :md="8" :sm="12">
                         <el-form-item label="起止日期:" prop="date">
                         <el-form-item label="起止日期:" prop="date">
                             <el-date-picker
                             <el-date-picker
                                 v-model="table.where.date"
                                 v-model="table.where.date"
@@ -43,11 +52,11 @@
                                 placeholder="选择出生日期"
                                 placeholder="选择出生日期"
                                 size="small"
                                 size="small"
                                 value-format="yyyy-MM-dd"
                                 value-format="yyyy-MM-dd"
-                                format="yyyy-MM-dd">
+                                format="yyyy-MM-dd" >
                             </el-date-picker>
                             </el-date-picker>
                         </el-form-item>
                         </el-form-item>
                     </el-col>
                     </el-col>
-                    <el-col :md="12" :sm="12">
+                    <el-col :md="16" :sm="12">
                         <div class="ele-form-actions">
                         <div class="ele-form-actions">
                             <el-button type="primary" @click="$refs.table.reload()" icon="el-icon-search"
                             <el-button type="primary" @click="$refs.table.reload()" icon="el-icon-search"
                                        class="ele-btn-icon">查询
                                        class="ele-btn-icon">查询
@@ -56,7 +65,7 @@
                                 @click="(table.where={type: '1',status: '0', exception_status: '0'})&&$refs.table.reload()">
                                 @click="(table.where={type: '1',status: '0', exception_status: '0'})&&$refs.table.reload()">
                                 重置
                                 重置
                             </el-button>
                             </el-button>
-<!--                            <el-button @click="exportData" icon="el-icon-download" type="success" class="ele-btn-icon" v-if="permission.includes('sys:buyorder:export')">导出</el-button>-->
+                            <el-button @click="exportData" icon="el-icon-download" type="success" class="ele-btn-icon" v-if="permission.includes('sys:myorder:export')">导出</el-button>
                         </div>
                         </div>
                     </el-col>
                     </el-col>
                 </el-row>
                 </el-row>
@@ -147,12 +156,6 @@
                                      v-if="(row.status<=2 || row.status==7 || (row.status == 3 && $store.state.user.user.user_type==1)) && permission.includes('sys:buyorder:edit')">
                                      v-if="(row.status<=2 || row.status==7 || (row.status == 3 && $store.state.user.user.user_type==1)) && permission.includes('sys:buyorder:edit')">
                                 取消订单
                                 取消订单
                             </el-link>
                             </el-link>
-
-                            <el-link @click="showReassign(row, index)" icon="el-icon-edit" type="warning"
-                                     :underline="false"
-                                     v-if="$store.state.user.user.user_type==1 && (row.status<4 || row.status==7 || row.status == 5) && permission.includes('sys:buyorder:edit')">
-                                重新派单
-                            </el-link>
                         </template>
                         </template>
                     </el-table-column>
                     </el-table-column>
                 </template>
                 </template>
@@ -222,55 +225,6 @@
             </div>
             </div>
         </el-dialog>
         </el-dialog>
 
 
-        <!-- 详情 -->
-        <el-dialog :title="'重新派单'" :visible.sync="showReassignEdit" width="700px"
-                   @closed="editForm={}" :destroy-on-close="true" custom-class="ele-dialog-form" :lock-scroll="false">
-            <el-form :model="editForm" ref="editForm" label-width="120px">
-                <el-row :gutter="15">
-                    <el-col :sm="15">
-                        <el-form-item label="客户:">
-                            <span>{{ editForm.c_username }}</span>
-                        </el-form-item>
-                        <el-form-item label="订单号:">
-                            <span>{{ editForm.order_no }}</span>
-                        </el-form-item>
-                        <el-form-item label="交易数量:">
-                            <span>{{ editForm.num }} <img class="usdt" src="../../../assets/usdt.png" alt=""></span>
-                        </el-form-item>
-                        <el-form-item label="交易价格:">
-                            <span>{{ editForm.price }} USDT/CNY</span>
-                        </el-form-item>
-                        <el-form-item label="交易金额:">
-                            <span>{{ editForm.total }}</span>
-                        </el-form-item>
-                        <el-form-item label="当前派单用户:">
-                            <span>{{ editForm.username }}</span>
-                        </el-form-item>
-                        <el-col :sm="24">
-                            <el-form-item label="重新派单给:">
-                                <el-select v-model="editForm.new_business_id" filterable
-                                           remote
-                                           reserve-keyword
-                                           placeholder="请输入关键词"
-                                           :remote-method="getReassign"
-                                           :loading="loading" class="ele-fluid reassign">
-                                    <el-option v-for="(v,k) in reassigns" :key="k" :label="v.username" :value="v.id">
-                                        <span class="label"
-                                              :title="'ID:'+v.id+', USDT:'+v.usdt_num">{{ v.username }}</span>
-                                        <span class="credit">信誉:{{ v.credit }}分</span>
-                                    </el-option>
-                                </el-select>
-                            </el-form-item>
-                        </el-col>
-                    </el-col>
-                </el-row>
-            </el-form>
-            <div slot="footer">
-                <el-button @click="showReassignEdit=false">取消</el-button>
-                <el-button type="success" @click="reassign(editForm,editForm.index)">确定重新派单</el-button>
-            </div>
-        </el-dialog>
-
         <!-- 打款信息 -->
         <!-- 打款信息 -->
         <el-dialog :title="'打款信息'" :visible.sync="showPayEdit" width="700px"
         <el-dialog :title="'打款信息'" :visible.sync="showPayEdit" width="700px"
                    @closed="editForm={}" :destroy-on-close="true" custom-class="ele-dialog-form" :lock-scroll="false">
                    @closed="editForm={}" :destroy-on-close="true" custom-class="ele-dialog-form" :lock-scroll="false">
@@ -543,7 +497,7 @@ export default {
     name: "SysUser",
     name: "SysUser",
     data() {
     data() {
         return {
         return {
-            table: {url: '/tradeorder/index', where: {type: '1', status: '0', exception_status: '0'}},  // 表格配置
+            table: {url: '/advertorder/index', where: {type: '1', status: '0', exception_status: '0'}},  // 表格配置
             choose: [],  // 表格选中数据
             choose: [],  // 表格选中数据
             reassigns: [],
             reassigns: [],
             loading: false,
             loading: false,
@@ -642,20 +596,14 @@ export default {
             this.editForm.index = index;
             this.editForm.index = index;
             this.showEdit = true;
             this.showEdit = true;
         },
         },
-        // 派单窗口
-        showReassign(row, index) {
-            this.editForm = Object.assign({}, row);
-            this.editForm.index = index;
-            this.showReassignEdit = true;
-            // 获取可派单用户
-            this.getReassign();
-        },
         // 直接确认收款完成
         // 直接确认收款完成
-        collection(data, index) {
-            this.$confirm('确定已收款,并完成该订单?', '提示', {type: 'danger'}).then(() => {
+        pay() {
+            this.$confirm('确定已付款?', '提示', {type: 'danger'}).then(() => {
                 this.$message.closeAll();
                 this.$message.closeAll();
                 const loading = this.$loading({lock: true});
                 const loading = this.$loading({lock: true});
-                this.$http.post('/tradeorder/collection', {id: data.id, status: 4}).then(res => {
+                let params = JSON.parse(JSON.stringify(this.editForm))
+                params.status = 3;
+                this.$http.post('/advertorder/pay', params).then(res => {
                     loading.close();
                     loading.close();
                     if (res.data.success === true) {
                     if (res.data.success === true) {
                         this.showPayEdit = false
                         this.showPayEdit = false
@@ -670,14 +618,15 @@ export default {
                 });
                 });
             });
             });
         },
         },
-        // 直接取消订单
-        cancel(data, index) {
-            this.$confirm('确定取消该订单,该操作不可逆谨慎操作?', '提示', {type: 'danger'}).then(() => {
+        // 直接确认收款完成
+        collection(data, index) {
+            this.$confirm('确定已收款,并完成该订单?', '提示', {type: 'danger'}).then(() => {
                 this.$message.closeAll();
                 this.$message.closeAll();
                 const loading = this.$loading({lock: true});
                 const loading = this.$loading({lock: true});
-                this.$http.post('/tradeorder/cancel', {id: data.id, status: 8}).then(res => {
+                this.$http.post('/advertorder/collection', {id: data.id, status: 4}).then(res => {
                     loading.close();
                     loading.close();
                     if (res.data.success === true) {
                     if (res.data.success === true) {
+                        this.showCollectionEdit = false
                         this.$message({type: 'success', message: res.data.msg});
                         this.$message({type: 'success', message: res.data.msg});
                         this.$refs.table.reload();
                         this.$refs.table.reload();
                     } else {
                     } else {
@@ -689,32 +638,14 @@ export default {
                 });
                 });
             });
             });
         },
         },
-        // 异常取消
-        exceptionCancel(status, refund_status) {
-            if (this.showCatchNextEdit) {
-                if (this.editForm.exception_sub_type <= 0) {
-                    this.$message({type: 'danger', message: '请选择异常处理类型'});
-                    return false;
-                }
-                if (this.editForm.exception_img == '') {
-                    this.$message({type: 'danger', message: '请上传异常凭证'});
-                    return false;
-                }
-                if (this.editForm.exception_remark == '') {
-                    this.$message({type: 'danger', message: '请填写异常备注'});
-                    return false;
-                }
-            }
-            this.$confirm((status == 5 ? '确定申请' : '确定') + '异常处理该订单,该操作不可逆谨慎操作?', '提示', {type: 'danger'}).then(() => {
+        // 直接取消订单
+        cancel(data, index) {
+            this.$confirm('确定取消该订单,该操作不可逆谨慎操作?', '提示', {type: 'danger'}).then(() => {
                 this.$message.closeAll();
                 this.$message.closeAll();
                 const loading = this.$loading({lock: true});
                 const loading = this.$loading({lock: true});
-                this.editForm.status = status;
-                this.editForm.refund_status = refund_status;
-                this.$http.post('/tradeorder/cancel', this.editForm).then(res => {
+                this.$http.post('/advertorder/cancel', {id: data.id, status: 8}).then(res => {
                     loading.close();
                     loading.close();
                     if (res.data.success === true) {
                     if (res.data.success === true) {
-                        this.showCatchEdit = false;
-                        this.showCatchNextEdit = false;
                         this.$message({type: 'success', message: res.data.msg});
                         this.$message({type: 'success', message: res.data.msg});
                         this.$refs.table.reload();
                         this.$refs.table.reload();
                     } else {
                     } else {
@@ -726,8 +657,8 @@ export default {
                 });
                 });
             });
             });
         },
         },
-        // 异常处理
-        exceptionConfirm(status) {
+        // 异常取消
+        exception(status, refund_status) {
             if (this.showCatchNextEdit) {
             if (this.showCatchNextEdit) {
                 if (this.editForm.exception_sub_type <= 0) {
                 if (this.editForm.exception_sub_type <= 0) {
                     this.$message({type: 'danger', message: '请选择异常处理类型'});
                     this.$message({type: 'danger', message: '请选择异常处理类型'});
@@ -745,10 +676,13 @@ export default {
             this.$confirm((status == 5 ? '确定申请' : '确定') + '异常处理该订单,该操作不可逆谨慎操作?', '提示', {type: 'danger'}).then(() => {
             this.$confirm((status == 5 ? '确定申请' : '确定') + '异常处理该订单,该操作不可逆谨慎操作?', '提示', {type: 'danger'}).then(() => {
                 this.$message.closeAll();
                 this.$message.closeAll();
                 const loading = this.$loading({lock: true});
                 const loading = this.$loading({lock: true});
-                this.editForm.status = status;
-                this.$http.post('/tradeorder/collection', this.editForm).then(res => {
+                let params = JSON.parse(JSON.stringify(this.editForm))
+                params.status = status;
+                params.refund_status = refund_status;
+                this.$http.post('/advertorder/exception', params).then(res => {
                     loading.close();
                     loading.close();
                     if (res.data.success === true) {
                     if (res.data.success === true) {
+                        this.showCatchEdit = false;
                         this.showCatchNextEdit = false;
                         this.showCatchNextEdit = false;
                         this.$message({type: 'success', message: res.data.msg});
                         this.$message({type: 'success', message: res.data.msg});
                         this.$refs.table.reload();
                         this.$refs.table.reload();
@@ -761,53 +695,6 @@ export default {
                 });
                 });
             });
             });
         },
         },
-        // 派单用户
-        getReassign(keyword) {
-            const loading = this.$loading({lock: true});
-            this.$http.post('/tradeorder/reassignList', {
-                keyword: keyword,
-                userId: this.editForm.business_id,
-                num: this.editForm.num,
-                type: this.editForm.type
-            }).then(res => {
-                loading.close();
-                if (res.data.success === true) {
-                    this.reassigns = res.data.data;
-                } else {
-                    this.$message.error(res.data.msg);
-                }
-            }).catch(e => {
-                loading.close();
-                this.$message.error(e.message);
-            });
-        },
-        // 重新派单
-        reassign(data, index) {
-            if (data.new_business_id <= 0) {
-                this.$message({type: 'danger', message: '请选择重新派单的用户'});
-                return false;
-            }
-            this.$confirm('确定重新派单给该用户?', '提示', {type: 'danger'}).then(() => {
-                this.$message.closeAll();
-                const loading = this.$loading({lock: true});
-                this.$http.post('/tradeorder/reassign', {
-                    id: data.id,
-                    business_id: data.new_business_id,
-                }).then(res => {
-                    loading.close();
-                    if (res.data.success === true) {
-                        this.showReassignEdit = false;
-                        this.$message({type: 'success', message: res.data.msg});
-                        this.$refs.table.reload();
-                    } else {
-                        this.$message.error(res.data.msg);
-                    }
-                }).catch(e => {
-                    loading.close();
-                    this.$message.error(e.message);
-                });
-            });
-        },
         /* 导出数据 */
         /* 导出数据 */
         exportData() {
         exportData() {
             let array = [['提交时间','提交用户', '订单号', '交易量', '单价(¥)', '交易总额(¥)', '收款人信息', '交易状态', '备注', '操作时间']];
             let array = [['提交时间','提交用户', '订单号', '交易量', '单价(¥)', '交易总额(¥)', '收款人信息', '交易状态', '备注', '操作时间']];
@@ -815,7 +702,7 @@ export default {
             const loading = this.$loading({lock: true});
             const loading = this.$loading({lock: true});
             let params = this.table.where;
             let params = this.table.where;
             params.pageSize = 2000;
             params.pageSize = 2000;
-            this.$http.post('/tradeorder/index', params).then(res => {
+            this.$http.post('/advertorder/index', params).then(res => {
                 loading.close();
                 loading.close();
                 if (res.data.code === 0) {
                 if (res.data.code === 0) {
                     let statusArr = ['未知','待付款','待付款','已打款','交易完成','异常订单','退款订单','超时订单','已取消'];
                     let statusArr = ['未知','待付款','待付款','已打款','交易完成','异常订单','退款订单','超时订单','已取消'];
@@ -920,6 +807,6 @@ export default {
     color: #fbb52c;
     color: #fbb52c;
 }
 }
 .el-date-editor--daterange.el-input__inner {
 .el-date-editor--daterange.el-input__inner {
-    width: 230px;
+    width: auto;
 }
 }
 </style>
 </style>

+ 276 - 0
addons/admin/src/views/system/api/index.vue

@@ -0,0 +1,276 @@
+<template>
+    <div class="ele-body">
+        <el-card shadow="never">
+            <!-- 搜索表单 -->
+            <el-form :model="table.where" label-width="110px" class="ele-form-search"
+                     @keyup.enter.native="$refs.table.reload()" @submit.native.prevent>
+                <el-row :gutter="15">
+                    <el-col :md="8" :sm="12">
+                        <el-form-item label="账号/平台名称:">
+                            <el-input v-model="table.where.username" placeholder="请输入账号/平台名称" clearable/>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :md="6" :sm="12">
+                        <div class="ele-form-actions">
+                            <el-button type="primary" @click="$refs.table.reload()" icon="el-icon-search"
+                                       class="ele-btn-icon">查询
+                            </el-button>
+                            <el-button @click="(table.where={})&&$refs.table.reload()">重置</el-button>
+                        </div>
+                    </el-col>
+                </el-row>
+            </el-form>
+            <!-- 操作按钮 -->
+            <div class="ele-table-tool ele-table-tool-default">
+                <el-button @click="showEdit=true" type="primary" icon="el-icon-plus" class="ele-btn-icon" size="small"
+                           v-if="permission.includes('sys:api:add')">添加
+                </el-button>
+                <el-button @click="remove()" type="danger" icon="el-icon-delete" class="ele-btn-icon" size="small"
+                           v-if="permission.includes('sys:api:dall')">批量删除
+                </el-button>
+            </div>
+            <!-- 数据表格 -->
+            <ele-data-table ref="table" :config="table" :choose.sync="choose" height="calc(100vh - 315px)"
+                            highlight-current-row>
+                <template slot-scope="{index}">
+                    <el-table-column type="selection" width="45" align="center" fixed="left"/>
+                    <el-table-column prop="username" label="账号" sortable="custom" show-overflow-tooltip
+                                     min-width="150"/>
+                    <el-table-column prop="account" label="企业/个人名称" sortable="custom" show-overflow-tooltip
+                                     min-width="150"/>
+                    <!--          <el-table-column prop="balance" label="余额" sortable="custom" show-overflow-tooltip min-width="250"/>-->
+                    <el-table-column prop="api_key" label="密钥" sortable="custom" show-overflow-tooltip min-width="150"/>
+                    <el-table-column prop="cost_type" label="套餐类型" sortable="custom" show-overflow-tooltip
+                                     min-width="100">
+                        <template slot-scope="{row}">
+                            <span v-if="row.cost_type==1" class="ele-text-success">按时间</span>
+                            <span v-if="row.cost_type==2" class="ele-text-primary">按次数</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="expired_at" label="有效期" sortable="custom" show-overflow-tooltip
+                                     min-width="150">
+                        <template slot-scope="{row}">
+                            <span v-if="row.expired_at" class="ele-text-success">{{ row.expired_at }}</span>
+                            <span v-else class="ele-text-danger">已到期</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="limits" label="权限" sortable="custom" show-overflow-tooltip min-width="250">
+                        <template slot-scope="{row}">
+                            <template v-if="row.user_limits">
+                        <span v-for="(v,k) in row.user_limits" :key="k">
+                        <span v-if="v==0" class="ele-text-success">不限制</span>
+                        <span v-if="v==1" class="ele-text-primary" style="margin-right: 10px">外汇平台</span>
+                        <span v-if="v==2" class="ele-text-warning" style="margin-right: 10px">BC平台</span>
+                    </span>
+                            </template>
+                            <template v-else>
+                                <span class="ele-text-success">不限制</span>
+                            </template>
+
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="remark" label="备注" sortable="custom" show-overflow-tooltip min-width="250"/>
+                    <el-table-column label="创建时间" sortable="custom" show-overflow-tooltip min-width="160">
+                        <template slot-scope="{row}">{{ row.create_time }}</template>
+                    </el-table-column>
+                    <el-table-column prop="status" label="状态" sortable="custom" :resizable="false" min-width="120" fixed="right">
+                        <template slot-scope="{row}">
+                            <el-switch v-model="row.status" @change="editStatus(row)" :active-value="1"
+                                       :inactive-value="2"/>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作" width="130px" align="center" :resizable="false" fixed="right">
+                        <template slot-scope="{row}">
+                            <el-link @click="edit(row)" icon="el-icon-edit" type="primary" :underline="false"
+                                     v-if="permission.includes('sys:api:edit')">修改
+                            </el-link>
+                            <el-popconfirm title="确定要删除此接口账号吗?" @confirm="remove(row)" class="ele-action">
+                                <el-link slot="reference" icon="el-icon-delete" type="danger" :underline="false"
+                                         v-if="permission.includes('sys:api:delete')">删除
+                                </el-link>
+                            </el-popconfirm>
+                        </template>
+                    </el-table-column>
+                </template>
+            </ele-data-table>
+        </el-card>
+        <!-- 编辑弹窗 -->
+        <el-dialog :title="editForm.id?'修改接口账号':'新增接口账号'" :visible.sync="showEdit" width="600px"
+                   @closed="editForm={cost_type:1,status: 2}" :destroy-on-close="true" custom-class="ele-dialog-form"
+                   :lock-scroll="false">
+            <el-form :model="editForm" ref="editForm" :rules="editRules" label-width="120px">
+                <el-row :gutter="15">
+                    <el-col :sm="16">
+                        <el-form-item label="账号:" prop="username">
+                            <el-input v-model="editForm.username" placeholder="请输入手机号或邮箱" clearable/>
+                        </el-form-item>
+                        <el-form-item label="企业/个人名称:" prop="account">
+                            <el-input v-model="editForm.account" placeholder="请输入企业或个人名称" clearable/>
+                        </el-form-item>
+                        <el-form-item label="套餐类型:" prop="cost_type">
+                            <el-select v-model="editForm.cost_type" placeholder="请选择使用套餐类型" class="ele-fluid">
+                                <el-option label="按时间" :value="1"/>
+                                <el-option label="按次数" :value="2" disabled/>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="接口权限:" prop="user_limits">
+                            <el-select v-model="editForm.user_limits" multiple placeholder="请选择接口开放权限"
+                                       class="ele-fluid">
+                                <el-option label="不限制" :value="0"/>
+                                <el-option label="外汇平台" value="1"/>
+                                <el-option label="BC平台" value="2"/>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="使用期限:" prop="user_limits">
+                            <el-date-picker
+                                v-model="editForm.expired_at"
+                                type="date"
+                                placeholder="选择截止日期"
+                                size="small"
+                                value-format="yyyy-MM-dd"
+                                format="yyyy-MM-dd" style="width: auto;">
+                            </el-date-picker>
+                        </el-form-item>
+                        <el-form-item label="状态:">
+                            <el-radio-group v-model="editForm.status">
+                                <el-radio :label="1">正常</el-radio>
+                                <el-radio :label="2">禁用</el-radio>
+                            </el-radio-group>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <!-- 富文本编辑器 -->
+                <tinymce-editor v-model="editForm.content" :init="editContent"/>
+            </el-form>
+            <div slot="footer">
+                <el-button @click="showEdit=false">取消</el-button>
+                <el-button type="primary" v-if="permission.includes('sys:api:edit')" @click="save">保存</el-button>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import {mapGetters} from "vuex";
+
+export default {
+    name: "SysNotice",
+    components: {},
+    data() {
+        return {
+            table: {url: '/apis/index', where: {}},  // 表格配置
+            choose: [],  // 表格选中数据
+            showEdit: false,  // 是否显示表单弹窗
+            editForm: {cost_type: 1, status: 2},  // 表单数据
+            editRules: {  // 表单验证规则
+                username: [
+                    {required: true, message: '请输入账号', trigger: 'blur'}
+                ],
+                account: [
+                    {required: true, message: '请输入企业或个人名称', trigger: 'blur'}
+                ],
+                expired_at: [
+                    {required: true, message: '请选择接口有效期', trigger: 'blur'}
+                ],
+            }
+        }
+    },
+    computed: {
+        ...mapGetters(["permission"]),
+    },
+    mounted() {
+    },
+    methods: {
+        /* 显示编辑 */
+        edit(row) {
+            this.editForm = Object.assign({}, row);
+            this.showEdit = true;
+        },
+        /* 保存编辑 */
+        save() {
+            this.$message.closeAll();
+            this.$refs['editForm'].validate((valid) => {
+                if (valid) {
+                    const loading = this.$loading({lock: true});
+                    this.$http.post('/apis/edit', this.editForm).then(res => {
+                        loading.close();
+                        if (res.data.success === true) {
+                            this.showEdit = false;
+                            this.$message({type: 'success', message: res.data.msg});
+                            this.$refs.table.reload();
+                        } else {
+                            this.$message.error(res.data.msg);
+                        }
+                    }).catch(e => {
+                        loading.close();
+                        this.$message.error(e.message);
+                    });
+                } else {
+                    return false;
+                }
+            });
+        },
+        /* 删除 */
+        remove(row) {
+            this.$message.closeAll();
+            if (!row) {  // 批量删除
+                if (this.choose.length === 0) return this.$message.error('请至少选择一条数据');
+                let ids = this.choose.map(d => d.id);
+                this.$confirm('确定要删除选中的接口账号吗?', '提示', {type: 'warning'}).then(() => {
+                    const loading = this.$loading({lock: true});
+                    this.$http.post('/apis/delete', {id: ids}).then(res => {
+                        loading.close();
+                        if (res.data.code === 0) {
+                            this.$message({type: 'success', message: res.data.msg});
+                            this.$refs.table.reload();
+                        } else {
+                            this.$message.error(res.data.msg);
+                        }
+                    }).catch(e => {
+                        loading.close();
+                        this.$message.error(e.message);
+                    });
+                }).catch(() => 0);
+            } else {  // 单个删除
+                const loading = this.$loading({lock: true});
+                this.$http.post('/apis/delete', {id: row.id}).then(res => {
+                    loading.close();
+                    if (res.data.code === 0) {
+                        this.$message({type: 'success', message: res.data.msg});
+                        this.$refs.table.reload();
+                    } else {
+                        this.$message.error(res.data.msg);
+                    }
+                }).catch(e => {
+                    loading.close();
+                    this.$message.error(e.message);
+                });
+            }
+        },
+        /* 更改状态 */
+        editStatus(row) {
+            this.$message.closeAll();
+            const loading = this.$loading({lock: true});
+            let params = Object.assign({}, row);
+            this.$http.post('/apis/status', params).then(res => {
+                loading.close();
+                if (res.data.code === 0) {
+                    this.$message({type: 'success', message: res.data.msg});
+                } else {
+                    row.status = !row.status ? 2 : 1;
+                    this.$message.error(res.data.msg);
+                }
+            }).catch(e => {
+                loading.close();
+                this.$message.error(e.message);
+            });
+        },
+    }
+}
+</script>
+
+<style scoped>
+.ele-block >>> .el-upload, .ele-block >>> .el-upload-dragger {
+    width: 100%;
+}
+</style>

+ 23 - 9
addons/admin/src/views/system/business/index.vue

@@ -46,30 +46,38 @@
                 <template slot-scope="{index}">
                 <template slot-scope="{index}">
                     <el-table-column type="selection" width="45" align="center" fixed="left"/>
                     <el-table-column type="selection" width="45" align="center" fixed="left"/>
                     <el-table-column type="index" :index="index" label="编号" width="60" align="center" fixed="left" show-overflow-tooltip/>
                     <el-table-column type="index" :index="index" label="编号" width="60" align="center" fixed="left" show-overflow-tooltip/>
-                    <el-table-column label="头像" min-width="60" align="center">
+<!--                    <el-table-column label="头像" min-width="60" align="center">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
                             <el-avatar shape="circle" :size="25" :src="row.avatar">
                             <el-avatar shape="circle" :size="25" :src="row.avatar">
                                 {{substr(row.username,1)}}
                                 {{substr(row.username,1)}}
                             </el-avatar>
                             </el-avatar>
                         </template>
                         </template>
-                    </el-table-column>
-                    <el-table-column prop="username" label="用户账号" sortable="custom" show-overflow-tooltip min-width="110"/>
+                    </el-table-column>-->
+                    <el-table-column prop="username" label="用户账号" sortable="custom" show-overflow-tooltip min-width="110" fixed="left"/>
                     <el-table-column prop="realname" label="用户姓名" sortable="custom" show-overflow-tooltip min-width="110"/>
                     <el-table-column prop="realname" label="用户姓名" sortable="custom" show-overflow-tooltip min-width="110"/>
                     <el-table-column prop="credit" label="信誉积分" sortable="custom" show-overflow-tooltip min-width="110"/>
                     <el-table-column prop="credit" label="信誉积分" sortable="custom" show-overflow-tooltip min-width="110"/>
                     <el-table-column prop="usdt_num" label="余额/USDT" sortable="custom" show-overflow-tooltip min-width="110"/>
                     <el-table-column prop="usdt_num" label="余额/USDT" sortable="custom" show-overflow-tooltip min-width="110"/>
                     <el-table-column prop="exception_num" label="异常次数" sortable="custom" show-overflow-tooltip min-width="110"/>
                     <el-table-column prop="exception_num" label="异常次数" sortable="custom" show-overflow-tooltip min-width="110"/>
                     <el-table-column prop="trc_address" label="TRC20钱包地址"  show-overflow-tooltip min-width="150"/>
                     <el-table-column prop="trc_address" label="TRC20钱包地址"  show-overflow-tooltip min-width="150"/>
                     <el-table-column prop="erc_hexaddress" label="ERC20钱包地址"  show-overflow-tooltip min-width="150"/>
                     <el-table-column prop="erc_hexaddress" label="ERC20钱包地址"  show-overflow-tooltip min-width="150"/>
-                    <el-table-column prop="gender_name" label="性别" sortable="custom" show-overflow-tooltip min-width="80"/>
+                    <el-table-column prop="trc_num" label="TRX余额" sortable="custom" show-overflow-tooltip
+                                     min-width="120"/>
+                    <el-table-column prop="trc_usdt_num" label="USDT-TRC余额/USDT" sortable="custom" show-overflow-tooltip
+                                     min-width="120"/>
+                    <el-table-column prop="erc_num" label="ERC余额/USDT" sortable="custom" show-overflow-tooltip
+                                     min-width="120"/>
+                    <el-table-column prop="erc_usdt_num" label="USDT-ERC余额/USDT" sortable="custom" show-overflow-tooltip
+                                     min-width="120"/>
+                    <el-table-column label="创建时间" sortable="custom" show-overflow-tooltip min-width="160">
+                        <template slot-scope="{row}">{{ row.create_time  }}</template>
+                    </el-table-column>
                     <el-table-column prop="mobile" label="手机号" show-overflow-tooltip min-width="110"/>
                     <el-table-column prop="mobile" label="手机号" show-overflow-tooltip min-width="110"/>
-                    <el-table-column prop="status" label="状态" width="75px" :resizable="false">
+                    <el-table-column prop="gender_name" label="性别" sortable="custom" show-overflow-tooltip min-width="80"/>
+                    <el-table-column prop="status" label="状态" width="75px" fixed="right" :resizable="false">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
                             <el-switch v-model="row.status" @change="editStatus(row)" :active-value="1" :inactive-value="2"/>
                             <el-switch v-model="row.status" @change="editStatus(row)" :active-value="1" :inactive-value="2"/>
                         </template>
                         </template>
                     </el-table-column>
                     </el-table-column>
-                    <el-table-column label="创建时间" sortable="custom" show-overflow-tooltip min-width="160">
-                        <template slot-scope="{row}">{{ row.create_time  }}</template>
-                    </el-table-column>
                     <el-table-column label="操作" width="220px" align="center" :resizable="false" fixed="right">
                     <el-table-column label="操作" width="220px" align="center" :resizable="false" fixed="right">
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
                             <el-link @click="edit(row)" icon="el-icon-edit" type="primary" :underline="false" v-if="permission.includes('sys:user:edit')">修改</el-link>
                             <el-link @click="edit(row)" icon="el-icon-edit" type="primary" :underline="false" v-if="permission.includes('sys:user:edit')">修改</el-link>
@@ -122,10 +130,16 @@
                                 <el-option v-for="(item,index) in roleList" :key="index" :label="item.name" :value="parseInt(item.id)"/>
                                 <el-option v-for="(item,index) in roleList" :key="index" :label="item.name" :value="parseInt(item.id)"/>
                             </el-select>
                             </el-select>
                         </el-form-item>
                         </el-form-item>
+                        <el-form-item label="交易状态:" prop="trade_status">
+                            <el-select v-model="editForm.trade_status" placeholder="请选择交易员可交易状态" class="ele-block" clearable>
+                                <el-option label="无限制" :value="1"/>
+                                <el-option label="只可派单交易" :value="2"/>
+                                <el-option label="只可广告交易" :value="3"/>
+                            </el-select>
+                        </el-form-item>
                         <el-form-item label="会员状态:" prop="status">
                         <el-form-item label="会员状态:" prop="status">
                             <el-select v-model="editForm.status" placeholder="请选择会员状态" class="ele-block" clearable>
                             <el-select v-model="editForm.status" placeholder="请选择会员状态" class="ele-block" clearable>
                                 <el-option label="正常" :value="1"/>
                                 <el-option label="正常" :value="1"/>
-                                <el-option label="禁止派单" :value="3"/>
                                 <el-option label="禁用" :value="2"/>
                                 <el-option label="禁用" :value="2"/>
                             </el-select>
                             </el-select>
                         </el-form-item>
                         </el-form-item>

+ 17 - 12
addons/admin/src/views/system/buyorder/index.vue

@@ -74,7 +74,8 @@
                     <el-table-column type="selection" :index="index" width="45" align="center" fixed="left"/>
                     <el-table-column type="selection" :index="index" width="45" align="center" fixed="left"/>
                     <el-table-column prop="time_text" label="提交时间" width="60" align="center" fixed="left"
                     <el-table-column prop="time_text" label="提交时间" width="60" align="center" fixed="left"
                                      show-overflow-tooltip/>
                                      show-overflow-tooltip/>
-                    <el-table-column prop="c_username" label="提交用户" fixed="left" show-overflow-tooltip width="110"/>
+                    <el-table-column prop="c_username_text" label="提交用户" fixed="left" show-overflow-tooltip width="110"/>
+                    <el-table-column prop="username_text" label="派单用户" v-if="$store.state.user.user.user_type==1" fixed="left" show-overflow-tooltip width="110"/>
                     <el-table-column prop="order_no" label="订单号" min-width="100" align="center" show-overflow-tooltip/>
                     <el-table-column prop="order_no" label="订单号" min-width="100" align="center" show-overflow-tooltip/>
                     <el-table-column prop="num" label="交易数量(USDT)" min-width="130" align="center" show-overflow-tooltip>
                     <el-table-column prop="num" label="交易数量(USDT)" min-width="130" align="center" show-overflow-tooltip>
                         <template slot-scope="{row}">
                         <template slot-scope="{row}">
@@ -414,7 +415,7 @@
                 </el-button>
                 </el-button>
                 <!-- 币商申请异常或平台异常处理 -->
                 <!-- 币商申请异常或平台异常处理 -->
                 <el-button type="success"
                 <el-button type="success"
-                           v-else-if="(editForm.status==3 || (editForm.exception_type == 2 && editForm.status != 8) || (editForm.status != 4 && $store.state.user.user.user_type== 1) || editForm.status==7) "
+                           v-else-if="(editForm.status==3 || (editForm.exception_type == 2) || (editForm.status != 4 && $store.state.user.user.user_type== 1) || editForm.status==7) "
                            @click="catchOrderNext()">下一步
                            @click="catchOrderNext()">下一步
                 </el-button>
                 </el-button>
             </div>
             </div>
@@ -498,13 +499,13 @@
                             </el-radio-group>
                             </el-radio-group>
                         </el-form-item>
                         </el-form-item>
                         <el-form-item label="上传异常凭证:" class="is-required">
                         <el-form-item label="上传异常凭证:" class="is-required">
-                            <uploadImage :limit="1" v-model="editForm.exception_img"></uploadImage>
+                            <uploadImage v-if="$refs.table" :limit="1" v-model="editForm.exception_img" ></uploadImage>
                         </el-form-item>
                         </el-form-item>
                         <el-col :sm="16">
                         <el-col :sm="16">
                         <el-form-item label="异常备注:" class="is-required">
                         <el-form-item label="异常备注:" class="is-required">
                             <el-input v-model="editForm.exception_remark" placeholder="请输入异常备注" clearable/>
                             <el-input v-model="editForm.exception_remark" placeholder="请输入异常备注" clearable/>
                         </el-form-item>
                         </el-form-item>
-                        <el-form-item label="交易密码:" v-if="$store.state.user.user.user_type == 2 && editForm.status != 4 && editForm.status != 5" class="is-required">
+                        <el-form-item label="交易密码:" v-if="$store.state.user.user.user_type == 2 && editForm.status != 4 && editForm.status != 5 && editForm.status != 8" class="is-required">
                             <el-input type="password" v-model="editForm.trade_password" placeholder="请输入交易密码" clearable/>
                             <el-input type="password" v-model="editForm.trade_password" placeholder="请输入交易密码" clearable/>
                         </el-form-item>
                         </el-form-item>
                         </el-col>
                         </el-col>
@@ -525,7 +526,7 @@
                            @click="exceptionConfirm(4)">完成订单
                            @click="exceptionConfirm(4)">完成订单
                 </el-button>
                 </el-button>
                 <el-button type="primary"
                 <el-button type="primary"
-                           v-else-if="$store.state.user.user.user_type == 2 && editForm.status != 4 && editForm.status != 5"
+                           v-else-if="$store.state.user.user.user_type == 2 && editForm.status != 4 && editForm.status != 5 && editForm.status != 8"
                            @click="exceptionConfirm(5)">确定提交
                            @click="exceptionConfirm(5)">确定提交
                 </el-button>
                 </el-button>
             </div>
             </div>
@@ -585,6 +586,7 @@ export default {
         if (order_no) {
         if (order_no) {
             this.table.where.order_no = order_no;
             this.table.where.order_no = order_no;
         }
         }
+
     },
     },
     methods: {
     methods: {
         // 异常类型
         // 异常类型
@@ -620,7 +622,7 @@ export default {
         },
         },
         /* 异常订单处理下一步 */
         /* 异常订单处理下一步 */
         catchOrderNext() {
         catchOrderNext() {
-            this.editForm.exception_sub_type = 1
+            this.editForm.exception_sub_type = this.editForm.exception_sub_type? this.editForm.exception_sub_type : 1
             this.showCatchEdit = false;
             this.showCatchEdit = false;
             this.showCatchNextEdit = true;
             this.showCatchNextEdit = true;
         },
         },
@@ -654,7 +656,7 @@ export default {
             this.$confirm('确定已收款,并完成该订单?', '提示', {type: 'danger'}).then(() => {
             this.$confirm('确定已收款,并完成该订单?', '提示', {type: 'danger'}).then(() => {
                 this.$message.closeAll();
                 this.$message.closeAll();
                 const loading = this.$loading({lock: true});
                 const loading = this.$loading({lock: true});
-                this.$http.post('/tradeorder/collection', {id: data.id, status: 4}).then(res => {
+                this.$http.post('/tradeorder/collection', {id: data.id, status: 4,trade_password:this.editForm.trade_password}).then(res => {
                     loading.close();
                     loading.close();
                     if (res.data.success === true) {
                     if (res.data.success === true) {
                         this.showPayEdit = false
                         this.showPayEdit = false
@@ -707,9 +709,10 @@ export default {
             this.$confirm((status == 5 ? '确定申请' : '确定') + '异常处理该订单,该操作不可逆谨慎操作?', '提示', {type: 'danger'}).then(() => {
             this.$confirm((status == 5 ? '确定申请' : '确定') + '异常处理该订单,该操作不可逆谨慎操作?', '提示', {type: 'danger'}).then(() => {
                 this.$message.closeAll();
                 this.$message.closeAll();
                 const loading = this.$loading({lock: true});
                 const loading = this.$loading({lock: true});
-                this.editForm.status = status;
-                this.editForm.refund_status = refund_status;
-                this.$http.post('/tradeorder/cancel', this.editForm).then(res => {
+                let params = JSON.parse(JSON.stringify(this.editForm))
+                params.status = status;
+                params.refund_status = refund_status;
+                this.$http.post('/tradeorder/cancel', params).then(res => {
                     loading.close();
                     loading.close();
                     if (res.data.success === true) {
                     if (res.data.success === true) {
                         this.showCatchEdit = false;
                         this.showCatchEdit = false;
@@ -745,7 +748,9 @@ export default {
                 this.$message.closeAll();
                 this.$message.closeAll();
                 const loading = this.$loading({lock: true});
                 const loading = this.$loading({lock: true});
                 this.editForm.status = status;
                 this.editForm.status = status;
-                this.$http.post('/tradeorder/collection', this.editForm).then(res => {
+                let params = JSON.parse(JSON.stringify(this.editForm))
+                params.status = status;
+                this.$http.post('/tradeorder/collection', params).then(res => {
                     loading.close();
                     loading.close();
                     if (res.data.success === true) {
                     if (res.data.success === true) {
                         this.showCatchNextEdit = false;
                         this.showCatchNextEdit = false;
@@ -919,6 +924,6 @@ export default {
     color: #fbb52c;
     color: #fbb52c;
 }
 }
 .el-date-editor--daterange.el-input__inner {
 .el-date-editor--daterange.el-input__inner {
-    width: 230px;
+    width: auto;
 }
 }
 </style>
 </style>

+ 2 - 2
addons/admin/src/views/system/capital/index.vue

@@ -61,7 +61,7 @@
                                     <el-button type="primary" @click="$refs.table.reload()" icon="el-icon-search"
                                     <el-button type="primary" @click="$refs.table.reload()" icon="el-icon-search"
                                                class="ele-btn-icon">查询
                                                class="ele-btn-icon">查询
                                     </el-button>
                                     </el-button>
-                                    <el-button @click="(table.where={})&&$refs.table.reload()">重置</el-button>
+                                    <el-button @click="(table.where={type:'0'})&&$refs.table.reload()">重置</el-button>
                                 </div>
                                 </div>
                             </el-col>
                             </el-col>
                         </el-row>
                         </el-row>
@@ -113,7 +113,7 @@ export default {
     components: {},
     components: {},
     data() {
     data() {
         return {
         return {
-            table: {url: '/capital/index', where: {},page:{limit: 30}},  // 表格配置
+            table: {url: '/capital/index', where: {type:'0'},page:{limit: 30}},  // 表格配置
             choose: [],  // 表格选中数据
             choose: [],  // 表格选中数据
             userInfo: {},
             userInfo: {},
             activeName: 'usdt',
             activeName: 'usdt',

+ 5 - 1
addons/admin/src/views/system/capital/withdraw.vue

@@ -50,7 +50,11 @@
                                         <el-input v-model="coinForm.to_address" placeholder="请输入提币地址" clearable/>
                                         <el-input v-model="coinForm.to_address" placeholder="请输入提币地址" clearable/>
                                     </el-form-item>
                                     </el-form-item>
                                     <el-form-item label="提币数量:" prop="num">
                                     <el-form-item label="提币数量:" prop="num">
-                                        <el-input v-model="coinForm.num" placeholder="请输入提币数量" @input="countFree()"
+                                        <el-input v-if="table.where.contact_type==1" v-model="coinForm.num" :placeholder="'请输入提币数量:'+config.trc_out_limit+'~'+config.trc_out_max" @input="countFree()"
+                                                  clearable>
+                                            <template slot="append">USDT</template>
+                                        </el-input>
+                                        <el-input v-else v-model="coinForm.num" :placeholder="'请输入提币数量:'+config.erc_out_limit+'~'+config.erc_out_max" @input="countFree()"
                                                   clearable>
                                                   clearable>
                                             <template slot="append">USDT</template>
                                             <template slot="append">USDT</template>
                                         </el-input>
                                         </el-input>

+ 1 - 1
addons/admin/src/views/system/google/index.vue

@@ -98,11 +98,11 @@ export default {
             if (_this.sending) {
             if (_this.sending) {
                 return false;
                 return false;
             }
             }
-console.log(_this.formData)
             _this.sending = true
             _this.sending = true
             const loading = this.$loading({lock: true});
             const loading = this.$loading({lock: true});
             this.$http.post('/sendmsm', {username: this.formData.username, scene: 'google'}).then(res => {
             this.$http.post('/sendmsm', {username: this.formData.username, scene: 'google'}).then(res => {
                 loading.close();
                 loading.close();
+                _this.sending = false
                 if (res.data.success === true) {
                 if (res.data.success === true) {
                     this.$message.success(res.data.msg);
                     this.$message.success(res.data.msg);
                     _this.timeLock();
                     _this.timeLock();

+ 237 - 102
addons/admin/src/views/system/payment/index.vue

@@ -2,123 +2,167 @@
     <div class="ele-body">
     <div class="ele-body">
         <el-card shadow="never">
         <el-card shadow="never">
             <div class="payment">
             <div class="payment">
-                银行卡绑定(开启核单 12 张)
+                银行卡绑定(开启核单 {{counts.type1}} 张)
             </div>
             </div>
-            <el-row :gutter="15">
-                <el-col :sm="6">
-                    <div class="el-info">
-                        <div class="head">
-                            <span class="name">浙江网商银行</span>
-                            <span class="icon">
-                                <i class="el-icon-delete"></i>
-                                <i class="el-icon-edit"></i>
+            <el-row :gutter="15" class="payment-box">
+                <el-col :sm="6" class="payment-item" v-for="(v,k) in payments.list1" :key="k">
+                       <div class="el-info">
+                           <div class="head">
+                            <span class="name">
+                                <img v-if="v.logo" :src="v.logo" alt="">
+                                <span v-else>{{v.bank_name}}</span>
+                            </span>
+                               <span class="icon">
+                                <i class="el-icon-delete" @click="remove(v)"></i>
+                                <i class="el-icon-edit" @click="edit(v)"></i>
                             </span>
                             </span>
-                        </div>
+                           </div>
+                           <div class="info">
+                               <div class="text"><span>持卡人姓名:</span>{{v.real_name}}</div>
+                               <div class="text"><span>支行:</span>{{v.branch_name}}</div>
+                               <div class="text"><span>卡号:</span>
+                                   <el-tooltip placement="top">
+                                       <div slot="content">{{v.bank_card}}</div>
+                                       <span>{{v.bank_card_text}}</span>
+                                   </el-tooltip>
+                               </div>
+                               <div class="text"><span>已用/当日限额:</span>¥{{v.used_quota}}/{{v.trade_quota}}</div>
+                               <div class="text"><span>接单数/上限:</span>{{v.used_num}}/{{v.trade_num}}</div>
+                               <div class="text"><span>接单状态:</span> <el-switch inactive-color="#ff4d4f" :value="v.status" :active-value="1" :width="40" :inactive-value="2" @change="editStatus(v,k)"></el-switch> </div>
+                           </div>
+                       </div>
+                </el-col>
+                <el-col :sm="6" class="payment-item add">
+                    <div class="el-info">
+                        <div class="add-btn" v-if="permission.includes('sys:payment:add')" @click="(showEdit=true) && (editForm.type = '1')" title="点击添加您的收款方式"><i class="el-icon-plus"></i></div>
                     </div>
                     </div>
                 </el-col>
                 </el-col>
             </el-row>
             </el-row>
         </el-card>
         </el-card>
         <!-- 编辑弹窗 -->
         <!-- 编辑弹窗 -->
-        <el-dialog :title="editForm.id?'修改通知':'修改通知'" :visible.sync="showEdit" width="600px"
-                   @closed="editForm={}" :destroy-on-close="true" custom-class="ele-dialog-form" :lock-scroll="false">
-            <el-form :model="editForm" ref="editForm" :rules="editRules" label-width="82px">
+        <el-dialog :title="editForm.id?'修改收款方式':'添加收款方式'" :visible.sync="showEdit" width="600px"
+                   @closed="editForm={type: '1',status: 1, is_default: 2}" :destroy-on-close="true" custom-class="ele-dialog-form" :lock-scroll="false">
+            <el-form :model="editForm" ref="editForm" :rules="editRules" label-width="100px">
                 <el-row :gutter="15">
                 <el-row :gutter="15">
                     <el-col :sm="12">
                     <el-col :sm="12">
-                        <el-form-item label="通知标题:" prop="title">
-                            <el-input v-model="editForm.title" placeholder="请输入通知标题" clearable/>
+                        <el-form-item v-if="editForm.type == 1" label="银行LOGO:" prop="logo">
+                            <uploadImage v-if="loaded" :limit="1" v-model="editForm.logo"></uploadImage>
+                        </el-form-item>
+                        <el-form-item label="类型:" prop="type">
+                            <el-select v-model="editForm.type" placeholder="请选择收款方式类型" class="ele-fluid">
+                                <el-option label="银行卡" :value="1"/>
+                                <el-option label="微信" :value="2" disabled/>
+                                <el-option label="支付宝" :value="3" disabled/>
+                            </el-select>
+                        </el-form-item>
+                        <template v-if="editForm.type == 1">
+                            <el-form-item label="收款人姓名:" prop="real_name">
+                                <el-input v-model="editForm.real_name" placeholder="请输入收款人姓名" clearable/>
+                            </el-form-item>
+                            <el-form-item label="银行名称:" prop="bank_name">
+                                <el-input v-model="editForm.bank_name" placeholder="请输入银行名称" clearable/>
+                            </el-form-item>
+                            <el-form-item label="支行名称:" prop="branch_name">
+                                <el-input v-model="editForm.branch_name" placeholder="请输入支行名称" clearable/>
+                            </el-form-item>
+                            <el-form-item label="银行卡号:" prop="bank_card">
+                                <el-input v-model="editForm.bank_card" placeholder="请输入银行卡号" clearable/>
+                            </el-form-item>
+
+                        </template>
+                    </el-col>
+                    <el-col :sm="12">
+                        <el-form-item label="收款每日限额:" prop="trade_quota">
+                            <el-input v-model="editForm.trade_quota" placeholder="请输入收款每日限额" clearable/>
                         </el-form-item>
                         </el-form-item>
-                        <el-form-item label="通知状态:">
+                        <el-form-item label="使用次数限制:" prop="trade_num">
+                            <el-input v-model="editForm.trade_num" placeholder="请输入使用次数限制" clearable/>
+                        </el-form-item>
+                        <el-form-item label="是否默认:">
+                            <el-radio-group v-model="editForm.is_default">
+                                <el-radio :label="1">是</el-radio>
+                                <el-radio :label="2">否</el-radio>
+                            </el-radio-group>
+                        </el-form-item>
+                        <el-form-item label="收款状态:">
                             <el-radio-group v-model="editForm.status">
                             <el-radio-group v-model="editForm.status">
                                 <el-radio :label="1">正常</el-radio>
                                 <el-radio :label="1">正常</el-radio>
                                 <el-radio :label="2">禁用</el-radio>
                                 <el-radio :label="2">禁用</el-radio>
                             </el-radio-group>
                             </el-radio-group>
                         </el-form-item>
                         </el-form-item>
-                    </el-col>
-                    <el-col :sm="12">
-                        <el-form-item label="是否置顶:">
-                            <el-radio-group v-model="editForm.is_top">
-                                <el-radio :label="1">置顶</el-radio>
-                                <el-radio :label="2">不置顶</el-radio>
-                            </el-radio-group>
+                        <el-form-item label="谷歌验证码:" prop="google_code">
+                            <el-input v-model="editForm.google_code" placeholder="请输入谷歌验证码" clearable/>
                         </el-form-item>
                         </el-form-item>
                     </el-col>
                     </el-col>
                 </el-row>
                 </el-row>
-                <!-- 富文本编辑器 -->
-                <tinymce-editor v-model="editForm.content" :init="editContent"/>
             </el-form>
             </el-form>
             <div slot="footer">
             <div slot="footer">
                 <el-button @click="showEdit=false">取消</el-button>
                 <el-button @click="showEdit=false">取消</el-button>
-                <el-button type="primary" v-if="permission.includes('sys:notice:edit')" @click="save">保存</el-button>
+                <el-button type="primary" v-if="editForm.id && permission.includes('sys:payment:edit')" @click="save">保存</el-button>
+                <el-button type="primary" v-else-if="permission.includes('sys:payment:add')" @click="save">确定</el-button>
             </div>
             </div>
         </el-dialog>
         </el-dialog>
     </div>
     </div>
 </template>
 </template>
 
 
 <script>
 <script>
-import TinymceEditor from '@/components/TinymceEditor'
+import uploadImage from '@/components/uploadImage'
 import {mapGetters} from "vuex";
 import {mapGetters} from "vuex";
 
 
 export default {
 export default {
     name: "SysNotice",
     name: "SysNotice",
-    components: {TinymceEditor},
+    components: {uploadImage},
     data() {
     data() {
         return {
         return {
-            table: {url: '/notice/index', where: {}},  // 表格配置
+            loaded: false,
+            counts: {
+                type1: 0,
+                type2: 0,
+                type3: 0,
+            },
+            payments: {
+                list1: [], // 银行卡
+                list2: [], // 微信
+                list3: [], // 支付宝
+            },
             choose: [],  // 表格选中数据
             choose: [],  // 表格选中数据
             showEdit: false,  // 是否显示表单弹窗
             showEdit: false,  // 是否显示表单弹窗
-            editForm: {source: 1, status: 1, is_top: 2},  // 表单数据
+            editForm: {
+                type: '1',
+                status: 2,
+                is_default: 2,
+            },  // 表单数据
             editRules: {  // 表单验证规则
             editRules: {  // 表单验证规则
-                title: [
-                    {required: true, message: '请输入通知标题', trigger: 'blur'}
+                type: [
+                    {required: true, message: '请选择收款方式类型', trigger: 'blur'}
                 ],
                 ],
-                status: [
-                    {required: true, message: '请输入选择通知状态', trigger: 'blur'}
+                real_name: [
+                    {required: true, message: '请输入收款人姓名', trigger: 'blur'}
                 ],
                 ],
-                is_top: [
-                    {required: true, message: '请输入选择是否置顶', trigger: 'blur'}
+                bank_name: [
+                    {required: true, message: '请输入银行名称', trigger: 'blur'}
+                ],
+                bank_card: [
+                    {required: true, message: '请输入银行卡号', trigger: 'blur'}
+                ],
+                branch_name: [
+                    {required: true, message: '请输入支行名称', trigger: 'blur'}
                 ],
                 ],
-            },
-            // 自定义文件上传(这里使用把选择的文件转成blob演示)
-            file_picker_callback: (callback, value, meta) => {
-                let input = document.createElement('input');
-                input.setAttribute('type', 'file');
-                // 设定文件可选类型
-                if (meta.filetype === 'image') {
-                    input.setAttribute('accept', 'image/*');
-                } else if (meta.filetype === 'media') {
-                    input.setAttribute('accept', 'video/*');
-                }
-                input.onchange = () => {
-                    let file = input.files[0];
-                    let reader = new FileReader();
-                    reader.onload = (e) => {
-                        let blob = new Blob([e.target.result], {type: file.type});
-                        callback(URL.createObjectURL(blob));
-                    };
-                    reader.readAsArrayBuffer(file);
-                }
-                input.click();
             }
             }
         }
         }
     },
     },
     computed: {
     computed: {
         ...mapGetters(["permission"]),
         ...mapGetters(["permission"]),
-
-        editContent() {
-            return {
-                menubar: false,
-                file_picker_callback: this.file_picker_callback,
-                skin_url: this.$store.state.theme.theme === 'dark' ? '/tinymce/skins/ui/oxide-dark' : '/tinymce/skins/ui/oxide',
-                content_css: this.$store.state.theme.theme === 'dark' ? '/tinymce/skins/content/dark/content.css' : '/tinymce/skins/content/default/content.css'
-            };
-        }
     },
     },
     mounted() {
     mounted() {
+        this.getData(1)
     },
     },
     methods: {
     methods: {
         /* 显示编辑 */
         /* 显示编辑 */
         edit(row) {
         edit(row) {
             this.editForm = Object.assign({}, row);
             this.editForm = Object.assign({}, row);
+            this.editForm.status = this.editForm.status? 1 : 2
+            this.editForm.is_default = this.editForm.is_default? 1 : 2
             this.showEdit = true;
             this.showEdit = true;
         },
         },
         /* 保存编辑 */
         /* 保存编辑 */
@@ -126,19 +170,38 @@ export default {
             this.$refs['editForm'].validate((valid) => {
             this.$refs['editForm'].validate((valid) => {
                 if (valid) {
                 if (valid) {
                     const loading = this.$loading({lock: true});
                     const loading = this.$loading({lock: true});
-                    this.$http.post('/notice/edit', this.editForm).then(res => {
-                        loading.close();
-                        if (res.data.code === 0) {
-                            this.showEdit = false;
-                            this.$message({type: 'success', message: res.data.msg});
-                            this.$refs.table.reload();
-                        } else {
-                            this.$message.error(res.data.msg);
-                        }
-                    }).catch(e => {
-                        loading.close();
-                        this.$message.error(e.message);
-                    });
+                    if(this.editForm.real_name != this.$store.state.user.user.realname){
+                        this.$confirm('您当前添加的收款方式,收款人姓名本人账号姓名不一致,请确认是否继续添加?', '提示', {type: 'warning'}).then(() => {
+                            this.$http.post('/payment/edit', this.editForm).then(res => {
+                                loading.close();
+                                if (res.data.success === true) {
+                                    this.showEdit = false;
+                                    this.$message({type: 'success', message: res.data.msg});
+                                    this.getData(this.editForm.type)
+                                } else {
+                                    this.$message.error(res.data.msg);
+                                }
+                            }).catch(e => {
+                                loading.close();
+                                this.$message.error(e.message);
+                            });
+                        })
+                    }else{
+                        this.$http.post('/payment/edit', this.editForm).then(res => {
+                            loading.close();
+                            if (res.data.success === true) {
+                                this.showEdit = false;
+                                this.$message({type: 'success', message: res.data.msg});
+                                this.getData(this.editForm.type)
+                            } else {
+                                this.$message.error(res.data.msg);
+                            }
+                        }).catch(e => {
+                            loading.close();
+                            this.$message.error(e.message);
+                        });
+                    }
+
                 } else {
                 } else {
                     return false;
                     return false;
                 }
                 }
@@ -149,9 +212,9 @@ export default {
             if (!row) {  // 批量删除
             if (!row) {  // 批量删除
                 if (this.choose.length === 0) return this.$message.error('请至少选择一条数据');
                 if (this.choose.length === 0) return this.$message.error('请至少选择一条数据');
                 let ids = this.choose.map(d => d.id);
                 let ids = this.choose.map(d => d.id);
-                this.$confirm('确定要删除选中的通知吗?', '提示', {type: 'warning'}).then(() => {
+                this.$confirm('确定要删除选中的收款方式吗?', '提示', {type: 'warning'}).then(() => {
                     const loading = this.$loading({lock: true});
                     const loading = this.$loading({lock: true});
-                    this.$http.post('/notice/delete', {id: ids}).then(res => {
+                    this.$http.post('/payment/delete', {id: ids}).then(res => {
                         loading.close();
                         loading.close();
                         if (res.data.code === 0) {
                         if (res.data.code === 0) {
                             this.$message({type: 'success', message: res.data.msg});
                             this.$message({type: 'success', message: res.data.msg});
@@ -166,7 +229,7 @@ export default {
                 }).catch(() => 0);
                 }).catch(() => 0);
             } else {  // 单个删除
             } else {  // 单个删除
                 const loading = this.$loading({lock: true});
                 const loading = this.$loading({lock: true});
-                this.$http.post('/notice/delete', {id: row.id}).then(res => {
+                this.$http.post('/payment/delete', {id: row.id}).then(res => {
                     loading.close();
                     loading.close();
                     if (res.data.code === 0) {
                     if (res.data.code === 0) {
                         this.$message({type: 'success', message: res.data.msg});
                         this.$message({type: 'success', message: res.data.msg});
@@ -181,32 +244,42 @@ export default {
             }
             }
         },
         },
         /* 更改状态 */
         /* 更改状态 */
-        editStatus(row) {
-            const loading = this.$loading({lock: true});
-            let params = Object.assign({}, row);
-            this.$http.post('/notice/status', params).then(res => {
-                loading.close();
-                if (res.data.code === 0) {
-                    this.$message({type: 'success', message: res.data.msg});
-                } else {
-                    row.status = !row.status ? 2 : 1;
-                    this.$message.error(res.data.msg);
-                }
-            }).catch(e => {
-                loading.close();
-                this.$message.error(e.message);
+        editStatus(row,index) {
+            let _this = this
+            this.$message.closeAll()
+            this.$confirm('确定'+(row.status==1?'关闭':'打开')+'该收款方式?', '提示', {type: 'warning'}).then(() => {
+                let params = Object.assign({}, row);
+                params.status = params.status==1? 2 : 1;
+                this.$http.post('/payment/status', params).then(res => {
+                    if (res.data.success === true) {
+                        _this.payments['list' + row.type][index].status = !row.status ? 1 : 2;
+                        this.$message({type: 'success', message: res.data.msg});
+                    } else {
+                        this.$message.error(res.data.msg);
+                    }
+                }).catch(e => {
+                    this.$message.error(e.message);
+                });
             });
             });
         },
         },
-        /* 是否置顶 */
-        editIsTop(row) {
+        /* 获取列表 */
+        getData(type) {
             const loading = this.$loading({lock: true});
             const loading = this.$loading({lock: true});
-            let params = Object.assign({}, row);
-            this.$http.post('/notice/setIsTop', params).then(res => {
+            this.$http.get('/payment/index?type='+type+'&limit='+999).then(res => {
                 loading.close();
                 loading.close();
+                this.loaded = true;
                 if (res.data.code === 0) {
                 if (res.data.code === 0) {
-                    this.$message({type: 'success', message: res.data.msg});
+                    this.payments['list'+type] = res.data.data
+                    if(this.payments['list'+type].length>0){
+                        this.counts['type'+type] = 0;
+                        this.payments['list'+type].forEach(item=>{
+                            if(item.status == 1){
+                                this.counts['type'+type]++;
+                            }
+                            return item;
+                        })
+                    }
                 } else {
                 } else {
-                    row.isTop = !row.isTop ? 2 : 1;
                     this.$message.error(res.data.msg);
                     this.$message.error(res.data.msg);
                 }
                 }
             }).catch(e => {
             }).catch(e => {
@@ -222,4 +295,66 @@ export default {
 .ele-block >>> .el-upload, .ele-block >>> .el-upload-dragger {
 .ele-block >>> .el-upload, .ele-block >>> .el-upload-dragger {
     width: 100%;
     width: 100%;
 }
 }
+.payment {
+    font-size: 16px;
+    font-weight: bold;
+    margin-bottom: 14px;
+    padding-bottom: 10px;
+    border-bottom: 1px solid #ccc;
+}
+.payment-box {
+    position: relative;
+}
+.payment-item {
+    padding: 0;
+}
+.el-info .add-btn {
+    height: 245px;
+    line-height: 245px;
+    background-color: #f1f1f1;
+    padding: 8px 10px;
+    margin-bottom: 15px;
+    text-align: center;
+    font-size: 36px;
+    color: #ccc;
+}
+.el-info .add-btn i {
+    /*color: #666;*/
+}
+.el-info .head {
+    font-size: 16px;
+    font-weight: bold;
+    padding: 4px 15px;
+    height: 36px;
+    line-height: 36px;
+    border-bottom: 1px solid #d3d4d3;
+    background-color: #f1f1f1;
+}
+
+.el-info .head img {
+    width: 60px;
+    height: 28px;
+    display: inline-block;
+    vertical-align: middle;
+    margin-right: 4px;
+}
+.el-info .head .icon {
+    float: right;
+}
+.el-info .head .icon i {
+    margin-left: 5px;
+}
+.el-info .info {
+    height: 200px;
+    background-color: #f1f1f1;
+
+    padding: 8px 10px;
+    margin-bottom: 15px;
+}
+
+.el-info .info .text {
+    padding: 4px 0;
+}
+
+
 </style>
 </style>

+ 4 - 4
addons/admin/src/views/system/sellorder/index.vue

@@ -493,13 +493,13 @@
                             </el-radio-group>
                             </el-radio-group>
                         </el-form-item>
                         </el-form-item>
                         <el-form-item label="上传异常凭证:" class="is-required">
                         <el-form-item label="上传异常凭证:" class="is-required">
-                            <uploadImage :limit="1" v-model="editForm.exception_img"></uploadImage>
+                            <uploadImage v-if="$refs.table" :limit="1" v-model="editForm.exception_img"></uploadImage>
                         </el-form-item>
                         </el-form-item>
                         <el-col :sm="16">
                         <el-col :sm="16">
                         <el-form-item label="异常备注:" class="is-required">
                         <el-form-item label="异常备注:" class="is-required">
                             <el-input v-model="editForm.exception_remark" placeholder="请输入异常备注" clearable/>
                             <el-input v-model="editForm.exception_remark" placeholder="请输入异常备注" clearable/>
                         </el-form-item>
                         </el-form-item>
-                        <el-form-item label="交易密码:" v-if="$store.state.user.user.user_type == 2 && editForm.status != 4 && editForm.status != 5" class="is-required">
+                        <el-form-item label="交易密码:" v-if="$store.state.user.user.user_type == 2 && editForm.status != 4 && editForm.status != 5 && editForm.status != 8" class="is-required">
                             <el-input type="password" v-model="editForm.trade_password" placeholder="请输入交易密码" clearable/>
                             <el-input type="password" v-model="editForm.trade_password" placeholder="请输入交易密码" clearable/>
                         </el-form-item>
                         </el-form-item>
                         </el-col>
                         </el-col>
@@ -616,7 +616,7 @@ export default {
         },
         },
         /* 异常订单处理下一步 */
         /* 异常订单处理下一步 */
         catchOrderNext() {
         catchOrderNext() {
-            this.editForm.exception_sub_type = 1
+            this.editForm.exception_sub_type = this.editForm.exception_sub_type? this.editForm.exception_sub_type : 1
             this.showCatchEdit = false;
             this.showCatchEdit = false;
             this.showCatchNextEdit = true;
             this.showCatchNextEdit = true;
         },
         },
@@ -956,6 +956,6 @@ export default {
     color: #fbb52c;
     color: #fbb52c;
 }
 }
 .el-date-editor--daterange.el-input__inner {
 .el-date-editor--daterange.el-input__inner {
-    width: 230px;
+    width: auto;
 }
 }
 </style>
 </style>