guhongwei 2 лет назад
Родитель
Сommit
e0d4894d9c

+ 5 - 0
src/router/index.js

@@ -391,6 +391,11 @@ const patent = [
     meta: { title: '分发消息-自动分发消息' },
     meta: { title: '分发消息-自动分发消息' },
     component: () => import('../views/patent/admin/examine/hairmess_autoCreate.vue'),
     component: () => import('../views/patent/admin/examine/hairmess_autoCreate.vue'),
   },
   },
+  {
+    path: '/patent/admin/examine/hairmess_manualCreate',
+    meta: { title: '分发消息-手动分发消息' },
+    component: () => import('../views/patent/admin/examine/hairmess_manualCreate.vue'),
+  },
   {
   {
     path: '/patent/admin/examine/analysis',
     path: '/patent/admin/examine/analysis',
     meta: { title: '查新检索' },
     meta: { title: '查新检索' },

+ 5 - 0
src/views/patent/admin/examine/hairmess.vue

@@ -5,6 +5,7 @@
         <van-col span="24" class="btn">
         <van-col span="24" class="btn">
           <!-- <van-button type="info" size="small" @click="add">手动分发</van-button> -->
           <!-- <van-button type="info" size="small" @click="add">手动分发</van-button> -->
           <van-button type="info" size="small" @click="twoAdd">自动分发</van-button>
           <van-button type="info" size="small" @click="twoAdd">自动分发</van-button>
+          <van-button type="info" size="small" @click="thrAdd">手动分发</van-button>
         </van-col>
         </van-col>
         <van-col span="24">
         <van-col span="24">
           <list-1 :list="list"></list-1>
           <list-1 :list="list"></list-1>
@@ -53,6 +54,10 @@ export default {
     twoAdd() {
     twoAdd() {
       this.$router.push({ path: '/patent/admin/examine/hairmess_autoCreate' });
       this.$router.push({ path: '/patent/admin/examine/hairmess_autoCreate' });
     },
     },
+    // 手动分发
+    thrAdd() {
+      this.$router.push({ path: '/patent/admin/examine/hairmess_manualCreate' });
+    },
     // 返回
     // 返回
     back() {
     back() {
       this.$router.push({ path: '/patent/index' });
       this.$router.push({ path: '/patent/index' });

+ 223 - 0
src/views/patent/admin/examine/hairmess_manualCreate.vue

@@ -0,0 +1,223 @@
+<template>
+  <div id="hairmess_manualCreate">
+    <admin-frame topType="2" @back="back" :rightArrow="false" :usePage="false" :useNav="false">
+      <template v-slot:info>
+        <van-form label-width="5em" @submit="onSubmit">
+          <van-field v-model="userName" center clearable label="查询用户" placeholder="请输入账号">
+            <template #button>
+              <van-button size="small" type="primary" @click="searchUser()" native-type="button">提交查询</van-button>
+            </template>
+          </van-field>
+          <van-field readonly clickable name="to_name" :value="form.to_name" label="选择接收人" placeholder="点击选择用户" @click="oneShow = true" />
+          <van-popup v-model="oneShow" position="bottom">
+            <van-picker show-toolbar :columns="userList" value-key="codePhone" @confirm="oneFirm" @cancel="oneShow = false" />
+          </van-popup>
+          <van-field v-model="form.to_id" name="to_id" label="接收人id" readonly style="display: none" />
+          <van-field
+            v-model="form.to_name"
+            name="to_name"
+            label="接收人姓名"
+            readonly
+            placeholder="请输入接收人姓名"
+            :rules="[{ required: true, message: '接收人姓名' }]"
+          />
+          <van-field v-model="patnetName" center clearable label="查询专利" placeholder="请输入专利名称">
+            <template #button>
+              <van-button size="small" type="primary" @click="searchPatent()" native-type="button">提交查询</van-button>
+            </template>
+          </van-field>
+          <van-field readonly clickable name="patent_name" :value="form.patent_name" label="选择专利" placeholder="点击选择专利" @click="twoShow = true" />
+          <van-popup v-model="twoShow" position="bottom">
+            <van-picker show-toolbar :columns="patentList" value-key="typeName" @confirm="twoFirm" @cancel="twoShow = false" />
+          </van-popup>
+          <van-field v-model="form.patent_id" name="patent_id" label="专利id" placeholder="请输入专利id" readonly style="display: none" />
+          <van-field v-model="form.create_number" name="create_number" label="专利号" placeholder="请输入专利号" />
+          <van-field
+            v-model="form.patent_name"
+            name="patent_name"
+            label="专利名称"
+            type="textarea"
+            autosize
+            placeholder="请输入专利名称"
+            :rules="[{ required: true, message: '专利名称' }]"
+          />
+          <van-field name="file_url" label="反馈文件">
+            <template #input>
+              <van-uploader
+                :fileList="form.file_url"
+                :max-count="6"
+                :after-read="(file) => toUpload(file, 'file_url')"
+                @delete="(file) => toDelete(file, 'file_url')"
+                accept="file"
+              />
+            </template>
+          </van-field>
+          <van-col span="24" class="btn">
+            <van-button type="danger" size="small" @click="back">取消发送</van-button>
+            <van-button type="info" size="small" native-type="submit">确认发送</van-button>
+          </van-col>
+        </van-form>
+      </template>
+    </admin-frame>
+  </div>
+</template>
+
+<script>
+import adminFrame from '@frame/src/components/mobile-frame/mobile-main.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+import { Toast } from 'vant';
+const { mapActions: upload } = createNamespacedHelpers('upload');
+const { mapActions: patentwarning } = createNamespacedHelpers('patentwarning');
+const { mapActions: personal } = createNamespacedHelpers('personal');
+const { mapActions: patentinfo } = createNamespacedHelpers('patentinfo');
+const { mapActions: patentapply } = createNamespacedHelpers('patentapply');
+
+export default {
+  name: 'hairmess_manualCreate',
+  props: {},
+  components: {
+    adminFrame,
+  },
+  data: function () {
+    return {
+      form: { file_url: [] },
+      // 账号
+      userName: '',
+      // 接收人
+      oneShow: false,
+      userList: [],
+      // 专利
+      patnetName: '',
+      twoShow: false,
+      patentList: [],
+    };
+  },
+  async created() {},
+  methods: {
+    ...upload(['upload']),
+    ...patentwarning(['create']),
+    ...personal({ personalQuery: 'query' }),
+    ...patentinfo({ infoQuery: 'query' }),
+    ...patentapply({ applyQuery: 'query' }),
+    // 确认选择用户
+    oneFirm(value) {
+      this.$set(this.form, `to_id`, value._id);
+      this.$set(this.form, `to_name`, value.phone);
+      this.$set(this, `oneShow`, false);
+    },
+    // 确认选择专利
+    twoFirm(value) {
+      this.$set(this.form, `patent_id`, value.patent_id);
+      this.$set(this.form, `create_number`, value.create_number);
+      this.$set(this.form, `patent_name`, value.patent_name);
+      this.$set(this, `twoShow`, false);
+    },
+    // 提交
+    async onSubmit(value) {
+      let res = await this.create(value);
+      if (this.$checkRes(res, '发送成功', `${res.errmsg}`)) {
+        this.back();
+      }
+    },
+    // 查询用户
+    async searchUser() {
+      if (this.userName) {
+        let res = await this.personalQuery({ phone: this.userName });
+        if (res.errcode == '0' && res.total > 0) {
+          this.$notify({ message: `符合条件用户共用${res.total}人,请选择用户。`, type: 'success' });
+          for (const val of res.data) {
+            val.codePhone = val.code + '--' + val.phone;
+          }
+          this.$set(this, `userList`, res.data);
+        } else this.$notify({ message: `暂无符合条件用户`, type: 'warning' });
+      }
+    },
+    // 查询该用户下的专利信息,专利申请
+    async searchPatent() {
+      if (this.patnetName) {
+        const toast = this.$toast.loading({ message: '加载中...', forbidClick: true, loadingType: 'spinner' });
+        let list = [];
+        // 专利申请
+        let res = await this.applyQuery({ skip: 0, limit: '10000', name: this.patnetName, user_id: this.form.to_id });
+        if (res.errcode == '0' && res.total > 0) {
+          let apply = res.data.map((i) => ({ patent_id: i._id, create_number: i.create_number, patent_name: i.name, typeName: `(专利申请)-${i.name}` }));
+          list.push(...apply);
+        }
+        // 专利信息
+        res = await this.infoQuery({ skip: 0, limit: '10000', key_word: this.patnetName, user_id: this.form.to_id });
+        if (res.errcode == '0' && res.total > 0) {
+          let info = res.data.map((i) => ({ patent_id: i._id, create_number: i.create_number, patent_name: i.name, typeName: `(专利信息)-${i.name}` }));
+          list.push(...info);
+        }
+        if (list && list.length > 0) {
+          this.$notify({ message: `符合条件专利共用${list.length}个,请选择专利。`, type: 'success' });
+          this.$set(this, `patentList`, list);
+        } else this.$notify({ message: `暂无符合条件专利`, type: 'warning' });
+        toast.clear();
+      }
+    },
+    async toUpload({ file }, model) {
+      // 上传,赋值
+      const res = await this.upload({ file, dir: 'warning' });
+      if (this.$checkRes(res)) {
+        let list = this.form[model];
+        this.$set(this.form, model, [...list, { name: res.name, url: res.uri }]);
+      }
+    },
+    toDelete(file, model) {
+      const index = this.form[model].findIndex((f) => _.isEqual(f, file));
+      this.form[model].splice(index, 1);
+    },
+    // 返回
+    back() {
+      this.$router.push({ path: '/patent/admin/examine/hairmess' });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.btn {
+  text-align: center;
+  .van-button {
+    margin: 10px;
+  }
+}
+.one {
+  .list {
+    background-color: #fff;
+    margin: 0 0 8px 0;
+    padding: 8px;
+    border-radius: 5px;
+    .title {
+      font-size: 16px;
+      font-weight: bold;
+      margin: 0 0 5px 0;
+    }
+    .other {
+      margin: 0 0 5px 0;
+      .otherInfo {
+        font-size: 14px;
+        color: #666;
+        margin: 0 0 5px 0;
+        span {
+          color: #000;
+        }
+      }
+    }
+  }
+}
+</style>