guhongwei 4 năm trước cách đây
mục cha
commit
0573fb059d
2 tập tin đã thay đổi với 117 bổ sung0 xóa
  1. 96 0
      src/components/frame/e-upload.vue
  2. 21 0
      src/store/achieve/achieveType.js

+ 96 - 0
src/components/frame/e-upload.vue

@@ -0,0 +1,96 @@
+<template>
+  <div id="e-upload">
+    <el-upload
+      :action="url"
+      :http-request="upload"
+      :list-type="type"
+      :fileList="fileList"
+      :on-remove="onRemove"
+      :on-error="onError"
+      :on-preview="onPreview"
+      :limit="limit"
+      :on-exceed="onExceed"
+      :before-remove="beforeRemove"
+    >
+      <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
+    </el-upload>
+  </div>
+</template>
+
+<script>
+const _ = require('lodash');
+import axios from 'axios';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'e-upload',
+  props: {
+    url: { type: String, required: true },
+    type: { type: String, default: 'picture-card' },
+    fileList: { type: Array },
+    limit: { type: Number },
+    remove: { type: Function },
+    extra: { type: Object, default: () => {} },
+  },
+  model: {
+    prop: 'fileList',
+    event: 'change',
+  },
+  components: {},
+  created() {},
+  methods: {
+    async upload({ file }) {
+      let formdata = new FormData();
+      formdata.append('file', file, file.name);
+      const res = await axios.post(this.url, formdata, {
+        headers: { 'Content-Type': 'multipart/form-data' },
+      });
+      if (res.status === 200 && res.data.errcode == 0) {
+        const { id, name, uri } = res.data;
+        const obj = { url: uri, name: file.name, ...this.extra, uid: id };
+        this.fileList.push(obj);
+      }
+    },
+    beforeRemove(file) {
+      if (this.remove && _.isFunction(this.remove)) {
+        const { result, msg } = this.remove(file);
+        if (!result) {
+          this.$message.error(msg);
+          return false;
+        }
+      }
+      return true;
+    },
+    onRemove(file) {
+      const index = this.fileList.findIndex(f => f.url === file.url);
+      this.fileList.splice(index, 1);
+    },
+    onError(err) {
+      this.$message.error(err);
+    },
+    // 点击事件
+    onPreview(file) {
+      const { url } = file;
+      window.open(url);
+    },
+    // 超出限制
+    onExceed() {
+      this.$message.error(`只能上传${this.limit}个文件`);
+    },
+  },
+  computed: {
+    ...mapState(['user', 'menuParams']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+/deep/.el-upload-list__item.is-ready {
+  display: none;
+}
+</style>

+ 21 - 0
src/store/achieve/achieveType.js

@@ -0,0 +1,21 @@
+// 成果类别
+export const achievetype = [{ name: '发明专利' }, { name: '实用新型专利' }, { name: '软件著作权' }, { name: '出版著作' }, { name: '论文' }, { name: '其他' }];
+// 成果形式
+export const achieveform = [
+  { name: '新技术' },
+  { name: '新工艺' },
+  { name: '新产品' },
+  { name: '新材料' },
+  { name: '新装备' },
+  { name: '农业,生物新品种' },
+  { name: '矿产新品种' },
+  { name: '论文' },
+  { name: '著作' },
+  { name: '其他' },
+];
+// 申请人属性
+export const applynature = [{ name: '独立科研机构' }, { name: '大专院校' }, { name: '医疗机构' }, { name: '企业' }, { name: '其他机构' }, { name: '自然人' }];
+// 评价目的
+export const objective = [{ name: '申报奖励' }, { name: '成果转化' }, { name: '项目验收' }, { name: '其他' }];
+// 成果所处阶段
+export const stage = [{ name: '实验室' }, { name: '小试' }, { name: '中试产品' }, { name: '市场化产品' }];