Browse Source

维护案件信息

panhui 5 years ago
parent
commit
b2b95510ff

+ 19 - 1
src/main/vue/src/components/AttachmentUpload.vue

@@ -9,6 +9,7 @@
             :limit="filesLimit"
             :on-exceed="onExceed"
             :on-preview="onPreview"
+            :before-upload="beforeUpload"
             ref="upload"
         >
             <el-button type="primary" :disabled="fileList.length >= filesLimit" size="mini" slot="trigger">
@@ -81,6 +82,11 @@ export default {
         format: {
             type: String,
             default: 'json'
+        },
+        fileSize: {},
+        size: {
+            type: Number,
+            default: 1 //单位MB
         }
     },
     data() {
@@ -173,6 +179,18 @@ export default {
             this.$nextTick(() => {
                 this.emitting = false;
             });
+        },
+        beforeUpload(file) {
+            const isLt = file.size / 1024 / 1024 < this.size;
+
+            if (!isLt) {
+                this.$message.error('上传文件大小不能超过' + this.size + ' MB!');
+            } else {
+                this.loading = true;
+                this.$emit('update:fileSize', file.size / 1024);
+            }
+            console.log(file);
+            return isLt;
         }
     },
     watch: {
@@ -231,7 +249,7 @@ export default {
 }
 .file-upload {
     line-height: 28px;
-    padding-top: 10px;
+    padding-top: 5px;
 }
 .file-remark {
     margin-top: 14px;

+ 14 - 5
src/main/vue/src/components/logoPatent/AttachmentAdd.vue

@@ -14,7 +14,7 @@
                 </el-select>
             </el-form-item>
             <el-form-item label="上传文件" prop="url">
-                <attachment-upload v-model="form"></attachment-upload>
+                <attachment-upload v-model="form" :fileSize.sync="fileSize"></attachment-upload>
             </el-form-item>
             <el-form-item>
                 <el-button style="width: 150px;" size="normal" type="primary" @click="onSubmit">提交</el-button>
@@ -28,6 +28,9 @@
 import logoPatent from '@/mixins/logoPatent';
 export default {
     mixins: [logoPatent],
+    props: {
+        info: {}
+    },
     data() {
         return {
             form: {
@@ -36,17 +39,18 @@ export default {
                 url: '',
                 remark: ''
             },
-            show: true,
+            show: false,
             rules: {
                 attachmentName: { required: true, message: '请输入附件名称', trigger: 'blur' },
                 url: { required: true, message: '请输入附件名称', trigger: 'change' }
-            }
+            },
+            fileSize: 0
         };
     },
     methods: {
         onSubmit() {
             this.$refs.form.validate(valid => {
-               if (valid) {
+                if (valid) {
                     this.submit();
                 } else {
                     return false;
@@ -58,7 +62,12 @@ export default {
         },
         submit() {
             let data = { ...this.form };
-
+            data.userId = this.$store.state.userInfo.id;
+            data.patentId = this.info.id;
+            data.version = 1;
+            if (this.fileSize) {
+                data.size = this.fileSize + 'KB';
+            }
             this.saving = true;
             this.$http
                 .post('/attachment/save', data, { body: 'json' })

+ 34 - 109
src/main/vue/src/components/logoPatent/AttachmentList.vue

@@ -1,24 +1,5 @@
 <template>
     <div class="list-view">
-        <page-title>
-            <el-button @click="addRow" type="primary" icon="el-icon-plus" :loading="downloading" class="filter-item">
-                新增
-            </el-button>
-            <el-button @click="download" icon="el-icon-upload2" :loading="downloading" class="filter-item">
-                导出
-            </el-button>
-        </page-title>
-        <div class="filters-container">
-            <el-input
-                placeholder="搜索..."
-                v-model="search"
-                clearable
-                class="filter-item search"
-                @keyup.enter.native="getData"
-            >
-                <el-button @click="getData" slot="append" icon="el-icon-search"> </el-button>
-            </el-input>
-        </div>
         <el-table
             :data="tableData"
             row-key="id"
@@ -32,56 +13,44 @@
             <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
             <!-- <el-table-column prop="id" label="ID" width="100"> </el-table-column> -->
             <!-- <el-table-column prop="patentId" label="专利id"> </el-table-column> -->
-            <el-table-column prop="attachmentName" label="附件名称"> </el-table-column>
-            <el-table-column prop="fileName" label="上传文件名称"> </el-table-column>
-            <el-table-column prop="remark" label="备注"> </el-table-column>
+            <el-table-column prop="attachmentName" min-width="120px" show-overflow-tooltip label="附件名称">
+            </el-table-column>
+            <el-table-column prop="fileName" min-width="120px" show-overflow-tooltip label="上传文件名称">
+            </el-table-column>
+            <el-table-column prop="remark" show-overflow-tooltip label="备注"> </el-table-column>
             <el-table-column prop="size" label="大小"> </el-table-column>
-            <el-table-column prop="createdAt" label="上传时间"></el-table-column>
-            <el-table-column prop="userId" label="操作人"> </el-table-column>
-            <el-table-column prop="version" label="版本"> </el-table-column>
-            <el-table-column label="操作" align="center" fixed="right" min-width="150">
+            <el-table-column prop="createdAt" show-overflow-tooltip label="上传时间"></el-table-column>
+            <el-table-column prop="userId" label="上传人" width="100px"> </el-table-column>
+            <el-table-column prop="version" label="版本" width="80px"> </el-table-column>
+            <el-table-column label="操作" align="center" fixed="right">
                 <template slot-scope="{ row }">
-                    <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
-                    <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button>
+                    <el-button @click="downLoad(row)" type="primary" size="mini" plain>下载</el-button>
                 </template>
             </el-table-column>
         </el-table>
-        <div class="pagination-wrapper">
-            <!-- <div class="multiple-mode-wrapper">
-                <el-button v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
-                <el-button-group v-else>
-                    <el-button @click="operation1">批量操作1</el-button>
-                    <el-button @click="operation2">批量操作2</el-button>
-                    <el-button @click="toggleMultipleMode(false)">取消</el-button>
-                </el-button-group>
-            </div> -->
-            <el-pagination
-                background
-                @size-change="onSizeChange"
-                @current-change="onCurrentChange"
-                :current-page="page"
-                :page-sizes="[10, 20, 30, 40, 50]"
-                :page-size="pageSize"
-                layout="total, sizes, prev, pager, next, jumper"
-                :total="totalElements"
-            >
-            </el-pagination>
-        </div>
     </div>
 </template>
 <script>
-import { mapState } from 'vuex';
 import pageableTable from '@/mixins/pageableTable';
 
 export default {
     name: 'AttachmentList',
     mixins: [pageableTable],
+    props: {
+        logoPatentInfo: {
+            type: Object,
+            default: () => {
+                return {};
+            }
+        }
+    },
     data() {
         return {
-            multipleMode: false,
+            multipleMode: true,
             search: '',
             url: '/attachment/all',
-            downloading: false
+            downloading: false,
+            pageSize: 100
         };
     },
     computed: {
@@ -91,7 +60,11 @@ export default {
     },
     methods: {
         beforeGetData() {
-            return { search: this.search };
+            return {
+                query: {
+                    patentId: this.logoPatentInfo.id
+                }
+            };
         },
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;
@@ -99,14 +72,6 @@ export default {
                 this.$refs.table.clearSelection();
             }
         },
-        addRow() {
-            this.$router.push({
-                path: '/attachmentEdit',
-                query: {
-                    ...this.$route.query
-                }
-            });
-        },
         editRow(row) {
             this.$router.push({
                 path: '/attachmentEdit',
@@ -115,55 +80,15 @@ export default {
                 }
             });
         },
-        download() {
-            this.downloading = true;
-            this.$axios
-                .get('/attachment/excel', {
-                    responseType: 'blob',
-                    params: { size: 10000 }
-                })
-                .then(res => {
-                    console.log(res);
-                    this.downloading = false;
-                    const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
-                    const link = document.createElement('a');
-                    link.href = downloadUrl;
-                    link.setAttribute('download', res.headers['content-disposition'].split('filename=')[1]);
-                    document.body.appendChild(link);
-                    link.click();
-                    link.remove();
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.downloading = false;
-                    this.$message.error(e.error);
-                });
-        },
-        operation1() {
-            this.$notify({
-                title: '提示',
-                message: this.selection
-            });
-        },
-        operation2() {
-            this.$message('操作2');
-        },
-        deleteRow(row) {
-            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
-                .then(() => {
-                    return this.$http.post(`/attachment/del/${row.id}`);
-                })
-                .then(() => {
-                    this.$message.success('删除成功');
-                    this.getData();
-                })
-                .catch(e => {
-                    if (e !== 'cancel') {
-                        this.$message.error(e.error);
-                    }
-                });
+        downLoad(row) {
+            window.open(row.url);
         }
     }
 };
 </script>
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+.list-view {
+    flex-grow: 1;
+    padding: 20px 0;
+}
+</style>

+ 4 - 3
src/main/vue/src/components/logoPatent/BaseInfo.vue

@@ -43,7 +43,7 @@
                     <el-input disabled v-model="formData.uwNo"></el-input>
                 </el-form-item>
                 <el-form-item prop="clientPartnerId" label="客户">
-                    <el-select v-model="formData.clientPartnerId" clearable filterable placeholder="请选择">
+                    <el-select readonly v-model="formData.clientPartnerId" clearable filterable placeholder="请选择">
                         <el-option
                             v-for="item in clientPartnerIdOptions"
                             :key="item.value"
@@ -54,7 +54,7 @@
                     </el-select>
                 </el-form-item>
                 <el-form-item prop="applyNo" label="商标申请号">
-                    <el-input v-model="formData.applyNo"></el-input>
+                    <el-input v-model="formData.applyNo" readonly></el-input>
                 </el-form-item>
                 <el-form-item prop="applyDate" label="商标申请日">
                     <el-date-picker
@@ -62,11 +62,12 @@
                         type="date"
                         value-format="yyyy-MM-dd"
                         placeholder="选择日期"
+                        readonly
                     >
                     </el-date-picker>
                 </el-form-item>
                 <el-form-item prop="payRatio" label="支付比例">
-                    <el-select v-model="formData.payRatio" clearable filterable placeholder="请选择">
+                    <el-select readonly v-model="formData.payRatio" clearable filterable placeholder="请选择">
                         <el-option
                             v-for="item in payRatioOptions"
                             :key="item.value"

+ 93 - 37
src/main/vue/src/components/logoPatent/Maintenance.vue

@@ -3,7 +3,7 @@
         <el-form :model="form" :rules="rules" ref="form" label-width="120px" style="padding-right: 120px;">
             <el-form-item label="选择供应商" prop="supplierPartnerId">
                 <!-- <el-input v-model="form.attachmentName" placeholder="请输入附件名"></el-input> -->
-                <el-select readonly v-model="form.supplierPartnerId" clearable filterable placeholder="请输入或者选择附件">
+                <el-select readonly v-model="form.supplierPartnerId" clearable filterable placeholder="请选择">
                     <el-option
                         v-for="item in supplierPartnerIdOptions"
                         :key="item.value"
@@ -13,14 +13,29 @@
                     </el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item label="商标LOGO" prop="url">
-                <attachment-upload v-model="form" :fileSize.sync="fileSize"></attachment-upload>
+            <el-form-item label="商标LOGO" prop="attachment1">
+                <attachment-upload
+                    v-model="form.attachment1"
+                    :fileSize.sync="form.attachment1.size"
+                ></attachment-upload>
             </el-form-item>
-            <el-form-item label="商标注册确认书" prop="url">
-                <attachment-upload v-model="form" :fileSize.sync="fileSize"></attachment-upload>
+            <el-form-item label="商标申请委托书" prop="urattachment2l">
+                <attachment-upload
+                    v-model="form.attachment2"
+                    :fileSize.sync="form.attachment2.size"
+                ></attachment-upload>
             </el-form-item>
-            <el-form-item label="营业执照复印件" prop="url">
-                <attachment-upload v-model="form" :fileSize.sync="fileSize"></attachment-upload>
+            <el-form-item label="商标注册确认书" prop="attachment3">
+                <attachment-upload
+                    v-model="form.attachment3"
+                    :fileSize.sync="form.attachment3.size"
+                ></attachment-upload>
+            </el-form-item>
+            <el-form-item label="营业执照复印件" prop="attachment4">
+                <attachment-upload
+                    v-model="form.attachment4"
+                    :fileSize.sync="form.attachment4.size"
+                ></attachment-upload>
             </el-form-item>
             <el-form-item>
                 <el-button style="width: 150px;" size="normal" type="primary" @click="onSubmit">提交</el-button>
@@ -40,19 +55,67 @@ export default {
     data() {
         return {
             form: {
-                attachmentName: '',
-                fileName: '',
-                url: '',
-                remark: ''
+                supplierPartnerId: '',
+                attachment1: {
+                    attachmentName: '商标LOGO',
+                    fileName: '',
+                    url: '',
+                    remark: '',
+                    size: '',
+                    version: '1'
+                },
+                attachment2: {
+                    attachmentName: '商标申请委托书',
+                    fileName: '',
+                    url: '',
+                    remark: '',
+                    size: '',
+                    version: '1'
+                },
+                attachment3: {
+                    attachmentName: '商标注册确认书',
+                    fileName: '',
+                    url: '',
+                    remark: '',
+                    size: '',
+                    version: '1'
+                },
+                attachment4: {
+                    attachmentName: '营业执照复印件',
+                    fileName: '',
+                    url: '',
+                    remark: '',
+                    size: '',
+                    version: '1'
+                }
             },
             show: false,
             rules: {
-                attachmentName: { required: true, message: '请输入附件名称', trigger: 'blur' },
-                url: { required: true, message: '请输入附件名称', trigger: 'change' }
+                supplierPartnerId: { required: true, message: '请选择供应商', trigger: 'change' },
+                url: { required: true, message: '请上传商标LOGO', trigger: 'change' }
             },
-            fileSize: 0
+            supplierPartnerIdOptions: []
         };
     },
+    created() {
+        this.$http
+            .post('/partner/all', { size: 1000, query: { del: false, type: 'SUPPLIER' } }, { body: 'json' })
+            .then(res => {
+                if (res.content.length > 0) {
+                    this.supplierPartnerIdOptions = res.content.map(item => {
+                        return {
+                            label: item.name,
+                            value: item.id
+                        };
+                    });
+                }
+            })
+            .catch(e => {
+                console.log(e);
+                this.$message.error(e.error);
+            });
+    },
+
     methods: {
         onSubmit() {
             this.$refs.form.validate(valid => {
@@ -63,30 +126,23 @@ export default {
                 }
             });
         },
-        cancel() {
-            this.$emit('cancel');
-        },
         submit() {
-            let data = { ...this.form };
-            data.userId = this.$store.state.userInfo.id;
-            data.patentId = this.info.id;
-            data.version = 1;
-            if (this.fileSize) {
-                data.size = this.fileSize + 'KB';
-            }
-            this.saving = true;
-            this.$http
-                .post('/attachment/save', data, { body: 'json' })
-                .then(res => {
-                    this.saving = false;
-                    this.$message.success('成功');
-                    this.$router.go(-1);
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.saving = false;
-                    this.$message.error(e.error);
-                });
+            let info = { ...this.info };
+
+            info.supplierPartnerId = this.form.supplierPartnerId;
+
+            this.$emit('uploadAttement', this.form.attachment1);
+            this.$emit('uploadAttement', this.form.attachment2);
+            this.$emit('uploadAttement', this.form.attachment3);
+            this.$emit('uploadAttement', this.form.attachment4);
+
+            let index = [...this.logoWorkflowOptions].findIndex(item => {
+                return item.value === info.logoWorkflow;
+            });
+
+            info.logoWorkflow = [...this.logoWorkflowOptions][index + 1].value;
+
+            this.$emit('submit', info);
         }
     }
 };

+ 54 - 36
src/main/vue/src/components/logoPatent/Signed.vue

@@ -1,55 +1,71 @@
 <template>
-    <el-form :model="form" ref="form" :rules="rules" label-width="110px" :inline="false" size="normal">
-        <el-form-item label="是否签约">
-            <el-radio-group v-model="form.check">
-                <el-radio :label="true">
-                    是
-                </el-radio>
-                <el-radio :label="false">
-                    否
-                </el-radio>
-            </el-radio-group>
-        </el-form-item>
-        <el-form-item label="江苏省商标委托代理合同(双方盖章)">
-            <attachment-upload v-model="form.attachment1"> </attachment-upload>
-        </el-form-item>
-        <el-form-item label="收款回执">
-            <attachment-upload v-model="form.attachment2"> </attachment-upload>
-        </el-form-item>
-        <el-form-item prop="payRatio" label="支付比例">
-            <el-select v-model="form.payRatio" clearable filterable placeholder="请选择">
-                <el-option v-for="item in payRatioOptions" :key="item.value" :label="item.label" :value="item.value">
-                </el-option>
-            </el-select>
-        </el-form-item>
-        <el-form-item>
-            <el-button @click="onSave" type="primary">提交</el-button>
-            <el-button @click="cancel">返回</el-button>
-        </el-form-item>
-    </el-form>
+    <el-dialog title="是否决定签约" center :visible.sync="show" width="600px">
+        <el-form :model="form" ref="form" :rules="rules" label-width="110px" :inline="false" size="normal">
+            <el-form-item label="是否签约">
+                <el-radio-group v-model="form.check">
+                    <el-radio :label="true">
+                        是
+                    </el-radio>
+                    <el-radio :label="false">
+                        否
+                    </el-radio>
+                </el-radio-group>
+            </el-form-item>
+            <el-form-item label="江苏省商标委托代理合同(双方盖章)">
+                <attachment-upload v-model="form.attachment1" :fileSize.sync="form.attachment1.size">
+                </attachment-upload>
+            </el-form-item>
+            <el-form-item label="收款回执">
+                <attachment-upload v-model="form.attachment2" :fileSize.sync="form.attachment2.size">
+                </attachment-upload>
+            </el-form-item>
+            <el-form-item prop="payRatio" label="支付比例">
+                <el-select v-model="form.payRatio" clearable filterable placeholder="请选择">
+                    <el-option
+                        v-for="item in payRatioOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                    >
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" type="primary">提交</el-button>
+                <el-button @click="cancel">返回</el-button>
+            </el-form-item>
+        </el-form>
+    </el-dialog>
 </template>
 
 <script>
+import logoPatent from '@/mixins/logoPatent';
 export default {
     name: 'Signed',
+    mixins: [logoPatent],
     props: {
         info: {}
     },
     data() {
         return {
+            show: false,
             form: {
                 check: true,
                 attachment1: {
                     attachmentName: '江苏省商标委托代理合同',
                     fileName: '',
                     url: '',
-                    remark: ''
+                    remark: '',
+                    size: '',
+                    version: '1'
                 },
                 attachment2: {
                     attachmentName: '收款回执',
                     fileName: '',
                     url: '',
-                    remark: ''
+                    remark: '',
+                    size: '',
+                    version: '1'
                 },
                 payRatio: ''
             },
@@ -75,12 +91,14 @@ export default {
                         info.attachment = [];
                     }
 
-                    if (this.form.attachment1.url) {
-                        info.attachment.push(this.form.attachment1);
-                    }
-                    if (this.form.attachment2.url) {
-                        info.attachment.push(this.form.attachment2);
-                    }
+                    this.$emit('uploadAttement', this.form.attachment1);
+                    this.$emit('uploadAttement', this.form.attachment2);
+
+                    let index = [...this.logoWorkflowOptions].findIndex(item => {
+                        return item.value === info.logoWorkflow;
+                    });
+
+                    info.logoWorkflow = [...this.logoWorkflowOptions][index + 1].value;
 
                     this.$emit('submit', info);
                 } else {

+ 73 - 1
src/main/vue/src/mixins/logoPatent.js

@@ -1 +1,73 @@
-exports.logoWorkflow = {};
+export default {
+    data() {
+        return {
+            applyStatusOptions: [
+                { label: '申请阶段', value: 'APPLY_STAGE' },
+                { label: '初审阶段', value: 'FIRST_REVIEW_STAGE' },
+                { label: '实审阶段', value: 'SUBSTANTIVE_STAGE' },
+                { label: '复审阶段', value: 'REVIEW_STAGE' },
+                { label: '授权阶段', value: 'GRANT_STAGE' },
+                { label: '已完成', value: 'COMPLETED' }
+            ],
+            logoWorkflowOptions: [
+                { label: '是否决定签约', value: 'IS_CONTRACT' },
+                { label: '待维护案件', value: 'TO_BE_MAINTAINED' },
+                { label: '待受理', value: 'PENDING' },
+                { label: '待审查', value: 'PENDING_REVIEW' },
+                { label: '驳回处理', value: 'DISMISS' },
+                { label: '公告初审', value: 'ANNOUNCEMENTS' },
+                { label: '证件办理', value: 'HANDLE' }
+            ],
+            payRatioOptions: [
+                { label: '全款', value: 'FULL_AMOUNT' },
+                { label: '首付80%', value: 'DOWN_PAYMENT_80' },
+                { label: '首付50%', value: 'DOWN_PAYMENT_50' }
+            ],
+            attachmentOptions: [
+                { label: '江苏省商标委托代理合同', value: '江苏省商标委托代理合同' },
+                { label: '收款回执', value: '收款回执' },
+                { label: '商标LOGO', value: '商标LOGO' },
+                { label: '商标申请委托书', value: '商标申请委托书' },
+                { label: '商标注册确认书', value: '商标注册确认书' },
+                { label: '营业执照复印件', value: '营业执照复印件' },
+                { label: '缴费通知书', value: '缴费通知书' },
+                { label: '不予受理通知书', value: '不予受理通知书' },
+                { label: '回文补正', value: '回文补正' },
+                { label: '受理通知书', value: '受理通知书' },
+                { label: '无款不予受理通知书', value: '无款不予受理通知书' },
+                { label: '初步审定公告通知书', value: '初步审定公告通知书' },
+                { label: '商标驳回通知书', value: '商标驳回通知书' },
+                { label: '商标部分驳回通知书', value: '商标部分驳回通知书' },
+                { label: '复审合同', value: '复审合同' },
+                { label: '撤销连续三年不使用商标申请书', value: '撤销连续三年不使用商标申请书' },
+                { label: '商标撤销委托书', value: '商标撤销委托书' },
+                { label: '缴费证明', value: '缴费证明' },
+                { label: '复审公告通知书', value: '复审公告通知书' },
+                { label: '商标注册证', value: '商标注册证' }
+            ]
+        };
+    },
+    methods: {
+        applyStatusFormatter(row, column, cellValue, index) {
+            let selectedOption = this.applyStatusOptions.find(i => i.value === cellValue);
+            if (selectedOption) {
+                return selectedOption.label;
+            }
+            return '';
+        },
+        logoWorkflowFormatter(row, column, cellValue, index) {
+            let selectedOption = this.logoWorkflowOptions.find(i => i.value === cellValue);
+            if (selectedOption) {
+                return selectedOption.label;
+            }
+            return '';
+        },
+        payRatioFormatter(row, column, cellValue, index) {
+            let selectedOption = this.payRatioOptions.find(i => i.value === cellValue);
+            if (selectedOption) {
+                return selectedOption.label;
+            }
+            return '';
+        }
+    }
+};

+ 49 - 40
src/main/vue/src/views/LogoPatentEdit.vue

@@ -1,14 +1,14 @@
 <template>
     <div class="edit-view">
         <page-title></page-title>
-        <el-tabs class="edit-tabs" v-model="activeName">
+        <el-tabs class="edit-tabs" v-model="activeName" @tab-click="tabClick">
             <div class="right-btns">
                 <el-button type="primary" size="small">新增答复</el-button>
                 <el-button type="primary" size="small">新增费用</el-button>
-                <el-button type="primary" size="small">新增附件</el-button>
+                <el-button type="primary" size="small" @click="$refs.attachmentAdd.show = true">新增附件</el-button>
                 <el-button type="primary" size="small">分案/接续流程</el-button>
             </div>
-            <div class="tips">
+            <div class="tips" v-if="nowStatus">
                 <div class="tips-text">
                     <span class="name">当前流程节点</span>
                     <span class="val">{{ nowStatus }}</span>
@@ -24,26 +24,35 @@
                     <span class="val">无</span>
                 </div>
 
-                <el-button type="text" size="small">立即处理</el-button>
+                <el-button @click="action" type="text" size="small">立即处理</el-button>
             </div>
             <el-tab-pane label="基本信息" name="first">
                 <base-info ref="base" :info.sync="formData"></base-info>
             </el-tab-pane>
-            <el-tab-pane label="附件列表" name="second"></el-tab-pane>
+            <el-tab-pane label="附件列表" name="second">
+                <attachment-list ref="attachmentList" :logoPatentInfo="formData"></attachment-list>
+            </el-tab-pane>
             <el-tab-pane label="费用信息" name="third"></el-tab-pane>
             <el-tab-pane label="流程信息" name="fourth"></el-tab-pane>
         </el-tabs>
 
-        <el-dialog title="是否决定签约" center :visible.sync="showCheck" width="600px">
-            <signed :info="formData" @submit="submit" @cancel="showChec = false"></signed>
-        </el-dialog>
+        <signed ref="sign" :info="formData" @submit="submit" @uploadAttement="uploadAttement"></signed>
+
+        <attachment-add ref="attachmentAdd" :info="formData"></attachment-add>
+
+        <maintenance ref="maintenance" :info="formData" @submit="submit" @uploadAttement="uploadAttement"></maintenance>
     </div>
 </template>
 <script>
 import BaseInfo from '../components/logoPatent/BaseInfo.vue';
 import Signed from '../components/logoPatent/Signed.vue';
+import attachmentList from '../components/logoPatent/AttachmentList.vue';
+import logoPatent from '@/mixins/logoPatent';
+import AttachmentAdd from '../components/logoPatent/AttachmentAdd.vue';
+import Maintenance from '../components/logoPatent/Maintenance.vue';
 export default {
     name: 'LogoPatentEdit',
+    mixins: [logoPatent],
     created() {
         if (this.$route.query.id) {
             this.$http
@@ -66,44 +75,19 @@ export default {
             formData: {},
             rules: {},
             clientPartnerIdOptions: [],
-            applyStatusOptions: [
-                { label: '申请阶段', value: 'APPLY_STAGE' },
-                { label: '初审阶段', value: 'FIRST_REVIEW_STAGE' },
-                { label: '实审阶段', value: 'SUBSTANTIVE_STAGE' },
-                { label: '复审阶段', value: 'REVIEW_STAGE' },
-                { label: '授权阶段', value: 'GRANT_STAGE' },
-                { label: '已完成', value: 'COMPLETED' }
-            ],
-            logoWorkflowOptions: [
-                { label: '是否决定签约', value: 'IS_CONTRACT' },
-                { label: '待维护案件', value: 'TO_BE_MAINTAINED' },
-                { label: '待受理', value: 'PENDING' },
-                { label: '待审查', value: 'PENDING_REVIEW' },
-                { label: '驳回处理', value: 'DISMISS' },
-                { label: '公告初审', value: 'ANNOUNCEMENTS' },
-                { label: '证件办理', value: 'HANDLE' }
-            ],
             supplierPartnerIdOptions: [],
-            payRatioOptions: [
-                { label: '全款', value: 'FULL_AMOUNT' },
-                { label: '首付80%', value: 'DOWN_PAYMENT_80' },
-                { label: '首付50%', value: 'DOWN_PAYMENT_50' }
-            ],
-            activeName: 'first',
-            showCheck: true
+            activeName: 'first'
         };
     },
     computed: {
         nowStatus() {
-            if (!this.formData.contract) {
-                return '是否决定签约';
-            } else {
-                return '';
-            }
+            return this.logoWorkflowFormatter('', '', this.formData.logoWorkflow);
         },
         user() {
-            if (!this.formData.contract) {
+            if (this.formData.logoWorkflow === 'IS_CONTRACT') {
                 return '客户经理';
+            } else if (this.formData.logoWorkflow === 'TO_BE_MAINTAINED') {
+                return '项目经理';
             } else {
                 return '';
             }
@@ -113,9 +97,15 @@ export default {
         init() {
             if (this.activeName === 'first') {
                 this.$refs.base.init();
+            } else if (this.activeName === 'second') {
+                this.$refs.attachmentList.getData();
             }
         },
-
+        tabClick(tab) {
+            this.$nextTick(() => {
+                this.init();
+            });
+        },
         onSave() {
             this.$refs.form.validate(valid => {
                 if (valid) {
@@ -157,11 +147,30 @@ export default {
                         this.$message.error((e || {}).error || '删除失败');
                     }
                 });
+        },
+        uploadAttement(info) {
+            let data = { ...info };
+            if (!data.url) {
+                return;
+            }
+            data.parentId = this.formData.id;
+            data.userId = this.$store.userInfo.id;
+            this.$http.post('/attachment/save', data, { body: 'json' });
+        },
+        action() {
+            if (this.formData.logoWorkflow === 'IS_CONTRACT') {
+                this.$refs.sign.show = true;
+            } else if (this.formData.logoWorkflow === 'TO_BE_MAINTAINED') {
+                this.$refs.maintenance.show = true;
+            }
         }
     },
     components: {
         BaseInfo,
-        Signed
+        Signed,
+        attachmentList,
+        AttachmentAdd,
+        Maintenance
     }
 };
 </script>

+ 3 - 65
src/main/vue/src/views/LogoPatentList.vue

@@ -30,7 +30,6 @@
             :height="tableHeight"
         >
             <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
-            <!-- <el-table-column prop="id" label="ID" width="100"> </el-table-column> -->
             <el-table-column prop="applyStatus" label="案件状态" :formatter="applyStatusFormatter"> </el-table-column>
             <el-table-column prop="uwNo" label="寰球案号"> </el-table-column>
             <el-table-column prop="name" label="专利名称"> </el-table-column>
@@ -40,17 +39,6 @@
             <el-table-column prop="clientPartnerId" label="客户"> </el-table-column>
             <el-table-column prop="supplierPartnerId" label="供应商"> </el-table-column>
             <el-table-column prop="applyNo" label="商标申请号"> </el-table-column>
-            <!-- <el-table-column prop="payRatio" label="支付比例" :formatter="payRatioFormatter"> </el-table-column> -->
-            <!-- <el-table-column prop="contract" label="是否签约"> </el-table-column> -->
-            <!-- <el-table-column prop="accept" label="是否受理"> </el-table-column> -->
-            <!-- <el-table-column prop="correctionPeriod" label="回文补正期限"> </el-table-column> -->
-            <!-- <el-table-column prop="payment" label="是否缴费完成"> </el-table-column> -->
-            <!-- <el-table-column prop="reviewRequire" label="是否符合审查要求"> </el-table-column> -->
-            <!-- <el-table-column prop="rejectAll" label="是否全部驳回"> </el-table-column> -->
-            <!-- <el-table-column prop="rejectContent" label="驳回意见"> </el-table-column> -->
-            <!-- <el-table-column prop="rehear" label="是否复审"> </el-table-column> -->
-            <!-- <el-table-column prop="reHearPayment" label="复审缴费信息"> </el-table-column> -->
-            <!-- <el-table-column prop="rehearResult" label="复审是否通过"> </el-table-column> -->
             <el-table-column label="操作" align="center" fixed="right" min-width="150">
                 <template slot-scope="{ row }">
                     <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
@@ -59,14 +47,6 @@
             </el-table-column>
         </el-table>
         <div class="pagination-wrapper">
-            <!-- <div class="multiple-mode-wrapper">
-                <el-button v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
-                <el-button-group v-else>
-                    <el-button @click="operation1">批量操作1</el-button>
-                    <el-button @click="operation2">批量操作2</el-button>
-                    <el-button @click="toggleMultipleMode(false)">取消</el-button>
-                </el-button-group>
-            </div> -->
             <el-pagination
                 background
                 @size-change="onSizeChange"
@@ -84,38 +64,17 @@
 <script>
 import { mapState } from 'vuex';
 import pageableTable from '@/mixins/pageableTable';
+import logoPatent from '@/mixins/logoPatent';
 
 export default {
     name: 'LogoPatentList',
-    mixins: [pageableTable],
+    mixins: [pageableTable, logoPatent],
     data() {
         return {
             multipleMode: false,
             search: '',
             url: '/logoPatent/all',
-            downloading: false,
-            applyStatusOptions: [
-                { label: '申请阶段', value: 'APPLY_STAGE' },
-                { label: '初审阶段', value: 'FIRST_REVIEW_STAGE' },
-                { label: '实审阶段', value: 'SUBSTANTIVE_STAGE' },
-                { label: '复审阶段', value: 'REVIEW_STAGE' },
-                { label: '授权阶段', value: 'GRANT_STAGE' },
-                { label: '已完成', value: 'COMPLETED' }
-            ],
-            logoWorkflowOptions: [
-                { label: '是否决定签约', value: 'IS_CONTRACT' },
-                { label: '待维护案件', value: 'TO_BE_MAINTAINED' },
-                { label: '待受理', value: 'PENDING' },
-                { label: '待审查', value: 'PENDING_REVIEW' },
-                { label: '驳回处理', value: 'DISMISS' },
-                { label: '公告初审', value: 'ANNOUNCEMENTS' },
-                { label: '证件办理', value: 'HANDLE' }
-            ],
-            payRatioOptions: [
-                { label: '全款', value: 'FULL_AMOUNT' },
-                { label: '首付80%', value: 'DOWN_PAYMENT_80' },
-                { label: '首付50%', value: 'DOWN_PAYMENT_50' }
-            ]
+            downloading: false
         };
     },
     computed: {
@@ -124,27 +83,6 @@ export default {
         }
     },
     methods: {
-        applyStatusFormatter(row, column, cellValue, index) {
-            let selectedOption = this.applyStatusOptions.find(i => i.value === cellValue);
-            if (selectedOption) {
-                return selectedOption.label;
-            }
-            return '';
-        },
-        logoWorkflowFormatter(row, column, cellValue, index) {
-            let selectedOption = this.logoWorkflowOptions.find(i => i.value === cellValue);
-            if (selectedOption) {
-                return selectedOption.label;
-            }
-            return '';
-        },
-        payRatioFormatter(row, column, cellValue, index) {
-            let selectedOption = this.payRatioOptions.find(i => i.value === cellValue);
-            if (selectedOption) {
-                return selectedOption.label;
-            }
-            return '';
-        },
         beforeGetData() {
             return { search: this.search };
         },