소스 검색

Merge branch 'master' of http://git.cc-lotus.info/financial_platform/admin-cms

wq 5 년 전
부모
커밋
9a292ec98e

+ 277 - 0
src/layout/financeclaims/stockDetailInfo.vue

@@ -0,0 +1,277 @@
+<template>
+  <div id="mainForm">
+    <el-row>
+      <el-col :span="24" class="mainForm">
+        <el-col :span="24" class="top">
+          <span class="shu"></span><span class="title">{{ formTitle }}</span>
+        </el-col>
+        <el-col :span="24">
+          <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+            <el-col :span="24">
+              <el-form-item label="金融机构名称" prop="name">
+                <el-input v-model="ruleForm.name" placeholder="请输入金融机构名称" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="机构类型" prop="type">
+                <el-select v-model="ruleForm.type" placeholder="请选择机构类型" disabled>
+                  <el-option label="能发布债权产品" value="0"></el-option>
+                  <el-option label="能发布股权产品" value="1"></el-option>
+                  <el-option label="既能发布债权产品又能发布股权产品" value="2"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="机构logo" prop="logo">
+                <el-image :src="ruleForm.logo" style="width:100px" @click="showLogo(ruleForm.logo)"></el-image>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="融资轮次" prop="round">
+                <el-select style="width:100%" v-model="ruleForm.round" multiple placeholder="请选择融资轮次" disabled> </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="行业" prop="profession">
+                <el-select style="width:100%" v-model="ruleForm.profession" multiple placeholder="请选择" disabled> </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="组织形式" prop="form">
+                <el-input v-model="ruleForm.form" placeholder="请输入组织形式" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="法定代表人" prop="representative">
+                <el-input v-model="ruleForm.representative" placeholder="请输入法定代表人" disabled></el-input>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item label="办公区域" prop="business_addr">
+                <el-input v-model="ruleForm.business_addr" placeholder="请输入办公区域" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="注册地址" prop="registered_addr">
+                <el-input v-model="ruleForm.registered_addr" placeholder="请输入注册地址" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="创立时间" prop="establish_time">
+                <el-input v-model="ruleForm.establish_time" placeholder="请输入创立时间" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="组织机构号码" prop="code">
+                <el-input v-model="ruleForm.code" placeholder="请输入组织机构号码" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="所属地区" prop="belong_addr">
+                <el-input v-model="ruleForm.belong_addr" placeholder="请输入所属地区" disabled></el-input>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item label="管理资金规模" prop="size">
+                <el-input v-model="ruleForm.size" placeholder="请输入管理资金规模" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="注册资本" prop="registered_capital">
+                <el-input v-model="ruleForm.registered_capital" placeholder="请输入注册资本" disabled></el-input>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item label="实缴资金" prop="contributed_capital">
+                <el-input v-model="ruleForm.contributed_capital" placeholder="请输入实缴资金" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="机构简介" prop="introduction">
+                <el-input v-model="ruleForm.introduction" type="textarea" placeholder="请输入机构简介" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" class="clickBtn">
+              <span v-if="ruleForm.status === '1'">
+                <el-form-item>
+                  <el-button type="primary" @click="submitForm()">审核通过</el-button>
+                  <el-button type="danger" @click="resetForm()">审核拒绝</el-button>
+                </el-form-item>
+              </span>
+              <span v-if="ruleForm.status === '2'">
+                <el-form-item>
+                  <el-button type="primary" @click="outForm()">下架产品</el-button>
+                </el-form-item>
+              </span>
+            </el-col>
+          </el-form>
+        </el-col>
+      </el-col>
+    </el-row>
+    <el-dialog :visible.sync="logoDialog">
+      <el-image :src="logoImage" style="height:100%;width:100% "></el-image>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import upload from '@/components/upload.vue';
+export default {
+  name: 'mainForm',
+  props: {
+    formTitle: null,
+    ruleForm: null,
+    sshy: null,
+    rzlc: null,
+  },
+  components: {},
+  data: () => ({
+    logoDialog: false,
+    logoImage: '',
+    rules: {},
+
+    props: { multiple: true },
+
+    value: [],
+    value: [],
+
+    value1: [],
+    value2: [],
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    handleChange(value) {
+      console.log(value);
+    },
+    submitForm(ruleForm) {
+      this.$emit('submitForm', { data: this.ruleForm });
+    },
+    resetForm() {
+      this.$emit('resetForm', { data: this.ruleForm });
+    },
+    outForm() {
+      this.$emit('outForm', { data: this.ruleForm });
+    },
+    showLogo(logoUrl) {
+      if (logoUrl) {
+        this.$set(this, `logoImage`, logoUrl);
+        this.$set(this, `logoDialog`, true);
+      } else {
+        this.$set(this, `logoDialog`, false);
+      }
+    },
+    // uploadSuccess({ type, data }) {
+    //   if (type !== 'logo') {
+    //     let arr = _.get(this.ruleForm, type);
+    //     if (arr !== undefined) {
+    //       this.ruleForm[type].push({ name: data.name, uri: data.uri });
+    //     } else {
+    //       let newArr = [{ name: data.name, uri: data.uri }];
+    //       this.$set(this.ruleForm, `${type}`, newArr);
+    //     }
+    //   } else {
+    //     this.$set(this.ruleForm, `${type}`, data.uri);
+    //   }
+    // },
+    clickDown() {},
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.top .shu {
+  float: left;
+  width: 4px;
+  height: 20px;
+  background: rgba(233, 2, 29, 1);
+}
+.top .title {
+  float: left;
+  padding: 0 10px;
+  font-size: 16px;
+  font-family: Source Han Sans SC;
+  font-weight: bold;
+  color: rgba(40, 40, 40, 1);
+}
+/deep/.el-textarea__inner {
+  min-height: 100px !important;
+}
+/deep/.select {
+  width: 632px;
+}
+.selects {
+  width: 473px;
+  margin: 0 15px 0 0;
+}
+/deep/.el-radio__input.is-checked + .el-radio__label {
+  color: #e9021d;
+}
+/deep/.el-radio__input.is-checked .el-radio__inner {
+  border-color: #e9021d;
+  background: #e9021d;
+}
+/deep/.el-checkbox__input.is-checked + .el-checkbox__label {
+  color: #e9021d;
+}
+/deep/.el-checkbox__input.is-checked .el-checkbox__inner,
+.el-checkbox__input.is-indeterminate .el-checkbox__inner {
+  background-color: #e9021d;
+  border-color: #e9021d;
+}
+/deep/.el-checkbox-button,
+.el-checkbox-button__inner {
+  margin: 0 15px 0 0;
+}
+/deep/.el-checkbox-button__inner {
+  padding: 7px 5px;
+  border: 1px solid #ccc;
+  border-radius: 5px;
+}
+/deep/.el-checkbox-button__inner:hover {
+  color: #e9021d;
+}
+/deep/.el-checkbox-button:first-child .el-checkbox-button__inner {
+  border-left: 1px solid #ccc;
+  border-radius: 5px;
+}
+/deep/.el-checkbox-button:last-child .el-checkbox-button__inner {
+  border-radius: 5px;
+}
+/deep/.el-checkbox-button.is-checked .el-checkbox-button__inner {
+  color: #e9021d;
+  background-color: #ffffff;
+  border-color: #e9021d;
+}
+/deep/.el-checkbox-button.is-checked .el-checkbox-button__inner {
+  box-shadow: none;
+}
+/deep/.el-switch.is-checked .el-switch__core {
+  border-color: #e9021d;
+  background-color: #e9021d;
+}
+.clickBtn .el-button {
+  width: 100px;
+  height: 40px;
+  padding: 0;
+  color: #ffffff;
+  background: #b9b9b9;
+  border-radius: 4px;
+  margin: 40px;
+}
+.clickBtn {
+  text-align: center;
+  margin: 40px 0;
+  border-top: 1px solid #ccc;
+}
+.clickBtn .el-button:first-child {
+  background-color: #e9021d;
+}
+</style>

+ 155 - 0
src/layout/financeclaims/stockIndexInfo.vue

@@ -0,0 +1,155 @@
+<template>
+  <div id="list">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24">
+          <el-table
+            ref="debtTable"
+            :data="debtTable"
+            tooltip-effect="dark"
+            :default-sort="{ prop: 'date', order: 'descending' }"
+            style="width: 100%"
+            @selection-change="handleSelectionChange"
+          >
+            <el-table-column type="selection" align="center"> </el-table-column>
+            <el-table-column type="index" label="序号" width="50" align="center"> </el-table-column>
+            <el-table-column property="name" label="机构名称" align="center"> </el-table-column>
+            <el-table-column label="机构类型" align="center">
+              <template slot-scope="scope">
+                <span style="margin-left: 10px">{{
+                  scope.row.type === '0' ? '发布债权产品' : scope.row.type === '1' ? '发布股权产品' : scope.row.type === '2' ? '发布债权产品和股权产品' : ''
+                }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="机构logo" align="center">
+              <template slot-scope="scope">
+                <span>
+                  <el-image v-if="scope.row.logo" :src="scope.row.logo" style="height:20px;width:20px " @click="showImage(scope.row.logo)"></el-image
+                ></span>
+              </template>
+            </el-table-column>
+            <el-table-column property="profession" label="所属行业" align="center"> </el-table-column>
+            <el-table-column property="representative" label="法定代表人" align="center"> </el-table-column>
+            <el-table-column label="产品状态" align="center">
+              <template slot-scope="scope">
+                <span style="margin-left: 10px">{{
+                  scope.row.status === '1' ? '待审核' : scope.row.status === '2' ? '已上架' : scope.row.status === '3' ? '已下架' : ''
+                }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" align="center" width="300px">
+              <template slot-scope="scope">
+                <!-- <el-button @click="handleClick(scope.row)" type="text"><i class="el-icon-edit"></i></el-button>
+                <el-button @click.native.prevent="deleteRow(scope.$index, debtTable)" type="text"><i class="el-icon-delete"></i></el-button> -->
+                <el-button size="mini" type="text" class="edit" icon="el-icon-view" @click="handleClick(scope.row)"></el-button>
+                <el-button size="mini" type="text" class="delete" icon="el-icon-delete" @click.prevent="deleteRow(scope.row.id)"></el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+          <el-row>
+            <el-pagination
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="currentPage"
+              background
+              layout="total, prev, pager, next, jumper"
+              :total="total"
+              :page-size="pageSize"
+            >
+            </el-pagination>
+          </el-row>
+        </el-col>
+      </el-col>
+    </el-row>
+    <el-dialog :visible.sync="dialogVisible">
+      <el-image :src="elImage" style="height:100%;width:100% "></el-image>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'list',
+  props: {
+    debtTable: null,
+    total: null,
+    totals: null,
+    totalss: null,
+  },
+  components: {},
+  data: () => ({
+    currentPage: 0,
+    pageSize: 10,
+    dialogVisible: false,
+    elImage: '',
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    handleSizeChange(val) {
+      console.log(`每页 ${val} 条`);
+    },
+    deleteRow(id) {
+      this.$emit('deleteRow', id);
+    },
+    handleCurrentChange(currentPage) {
+      console.log(currentPage);
+
+      this.$emit('handleCurrentChange', { skip: (currentPage - 1) * this.pageSize, limit: this.pageSize, currentPage });
+    },
+    handleClick(id) {
+      console.log(id.id);
+      let newid = id.id;
+
+      this.$emit('handleClick', newid);
+    },
+    showImage(image) {
+      if (image) {
+        this.$set(this, `elImage`, image);
+        this.$set(this, `dialogVisible`, true);
+      } else {
+        this.$set(this, `dialogVisible`, false);
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+/deep/.el-checkbox__input.is-checked .el-checkbox__inner {
+  background-color: red;
+  border-color: red;
+}
+/deep/.el-checkbox__input.is-indeterminate .el-checkbox__inner {
+  background-color: red;
+  border-color: red;
+}
+/deep/.el-table th {
+  background-color: #f5f6fa;
+  padding: 8px 0;
+}
+/deep/.el-table td {
+  padding: 11px 0;
+}
+.other {
+  color: #f36302;
+}
+.view {
+  color: #f36302;
+}
+.edit {
+  color: #2ccc02;
+}
+.delete {
+  color: #e9021d;
+}
+/deep/.el-pagination {
+  padding: 26px 20px;
+}
+/deep/.el-pagination.is-background .el-pager li:not(.disabled).active {
+  background-color: red;
+}
+</style>

+ 1 - 0
src/layout/layout-part/menus.vue

@@ -81,6 +81,7 @@
         </template>
         <el-menu-item-group>
           <el-menu-item index="/financeclaims/financeClaimIndex">债权产品管理</el-menu-item>
+          <el-menu-item index="/financeclaims/stockIndex">股权产品管理</el-menu-item>
           <el-menu-item index="/financeclaims/manageMoneyIndex">理财产品管理</el-menu-item>
           <el-menu-item index="/financeclaims/loanProIndex">小微数贷管理</el-menu-item>
           <el-menu-item index="/financeclaims/loanFollowndex">小微数贷授信管理</el-menu-item>

+ 1 - 1
src/layout/otheruser/otheruserForm.vue

@@ -26,7 +26,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="用户角色" prop="characterid">
+            <el-form-item label="用户角色">
               <el-select v-model="ruleForm.characterid" placeholder="请选择用户角色">
                 <el-option v-for="(item, index) in charList" :key="index" :label="item.name" :value="item.id"></el-option>
               </el-select>

+ 10 - 1
src/router/index.js

@@ -230,7 +230,16 @@ const routes = [
     path: '/financeclaims/financeLookClaimDetail',
     component: () => import('../views/financeclaims/financeLookClaimDetail.vue'),
   },
-
+  // 股权产品列表
+  {
+    path: '/financeclaims/stockIndex',
+    component: () => import('../views/financeclaims/stockIndex.vue'),
+  },
+  // 股权信息详情
+  {
+    path: '/financeclaims/stockDetail',
+    component: () => import('../views/financeclaims/stockDetail.vue'),
+  },
   // 数贷产品列表
   {
     path: '/financeclaims/loanProIndex',

+ 91 - 0
src/views/financeclaims/stockDetail.vue

@@ -0,0 +1,91 @@
+<template>
+  <div id="detail">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="top">
+          <detailTopInfo :topTitle="topTitle" :display="display"></detailTopInfo>
+        </el-col>
+        <el-col :span="24" class="main">
+          <detailInfo :ruleForm="ruleForm" @submitForm="submitForm" @resetForm="resetForm" @outForm="outForm" :formTitle="formTitle"></detailInfo>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import detailTopInfo from '@/layout/common/detailTopInfo.vue';
+import detailInfo from '@/layout/financeclaims/stockDetailInfo.vue';
+
+import { createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('institution');
+const { mapActions: Mapdictionary } = createNamespacedHelpers('dictionary');
+export default {
+  name: 'detail',
+  props: {},
+  components: {
+    detailTopInfo, //表单头部按钮
+    detailInfo, //表单内容
+  },
+  data: () => ({
+    topTitle: '股权产品详细',
+    display: 'block',
+    formTitle: '信息管理',
+    ruleForm: {},
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    id() {
+      return this.$route.query.id;
+    },
+  },
+  methods: {
+    ...mapActions(['query', 'delete', 'fetch', 'update']),
+    async search() {
+      const res = await this.fetch(this.id);
+      if (res.errcode === 0) {
+        this.$set(this, `ruleForm`, res.data);
+      }
+    },
+    // 审核股权产品信息+通过
+    submitForm({ data }) {
+      data.status = '2';
+      let res = this.update(data);
+      this.$checkRes(res, '审核通过成功', '审核通过失败');
+      this.goBack();
+    },
+    // 审核股权产品信息+拒绝
+    resetForm({ data }) {
+      data.status = '0';
+      let res = this.update(data);
+      this.$checkRes(res, '审核拒绝成功', '审核拒绝失败');
+      this.goBack();
+    },
+      // 下架股权产品
+    outForm({ data }) {
+      data.status = '3';
+      let res = this.update(data);
+      this.$checkRes(res, '下架产品成功', '下架产品失败');
+      this.goBack();
+    },
+    // 返回
+    goBack() {
+      this.$router.go(-1);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  height: 50px;
+  margin: 0 0 10px 0;
+}
+.main {
+  min-height: 765px;
+  background: #ffffff;
+  padding: 20px;
+}
+</style>

+ 149 - 0
src/views/financeclaims/stockIndex.vue

@@ -0,0 +1,149 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="top">
+        <topInfo :topTitle="topTitle" :display="display" @add="add"></topInfo>
+      </el-col>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="search">
+          <searchInfo @sousuo="sousuo"></searchInfo>
+        </el-col>
+        <el-col :span="24" class="list">
+          <newsInfo
+            :debtTable="debtTable"
+            @handleCurrentChange="handleCurrentChange"
+            @deleteRow="deleteRow"
+            :total="total"
+            :totals="totals"
+            :totalss="totalss"
+            @handleClick="handleClick"
+          ></newsInfo>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+  <!--
+  <template>
+    <div id="index">
+      <el-row
+        <el-col :span="24" class="debt">
+           <el-col :span="24" class="top">  <topInfo :topTitle="topTitle" :display="display"></topInfo> // </el-col> //
+          <el-col :span="24" class="search">  <searchInfo></searchInfo>  </el-col> 
+          <el-col :span="24" class="main">  <newsInfo :debtTable="debtTable" :total="total" @handleClick="handleClick"></newsInfo> // </el-col> //
+        </el-col>
+      </el-row>
+    </div>
+  </template> -->
+</template>
+<script>
+import topInfo from '@/layout/common/topInfo.vue';
+import searchInfo from '@/layout/common/searchInfo.vue';
+import newsInfo from '@/layout/financeclaims/stockIndexInfo.vue';
+import { createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('institution');
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    topInfo, //头部导航
+    searchInfo, //搜素
+    newsInfo, //
+  },
+  data: () => ({
+    // display: 'none',
+    display: 'block',
+    topTitle: '股权产品列表',
+    debtTable: [],
+    total: 0,
+    totals: 0,
+    totalss: 0,
+    skip: '',
+    info: {},
+  }),
+  created() {
+    // this.search();
+    // this.searchstatus1();
+    // this.searchelse();
+  },
+  computed: {
+    status() {
+      return this.$route.params.status;
+    },
+  },
+  watch: {
+    // status(news) {
+    //   if (news == 1) {
+    //     this.search();
+    //   }
+    // },
+    status: {
+      handler(oval) {
+        console.log(oval);
+        this.debtTable = [];
+        console.log(this.debtTable);
+        this.skip = '';
+        this.info = {};
+        this.search();
+      },
+      //立刻
+      immediate: true,
+      deep: true,
+    },
+  },
+  methods: {
+    add() {
+      // this.$router.push({ path: '/test/detail' });
+    },
+
+    ...mapActions(['query', 'delete']),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      // console.log(this.info.name);
+      let type = { name: this.info.name };
+      skip = this.skip;
+      info = type;
+      const res = await this.query({ skip, limit, ...info });
+      const data = res.data.filter(item => item.type != '0' && item.status != '0');
+      this.$set(this, `debtTable`, data);
+      this.$set(this, `total`, res.total);
+    },
+
+    async deleteRow(id) {
+      const res = await this.delete(id);
+      this.$checkRes(res, '删除成功', '删除失败');
+      this.search();
+    },
+    async handleCurrentChange({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      console.log(this.type);
+      this.search();
+    },
+    //搜索
+    async sousuo(search) {
+      this.$set(this, `info`, search);
+      this.search();
+    },
+    handleClick(newid) {
+      this.$router.push({ path: '/financeclaims/stockDetail', query: { id: newid } });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  height: 50px;
+  margin: 0 0 10px 0;
+}
+.main {
+  height: 765px;
+  background: #ffffff;
+}
+.search {
+  width: 97%;
+  height: 35px;
+  margin: 20px;
+}
+.list {
+  padding: 0 20px;
+}
+</style>