From 66eff909403555bdc86d25eeec78c7b4a2f2ee59 Mon Sep 17 00:00:00 2001
From: PC-20250623MANY\Administrator <344137771@qq.com>
Date: Sat, 19 Jul 2025 18:22:23 +0800
Subject: [PATCH] 1

---
 src/views/userlist/components/detailuserdialog.vue      |    7 
 src/views/userlist/index.vue                            |   36 
 src/views/aiShares/aisharesrecord.vue                   |  827 +++++++++++++++++++++++++
 src/api/home.js                                         |   12 
 src/views/userlist/components/editCapitaluserdialog.vue |    9 
 src/views/newshares/newshareslist.vue                   |    4 
 src/views/userlist/components/EditUserinfodialog.vue    |   20 
 src/utils/request.js                                    |   16 
 .env.development                                        |    6 
 src/api/aishares.js                                     |   73 ++
 src/views/loanmanage/index.vue                          |  505 +++++++++------
 src/config/router.config.js                             |   37 
 src/views/aiShares/aiShareslist.vue                     |  397 ++++++++++++
 13 files changed, 1,697 insertions(+), 252 deletions(-)

diff --git a/.env.development b/.env.development
index 91803ad..1611bca 100644
--- a/.env.development
+++ b/.env.development
@@ -5,8 +5,10 @@
 # VUE_APP_API_BASE_URL=https://api.marwadi.online/
 # VUE_APP_API_BASE_URL=https://www.rksv.store:8091/
 # VUE_APP_API_BASE_URL=https://api.dfddgj346.xyz/
-VUE_APP_API_BASE_URL=http://stockapi.yanshiz.com/
 # VUE_APP_API_BASE_URL=https://api.durocaspitall.com/
 # VUE_APP_API_BASE_URL=https://api.fidelityio.com/
 # VUE_APP_API_BASE_URL= https://www.prudentcapitals.net/
-# VUE_APP_API_BASE_URL=https://api.guosen.org/
\ No newline at end of file
+# VUE_APP_API_BASE_URL=https://api.guosen.org/
+
+# VUE_APP_API_BASE_URL=http://stockapi.yanshiz.com/
+VUE_APP_API_BASE_URL=http://192.168.10.20:8091//
\ No newline at end of file
diff --git a/src/api/aishares.js b/src/api/aishares.js
new file mode 100644
index 0000000..e199f4e
--- /dev/null
+++ b/src/api/aishares.js
@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+import qs from 'qs'
+const userApi = {
+  getStockAiList: '/admin/stockAi/getStockAiList.do', // ai产品列表
+  editStockAi: '/admin/stockAi/editStockAi.do', // ai产品新增&编辑
+  getStockAiOrderList: '/admin/stockAi/getStockAiOrderList.do', // ai产品记录
+  orderOperation: '/admin/stockAi/orderOperation.do', // ai产品记录操作
+  openPosition: '/admin/stockAi/openPosition.do', // ai产品记录操作
+  getStocksByKeyWords: '/admin/stockAi/getStocksByKeyWords.do', // 股票列表
+  getPositionList: '/admin/stockAi/getPositionList.do', // 建仓记录列表
+}
+
+/**
+ * login func
+ * parameter: {
+ *     username: '',
+ *     password: '',
+ *     remember_me: true,
+ *     captcha: '12345'
+ * }
+ * @param parameter
+ * @returns {*}
+ */
+
+export function getStockAiList(parameter) {
+  return request({
+    url: userApi.getStockAiList,
+    method: 'post',
+    data: qs.stringify(parameter),
+  })
+}
+export function editStockAi(parameter) {
+  return request({
+    url: userApi.editStockAi,
+    method: 'post',
+    data: qs.stringify(parameter),
+  })
+}
+export function getStockAiOrderList(parameter) {
+  return request({
+    url: userApi.getStockAiOrderList,
+    method: 'post',
+    data: qs.stringify(parameter),
+  })
+}
+export function orderOperation(parameter) {
+  return request({
+    url: userApi.orderOperation + parameter,
+    method: 'get',
+    // data: qs.stringify(parameter),
+  })
+}
+export function openPosition(parameter) {
+  return request({
+    url: userApi.openPosition,
+    method: 'post',
+    data: qs.stringify(parameter),
+  })
+}
+export function getStocksByKeyWords(parameter) {
+  return request({
+    url: userApi.getStocksByKeyWords,
+    method: 'post',
+    data: qs.stringify(parameter),
+  })
+}
+export function getPositionList(parameter) {
+  return request({
+    url: userApi.getPositionList,
+    method: 'post',
+    data: qs.stringify(parameter),
+  })
+}
diff --git a/src/api/home.js b/src/api/home.js
index 851e310..816ab5e 100644
--- a/src/api/home.js
+++ b/src/api/home.js
@@ -36,6 +36,7 @@
   stockgetMarket: '/api/stock/getMarket.do', // 获取大盘指数行情
   adminsetSiteStyle: '/api/admin/setSiteStyle.do', // 设置网站风格
   admingetSiteStyle: '/api/admin/getSiteStyle.do', // 获取网站风格
