lrf402788946 3 years ago
parent
commit
1cb09309c2
3 changed files with 139 additions and 5 deletions
  1. 66 0
      src/views/adminCenter/patent/account.vue
  2. 72 4
      src/views/adminCenter/patent/index.vue
  3. 1 1
      vue.config.js

+ 66 - 0
src/views/adminCenter/patent/account.vue

@@ -0,0 +1,66 @@
+<template>
+  <div id="account">
+    <el-table border stripe :data="list" size="mini">
+      <el-table-column align="center" label="姓名" prop="name"></el-table-column>
+      <el-table-column align="center" label="电话" prop="phone"></el-table-column>
+      <el-table-column align="center" label="邮箱" prop="email"></el-table-column>
+      <el-table-column align="center" label="账户类型">
+        <template v-slot="account">
+          {{ checkType(account) }}
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="选择">
+        <template v-slot="{ $index }">
+          <el-link type="primary" :underline="false" @click="accountSelect($index)" v-if="!checkSelect($index)">选择</el-link>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<script>
+const _ = require('lodash');
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'account',
+  props: {
+    list: { type: Array },
+  },
+  model: {
+    prop: 'list',
+    event: 'change',
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {
+    checkType({ row }) {
+      const keys = Object.keys(row);
+      const str = keys.find((f) => f === 'is_expert');
+      if (str) return '个人用户';
+      else return '企业用户';
+    },
+    checkSelect(index) {
+      const is_select = this.list[index].is_select;
+      if (is_select === true) return true;
+      else return false;
+    },
+    accountSelect(index) {
+      this.$emit('select', index);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 72 - 4
src/views/adminCenter/patent/index.vue

@@ -23,22 +23,44 @@
       </template>
     </data-table>
     <el-dialog title="错误记录" center :visible.sync="dialog" :destroy-on-close="true">
-      <el-table border stripe :data="errorList">
+      <el-table border stripe :data="errorList" v-if="errcode === '1'">
         <el-table-column align="center" label="错误记录">
           <template v-slot="{ row }">{{ row }}</template>
         </el-table-column>
       </el-table>
+      <el-table border stripe :data="errorList" v-if="errcode === '2'">
+        <el-table-column align="center" label="发明名称" prop="name"></el-table-column>
+        <el-table-column align="center" label="发明人" prop="inventor"></el-table-column>
+        <el-table-column align="center" label="选择状态">
+          <template v-slot="{ row }">
+            {{ checkSelect(row) }}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="选择">
+          <template v-slot="{ row, $index }">
+            <el-link type="primary" :underline="false" @click="toSelectUser(row, $index)">选择用户</el-link>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="margin: 16px; width: 100%; text-align: center">
+        <el-button type="primary" style="width: 60%" @click="toContinue">继续导入</el-button>
+      </div>
+      <el-dialog title="选择用户" :visible.sync="innerDialog" append-to-body :destroy-on-close="true">
+        <account v-model="nameList" @select="selectUser"></account>
+      </el-dialog>
     </el-dialog>
   </div>
 </template>
 
 <script>
+import account from './account.vue';
+const _ = require('lodash');
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: disclosure } = createNamespacedHelpers('disclosure');
 export default {
   name: 'index',
   props: {},
-  components: {},
+  components: { account },
   data: function () {
     return {
       list: [],
@@ -53,12 +75,17 @@ export default {
       ],
       opera: [{ label: '查看', method: 'view' }],
       dialog: false,
+      errcode: undefined,
+      temp_id: undefined,
       errorList: [],
+      innerDialog: false,
+      nameList: [],
+      listIndex: undefined,
     };
   },
   created() {},
   methods: {
-    ...disclosure(['import']),
+    ...disclosure(['import', 'cacheImport']),
     async search({ skip = 0, limit = 10, ...info } = {}) {
       console.log('in function:');
     },
@@ -71,9 +98,15 @@ export default {
       const { data } = res;
       if (data) {
         this.$message.error('导入失败');
-        this.$set(this, 'errorList', data);
+        const { data: errorList, errcode, temp_id } = data;
+        this.$set(this, 'errorList', errorList);
+        this.$set(this, 'errcode', errcode);
+        this.$set(this, 'temp_id', temp_id);
         this.dialog = true;
       } else {
+        this.$set(this, 'errorList', []);
+        this.$set(this, 'errcode', undefined);
+        this.$set(this, 'temp_id', undefined);
         this.$message.success('导入成功');
       }
     },
@@ -91,6 +124,41 @@ export default {
     uBefore() {
       this.$message('正在上传');
     },
+    // 去选择用户
+    toSelectUser(data, index) {
+      this.$set(this, `nameList`, data.nameList);
+      this.$set(this, `listIndex`, index);
+      this.innerDialog = true;
+    },
+    // 选择用户
+    selectUser(index) {
+      let list = _.cloneDeep(this.nameList);
+      list = list.map((i) => {
+        i.is_select = false;
+        return i;
+      });
+      list[index].is_select = true;
+      this.$set(this.errorList[this.listIndex], 'nameList', list);
+      this.innerDialog = false;
+    },
+    // 检查是否选择用户
+    checkSelect(row) {
+      const r = row.nameList.find((f) => f.is_select);
+      return r ? '已选择' : '未选择';
+    },
+    // 继续导入
+    async toContinue() {
+      const r = this.errorList.find((f) => !f.nameList.find((f) => f.is_select));
+      if (r) {
+        this.$message.error('有未选择用户的数据,请重新检查');
+        return;
+      }
+      const obj = { data: _.cloneDeep(this.errorList), temp_id: this.temp_id };
+      const res = await this.cacheImport(obj);
+      if (this.$checkRes(res, '操作成功', res.errmsg || '操作失败')) {
+        this.dialog = false;
+      }
+    },
   },
   computed: {
     ...mapState(['user']),

+ 1 - 1
vue.config.js

@@ -25,7 +25,7 @@ module.exports = {
         target: 'http://broadcast.waityou24.cn',
       },
       '/api': {
-        target: 'http://broadcast.waityou24.cn',
+        target: 'http://127.0.0.1:9101',
         changeOrigin: true,
         ws: false,
       },