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