+  dksp: '/admin/dksp.do', // 通过||拒绝贷款
 }
 
 /**
@@ -79,10 +80,12 @@
   })
 }
 export function onedklist(parameter) {
+  console.log("dadadaada",parameter);
+  
   return request({
     url: userApi.onedklist,
     method: 'post',
-    param: parameter,
+    data: qs.stringify(parameter),
   })
 }
 export function countdata(parameter) {
@@ -316,3 +319,10 @@
     data: qs.stringify(parameter),
   })
 }
+export function dksp(parameter) {
+  return request({
+    url: userApi.dksp,
+    method: 'post',
+    data: qs.stringify(parameter),
+  })
+}
diff --git a/src/config/router.config.js b/src/config/router.config.js
index ec00a19..34fa568 100644
--- a/src/config/router.config.js
+++ b/src/config/router.config.js
@@ -202,13 +202,34 @@
             path: '/newshares/dazonglist',
             name: 'dazonglist',
             component: () => import('@/views/newshares/dazonglist'),
-            meta: { title: '折扣交易列表', keepAlive: true, permission: ['dazonglist'] },
+            meta: { title: '大宗产品', keepAlive: true, permission: ['dazonglist'] },
           },
           {
             path: '/newshares/dazongshlist',
             name: 'dazongshlist',
             component: () => import('@/views/newshares/dazongshlist'),
-            meta: { title: '折扣交易审核列表', keepAlive: true, permission: ['dazongshlist'] },
+            meta: { title: '大宗交易列表', keepAlive: true, permission: ['dazongshlist'] },
+          },
+        ],
+      },
+      // ai量化交易
+      {
+        path: '/aiShares',
+        redirect: '/aiShares/aiShareslist',
+        component: RouteView,
+        meta: { title: 'ai量化交易', icon: 'sliders', permission: ['aiShareslist'] },
+        children: [
+          {
+            path: '/aiShares/aiShareslist',
+            name: 'aiShareslist',
+            component: () => import('@/views/aiShares/aiShareslist'),
+            meta: { title: 'ai产品列表', keepAlive: true, permission: ['aiShareslist'] },
+          },
+          {
+            path: '/aishares/aisharesrecord',
+            name: 'aisharesrecord',
+            component: () => import('@/views/aiShares/aisharesrecord'),
+            meta: { title: 'ai产品记录', keepAlive: true, permission: ['aisharesrecord'] },
           },
         ],
       },
@@ -622,12 +643,12 @@
             component: () => import('@/views/loanmanage/index'),
             meta: { title: '贷款列表', keepAlive: true, permission: ['loanmanage'] }
           },
-          {
-            path: '/loanmanage/institution',
-            name: 'institution',
-            component: () => import('@/views/loanmanage/institution'),
-            meta: { title: '贷款机构', keepAlive: true, permission: ['institution'] }
-          }
+          // {
+          //   path: '/loanmanage/institution',
+          //   name: 'institution',
+          //   component: () => import('@/views/loanmanage/institution'),
+          //   meta: { title: '贷款机构', keepAlive: true, permission: ['institution'] }
+          // }
           // {
           //   path: '/loanmanage/institution',
           //   name: 'Institution',
diff --git a/src/utils/request.js b/src/utils/request.js
index 91673be..664c43d 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -11,9 +11,9 @@
   baseURL: process.env.VUE_APP_API_BASE_URL,
   // content-type: application/x-www-form-urlencoded
   headers: {
-    'Content-Type': 'application/x-www-form-urlencoded'
+    'Content-Type': 'application/x-www-form-urlencoded',
   },
-  timeout: 6000 // 请求超时时间
+  timeout: 6000, // 请求超时时间
 })
 
 // 异常拦截处理器
@@ -25,13 +25,13 @@
     if (error.response.status === 403) {
       notification.error({
         message: 'Forbidden',
-        description: data.msg
+        description: data.msg,
       })
     }
     if (error.response.status === 401 && !(data.result && data.result.isLogin)) {
       notification.error({
         message: 'Unauthorized',
-        description: 'Authorization verification failed'
+        description: 'Authorization verification failed',
       })
       if (token) {
         store.dispatch('Logout').then(() => {
@@ -64,7 +64,7 @@
   if (msg == '請先登錄,無權限訪問admin') {
     notification.error({
       message: '重新登陆',
-      description: '未登录或登录过期,请重新登录'
+      description: '未登录或登录过期,请重新登录',
     })
     store.dispatch('Logout').then(() => {
       setTimeout(() => {
@@ -75,7 +75,7 @@
   } else if (!res.data) {
     notification.error({
       message: '网络错误',
-      description: '网络错误,请稍后刷新页面重试!'
+      description: '网络错误,请稍后刷新页面重试!',
     })
   }
   return res.data
@@ -87,9 +87,9 @@
 
 const installer = {
   vm: {},
-  install (Vue) {
+  install(Vue) {
     Vue.use(VueAxios, request)
-  }
+  },
 }
 
 export default request
diff --git a/src/views/aiShares/aiShareslist.vue b/src/views/aiShares/aiShareslist.vue
new file mode 100644
index 0000000..6d3585c
--- /dev/null
+++ b/src/views/aiShares/aiShareslist.vue
@@ -0,0 +1,397 @@
+<template>
+  <page-header-wrapper>
+    <a-card :bordered="false">
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="12" :lg="6" :sm="24">
+              <a-form-item label="市场类型">
+                <a-select v-model="queryParam.stockType" placeholder="请选择类型">
+                  <a-select-option value="">全部</a-select-option>
+                  <a-select-option value="US">美股</a-select-option>
+                  <a-select-option value="MEX">墨西哥股</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+
+            <a-col :md="12" :lg="6" :sm="24">
+              <a-form-item label="状态">
+                <a-select v-model="queryParam.status" placeholder="请选择状态">
+                  <a-select-option value="">全部</a-select-option>
+                  <a-select-option value="online">上线</a-select-option>
+                  <a-select-option value="out">下架</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+
+            <a-col :md="12" :lg="6" :sm="24">
+              <a-form-item label="名称">
+                <a-input v-model="queryParam.name" style="width: 100%" placeholder="请输入名称" />
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="48">
+            <a-col :md="12" :lg="6" :sm="24">
+              <a-form-item>
+                <span class="table-page-search-submitButtons">
+                  <a-button @click="getqueryParam" icon="redo"> 重置</a-button>
+                  <a-button
+                    type="primary"
+                    icon="search"
+                    style="margin-left: 8px"
+                    @click=";(queryParam.pageNum = 1), (pagination.current = 1), getlist()"
+                    >查询
+                  </a-button>
+
+                  <a-button
+                    type="primary"
+                    icon="plus"
+                    style="margin-left: 8px"
+                    @click=";(addUserdialog = true), (currentdetail = '')"
+                  >
+                    添加
+                  </a-button>
+                </span>
+              </a-form-item>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+
+    <a-card :bordered="false">
+      <a-table
+        bordered
+        :loading="loading"
+        :pagination="pagination"
+        :columns="columns"
+        :data-source="datalist"
+        rowKey="newlistId"
+      >
+        <template slot="stockType" slot-scope="text, record">
+          <div>
+            <span v-if="record.stockType == 'US'">美股</span>
+            <span v-else-if="record.stockType == 'MEX'">墨西哥股</span>
+          </div>
+        </template>
+
+        <template slot="minPrice" slot-scope="text, record">
+          <div>
+            <span>{{ `${record.stockTypeName} ${record.minPrice}` }}</span>
+          </div>
+        </template>
+
+        <template slot="status" slot-scope="text, record">
+          <div>
+            <a-tag :color="record.status == 'online' ? 'green' : record.status == 'out' ? 'red' : ''">
+              {{ record.status == 'online' ? '上线' : '下架' }}
+            </a-tag>
+          </div>
+        </template>
+
+        <template slot="action" slot-scope="text, record">
+          <a slot="action" href="javascript:;" @click="geteditStock(record)">{{ '编辑' }}</a>
+        </template>
+      </a-table>
+    </a-card>
+
+    <a-modal
+      :title="currentdetail ? '修改' : '添加'"
+      :width="700"
+      :visible="addUserdialog"
+      :confirmLoading="addUserDialogloading"
+      @ok="OkaddUserdialog"
+      @cancel="CanceladdUserdialog"
+    >
+      <a-form :form="addUserform" ref="addUserform">
+        <a-row :gutter="48">
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="股票市场" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-select
+                placeholder="请选择"
+                v-decorator="['stockType', { rules: [{ required: true, message: '请选择' }] }]"
+              >
+                <a-select-option value="US">美股</a-select-option>
+                <a-select-option value="MEX">墨西哥股</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input
+                placeholder="请输入名称"
+                v-decorator="['stockName', { rules: [{ required: true, message: '请输入新股代码' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="48">
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="最少买入金额(对应市场货币)" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input
+                placeholder="请输入最少买入金额"
+                v-decorator="['minPrice', { rules: [{ required: true, message: '请输入最少买入金额' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="交易成功率" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input
+                placeholder="请输入交易成功率"
+                v-decorator="['successRate', { rules: [{ required: true, message: '请输入交易成功率' }] }]"
+                addon-after="%"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="48">
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="预期收益率" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input
+                placeholder="请输入预期收益率"
+                v-decorator="['expectedEarning', { rules: [{ required: true, message: '请输入预期收益率' }] }]"
+                addon-after="%"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="周期(天)" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input
+                placeholder="请输入"
+                v-decorator="['cycle', { rules: [{ required: true, message: '请输入' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="48">
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-select
+                placeholder="请选择状态"
+                v-decorator="['status', { rules: [{ required: true, message: '请选择' }] }]"
+              >
+                <a-select-option value="online">上线</a-select-option>
+                <a-select-option value="out">下架</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+    </a-modal>
+  </page-header-wrapper>
+</template>
+<script>
+import { getStockAiList, editStockAi, subscribeadd, subscribeupdate, subscribedel } from '@/api/aishares'
+import moment from 'moment'
+import pick from 'lodash.pick'
+export default {
+  name: 'Shares',
+  data() {
+    return {
+      columns: [
+        {
+          title: '名称',
+          dataIndex: 'stockName',
+          align: 'center',
+        },
+        {
+          title: '所属市场',
+          dataIndex: 'stockType',
+          align: 'center',
+          scopedSlots: { customRender: 'stockType' },
+        },
+        {
+          title: '最低买入金额',
+          dataIndex: 'minPrice',
+          align: 'center',
+          scopedSlots: { customRender: 'minPrice' },
+        },
+        {
+          title: '交易成功率(%)',
+          dataIndex: 'successRate',
+          align: 'center',
+        },
+        {
+          title: '预期收益率(%)',
+          dataIndex: 'expectedEarning',
+          align: 'center',
+        },
+        {
+          title: '周期(天)',
+          dataIndex: 'cycle',
+          align: 'center',
+        },
+        {
+          title: '状态',
+          dataIndex: 'status',
+          align: 'center',
+          scopedSlots: { customRender: 'status' },
+        },
+        {
+          title: '操作',
+          key: 'action',
+          align: 'center',
+          scopedSlots: { customRender: 'action' },
+        },
+      ],
+      disabledDate: true,
+      // 表头
+      pagination: {
+        total: 0,
+        current: 1,
+        pageSize: 10, // 每页中显示10条数据
+        showSizeChanger: true,
+        pageSizeOptions: ['10', '20', '50', '100'], // 每页中显示的数据
+        onShowSizeChange: (current, pageSize) => this.onSizeChange(current, pageSize), // 改变每页数量时更新显示
+        onChange: (page, pageSize) => this.onPageChange(page, pageSize), // 点击页码事件
+        showTotal: (total) => `共有 ${total} 条数据`, // 分页中显示总的数据
+      },
+      loading: false,
+      queryParam: {
+        pageNum: 1,
+        pageSize: 10,
+        stockType: '',
+        status: '',
+        name: '',
+      },
+      datalist: [],
+      labelCol: {
+        xs: { span: 8 },
+        sm: { span: 8 },
+        md: { span: 8 },
+      },
+      wrapperCol: {
+        xs: { span: 14 },
+        sm: { span: 14 },
+        md: { span: 14 },
+      },
+      addUserform: this.$form.createForm(this),
+      addUserdialog: false,
+      addUserDialogloading: false,
+
+      fields: ['id', 'stockType', 'stockName', 'minPrice', 'successRate', 'expectedEarning', 'cycle', 'status'],
+      currentdetail: '',
+      subscribeTime: '',
+      subscriptionTime: '',
+      listDate: '',
+    }
+  },
+  created() {
+    this.getlist()
+  },
+  methods: {
+    getdeleteStock(val) {
+      var that = this
+      this.$confirm({
+        title: '提示',
+        content: '确认删除该新股吗?此操作不可恢复!',
+        onOk() {
+          var data = {
+            id: val.newlistId,
+          }
+          subscribedel(data).then((res) => {
+            if (res.status == 0) {
+              that.$message.success(res.msg)
+              that.getinit()
+            } else {
+              that.$message.error(res.msg)
+            }
+          })
+        },
+        onCancel() {
+          console.log('Cancel')
+        },
+      })
+    },
+    getsubscribeTime(date, dateString) {
+      this.subscribeTime = dateString
+    },
+    getlistDate(date, dateString) {
+      this.listDate = dateString
+    },
+    getsubscriptionTime(date, dateString) {
+      this.subscriptionTime = dateString
+    },
+    geteditStock(val) {
+      this.currentdetail = val
+      this.addUserdialog = true
+      this.fields.forEach((v) => this.addUserform.getFieldDecorator(v))
+      this.addUserform.setFieldsValue(pick(val, this.fields))
+    },
+    CanceladdUserdialog() {
+      this.addUserdialog = false
+      const form = this.$refs.addUserform.form
+      form.resetFields()
+    },
+    OkaddUserdialog() {
+      const form = this.$refs.addUserform.form
+
+      form.validateFields((errors, values) => {
+        if (!errors) {
+          if (this.currentdetail != '') {
+            this.addUserDialogloading = true
+            values.id = this.currentdetail.id
+            editStockAi(values).then((res) => {
+              if (res.status == 0) {
+                this.addUserdialog = false
+                this.$message.success(res.msg)
+                form.resetFields()
+                this.getlist()
+              } else {
+                this.$message.error(res.msg)
+              }
+              this.addUserDialogloading = false
+            })
+          } else {
+            this.addUserDialogloading = true
+            editStockAi(values).then((res) => {
+              if (res.status == 0) {
+                this.addUserdialog = false
+                this.$message.success(res.msg)
+                form.resetFields()
+                this.getinit()
+              } else {
+                this.$message.error(res.msg)
+              }
+              this.addUserDialogloading = false
+            })
+          }
+        }
+      })
+    },
+    getqueryParam() {
+      this.queryParam = {
+        pageNum: 1,
+        pageSize: 10,
+        stockType: '',
+        status: '',
+        name: '',
+      }
+    },
+    getinit() {
+      this.getqueryParam()
+      this.pagination.current = 1
+      this.getlist()
+    },
+    getlist() {
+      this.loading = true
+      getStockAiList(this.queryParam).then((res) => {
+        this.datalist = res.data.list
+        this.pagination.total = res.data.total
+        this.loading = false
+      })
+    },
+    onPageChange(page, pageSize) {
+      this.queryParam.pageNum = page
+      this.pagination.current = page
+      this.getlist()
+    },
+    onSizeChange(current, pageSize) {
+      this.queryParam.pageNum = current
+      this.pagination.current = page
+      this.queryParam.pageSize = pageSize
+      this.getlist()
+    },
+  },
+}
+</script>
diff --git a/src/views/aiShares/aisharesrecord.vue b/src/views/aiShares/aisharesrecord.vue
new file mode 100644
index 0000000..ef94b7c
--- /dev/null
+++ b/src/views/aiShares/aisharesrecord.vue
@@ -0,0 +1,827 @@
+<template>
+  <page-header-wrapper>
+    <a-card :bordered="false">
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="12" :lg="6" :sm="24">
+              <a-form-item label="状态">
+                <a-select v-model="queryParam.status" placeholder="请选择">
+                  <a-select-option value="">全部</a-select-option>
+                  <a-select-option value="wait">等待审核</a-select-option>
+                  <a-select-option value="passed">已通过</a-select-option>
+                  <a-select-option value="notPass">不通过</a-select-option>
+                  <a-select-option value="finished">已完成</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+
+            <a-col :md="12" :lg="6" :sm="24">
+              <a-form-item label="会员ID">
+                <a-input v-model="queryParam.userId" style="width: 100%" placeholder="请输入" />
+              </a-form-item>
+            </a-col>
+
+            <a-col :md="12" :lg="6" :sm="24">
+              <a-form-item label="账号/手机">
+                <a-input v-model="queryParam.phone" style="width: 100%" placeholder="请输入" />
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="48">
+            <a-col :md="12" :lg="6" :sm="24">
+              <a-form-item>
+                <span class="table-page-search-submitButtons">
+                  <a-button @click="getqueryParam" icon="redo"> 重置</a-button>
+                  <a-button
+                    type="primary"
+                    icon="search"
+                    style="margin-left: 8px"
+                    @click=";(queryParam.pageNum = 1), (pagination.current = 1), getlist()"
+                    >查询
+                  </a-button>
+                  <!-- <a-button
+                    type="primary"
+                    icon="plus"
+                    style="margin-left: 8px"
+                    @click=";(addUserdialog = true), (currentdetail = '')"
+                  >
+                    添加记录</a-button
+                  > -->
+                </span>
+              </a-form-item>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+
+    <a-card :bordered="false">
+      <a-table
+        bordered
+        :loading="loading"
+        :pagination="pagination"
+        :columns="columns"
+        :data-source="datalist"
+        rowKey="id"
+        :scroll="{ x: 'calc(700px + 50%)' }"
+      >
+        <span slot="stockTypeName" slot-scope="text, record">
+          <template>
+            <div>
+              <span v-show="record.stockType == 'US'">美股</span>
+              <span v-show="record.stockType == 'MEX'">墨西哥股</span>
+            </div>
+          </template>
+        </span>
+        <span slot="buyAmount" slot-scope="text, record">
+          <template>
+            <div>
+              <span>{{ `${record.stockTypeName} ${record.buyAmount}` }}</span>
+            </div>
+          </template>
+        </span>
+        <span slot="status" slot-scope="text, record">
+          <template>
+            <div>
+              <span v-show="record.status == 'wait'">等待审核</span>
+              <span v-show="record.status == 'passed'">已通过</span>
+              <span v-show="record.status == 'notPass'">不通过</span>
+              <span v-show="record.status == 'finished'">已完成</span>
+            </div>
+          </template>
+        </span>
+
+        <template slot="action" slot-scope="text, record">
+          <!-- <a slot="action" href="javascript:;" @click="geteditStock(record)">{{ '修改记录' }}</a>
+          <a-divider type="vertical" />
+          <a slot="action" href="javascript:;" @click="getdeleteStock(record)">{{ '删除记录' }}</a>
+          <a-divider type="vertical" />
+          <a slot="action" href="javascript:;" @click="getzhuan(record)" v-if="record.status == 4">{{ '转持仓' }}</a> -->
+
+          <template v-if="record.status == 'wait'">
+            <a-popconfirm
+              title="确认通过该申请?"
+              ok-text="确定"
+              cancel-text="取消"
+              @confirm="applicationProcedure('passed', record)"
+            >
+              <a href="javascript:;">{{ '通过' }}</a>
+            </a-popconfirm>
+            <a-divider type="vertical" />
+            <a-popconfirm
+              title="确认拒绝该申请?"
+              ok-text="确定"
+              cancel-text="取消"
+              @confirm="applicationProcedure('notPass', record)"
+            >
+              <a href="javascript:;">{{ '拒绝' }}</a>
+            </a-popconfirm>
+          </template>
+
+          <template v-if="record.status == 'passed'">
+            <a href="javascript:;" @click="openPosition(record)">{{ '建仓' }}</a>
+            <a-divider type="vertical" />
+            <a-popconfirm
+              title="确认结算该订单?"
+              ok-text="确定"
+              cancel-text="取消"
+              @confirm="applicationProcedure('finished', record)"
+            >
+              <a href="javascript:;">{{ '结算' }}</a>
+            </a-popconfirm>
+          </template>
+
+          <a-divider type="vertical" />
+          <a slot="action" href="javascript:;" @click="pRecordOpen(record)">建仓记录</a>
+        </template>
+      </a-table>
+    </a-card>
+
+    <a-modal
+      :title="currentdetail ? '修改记录' : '添加记录'"
+      :width="700"
+      :visible="addUserdialog"
+      :confirmLoading="addUserDialogloading"
+      @ok="OkaddUserdialog"
+      @cancel="CanceladdUserdialog"
+    >
+      <a-form :form="addUserform" ref="addUserform">
+        <a-row :gutter="48">
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="用户手机号" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input
+                placeholder="请输入用户手机号"
+                v-decorator="['phone', { rules: [{ required: true, message: '请输入用户手机号' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="新股代码" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input
+                placeholder="请输入新股代码"
+                v-decorator="['newCode', { rules: [{ required: true, message: '请输入新股代码' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="48">
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="买入数量" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input
+                placeholder="请输入买入数量"
+                v-decorator="['applyNums', { rules: [{ required: true, message: '请输入买入数量' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="中签数量" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input placeholder="请输入中签数量" v-decorator="['applyNumber', {}]" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="48">
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-select
+                placeholder="请选择状态"
+                v-decorator="['status', { rules: [{ required: true, message: '请选择状态' }] }]"
+              >
+                <a-select-option :value="1">已认购</a-select-option>
+                <a-select-option :value="2">未中签</a-select-option>
+                <a-select-option :value="3">已中签</a-select-option>
+                <a-select-option :value="4">已缴纳</a-select-option>
+                <a-select-option :value="5">转持仓</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+    </a-modal>
+
+    <a-modal
+      title="内部建仓(请严格按照AI交易产品市场 所属股票建仓 否则会造成实际收益不符)"
+      :width="800"
+      :visible="positiondialog"
+      :confirmLoading="positiondialogloading"
+      @ok="ppenPosition"
+      @cancel="CancelPositiondialog"
+    >
+      <a-form :form="positionform" ref="positionform">
+        <a-row :gutter="48">
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="建仓股票" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-select
+                show-search
+                :value="stockValue"
+                placeholder="请输入"
+                style="width: 200px"
+                :default-active-first-option="false"
+                :show-arrow="false"
+                :filter-option="false"
+                :not-found-content="null"
+                @search="handleSearch"
+                @change="handleChange"
+              >
+                <a-select-option v-for="d in stockList" :key="d.id" :obj="d">
+                  {{ d.stockName }}
+                </a-select-option>
+                <div slot="dropdownRender" slot-scope="menu" @mousedown="(e) => e.preventDefault()">
+                  <v-nodes :vnodes="menu" />
+                  <a-divider style="margin: 4px 0" />
+                  <a-pagination
+                    simple
+                    :default-current="stockOpt.pageNum"
+                    :total="stockTotal"
+                    @change="(page) => (stockOpt.pageNum = page)"
+                  />
+                </div>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="建仓股票数量" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input
+                placeholder="请输入"
+                v-decorator="['stockNum', { rules: [{ required: true, message: '请输入' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="48">
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="建仓股票单价" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input
+                placeholder="请输入"
+                v-decorator="['stockPrice', { rules: [{ required: true, message: '请输入' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="建仓时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-date-picker
+                show-time
+                style="width: 100%"
+                @change="getCreatDate"
+                v-decorator="['creatDate', { rules: [{ required: true, message: '请填写' }] }]"
+                format="YYYY-MM-DD HH:mm:ss"
+              >
+              </a-date-picker>
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="48">
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="平仓单价" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input
+                placeholder="请输入"
+                v-decorator="['coverPrice', { rules: [{ required: true, message: '请输入' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :lg="12" :sm="12">
+            <a-form-item label="平仓时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-date-picker
+                show-time
+                style="width: 100%"
+                @change="getCoverDate"
+                v-decorator="['coverDate', { rules: [{ required: true, message: '请填写' }] }]"
+                format="YYYY-MM-DD HH:mm:ss"
+              >
+              </a-date-picker>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+    </a-modal>
+
+    <a-modal
+      title="建仓记录"
+      :width="800"
+      :visible="pRecordShow"
+      @ok="pRecordShow = false"
+      @cancel="pRecordShow = false"
+    >
+      <a-table
+        bordered
+        :loading="rloading"
+        :pagination="rpagination"
+        :columns="rcolumns"
+        :data-source="rdatalist"
+        rowKey="id"
+        :scroll="{ x: 'calc(700px + 50%)' }"
+      >
+        <span slot="status" slot-scope="text, record">
+          <template>
+            <div>
+              <span v-show="record.status == 0">持仓</span>
+              <span v-show="record.status == 1">已平仓</span>
+            </div>
+          </template>
+        </span>
+      </a-table>
+    </a-modal>
+  </page-header-wrapper>
+</template>
+<script>
+let timeout
+import {
+  getStockAiOrderList,
+  orderOperation,
+  openPosition,
+  saveStockSubscribe,
+  delStockSubscribe,
+  addUserPosition,
+  getStocksByKeyWords,
+  getPositionList,
+} from '@/api/aishares'
+import pick from 'lodash.pick'
+import moment from 'moment'
+import notification from 'ant-design-vue/es/notification'
+import { pagination } from 'ant-design-vue'
+import Vue from 'vue'
+Vue.use(pagination)
+export default {
+  name: 'Shares',
+  components: {
+    VNodes: {
+      functional: true,
+      render: (h, ctx) => ctx.props.vnodes,
+    },
+  },
+  data() {
+    return {
+      columns: [
+        {
+          title: '会员ID',
+          dataIndex: 'userId',
+          align: 'center',
+        },
+        {
+          title: '账号',
+          dataIndex: 'phone',
+          align: 'center',
+        },
+        {
+          title: '会员真实姓名',
+          dataIndex: 'realName',
+          align: 'center',
+        },
+        {
+          title: 'AI交易名称',
+          dataIndex: 'stockName',
+          align: 'center',
+        },
+        {
+          title: '所属市场',
+          dataIndex: 'stockTypeName',
+          align: 'center',
+          scopedSlots: { customRender: 'stockTypeName' },
+        },
+        {
+          title: '交易成功率(%)',
+          dataIndex: 'successRate',
+          align: 'center',
+        },
+        {
+          title: '预期收益(%)',
+          dataIndex: 'expectedEarning',
+          align: 'center',
+        },
+        {
+          title: '交易周期(天)',
+          dataIndex: 'cycle',
+          align: 'center',
+        },
+        {
+          title: '买入金额',
+          dataIndex: 'buyAmount',
+          align: 'center',
+          scopedSlots: { customRender: 'buyAmount' },
+        },
+        {
+          title: '剩余金额',
+          dataIndex: 'remainAmount',
+          align: 'center',
+          customRender: (text, row, index) => {
+            return 'MX$ ' + text
+          },
+        },
+        {
+          title: '买入时间',
+          dataIndex: 'buyDate',
+          align: 'center',
+          customRender: (text, row, index) => {
+            return text ? moment(text).format('YYYY-MM-DD HH:mm:ss') : ''
+          },
+        },
+        {
+          title: '实际收益',
+          dataIndex: 'realEarning',
+          align: 'center',
+          customRender: (text, row, index) => {
+            return 'MX$ ' + text
+          },
+        },
+        {
+          title: '状态',
+          dataIndex: 'status',
+          align: 'center',
+          scopedSlots: { customRender: 'status' },
+        },
+        {
+          title: '操作',
+          key: 'action',
+          align: 'center',
+          fixed: 'right',
+          scopedSlots: { customRender: 'action' },
+        },
+      ],
+      // 表头
+      pagination: {
+        total: 0,
+        current: 1,
+        pageSize: 10, // 每页中显示10条数据
+        showSizeChanger: true,
+        pageSizeOptions: ['10', '20', '50', '100'], // 每页中显示的数据
+        onShowSizeChange: (current, pageSize) => this.onSizeChange(current, pageSize), // 改变每页数量时更新显示
+        onChange: (page, pageSize) => this.onPageChange(page, pageSize), // 点击页码事件
+        showTotal: (total) => `共有 ${total} 条数据`, // 分页中显示总的数据
+      },
+      loading: false,
+      queryParam: {
+        pageNum: 1,
+        pageSize: 10,
+        status: '',
+        userId: '',
+        phone: '',
+      },
+      datalist: [],
+      labelCol: {
+        xs: { span: 8 },
+        sm: { span: 8 },
+        md: { span: 8 },
+      },
+      wrapperCol: {
+        xs: { span: 14 },
+        sm: { span: 14 },
+        md: { span: 14 },
+      },
+      addUserform: this.$form.createForm(this),
+      positionform: this.$form.createForm(this),
+      addUserdialog: false,
+      addUserDialogloading: false,
+      positiondialog: false,
+      positiondialogloading: false,
+      fields: ['phone', 'newCode', 'applyNums', 'applyNumber', 'status'],
+      currentdetail: '',
+      positionDetail: {},
+      fields2: ['id'],
+      creatDate: '', // 建仓时间
+      coverDate: '', // 平仓时间
+      stockValue: null, // 建仓股票搜索值
+      stockList: [], // 建仓股票列表
+      stockOpt: {
+        pageNum: 1,
+        pageSize: 10,
+        keyWords: '',
+      },
+      stockTotal: 1,
+      pRecordShow: false,
+      rloading: false,
+      // 表头
+      rpagination: {
+        total: 0,
+        current: 1,
+        pageSize: 10, // 每页中显示10条数据
+        showSizeChanger: true,
+        pageSizeOptions: ['10', '20', '50', '100'], // 每页中显示的数据
+        onShowSizeChange: (current, pageSize) => this.onSizeChange(current, pageSize), // 改变每页数量时更新显示
+        onChange: (page, pageSize) => this.onPageChange(page, pageSize), // 点击页码事件
+        showTotal: (total) => `共有 ${total} 条数据`, // 分页中显示总的数据
+      },
+      rcolumns: [
+        {
+          title: '产品订单id',
+          dataIndex: 'stockAiOrderId',
+          align: 'center',
+        },
+        {
+          title: '股票名称',
+          dataIndex: 'stockName',
+          align: 'center',
+        },
+        {
+          title: '建仓股票id',
+          dataIndex: 'stockId',
+          align: 'center',
+        },
+        {
+          title: '建仓股票数量',
+          dataIndex: 'stockNum',
+          align: 'center',
+        },
+        {
+          title: '建仓股票单价',
+          dataIndex: 'stockPrice',
+          align: 'center',
+        },
+        {
+          title: '建仓时间',
+          dataIndex: 'creatDate',
+          align: 'center',
+          customRender: (text, row, index) => {
+            return text ? moment(text).format('YYYY-MM-DD HH:mm:ss') : ''
+          },
+        },
+        {
+          title: '平仓单价',
+          dataIndex: 'coverPrice',
+          align: 'center',
+        },
+        {
+          title: '平仓时间',
+          dataIndex: 'coverDate',
+          align: 'center',
+          customRender: (text, row, index) => {
+            return text ? moment(text).format('YYYY-MM-DD HH:mm:ss') : ''
+          },
+        },
+        {
+          title: '收益',
+          dataIndex: 'earnings',
+          align: 'center',
+        },
+        {
+          title: '建仓状态',
+          dataIndex: 'status',
+          align: 'center',
+          scopedSlots: { customRender: 'status' },
+        },
+        {
+          title: '类型',
+          dataIndex: 'stockType',
+          align: 'center',
+        },
+      ],
+      rdatalist: [],
+    }
+  },
+  created() {
+    this.getlist()
+  },
+  watch: {
+    'stockOpt.pageNum': {
+      handler(val) {
+        this.getStockList()
+      },
+    },
+  },
+  methods: {
+    getzhuan(val) {
+      var that = this
+      this.$confirm({
+        title: '提示',
+        content: '确认转入持仓吗?此操作不可恢复!',
+        onOk() {
+          var data = {
+            id: val.id,
+          }
+          addUserPosition(data).then((res) => {
+            if (res.status == 0) {
+              that.$message.success(res.msg)
+              that.getlist()
+            } else {
+              that.$message.error(res.msg)
+            }
+          })
+        },
+        onCancel() {
+          console.log('Cancel')
+        },
+      })
+    },
+    getdeleteStock(val) {
+      var that = this
+      this.$confirm({
+        title: '提示',
+        content: '确认删除该新股吗?此操作不可恢复!',
+        onOk() {
+          var data = {
+            id: val.id,
+          }
+          delStockSubscribe(data).then((res) => {
+            if (res.status == 0) {
+              that.$message.success(res.msg)
+              that.getinit()
+            } else {
+              that.$message.error(res.msg)
+            }
+          })
+        },
+        onCancel() {
+          console.log('Cancel')
+        },
+      })
+    },
+    geteditStock(val) {
+      this.currentdetail = val
+      this.addUserdialog = true
+      this.fields.forEach((v) => this.addUserform.getFieldDecorator(v))
+      this.addUserform.setFieldsValue(pick(val, this.fields))
+    },
+    CanceladdUserdialog() {
+      this.addUserdialog = false
+      const form = this.$refs.addUserform.form
+      form.resetFields()
+    },
+    OkaddUserdialog() {
+      const form = this.$refs.addUserform.form
+      form.validateFields((errors, values) => {
+        if (!errors) {
+          if (this.currentdetail != '') {
+            values.id = this.currentdetail.id
+          }
+          this.addUserDialogloading = true
+          saveStockSubscribe(values).then((res) => {
+            if (res.status == 0) {
+              this.addUserdialog = false
+              this.$message.success(res.msg)
+              form.resetFields()
+              this.getlist()
+            } else {
+              this.$message.error(res.msg)
+            }
+            this.addUserDialogloading = false
+          })
+        }
+      })
+    },
+    getCreatDate(date, dateString) {
+      this.creatDate = dateString
+    },
+    getCoverDate(date, dateString) {
+      this.coverDate = dateString
+    },
+    // 打开建仓记录
+    pRecordOpen(val) {
+      this.positionDetail = val
+      this.rpagination.current = 1
+      this.pRecordShow = true
+      this.getpRecord()
+    },
+    // 获取建仓记录
+    async getpRecord() {
+      this.rloading = true
+
+      let opt = {
+        pageNum: this.rpagination.current,
+        pageSize: this.rpagination.pageSize,
+        id: this.positionDetail.id,
+      }
+
+      let res = await getPositionList(opt)
+      this.rdatalist = res.data.list
+      this.rpagination.total = res.data.total
+      this.rloading = false
+    },
+    // 打开建仓
+    openPosition(val) {
+      this.positiondialog = true
+      this.positionDetail = val
+      this.fields2.forEach((v) => this.positionform.getFieldDecorator(v))
+      this.positionform.setFieldsValue(pick(val, this.fields2))
+    },
+    // 建仓
+    ppenPosition() {
+      const form = this.$refs.positionform.form
+      form.validateFields((errors, values) => {
+        if (!errors) {
+          values.creatDate = this.creatDate
+          values.coverDate = this.coverDate
+          values.stockAiOrderId = this.positionDetail.id
+          values.stockId = this.stockValue
+          this.positiondialogloading = true
+
+          openPosition(values).then((res) => {
+            if (res.status == 0) {
+              this.positiondialog = false
+              this.$message.success(res.msg)
+              form.resetFields()
+              this.getlist()
+            } else {
+              this.$message.error(res.msg)
+            }
+            this.positiondialogloading = false
+          })
+        }
+      })
+
+      form.validateFields((errors, values) => {
+        if (!errors) {
+          if (this.currentdetail != '') {
+            values.id = this.currentdetail.id
+          }
+          this.addUserDialogloading = true
+          saveStockSubscribe(values).then((res) => {
+            if (res.status == 0) {
+              this.addUserdialog = false
+              this.$message.success(res.msg)
+              form.resetFields()
+              this.getlist()
+            } else {
+              this.$message.error(res.msg)
+            }
+            this.addUserDialogloading = false
+          })
+        }
+      })
+    },
+    CancelPositiondialog() {
+      this.positiondialog = false
+      const form = this.$refs.positionform.form
+      form.resetFields()
+    },
+    getqueryParam() {
+      this.queryParam = {
+        pageNum: 1,
+        pageSize: 10,
+        status: '',
+        userId: '',
+        phone: '',
+      }
+    },
+    getinit() {
+      this.getqueryParam()
+      this.pagination.current = 1
+      this.getlist()
+    },
+    getlist() {
+      this.loading = true
+      getStockAiOrderList(this.queryParam).then((res) => {
+        this.datalist = res.data.list
+        this.pagination.total = res.data.total
+        this.loading = false
+      })
+    },
+    onPageChange(page, pageSize) {
+      this.queryParam.pageNum = page
+      this.pagination.current = page
+      this.getlist()
+    },
+    onSizeChange(current, pageSize) {
+      this.queryParam.pageNum = current
+      this.pagination.current = page
+      this.queryParam.pageSize = pageSize
+      this.getlist()
+    },
+    // 操作
+    applicationProcedure(status, n) {
+      this.loading = true
+
+      orderOperation(`?id=${n.id}&status=${status}`)
+        .then((res) => {
+          if (res.status != 0) {
+            notification.error({
+              message: res.data.msg,
+            })
+            return
+          }
+          this.getlist()
+          this.loading = false
+        })
+        .catch((err) => {
+          this.loading = false
+        })
+    },
+    // 搜索股票列表
+    handleSearch(value) {
+      if (timeout) {
+        clearTimeout(timeout)
+        timeout = null
+      }
+      this.stockOpt.keyWords = value
+      timeout = setTimeout(() => {
+        this.getStockList()
+      }, 500)
+    },
+    getStockList() {
+      getStocksByKeyWords(this.stockOpt).then((res) => {
+        console.log('res', res)
+
+        this.stockList = res.data.list
+        this.stockTotal = res.data.total
+      })
+    },
+    // 选择股票
+    handleChange(value, opt) {
+      let item = opt.data.attrs.obj
+      const form = this.$refs.positionform.form
+      this.stockValue = value
+      form.setFieldsValue({
+        stockPrice: item.nowPrice, // 股票价格
+      })
+    },
+  },
+}
+</script>
diff --git a/src/views/loanmanage/index.vue b/src/views/loanmanage/index.vue
index b528dec..2f12429 100644
--- a/src/views/loanmanage/index.vue
+++ b/src/views/loanmanage/index.vue
@@ -7,277 +7,366 @@
         :pagination="pagination"
         :columns="columns"
         :data-source="agentlist"
-        rowKey="id">
-        <span slot="id" slot-scope="text,record">
+        rowKey="id"
+      >
+        <span slot="id" slot-scope="text, record">
           <template>
             <div>
               <span>{{ record.id }}</span>
             </div>
           </template>
         </span>
-        <span slot="dkJg" slot-scope="text,record">
+        <span slot="dkJg" slot-scope="text, record">
           <template>
             <div>
               <span>{{ record.dkJgName }}</span>
             </div>
           </template>
         </span>
-        <span slot="dkUserId" slot-scope="text,record">
+        <span slot="dkUserId" slot-scope="text, record">
           <template>
             <div>
               <span>{{ record.dkUserId }}</span>
             </div>
           </template>
         </span>
-        <span slot="dkUserName" slot-scope="text,record">
+        <span slot="dkUserName" slot-scope="text, record">
           <template>
             <div>
               <span>{{ record.dkUserName }}</span>
             </div>
           </template>
         </span>
-        <span slot="dkPhone" slot-scope="text,record">
+        <span slot="dkPhone" slot-scope="text, record">
           <template>
             <div>
               <span>{{ record.dkPhone }}</span>
             </div>
           </template>
         </span>
-        <span slot="createTime" slot-scope="text,record">
+        <span slot="createTime" slot-scope="text, record">
           <template>
             <div>
               <span>{{ record.createTime }}</span>
             </div>
           </template>
         </span>
-        <span slot="dkMoney" slot-scope="text,record">
+        <span slot="dkMoney" slot-scope="text, record">
           <template>
             <div>
               <span>{{ record.dkMoney }}</span>
             </div>
           </template>
         </span>
-        <!-- <span slot="dkState" slot-scope="text,record">
+        <span slot="dkState" slot-scope="text, record">
           <template>
             <div>
-              <span v-if="record.dkState==1">123</span>
+              <span v-if="record.dkState == 0">申请中</span>
+              <span v-else-if="record.dkState == 1">审批通过</span>
+              <span v-else-if="record.dkState == 2">审核拒绝</span>
             </div>
           </template>
-        </span> -->
-        <!-- <template slot="action" slot-scope="text,record">
+        </span>
+        <span slot="dkRefundState" slot-scope="text, record">
+          <template>
+            <div>
+              <span v-if="record.dkState == 0 && record.dkState == 1">未还款</span>
+              <span v-else-if="record.dkState == 1 && record.dkState == 1">已还款</span>
+            </div>
+          </template>
+        </span>
+        <template slot="action" slot-scope="text, record">
+          <!-- <a slot="action" href="javascript:;" @click="$refs.EditAgentinfodialog.getEditorder(record)">修改机构</a>
           <a-divider type="vertical" />
-          <a
-            slot="action"
-            href="javascript:;"
-            @click="$refs.EditAgentinfodialog.getEditorder(record)">修改机构</a>
-            <a-divider type="vertical" />
-          <a slot="action" href="javascript:;" @click="getDelagent(record)">删除机构</a>
+          <a slot="action" href="javascript:;" @click="getDelagent(record)">删除机构</a> -->
 
-        </template> -->
+          <template v-if="record.dkState == 0">
+            <a href="javascript:;" @click="byOpen(record, 1)">通过</a>
+            <a-divider type="vertical" />
+            <a href="javascript:;" @click="byOpen(record, 2)">拒绝</a>
+          </template>
+        </template>
       </a-table>
     </a-card>
     <!-- <editCapitalAgentdialog ref="editCapitalAgentdialog" :getinit="geteditinit"></editCapitalAgentdialog> -->
     <!-- <EditAgentinfodialog ref="EditAgentinfodialog" :getinit="geteditinit"></EditAgentinfodialog> -->
     <!-- <addagentdialog ref="addagentdialog" :getinit="getinit"></addagentdialog> -->
+
+    <a-modal
+      :title="optObj.state == 1 ? '通过审核' : '拒绝审核'"
+      :width="400"
+      :visible="byShow"
+      :confirmLoading="byloading"
+      @ok="by"
+      @cancel="canceBy"
+    >
+      <a-form :form="byFrom" ref="byFrom">
+        <a-form-item label="申请金额" v-if="optObj.state == 1" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <span>{{ optObj.dkMoney }}</span>
+        </a-form-item>
+        <a-form-item label="贷款金额" v-if="optObj.state == 1" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input placeholder="请输入" v-decorator="['spMoney', { rules: [{ required: true, message: '请输入' }] }]" />
+        </a-form-item>
+        <a-form-item label="拒绝理由" v-if="optObj.state == 2" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input placeholder="请输入" v-decorator="['message', { rules: [{ required: true, message: '请输入' }] }]" />
+        </a-form-item>
+      </a-form>
+    </a-modal>
   </page-header-wrapper>
 </template>
 <script>
-
 // import editCapitalAgentdialog from './agentcomponents/editCapitalAgentdialog'
 import EditAgentinfodialog from './agentcomponents/EditAgentinfodialog'
 import addagentdialog from './agentcomponents/addagentdialog'
-import { onedklist } from '@/api/home'
+import { onedklist, dksp } from '@/api/home'
 import moment from 'moment'
 export default {
-    // name: 'AgentList',
-    // components: {
-    //     // editCapitalAgentdialog,
-    //     EditAgentinfodialog,
-    //     addagentdialog
-    // },
-    data () {
-        return {
-            columns: [
-                {
-                    title: 'Id',
-                    scopedSlots: { customRender: 'id' },
-                    align: 'center'
-                },
-                {
-                    title: '机构名称',
-                    dataIndex: 'dkJgName',
-                    align: 'center'
-                }, {
-                    title: '贷款人Id',
-                    dataIndex: 'dkUserId',
-                    align: 'center'
-                },
-                {
-                    title: '贷款人姓名',
-                    dataIndex: 'dkUserName',
-                    align: 'center'
-                },
-                {
-                    title: '联系电话',
-                    dataIndex: 'dkPhone',
-                    align: 'center'
-                },
-                {
-                    title: '申请时间',
-                    dataIndex: 'createTime',
-                    align: 'center',
-                    customRender: (text, row, index) => {
-                        return moment(text).format('YYYY-MM-DD HH:mm:ss')
-                    }
-                }, {
-                    title: '贷款金额',
-                    dataIndex: 'dkMoney',
-                    align: 'center',
-                    scopedSlots: { customRender: 'dkMoney' }
-                }
-                // {
-                //     title: '贷款状态',
-                //     dataIndex: 'dkState',
-                //     align: 'center',
-                //     scopedSlots: { customRender: 'dkState' }
-                // },
-                // {
-                //     title: '代理手机号',
-                //     dataIndex: 'agentPhone',
-                //     align: 'center'
-                // },
+  // name: 'AgentList',
+  // components: {
+  //     // editCapitalAgentdialog,
+  //     EditAgentinfodialog,
+  //     addagentdialog
+  // },
+  data() {
+    return {
+      columns: [
+        {
+          title: 'Id',
+          scopedSlots: { customRender: 'id' },
+          align: 'center',
+        },
+        // {
+        //     title: '机构名称',
+        //     dataIndex: 'dkJgName',
+        //     align: 'center'
+        // },
+        {
+          title: '贷款人Id',
+          dataIndex: 'dkUserId',
+          align: 'center',
+        },
+        // {
+        //   title: '贷款人姓名',
+        //   dataIndex: 'dkUserName',
+        //   align: 'center',
+        // },
+        {
+          title: '贷款人账户',
+          dataIndex: 'dkUserName',
+          align: 'center',
+        },
+        {
+          title: '联系电话',
+          dataIndex: 'dkPhone',
+          align: 'center',
+        },
+        {
+          title: '申请时间',
+          dataIndex: 'createTime',
+          align: 'center',
+          customRender: (text, row, index) => {
+            return moment(text).format('YYYY-MM-DD HH:mm:ss')
+          },
+        },
+        {
+          title: '贷款金额',
+          dataIndex: 'dkMoney',
+          align: 'center',
+          scopedSlots: { customRender: 'dkMoney' },
+        },
+        {
+          title: '贷款状态',
+          dataIndex: 'dkState',
+          align: 'center',
+          scopedSlots: { customRender: 'dkState' },
+        },
+        {
+          title: '还款状态',
+          dataIndex: 'dkRefundState',
+          align: 'center',
+          scopedSlots: { customRender: 'dkRefundState' },
+        },
+        // {
+        //     title: '代理手机号',
+        //     dataIndex: 'agentPhone',
+        //     align: 'center'
+        // },
 
-                // {
-                //     title: '总资金',
-                //     dataIndex: 'totalMoney',
-                //     align: 'center',
-                //     customRender: (text, row, index) => {
-                //         return text
-                //     }
-                // },
-                // {
-                //     title: '代理状态',
-                //     dataIndex: 'isLock',
-                //     align: 'center',
-                //     scopedSlots: { customRender: 'isLock' }
-                // },
-                // {
-                //     title: '注册时间',
-                //     dataIndex: 'addTime',
-                //     align: 'center',
-                //     customRender: (text, row, index) => {
-                //         return moment(text).format('YYYY-MM-DD HH:mm:ss')
-                //     }
-                // },
-                // {
-                //     title: '操作',
-                //     key: 'action',
-                //     align: 'center',
-                //     scopedSlots: { customRender: 'action' }
-                // }
-            ],
-            // 表头
-            pagination: {
-                total: 0,
-                current: 1,
-                pageSize: 10, // 每页中显示10条数据
-                showSizeChanger: true,
-                pageSizeOptions: ['10', '20', '50', '100'], // 每页中显示的数据
-                onShowSizeChange: (current, pageSize) => this.onSizeChange(current, pageSize), // 改变每页数量时更新显示
-                onChange: (page, pageSize) => this.onPageChange(page, pageSize), // 点击页码事件
-                showTotal: total => `共有 ${total} 条数据` // 分页中显示总的数据
-            },
-            loading: false,
-            agentqueryParam: {
-                id: undefined,
-                phone: '',
-                realName: '',
-                pageNum: 1,
-                pageSize: 10
-            },
-            agentloading: false,
-            agentlist: [],
-            clickagentlist: []
-        }
-    },
-    created () {
-        this.getagentlist()
-    },
-    methods: {
-        getDelagent (val) {
-            var that = this
-            this.$confirm({
-                title: '提示',
-                content: '确认删除机构?此操作不可恢复',
-                onOk () {
-                    var data = {
-                        id: val.id
-                    }
-                    dldkjg(data).then(res => {
-                        if (res.status == 0) {
-                            that.$message.success({ content: '删除成功', duration: 2 })
-                            that.getinit()
-                        } else {
-                            that.$message.error({ content: '删除失败' })
-                        }
-                    })
-                },
-                onCancel () {
-                    console.log('Cancel')
-                }
-            })
+        // {
+        //     title: '总资金',
+        //     dataIndex: 'totalMoney',
+        //     align: 'center',
+        //     customRender: (text, row, index) => {
+        //         return text
+        //     }
+        // },
+        // {
+        //     title: '代理状态',
+        //     dataIndex: 'isLock',
+        //     align: 'center',
+        //     scopedSlots: { customRender: 'isLock' }
+        // },
+        // {
+        //     title: '注册时间',
+        //     dataIndex: 'addTime',
+        //     align: 'center',
+        //     customRender: (text, row, index) => {
+        //         return moment(text).format('YYYY-MM-DD HH:mm:ss')
+        //     }
+        // },
+        {
+          title: '操作',
+          key: 'action',
+          align: 'center',
+          scopedSlots: { customRender: 'action' },
         },
-        getinit () {
-            this.queryParam = {
-                id: undefined,
-                phone: '',
-                realName: '',
-                pageNum: 1,
-                pageSize: 10
-            }
-            this.pagination.current = 1
-            this.getagentlist()
-        },
-        geteditinit () {
-            this.getagentlist()
-        },
-        getagentlist () {
-            var that = this
-            this.loading = true
-            // dklist(this.agentqueryParam).then(res => {
-              onedklist().then(res => {
-                this.agentlist = res.data
-                // this.pagination.total = res.data.total
-                setTimeout(() => {
-                    that.loading = false
-                }, 500)
-            })
-        },
-        getclickagentlist () {
-            var that = this
-            this.agentloading = true
-            var data = {
-                pageNum: 1,
-                pageSize: 100
-            }
-            nextagent(data).then(res => {
-                this.clickagentlist = res.data.list
-                setTimeout(() => {
-                    that.agentloading = false
-                }, 500)
-            })
-        },
-        onPageChange (page, pageSize) {
-            this.agentqueryParam.pageNum = page
-            this.pagination.current = page
-            this.getagentlist()
-        },
-        onSizeChange (current, pageSize) {
-            this.agentqueryParam.pageNum = current
-            this.pagination.current = page
-            this.agentqueryParam.pageSize = pageSize
-            this.getagentlist()
-        }
+      ],
+      // 表头
+      pagination: {
+        total: 0,
+        current: 1,
+        pageSize: 10, // 每页中显示10条数据
+        showSizeChanger: true,
+        pageSizeOptions: ['10', '20', '50', '100'], // 每页中显示的数据
+        onShowSizeChange: (current, pageSize) => this.onSizeChange(current, pageSize), // 改变每页数量时更新显示
+        onChange: (page, pageSize) => this.onPageChange(page, pageSize), // 点击页码事件
+        showTotal: (total) => `共有 ${total} 条数据`, // 分页中显示总的数据
+      },
+      loading: false,
+      agentqueryParam: {
+        id: undefined,
+        pageNum: 1,
+        pageSize: 10,
+      },
+      labelCol: {
+        xs: { span: 8 },
+        sm: { span: 8 },
+        md: { span: 8 },
+      },
+      wrapperCol: {
+        xs: { span: 14 },
+        sm: { span: 14 },
+        md: { span: 14 },
+      },
+      agentloading: false,
+      agentlist: [],
+      clickagentlist: [],
+      byShow: false,
+      byloading: false,
+      optObj: {}, // 选择的对象
+      byFrom: this.$form.createForm(this), // 表单
     }
+  },
+  created() {
+    this.getagentlist()
+  },
+  methods: {
+    getDelagent(val) {
+      var that = this
+      this.$confirm({
+        title: '提示',
+        content: '确认删除机构?此操作不可恢复',
+        onOk() {
+          var data = {
+            id: val.id,
+          }
+          dldkjg(data).then((res) => {
+            if (res.status == 0) {
+              that.$message.success({ content: '删除成功', duration: 2 })
+              that.getinit()
+            } else {
+              that.$message.error({ content: '删除失败' })
+            }
+          })
+        },
+        onCancel() {
+          console.log('Cancel')
+        },
+      })
+    },
+    getinit() {
+      this.agentqueryParam = {
+        id: undefined,
+        pageNum: 1,
+        pageSize: 10,
+      }
+      this.pagination.current = 1
+      this.getagentlist()
+    },
+    geteditinit() {
+      this.getagentlist()
+    },
+    getagentlist() {
+      var that = this
+      this.loading = true
+      onedklist(this.agentqueryParam).then((res) => {
+        this.agentlist = res.data.list
+        this.pagination.total = res.data.total
+        setTimeout(() => {
+          that.loading = false
+        }, 500)
+      })
+    },
+    getclickagentlist() {
+      var that = this
+      this.agentloading = true
+      var data = {
+        pageNum: 1,
+        pageSize: 100,
+      }
+      nextagent(data).then((res) => {
+        this.clickagentlist = res.data.list
+        setTimeout(() => {
+          that.agentloading = false
+        }, 500)
+      })
+    },
+    onPageChange(page, pageSize) {
+      this.agentqueryParam.pageNum = page
+      this.pagination.current = page
+      this.getagentlist()
+    },
+    onSizeChange(current, pageSize) {
+      this.agentqueryParam.pageNum = current
+      this.pagination.current = page
+      this.agentqueryParam.pageSize = pageSize
+      this.getagentlist()
+    },
+    // 审核窗口打开
+    byOpen(val, state) {
+      this.optObj = { ...val, state }
+      this.byShow = true
+    },
+    // 关闭审核窗口
+    canceBy() {
+      this.byShow = false
+      const form = this.$refs.byFrom.form
+      form.resetFields()
+    },
+    // 审核通过||拒绝
+    by() {
+      const form = this.$refs.byFrom.form
+
+      form.validateFields((errors, values) => {
+        if (!errors) {
+          this.byloading = true
+          values.state = this.optObj.state
+          values.dkId = this.optObj.id
+
+          dksp(values).then((res) => {
+            if (res.status == 0) {
+              this.byShow = false
+              this.$message.success(res.msg)
+              form.resetFields()
+              this.getagentlist()
+            } else {
+              this.$message.error(res.msg)
+            }
+            this.byloading = false
+          })
+        }
+      })
+    },
+  },
 }
 </script>
diff --git a/src/views/newshares/newshareslist.vue b/src/views/newshares/newshareslist.vue
index d33dd2d..c0ff0c6 100644
--- a/src/views/newshares/newshareslist.vue
+++ b/src/views/newshares/newshareslist.vue
@@ -220,8 +220,8 @@
                 placeholder="请选择新股市场"
                 v-decorator="['stockType', { rules: [{ required: true, message: '新股市场' }] }]"
               >
-                <a-select-option value="nse">nse</a-select-option>
-                <a-select-option value="bse">bse</a-select-option>
+                <a-select-option value="US">US</a-select-option>
+                <a-select-option value="MEX">MEX</a-select-option>
               </a-select>
             </a-form-item>
           </a-col>
diff --git a/src/views/userlist/components/EditUserinfodialog.vue b/src/views/userlist/components/EditUserinfodialog.vue
index 6e18fa8..8ca267a 100644
--- a/src/views/userlist/components/EditUserinfodialog.vue
+++ b/src/views/userlist/components/EditUserinfodialog.vue
@@ -46,6 +46,12 @@
             <a-select-option :value="1">不可交易</a-select-option>
           </a-select>
         </a-form-item>
+        <a-form-item label="信用分" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input placeholder="请输入" v-decorator="['creditScore', {}]" />
+        </a-form-item>
+        <a-form-item label="贷款额度" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input placeholder="请输入" v-decorator="['loanLimit', {}]" />
+        </a-form-item>
       </a-form>
     </a-modal>
   </div>
@@ -77,7 +83,19 @@
       editUserform: this.$form.createForm(this),
       editUserdialog: false,
       editUserDialogloading: false,
-      fields: ['agentId', 'phone', 'realName', 'userPwd', 'idCard', 'isLogin', 'isLock', 'fundRatio', 'lever'],
+      fields: [
+        'agentId',
+        'phone',
+        'realName',
+        'userPwd',
+        'idCard',
+        'isLogin',
+        'isLock',
+        'fundRatio',
+        'lever',
+        'creditScore',
+        'loanLimit',
+      ],
       currentDetails: {},
     }
   },
diff --git a/src/views/userlist/components/detailuserdialog.vue b/src/views/userlist/components/detailuserdialog.vue
index 4938cad..b2ce86b 100644
--- a/src/views/userlist/components/detailuserdialog.vue
+++ b/src/views/userlist/components/detailuserdialog.vue
@@ -54,6 +54,13 @@
         <a-descriptions-item label="注册时间">
           {{ currentDetails.regTime | moment }}
         </a-descriptions-item>
+        
+        <a-descriptions-item label="信用分">
+          {{ currentDetails.creditScore ? currentDetails.creditScore : '--' }}
+        </a-descriptions-item>
+        <a-descriptions-item label="贷款额度">
+          {{ currentDetails.loanLimit ? currentDetails.loanLimit : '--' }}
+        </a-descriptions-item>
         <!-- <a-descriptions-item label="总资金(¥)">
           {{ Number(currentDetails.userAmt + currentDetails.userIndexAmt).toFixed(2) }}
         </a-descriptions-item> -->
diff --git a/src/views/userlist/components/editCapitaluserdialog.vue b/src/views/userlist/components/editCapitaluserdialog.vue
index 47e932c..964ecf8 100644
--- a/src/views/userlist/components/editCapitaluserdialog.vue
+++ b/src/views/userlist/components/editCapitaluserdialog.vue
@@ -35,9 +35,8 @@
             v-decorator="['accectType', { rules: [{ required: true, message: '请选择账户' }] }]"
           >
             <a-select-option v-for="item in activeArr" :key="item.id" :value="item.accectType">
-            {{
-              item | formatDate
-            }}</a-select-option>
+              {{ item | formatDate }}
+            </a-select-option>
           </a-select>
         </a-form-item>
       </a-form>
@@ -66,6 +65,8 @@
           return `沙特(${value.symbol} ${value.availableBalance})`
         case 'USDT':
           return `USDT( ${value.availableBalance})`
+        case 'MEX':
+          return `MEX( ${value.availableBalance})`
         default:
           break
       }
@@ -109,7 +110,7 @@
   },
   methods: {
     getEditorder(val) {
-      val.accectType = 'ST'
+      val.accectType = 'MEX'
       this.currentDetails = val
       this.editUserdialog = true
       this.fields.forEach((v) => this.editUserform.getFieldDecorator(v))
diff --git a/src/views/userlist/index.vue b/src/views/userlist/index.vue
index 6d97163..09d0d2f 100644
--- a/src/views/userlist/index.vue
+++ b/src/views/userlist/index.vue
@@ -22,14 +22,14 @@
             </a-col>
             <a-col :md="12" :lg="6" :sm="24">
               <a-form-item label="注册时间">
-                 <a-date-picker
-                   show-time
-                   style="width: 50%"
-                   @change="getregTime"
-                   v-model="regTime"
-                   format="YYYY-MM-DD HH:mm:ss"
-                 >
-                 </a-date-picker>
+                <a-date-picker
+                  show-time
+                  style="width: 50%"
+                  @change="getregTime"
+                  v-model="regTime"
+                  format="YYYY-MM-DD HH:mm:ss"
+                >
+                </a-date-picker>
               </a-form-item>
             </a-col>
             <a-col :md="12" :lg="6" :sm="24">
@@ -147,7 +147,7 @@
           <a-divider type="vertical" />
           <a slot="action" href="javascript:;" @click="$refs.EditUserinfodialog.getEditorder(record)">编辑</a>
           <a-divider type="vertical" />
-<!--          <a slot="action" href="javascript:;" @click="$refs.editUserbankdialog.getbankinfo(record)">银行卡</a>
+          <!--          <a slot="action" href="javascript:;" @click="$refs.editUserbankdialog.getbankinfo(record)">银行卡</a>
           <a-divider type="vertical" /> -->
           <a slot="action" href="javascript:;" @click="getMoneyzj(record)">资金</a>
           <a-divider type="vertical" />
@@ -198,15 +198,15 @@
   },
   data() {
     return {
-      regTime:'',
+      regTime: '',
       queryParam: {
         agentId: undefined,
         realName: '',
-        isLock:'',
-        isLogin:'',
-        isActive:'',
+        isLock: '',
+        isLogin: '',
+        isActive: '',
         phone: '',
-        regTime:'',
+        regTime: '',
         pageNum: 1,
         pageSize: 10,
         accountType: 0,
@@ -381,11 +381,11 @@
       this.queryParam = {
         agentId: undefined,
         realName: '',
-        isLock:'',
-        isLogin:'',
-        isActive:'',
+        isLock: '',
+        isLogin: '',
+        isActive: '',
         phone: '',
-        regTime:'',
+        regTime: '',
         pageNum: 1,
         pageSize: 10,
         accountType: 0,

--
Gitblit v1.9.3