lrf402788946 il y a 4 ans
Parent
commit
4e46207a68

+ 28 - 11
src/views/adminCenter/inter/ticket/detail.vue

@@ -38,24 +38,26 @@
           </el-col>
         </el-row>
       </el-form-item>
-      <el-form-item label="合同">
+      <el-form-item label="合同" v-if="data.status === '3'">
         <template #label>
           <el-row>
             <el-col :span="24">合同</el-col>
             <el-col :span="24">(图片点击放大)</el-col>
           </el-row>
         </template>
-        <el-row :gutter="10">
-          <el-col :span="4" v-for="(i, index) in data.contract" :key="`contract-${index}`">
-            <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
-            <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-download"></i> {{ i.name }} </el-link>
-          </el-col>
-        </el-row>
+        <e-upload
+          url="/files/cysci/contract_file/upload"
+          type="text"
+          :limit="2"
+          v-model="data.contract"
+          :remove="fileRemove"
+          :extra="{ user_id: user._id }"
+        ></e-upload>
       </el-form-item>
-      <el-form-item label="审核意见">
+      <el-form-item label="审核意见" v-if="data.status === '2'">
         <el-input v-model="form.desc" placeholder="请填写审核意见" type="textarea" :autosize="{ maxRows: 5, minRows: 3 }"></el-input>
       </el-form-item>
-      <el-form-item label="审核">
+      <el-form-item label="审核" v-if="data.status === '2'">
         <el-radio-group v-model="form.status">
           <el-radio label="3">通过</el-radio>
           <el-radio label="-3">拒绝</el-radio>
@@ -63,7 +65,8 @@
       </el-form-item>
       <el-row type="flex" justify="space-around">
         <el-col :span="2">
-          <el-button type="primary" @click="toStatus()" :disabled="!form.status">保存审核结果</el-button>
+          <el-button type="primary" @click="toStatus()" :disabled="!form.status" v-if="data.status === '2'">保存审核结果</el-button>
+          <el-button type="primary" @click="toSave()" v-if="data.status === '3'">上传合同</el-button>
         </el-col>
       </el-row>
     </el-form>
@@ -98,7 +101,7 @@ export default {
     if (this.id) this.search();
   },
   methods: {
-    ...ticket(['fetch', 'status']),
+    ...ticket(['fetch', 'status', 'update']),
     async search() {
       const res = await this.fetch(this.id);
       if (this.$checkRes(res)) {
@@ -123,12 +126,26 @@ export default {
         this.toBack();
       }
     },
+    async toSave() {
+      const dup = _.cloneDeep(this.data);
+      const res = await this.update(dup);
+      if (this.$checkRes(res, '上传成功', res.errmsg || '上传失败')) {
+        // this.toBack();
+      }
+    },
     toBack() {
       this.$router.push(`/adminCenter/inter/ticket`);
     },
     toFlow() {
       this.dialog = true;
     },
+    fileRemove(file) {
+      if (file.user_id === this.user._id) {
+        return { result: true };
+      } else {
+        return { result: false, msg: '不允许删除自己上传以外的合同' };
+      }
+    },
   },
   computed: {
     ...mapState(['user', 'menuParams']),

+ 13 - 41
src/views/adminCenter/inter/ticket/index.vue

@@ -1,59 +1,31 @@
 <template>
   <div id="index">
-    <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search" @edit="toEdit"> </data-table>
+    <el-tabs type="border-card" v-model="active">
+      <el-tab-pane v-for="(i, index) in tabs" :key="`tabs-${index}`" :label="i.label" :name="i.status" :lazy="true">
+        <list :status="i.status"></list>
+      </el-tab-pane>
+    </el-tabs>
   </div>
 </template>
 
 <script>
-const moment = require('moment');
-const { ticketType } = require('@common/dict/index');
+import list from './list.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: ticket } = createNamespacedHelpers('ticket');
 export default {
   name: 'index',
   props: {},
-  components: {},
+  components: { list },
   data: function () {
     return {
-      list: [],
-      total: 0,
-      opera: [
-        {
-          label: '审核',
-          method: 'edit',
-        },
-      ],
-      fields: [
-        { label: '企业', prop: 'name', filter: true },
-        { label: '申请时间', prop: 'meta.createdAt', format: (i) => moment(i).format('YYYY-MM-DD HH:mm:ss') },
-        {
-          label: '状态',
-          prop: 'status',
-          format: (i) => {
-            const r = ticketType.find((f) => f.value === i);
-            if (r) return r.label;
-            else return '';
-          },
-        },
+      active: '2',
+      tabs: [
+        { label: '待审核', status: '2' },
+        { label: '上传合同', status: '3' },
       ],
     };
   },
-  created() {
-    this.search();
-  },
-  methods: {
-    ...ticket(['query', 'delete']),
-    async search({ skip = 0, limit = 10, ...info } = {}) {
-      const res = await this.query({ skip, limit, ...info, status: '2', mechanism_id: this.user._id });
-      if (this.$checkRes(res)) {
-        this.$set(this, `list`, res.data);
-        this.$set(this, `total`, res.total);
-      }
-    },
-    toEdit({ data }) {
-      this.$router.push({ path: '/adminCenter/inter/ticket/detail', query: { id: data._id } });
-    },
-  },
+  created() {},
+  methods: {},
   computed: {
     ...mapState(['user', 'menuParams']),
     pageTitle() {

+ 78 - 0
src/views/adminCenter/inter/ticket/list.vue

@@ -0,0 +1,78 @@
+<template>
+  <div id="list">
+    <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search" @edit="toEdit"> </data-table>
+  </div>
+</template>
+
+<script>
+const moment = require('moment');
+const { ticketType } = require('@common/dict/index');
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: ticket } = createNamespacedHelpers('ticket');
+export default {
+  name: 'list',
+  props: {
+    status: { type: String, default: '2' },
+  },
+  components: {},
+  data: function () {
+    return {
+      list: [],
+      total: 0,
+      opera: [
+        {
+          label: '审核',
+          method: 'edit',
+          display: (i) => i.status === '2',
+        },
+        {
+          label: '上传合同',
+          method: 'edit',
+          display: (i) => i.status === '3',
+        },
+      ],
+      fields: [
+        { label: '企业', prop: 'name', filter: true },
+        { label: '申请时间', prop: 'meta.createdAt', format: (i) => moment(i).format('YYYY-MM-DD HH:mm:ss') },
+        {
+          label: '状态',
+          prop: 'status',
+          format: (i) => {
+            const r = ticketType.find((f) => f.value === i);
+            if (r) return r.label;
+            else return '';
+          },
+        },
+      ],
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...ticket(['query', 'delete']),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      const res = await this.query({ skip, limit, ...info, status: this.status });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data || [{}]);
+        this.$set(this, `total`, res.total);
+      }
+      this.loading = false;
+    },
+    toEdit({ data }) {
+      this.$router.push({ path: '/adminCenter/inter/ticket/detail', query: { id: data._id, status: data.status } });
+    },
+  },
+  computed: {
+    ...mapState(['user', 'menuParams']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>