From bfd4f0e5ac1c8da2b997c2fee7738e9f4bb976da Mon Sep 17 00:00:00 2001
From: dcc <dcc@163.com>
Date: Wed, 10 Jul 2024 17:47:15 +0800
Subject: [PATCH] 涨停板审核

---
 src/views/position/dailyPriceLimitReview.vue                 |   32 ++++
 src/api/position.js                                          |   18 ++
 src/views/position/components/dailyPriceLimitReview-hold.vue |  410 +++++++++++++++++++++++++++++++++++++++++++++++++++
 src/config/router.config.js                                  |    6 
 src/views/vip/components/VIPScramble-hold.vue                |   13 
 5 files changed, 472 insertions(+), 7 deletions(-)

diff --git a/src/api/position.js b/src/api/position.js
index 07f64d7..19f1c4b 100644
--- a/src/api/position.js
+++ b/src/api/position.js
@@ -2,6 +2,8 @@
 import qs from 'qs'
 const userApi = {
     orderList: '/admin/pending/orderList.do', //现价交易
+    purchaseList : '/admin/purchase/list.do', // 列表
+    purchaseExamine : '/admin/purchase/examine.do', //审核通过
     sitevipList: '/admin/sitevip/list.do', //vip
     sitevipAdd: '/admin/sitevip/add.do', //vip sitevipUpdate
     sitevipUpdate: '/admin/sitevip/update.do', //vip
@@ -44,6 +46,22 @@
     })
 }
 
+export function purchaseList (parameter) {
+    return request({
+        url: userApi.purchaseList,
+        method: 'get',
+        params: parameter
+    })
+}
+
+export function purchaseExamine (parameter) {
+    return request({
+        url: userApi.purchaseExamine,
+        method: 'post',
+        data: qs.stringify(parameter)
+    })
+}
+
 export function orderList (parameter) {
     return request({
         url: userApi.orderList,
diff --git a/src/config/router.config.js b/src/config/router.config.js
index fc8a790..b3913e6 100644
--- a/src/config/router.config.js
+++ b/src/config/router.config.js
@@ -177,6 +177,12 @@
             component: () => import('@/views/position/currentPriceReview'),
             meta: { title: '现价审核', keepAlive: true, permission: ['financing'] },
           },
+          {
+            path: '/position/dailyPriceLimitReview',
+            name: 'dailyPriceLimitReview',
+            component: () => import('@/views/position/dailyPriceLimitReview'),
+            meta: { title: '涨停板审核', keepAlive: true, permission: ['financing'] },
+          },
           // {
           //   path: '/position/createfinancing',
           //   name: 'createfinancing',
diff --git a/src/views/position/components/dailyPriceLimitReview-hold.vue b/src/views/position/components/dailyPriceLimitReview-hold.vue
new file mode 100644
index 0000000..69d8b3d
--- /dev/null
+++ b/src/views/position/components/dailyPriceLimitReview-hold.vue
@@ -0,0 +1,410 @@
+<template>
+  <div>
+    <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-input v-model="queryParam.keywords" style="width: 100%" placeholder="请输入搜索关键次" />
+              </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="0">待审核</a-select-option>
+                  <a-select-option :value="1">买入成功</a-select-option>
+                  <a-select-option :value="2">买入失败</a-select-option>
+                </a-select>
+              </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), getlist()"
+                    >查询
+                  </a-button>
+                </span>
+              </a-form-item>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-table
+      bordered
+      :loading="loading"
+      :pagination="pagination"
+      :columns="columns"
+      :data-source="datalist"
+      rowKey="id"
+    >
+      <span slot="stockName" slot-scope="text, record">
+        <template>
+          <div>
+            <span style="margin-right: 10px">{{ record.stockName }}</span>
+            <a-tag
+              :color="
+                record.stockPlate == '科创'
+                  ? 'blue'
+                  : !record.stockPlate
+                  ? 'orange'
+                  : record.stockPlate == '创业'
+                  ? 'pink'
+                  : 'purple'
+              "
+            >
+              {{ record.stockPlate == '科创' ? '科创' : !record.stockPlate ? '股票' : record.stockPlate }}
+            </a-tag>
+            <p>({{ record.stockCode }})</p>
+          </div>
+        </template>
+      </span>
+      <span slot="positionType" slot-scope="text, record">
+        <template>
+          <div>
+            <a-tag :color="record.positionType == 1 ? 'blue' : 'green'">
+              {{ record.positionType == 1 ? '模拟持仓' : '正式持仓' }}
+            </a-tag>
+          </div>
+        </template>
+      </span>
+      <span slot="status" slot-scope="text, record">
+        <template>
+          <div>
+            <a-tag v-if="record.status == 0"> 待审核 </a-tag>
+            <a-tag v-if="record.status == 1"> 买入成功 </a-tag>
+            <a-tag v-if="record.status == 2"> 买入失败 </a-tag>
+          </div>
+        </template>
+      </span>
+      <span slot="orderDirection" slot-scope="text, record">
+        <template>
+          <div>
+            <a-tag :color="record.orderDirection == '买涨' ? 'red' : 'green'">
+              {{ record.orderDirection }}
+            </a-tag>
+          </div>
+        </template>
+      </span>
+      <span slot="nowPrice" slot-scope="text, record">
+        <template>
+          <div>
+            <p
+              :class="
+                Number(record.nowPrice) - record.targetPrice < 0
+                  ? 'greens'
+                  : Number(record.nowPrice) - record.targetPrice > 0
+                  ? 'reds'
+                  : ''
+              "
+            >
+              {{ record.nowPrice }}
+            </p>
+          </div>
+        </template>
+      </span>
+      <span slot="profitAndLose" slot-scope="text">
+        <template>
+          <div>
+            <p :class="text < 0 ? 'greens' : text > 0 ? 'reds' : ''">
+              {{ text }}
+            </p>
+          </div>
+        </template>
+      </span>
+      <span slot="allProfitAndLose" slot-scope="text">
+        <template>
+          <div>
+            <p :class="text < 0 ? 'greens' : text > 0 ? 'reds' : ''">
+              {{ text }}
+            </p>
+          </div>
+        </template>
+      </span>
+
+      <template slot="action" slot-scope="text, record"  v-if="record.status == 0">
+        <a slot="action" href="javascript:;" @click="getLockopen(record.id)">审核通过</a>
+      </template>
+    </a-table>
+    <a-modal
+      title="锁仓"
+      :width="640"
+      :visible="Lockvisibledialog"
+      :confirmLoading="Lockvisibleloading"
+      @ok="getDialogok"
+      @cancel="handleCancel"
+    >
+      <a-form :form="Lockvisibleform" ref="createModal">
+        <a-form-item>
+          <a-input
+            v-decorator="['lockMsg', { rules: [{ required: true, message: '请输入锁仓原因!', whitespace: true }] }]"
+            placeholder="请输入锁仓原因!"
+          />
+        </a-form-item>
+      </a-form>
+    </a-modal>
+  </div>
+</template>
+<script>
+import { positionlist, positionlock, positionsell, purchaseList, purchaseExamine } from '@/api/position'
+import { nextagent } from '@/api/home'
+import moment from 'moment'
+export default {
+  name: 'Financinghold',
+  data() {
+    return {
+      columns: [
+        {
+          title: 'ID',
+          dataIndex: 'id',
+          align: 'center',
+        },
+        {
+          title: '用户ID',
+          dataIndex: 'userId',
+          align: 'center',
+        },
+        {
+          title: '股票ID',
+          dataIndex: 'stockCode',
+          align: 'center',
+        },
+        {
+          title: '数量',
+          dataIndex: 'buyNum',
+          align: 'center',
+        },
+        // {
+        //   title: '类型',
+        //   dataIndex: 'buyType',
+        //   align: 'center',
+        // },
+        // {
+        //   title: '止盈',
+        //   dataIndex: 'profitTarget',
+        //   align: 'center',
+        // },
+        // {
+        //   title: '止损',
+        //   dataIndex: 'stopTarget',
+        //   align: 'center',
+        // },
+        {
+          title: '现价',
+          dataIndex: 'nowPrice',
+          align: 'center',
+          scopedSlots: { customRender: 'nowPrice' },
+        },
+        // {
+        //   title: '目标价格',
+        //   dataIndex: 'targetPrice',
+        //   align: 'center',
+        // },
+        {
+          title: '状态',
+          dataIndex: 'status',
+          align: 'center',
+          scopedSlots: { customRender: 'status' },
+        },
+        {
+          title: '添加时间',
+          dataIndex: 'addTime',
+          align: 'center',
+          width: 180,
+          customRender: (text, row, index) => {
+            return text ? moment(text).format('YYYY-MM-DD HH:mm:ss') : ''
+          },
+        },
+        {
+          title: '操作',
+          key: 'action',
+          align: 'center',
+          fixed: 'right',
+          width: 150,
+          scopedSlots: { customRender: 'action' },
+        },
+      ],
+      // 表头
+      pagination: {
+        total: 0,
+        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,
+        keywords: '',
+        status: '',
+      },
+      datalist: [],
+      agentlist: [],
+      agentloading: false,
+      Lockvisibledialog: false,
+      Lockvisibleloading: false,
+      Lockvisibleform: this.$form.createForm(this),
+      clickpositionId: '',
+      agentqueryParam: {
+        pageNum: 1,
+        pageSize: 100,
+      },
+    }
+  },
+  created() {
+    this.getlist()
+  },
+  methods: {
+    getCompulsoryclosing(val) {
+      var that = this
+      this.$confirm({
+        title: '提示',
+        content: '确认要强制平仓吗?',
+        onOk() {
+          var data = {
+            positionSn: val,
+          }
+          positionsell(data)
+            .then((res) => {
+              if (res.status == 0) {
+                that.$message.success(res.msg)
+                that.getlist()
+              } else {
+                that.$message.error({ content: '平仓失败' })
+              }
+            })
+            .catch((error) => {
+              that.$message.error({ content: '平仓失败' })
+            })
+        },
+        onCancel() {
+          console.log('Cancel')
+        },
+      })
+    },
+    getLockopen(val) {
+      var that = this
+      this.$confirm({
+        title: '提示',
+        content: '确认要审核通过吗?',
+        onOk() {
+          var data = {
+            id: val,
+          }
+          purchaseExamine(data).then((res) => {
+            if (res.status == 0) {
+              that.$message.success(res.msg)
+              that.getlist()
+            } else {
+              that.$message.error(res.msg)
+            }
+          })
+        },
+        onCancel() {
+          console.log('Cancel')
+        },
+      })
+    },
+    handleCancel() {
+      this.Lockvisibledialog = false
+      const form = this.$refs.createModal.form
+      form.resetFields()
+    },
+    getDialogok() {
+      const form = this.$refs.createModal.form
+      form.validateFields((errors, values) => {
+        if (!errors) {
+          this.Lockvisibleloading = true
+          var data = {
+            state: 1,
+            lockMsg: values.lockMsg,
+            positionId: this.clickpositionId,
+          }
+          positionlock(data)
+            .then((res) => {
+              if (res.status == 0) {
+                this.Lockvisibledialog = false
+                this.$message.success(res.msg)
+                form.resetFields()
+                this.getlist()
+              } else {
+                this.$message.error(res.msg)
+              }
+              this.Lockvisibleloading = false
+            })
+            .catch((error) => {
+              reject(error)
+            })
+        }
+      })
+    },
+    getinit() {
+      this.queryParam = {
+        pageNum: 1,
+        pageSize: 10,
+        keywords: '',
+        status: '',
+      }
+      this.getlist()
+    },
+    getqueryParam() {
+      this.queryParam = {
+        pageNum: 1,
+        pageSize: 10,
+        keywords: '',
+        status: '',
+      }
+    },
+    getagentlist() {
+      var that = this
+      this.agentloading = true
+      nextagent(this.agentqueryParam).then((res) => {
+        this.agentlist = res.data.list
+        setTimeout(() => {
+          that.agentloading = false
+        }, 500)
+      })
+    },
+    getlist() {
+      this.loading = true
+      console.log(this.queryParam)
+      purchaseList(this.queryParam).then((res) => {
+        console.log(res)
+        this.datalist = res.data.records
+        this.pagination.total = res.data.total
+        this.loading = false
+      })
+    },
+    onPageChange(page, pageSize) {
+      this.queryParam.pageNum = page
+      this.getlist()
+    },
+    onSizeChange(current, pageSize) {
+      this.queryParam.pageNum = current
+      this.queryParam.pageSize = pageSize
+      this.getlist()
+    },
+  },
+}
+</script>
+<style scoped>
+.greens {
+  color: #52c41a;
+}
+
+.reds {
+  color: #f5222d;
+}
+</style>
diff --git a/src/views/position/dailyPriceLimitReview.vue b/src/views/position/dailyPriceLimitReview.vue
new file mode 100644
index 0000000..b83e622
--- /dev/null
+++ b/src/views/position/dailyPriceLimitReview.vue
@@ -0,0 +1,32 @@
+<template>
+    <page-header-wrapper>
+      <a-card>
+        <dailyPriceLimitReviewHold ref="dailyPriceLimitReviewHold"></dailyPriceLimitReviewHold>
+      </a-card>
+    </page-header-wrapper>
+  </template>
+  
+  <script>
+  import dailyPriceLimitReviewHold from './components/dailyPriceLimitReview-hold'
+  export default {
+      name: 'dailyPriceLimitReview',
+      components: {
+        dailyPriceLimitReviewHold,
+      },
+      data () {
+          return {
+          }
+      },
+      methods: {
+          
+      }
+  }
+  </script>
+  
+  <style lang="less" scoped>
+  /deep/ .ant-tabs-nav-scroll {
+      display: flex;
+      justify-content: center;
+  }
+  </style>
+  
\ No newline at end of file
diff --git a/src/views/vip/components/VIPScramble-hold.vue b/src/views/vip/components/VIPScramble-hold.vue
index e86697a..802a051 100644
--- a/src/views/vip/components/VIPScramble-hold.vue
+++ b/src/views/vip/components/VIPScramble-hold.vue
@@ -374,11 +374,9 @@
       })
     },
     geteditStock(val) {
-      console.log(val);
       this.currentdetail = val
       this.Lockvisibledialog = true
       this.fields.forEach((v) => this.addUserform.getFieldDecorator(v))
-      console.log(this.fields);
       this.addUserform.setFieldsValue(pick(val, this.fields))
     },
     getLockopen(val) {
@@ -422,7 +420,7 @@
         console.log(values);
         if (!errors) {
           if (this.currentdetail != '') {
-            this.Lockvisibledialog = true
+            this.Lockvisibleloading = true
             values.id = this.currentdetail.id
 
             // values.subscriptionTime = this.subscriptionTime
@@ -437,10 +435,10 @@
               } else {
                 this.$message.error(res.msg)
               }
-              this.Lockvisibledialog = false
+              this.Lockvisibleloading = false
             })
           } else {
-            this.addUserDialogloading = true
+            this.Lockvisibleloading = true
             sitevipAdd(values).then((res) => {
               if (res.status == 0) {
                 this.Lockvisibledialog = false
@@ -450,7 +448,7 @@
               } else {
                 this.$message.error(res.msg)
               }
-              this.addUserDialogloading = false
+              this.Lockvisibleloading = false
             })
           }
         }
@@ -462,6 +460,7 @@
       form.validateFields((errors, values) => {
         if (!errors) {
           values.id = this.details.id
+          this.keyvisibleloading = true
           setupdate(values).then((res) => {
               if (res.status == 0) {
                 this.visibledialog = false
@@ -471,7 +470,7 @@
               } else {
                 this.$message.error(res.msg)
               }
-              this.visibledialog = false
+              this.keyvisibleloading = false
             })
         }
       })

--
Gitblit v1.9.3