Browse Source

国际专利申请

panhui 4 years ago
parent
commit
987449362e

+ 1 - 1
src/main/vue/src/components/domesticPatent/BaseInfo.vue

@@ -40,7 +40,7 @@
                         </el-select>
                     </el-form-item>
                     <el-form-item prop="uwNo" label="寰球案号">
-                        <el-input v-model="formData.uwNo" disabledÎ></el-input>
+                        <el-input v-model="formData.uwNo" disabled></el-input>
                     </el-form-item>
                     <el-form-item prop="clientPartnerId" label="客户">
                         <el-select

+ 0 - 111
src/main/vue/src/components/internationalPatent/AddSupplierNo.vue

@@ -1,111 +0,0 @@
-<template>
-    <el-dialog title="添加供应商" :visible.sync="show" destroy-on-close center width="600px">
-        <el-form
-            hide-required-asterisk
-            :model="form"
-            :rules="rules"
-            ref="form"
-            label-width="140px"
-            style="padding-right: 130px"
-        >
-            <el-form-item prop="supplierPartnerId" label="供应商">
-                <el-select v-model="form.supplierPartnerId" clearable filterable placeholder="请选择">
-                    <el-option
-                        v-for="item in supplierPartnerIdOptions"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value"
-                    >
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item prop="supplierNo" label="供应商案号">
-                <el-input v-model="form.supplierNo" placeholder="请输入"></el-input>
-            </el-form-item>
-            <el-form-item prop="supplierSubmitPeriod" label="指定提交期限">
-                <el-date-picker
-                    v-model="form.supplierSubmitPeriod"
-                    type="date"
-                    value-format="yyyy-MM-dd"
-                    placeholder="选择日期"
-                >
-                </el-date-picker>
-            </el-form-item>
-
-            <el-form-item>
-                <el-button style="width: 150px" size="normal" type="primary" @click="onSubmit">提交</el-button>
-                <el-button style="width: 120px" size="normal" @click="show = false">取消</el-button>
-            </el-form-item>
-        </el-form>
-    </el-dialog>
-</template>
-
-<script>
-import logoPatent from '@/mixins/logoPatent';
-export default {
-    mixins: [logoPatent],
-    props: {
-        info: {}
-    },
-    data() {
-        return {
-            form: {},
-            show: false,
-            rules: {
-                supplierPartnerId: { required: true, message: '请选择供应商', trigger: 'change' },
-                supplierNo: { required: true, message: '请输入供应商案号', trigger: 'blur' },
-                supplierSubmitPeriod: { required: true, message: '请选择制定提交期限', trigger: 'change' }
-            },
-            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 => {
-                if (valid) {
-                    this.submit();
-                } else {
-                    return false;
-                }
-            });
-        },
-        submit() {
-            let info = { ...this.info };
-            info.supplierPartnerId = this.form.supplierPartnerId;
-            info.supplierNo = this.form.supplierNo;
-            info.supplierSubmitPeriod = this.form.supplierSubmitPeriod;
-
-            info.workflow = 'SUPPLIER_MATERIALS';
-
-            this.$emit('submit', info);
-            this.show = false;
-        }
-    }
-};
-</script>
-<style lang="less" scoped>
-.el-select {
-    width: 100%;
-}
-.el-date-editor.el-input {
-    width: 100%;
-}
-</style>

+ 0 - 123
src/main/vue/src/components/internationalPatent/AnnualFee.vue

@@ -1,123 +0,0 @@
-<template>
-    <el-dialog title="维护年费费用" :visible.sync="show" destroy-on-close center width="600px">
-        <el-form
-            hide-required-asterisk
-            :model="form"
-            :rules="rules"
-            ref="form"
-            label-width="140px"
-            style="padding-right: 130px"
-        >
-            <el-form-item prop="annualFee" label="金额">
-                <el-input-number type="number" v-model="form.annualFee"></el-input-number>
-            </el-form-item>
-            <el-form-item prop="feePaymentPeriod" label="支付期限">
-                <el-date-picker
-                    v-model="form.feePaymentPeriod"
-                    type="date"
-                    value-format="yyyy-MM-dd"
-                    placeholder="选择日期"
-                >
-                </el-date-picker>
-            </el-form-item>
-            <el-form-item prop="bill" label="账单">
-                <el-input v-model="form.bill"></el-input>
-            </el-form-item>
-
-            <el-form-item label="账单图片" prop="attachment1">
-                <attachment-upload
-                    v-model="form.attachment1"
-                    :fileSize.sync="form.attachment1.size"
-                ></attachment-upload>
-            </el-form-item>
-
-            <el-form-item>
-                <el-button style="width: 150px" size="normal" type="primary" @click="onSubmit">提交</el-button>
-                <el-button style="width: 120px" size="normal" @click="show = false">取消</el-button>
-            </el-form-item>
-        </el-form>
-    </el-dialog>
-</template>
-
-<script>
-import logoPatent from '@/mixins/logoPatent';
-export default {
-    mixins: [logoPatent],
-    props: {
-        info: {}
-    },
-    data() {
-        return {
-            form: {
-                attachment1: { attachmentName: '账单图片', fileName: '', url: '', remark: '', size: '' }
-            },
-            show: false,
-            rules: {
-                attachment1: {
-                    validator: (rule, value, callback) => {
-                        if (!value.url) {
-                            callback(new Error('请上传账单图片'));
-                        } else {
-                            callback();
-                        }
-                    },
-                    trigger: 'change'
-                },
-                annualFee: { required: true, message: '请输入金额', trigger: 'change' },
-                feePaymentPeriod: { required: true, message: '请选择支付期限', trigger: 'blur' },
-                bill: { required: true, message: '请输入账单', trigger: 'change' }
-            },
-            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 => {
-                if (valid) {
-                    this.submit();
-                } else {
-                    return false;
-                }
-            });
-        },
-        submit() {
-            let info = { ...this.info };
-            info.annualFee = this.form.annualFee;
-            info.feePaymentPeriod = this.form.feePaymentPeriod;
-            info.bill = this.form.bill;
-            this.$emit('uploadAttement', this.form.attachment1);
-
-            info.workflow = 'COMPLETED';
-
-            this.$emit('submit', info);
-            this.show = false;
-        }
-    }
-};
-</script>
-<style lang="less" scoped>
-.el-select {
-    width: 100%;
-}
-.el-date-editor.el-input {
-    width: 100%;
-}
-</style>

+ 0 - 110
src/main/vue/src/components/internationalPatent/BackSupplier.vue

@@ -1,110 +0,0 @@
-<template>
-    <el-dialog title="上传供应商反馈文件" :visible.sync="show" destroy-on-close center width="600px">
-        <el-form
-            hide-required-asterisk
-            :model="form"
-            :rules="rules"
-            ref="form"
-            label-width="140px"
-            style="padding-right: 130px"
-        >
-            <el-form-item label="专利提交稿" prop="attachment1">
-                <attachment-upload
-                    v-model="form.attachment1"
-                    :fileSize.sync="form.attachment1.size"
-                ></attachment-upload>
-            </el-form-item>
-
-            <el-form-item label="电子申请回执" prop="attachment2">
-                <attachment-upload
-                    v-model="form.attachment2"
-                    :fileSize.sync="form.attachment2.size"
-                ></attachment-upload>
-            </el-form-item>
-            <el-form-item prop="attachment3" label="供应商请款单">
-                <attachment-upload
-                    v-model="form.attachment3"
-                    :fileSize.sync="form.attachment3.size"
-                ></attachment-upload>
-            </el-form-item>
-
-            <el-form-item>
-                <el-button style="width: 150px" size="normal" type="primary" @click="onSubmit">提交</el-button>
-                <el-button style="width: 120px" size="normal" @click="show = false">取消</el-button>
-            </el-form-item>
-        </el-form>
-    </el-dialog>
-</template>
-
-<script>
-import logoPatent from '@/mixins/logoPatent';
-export default {
-    mixins: [logoPatent],
-    props: {
-        info: {}
-    },
-    data() {
-        return {
-            form: {
-                attachment1: { attachmentName: '专利提交稿', fileName: '', url: '', remark: '', size: '' },
-                attachment2: { attachmentName: '电子申请回执', fileName: '', url: '', remark: '', size: '' },
-                attachment3: { attachmentName: '供应商请款单', fileName: '', url: '', remark: '', size: '' }
-            },
-            show: false,
-            rules: {
-                attachment1: {
-                    validator: (rule, value, callback) => {
-                        if (!value.url) {
-                            callback(new Error('请上传专利提交稿'));
-                        } else {
-                            callback();
-                        }
-                    },
-                    trigger: 'change'
-                },
-                attachment2: {
-                    validator: (rule, value, callback) => {
-                        if (!value.url) {
-                            callback(new Error('请上传电子申请回执'));
-                        } else {
-                            callback();
-                        }
-                    },
-                    trigger: 'change'
-                },
-                attachment3: {
-                    validator: (rule, value, callback) => {
-                        if (!value.url) {
-                            callback(new Error('请上传供应商请款单'));
-                        } else {
-                            callback();
-                        }
-                    },
-                    trigger: 'change'
-                }
-            }
-        };
-    },
-    methods: {
-        onSubmit() {
-            this.$refs.form.validate(valid => {
-                if (valid) {
-                    this.submit();
-                } else {
-                    return false;
-                }
-            });
-        },
-        submit() {
-            let info = { ...this.info };
-
-            this.$emit('uploadAttement', this.form.attachment1);
-            this.$emit('uploadAttement', this.form.attachment2);
-            this.$emit('uploadAttement', this.form.attachment3);
-            info.workflow = 'MAINTAIN_CASE';
-            this.$emit('submit', info);
-            this.show = false;
-        }
-    }
-};
-</script>

+ 60 - 73
src/main/vue/src/components/internationalPatent/BaseInfo.vue

@@ -40,7 +40,7 @@
                         </el-select>
                     </el-form-item>
                     <el-form-item prop="uwNo" label="寰球案号">
-                        <el-input v-model="formData.uwNo" disabledÎ></el-input>
+                        <el-input v-model="formData.uwNo" disabled></el-input>
                     </el-form-item>
                     <el-form-item prop="clientPartnerId" label="客户">
                         <el-select
@@ -82,13 +82,13 @@
                         </el-select>
                     </el-form-item>
 
-                    <el-form-item prop="applyNo" label="国内专利申请号">
-                        <el-input v-model="formData.applyNo"></el-input>
+                    <el-form-item prop="pctApplyNo" label="PCT申请号">
+                        <el-input v-model="formData.pctApplyNo"></el-input>
                     </el-form-item>
 
-                    <el-form-item prop="applyDate" label="国内专利申请日">
+                    <el-form-item prop="pctApplyDate" label="PCT申请日">
                         <el-date-picker
-                            v-model="formData.applyDate"
+                            v-model="formData.pctApplyDate"
                             type="date"
                             value-format="yyyy-MM-dd"
                             placeholder="选择日期"
@@ -115,90 +115,77 @@
                         >
                         </el-date-picker>
                     </el-form-item>
+
+                    <el-form-item prop="actualOfficialAmount" label="官费实际金额">
+                        <el-input type="number" v-model="formData.actualOfficialAmount"></el-input>
+                    </el-form-item>
                 </div>
 
                 <divider collapse topLine :showMore.sync="personShow">申请人及发明人 </divider>
                 <div class="base-item" v-show="personShow">
-                    <el-form-item prop="applicantName" label="申请人名称">
-                        <el-input v-model="formData.applicantName" placeholder="请输入"></el-input>
+                    <el-form-item prop="applicantName" label="申请人名称" class="input-pre-zh">
+                        <el-input style="width: 236px;" v-model="formData.applicantName" placeholder="请输入中文名称">
+                            <template #prepend>中</template></el-input
+                        >
+                    </el-form-item>
+                    <el-form-item prop="applicantEnName" label="英文名称" label-width="125px" class="input-pre-en">
+                        <el-input style="width: 236px;" v-model="formData.applicantEnName" placeholder="请输入英文名称">
+                            <template #prepend>英</template></el-input
+                        >
                     </el-form-item>
 
-                    <el-form-item prop="applicantUscc" label="申请人统一社会信用代码">
-                        <el-input v-model="formData.applicantUscc" placeholder="请输入"></el-input>
+                    <el-form-item
+                        style="margin-bottom:10px;"
+                        prop="applicantAddress"
+                        label="申请人地址"
+                        class="input-pre-zh error-end"
+                    >
+                        <el-input style="width:600px;" v-model="formData.applicantAddress" placeholder="请输入中文地址">
+                            <template #prepend>中</template>
+                        </el-input>
                     </el-form-item>
-                    <el-form-item prop="applicantAddress" label="申请人地址">
+                    <el-form-item prop="applicantEnAddress" label=" " class="input-pre-en  error-end">
                         <el-input
-                            style="width: 600px"
-                            placeholder="请输入"
-                            v-model="formData.applicantAddress"
-                        ></el-input>
+                            style="width:600px;"
+                            v-model="formData.applicantEnAddress"
+                            placeholder="请输入英文地址"
+                        >
+                            <template #prepend>英</template>
+                        </el-input>
                     </el-form-item>
-                    <el-form-item prop="inventorName" label="发明人姓名">
-                        <el-input v-model="formData.inventorName" placeholder="请输入"></el-input>
+                    <el-form-item
+                        style="margin-bottom:10px;"
+                        prop="inventorName"
+                        label="发明人姓名"
+                        class="input-pre-zh  error-end"
+                    >
+                        <el-input style="width:600px;" v-model="formData.inventorName" placeholder="请输入中文名称">
+                            <template #prepend>中</template>
+                        </el-input>
                     </el-form-item>
-                    <el-form-item prop="inventorIdno" label="第一发明人身份证号码">
-                        <el-input v-model="formData.inventorIdno" placeholder="请输入"></el-input>
+                    <el-form-item prop="inventorEnName" label=" " class="input-pre-en  error-end">
+                        <el-input style="width:600px;" v-model="formData.inventorEnName" placeholder="请输入英文名称">
+                            <template #prepend>英</template>
+                        </el-input>
                     </el-form-item>
                 </div>
-                <divider collapse topLine :showMore.sync="otherShow">其他信息 </divider>
+                <divider collapse topLine :showMore.sync="otherShow">优先权信息 </divider>
                 <div class="base-item" v-show="otherShow">
-                    <el-form-item prop="deduction" label="是否请求费减">
-                        <el-select v-model="formData.deduction">
-                            <el-option
-                                v-for="(item, index) in boolOptions"
-                                :key="index"
-                                :label="item.label"
-                                :value="item.value"
-                            >
-                            </el-option>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="essentialReview" label="是否请求实质审查">
-                        <el-select v-model="formData.essentialReview">
-                            <el-option
-                                v-for="(item, index) in boolOptions"
-                                :key="index"
-                                :label="item.label"
-                                :value="item.value"
-                            >
-                            </el-option>
-                        </el-select>
-                    </el-form-item>
-
-                    <el-form-item prop="publicInAdvance" label="是否申请提前公开">
-                        <el-select v-model="formData.publicInAdvance">
-                            <el-option
-                                v-for="(item, index) in boolOptions"
-                                :key="index"
-                                :label="item.label"
-                                :value="item.value"
-                            >
-                            </el-option>
-                        </el-select>
+                    <el-form-item prop="priorityNo" label="优先权号">
+                        <el-input v-model="formData.priorityNo" placeholder="请输入..."></el-input>
                     </el-form-item>
 
-                    <el-form-item prop="chapterAcceptanceNotice" label="是否申请红章受理通知书">
-                        <el-select v-model="formData.chapterAcceptanceNotice">
-                            <el-option
-                                v-for="(item, index) in boolOptions"
-                                :key="index"
-                                :label="item.label"
-                                :value="item.value"
-                            >
-                            </el-option>
-                        </el-select>
+                    <el-form-item prop="priorityDate" label="优先权日">
+                        <el-date-picker
+                            v-model="formData.priorityDate"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="选择日期"
+                        >
+                        </el-date-picker>
                     </el-form-item>
-
-                    <el-form-item prop="chapterPaymentNotice" label="是否申请红章缴费通知书">
-                        <el-select v-model="formData.chapterPaymentNotice">
-                            <el-option
-                                v-for="(item, index) in boolOptions"
-                                :key="index"
-                                :label="item.label"
-                                :value="item.value"
-                            >
-                            </el-option>
-                        </el-select>
+                    <el-form-item prop="priorityCountry" label="优先权国别">
+                        <el-input v-model="formData.priorityCountry" placeholder="请输入..."></el-input>
                     </el-form-item>
                 </div>
             </el-form>

+ 20 - 9
src/main/vue/src/components/internationalPatent/MaintainCase.vue

@@ -8,13 +8,22 @@
             label-width="140px"
             style="padding-right: 130px"
         >
-            <el-form-item prop="applyNo" label="国内专利申请号">
-                <el-input v-model="form.applyNo" placeholder="请输入"></el-input>
+            <el-form-item prop="pctApplyNo" label="PCT申请号">
+                <el-input v-model="form.pctApplyNo" placeholder="请输入..."></el-input>
             </el-form-item>
-            <el-form-item prop="applyDate" label="国内专利申请日">
-                <el-date-picker v-model="form.applyDate" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
+
+            <el-form-item prop="pctApplyDate" label="PCT申请日">
+                <el-date-picker
+                    v-model="form.pctApplyDate"
+                    type="date"
+                    value-format="yyyy-MM-dd"
+                    placeholder="选择日期"
+                >
                 </el-date-picker>
             </el-form-item>
+            <el-form-item prop="actualOfficialAmount" label="官费实际金额">
+                <el-input type="number" v-model="form.actualOfficialAmount" placeholder="请输入..."></el-input>
+            </el-form-item>
 
             <el-form-item>
                 <el-button style="width: 150px" size="normal" type="primary" @click="onSubmit">提交</el-button>
@@ -36,8 +45,9 @@ export default {
             form: {},
             show: false,
             rules: {
-                applyNo: { required: true, message: '请输入国内专利申请号', trigger: 'blur' },
-                applyDate: { required: true, message: '请选择国内专利申请日', trigger: 'change' }
+                pctApplyNo: { required: true, message: '请输入PCT申请号', trigger: 'blur' },
+                pctApplyDate: { required: true, message: '请选择PCT申请日', trigger: 'change' },
+                actualOfficialAmount: { required: true, message: '请选择官费实际金额', trigger: 'change' }
             },
             supplierPartnerIdOptions: []
         };
@@ -54,10 +64,11 @@ export default {
         },
         submit() {
             let info = { ...this.info };
-            info.applyNo = this.form.applyNo;
-            info.applyDate = this.form.applyDate;
+            info.pctApplyNo = this.form.pctApplyNo;
+            info.pctApplyDate = this.form.pctApplyDate;
+            info.actualOfficialAmount = this.form.actualOfficialAmount;
 
-            info.workflow = 'REPLY_TO_NOTICE';
+            info.workflow = 'OFFICIAL_CIRCULATION';
 
             this.$emit('submit', info);
             this.show = false;

+ 0 - 100
src/main/vue/src/components/internationalPatent/Register.vue

@@ -1,100 +0,0 @@
-<template>
-    <el-dialog title="补充办登信息" :visible.sync="show" destroy-on-close center width="600px">
-        <el-form
-            hide-required-asterisk
-            :model="form"
-            :rules="rules"
-            ref="form"
-            label-width="140px"
-            style="padding-right: 130px"
-        >
-            <el-form-item prop="registerNotice" label="授权办登通知日">
-                <el-date-picker
-                    v-model="form.registerNotice"
-                    type="date"
-                    value-format="yyyy-MM-dd"
-                    placeholder="选择日期"
-                >
-                </el-date-picker>
-            </el-form-item>
-
-            <el-form-item prop="registerEndDate" label="办登截止日期">
-                <el-date-picker
-                    v-model="form.registerEndDate"
-                    type="date"
-                    value-format="yyyy-MM-dd"
-                    placeholder="选择日期"
-                >
-                </el-date-picker>
-            </el-form-item>
-            <el-form-item prop="feeRemark" label="费用备注">
-                <el-input v-model="form.feeRemark"></el-input>
-            </el-form-item>
-            <el-form-item label="登记通知书" prop="attachment1">
-                <attachment-upload
-                    v-model="form.attachment1"
-                    :fileSize.sync="form.attachment1.size"
-                ></attachment-upload>
-            </el-form-item>
-
-            <el-form-item>
-                <el-button style="width: 150px" size="normal" type="primary" @click="onSubmit">提交</el-button>
-                <el-button style="width: 120px" size="normal" @click="show = false">取消</el-button>
-            </el-form-item>
-        </el-form>
-    </el-dialog>
-</template>
-
-<script>
-import logoPatent from '@/mixins/logoPatent';
-export default {
-    mixins: [logoPatent],
-    props: {
-        info: {}
-    },
-    data() {
-        return {
-            form: {
-                attachment1: { attachmentName: '登记通知书', fileName: '', url: '', remark: '', size: '' }
-            },
-            show: false,
-            rules: {
-                attachment1: {
-                    validator: (rule, value, callback) => {
-                        if (!value.url) {
-                            callback(new Error('请上传登记通知书'));
-                        } else {
-                            callback();
-                        }
-                    },
-                    trigger: 'change'
-                },
-                registerNotice: { required: true, message: '请选择授权办登通知日', trigger: 'change' },
-                registerEndDate: { required: true, message: '请选择办登截止日期', trigger: 'change' },
-                feeRemark: { required: true, message: '请输入费用备注', trigger: 'blur' }
-            }
-        };
-    },
-    methods: {
-        onSubmit() {
-            this.$refs.form.validate(valid => {
-                if (valid) {
-                    this.submit();
-                } else {
-                    return false;
-                }
-            });
-        },
-        submit() {
-            let info = { ...this.info };
-            info.registerNotice = this.form.registerNotice;
-            info.registerEndDate = this.form.registerEndDate;
-            info.feeRemark = this.form.feeRemark;
-            this.$emit('uploadAttement', this.form.attachment1);
-            info.workflow = 'PAYMENT_REGISTER';
-            this.$emit('submit', info);
-            this.show = false;
-        }
-    }
-};
-</script>

+ 0 - 90
src/main/vue/src/components/internationalPatent/RegisterComplate.vue

@@ -1,90 +0,0 @@
-<template>
-    <el-dialog title="办理登记" :visible.sync="show" destroy-on-close center width="600px">
-        <el-form
-            hide-required-asterisk
-            :model="form"
-            :rules="rules"
-            ref="form"
-            label-width="140px"
-            style="padding-right: 130px"
-        >
-            <el-form-item label="授予专利通知书" prop="attachment1">
-                <attachment-upload
-                    v-model="form.attachment1"
-                    :fileSize.sync="form.attachment1.size"
-                ></attachment-upload>
-            </el-form-item>
-            <el-form-item label="专利证书" prop="attachment2">
-                <attachment-upload
-                    v-model="form.attachment2"
-                    :fileSize.sync="form.attachment2.size"
-                ></attachment-upload>
-            </el-form-item>
-
-            <el-form-item>
-                <el-button style="width: 150px" size="normal" type="primary" @click="onSubmit">提交</el-button>
-                <el-button style="width: 120px" size="normal" @click="show = false">取消</el-button>
-            </el-form-item>
-        </el-form>
-    </el-dialog>
-</template>
-
-<script>
-import logoPatent from '@/mixins/logoPatent';
-export default {
-    mixins: [logoPatent],
-    props: {
-        info: {}
-    },
-    data() {
-        return {
-            form: {
-                attachment1: { attachmentName: '授予专利通知书', fileName: '', url: '', remark: '', size: '' },
-                attachment2: { attachmentName: '专利证书', fileName: '', url: '', remark: '', size: '' }
-            },
-            show: false,
-            rules: {
-                attachment1: {
-                    validator: (rule, value, callback) => {
-                        if (!value.url) {
-                            callback(new Error('请上传授予专利通知书'));
-                        } else {
-                            callback();
-                        }
-                    },
-                    trigger: 'change'
-                },
-                attachment2: {
-                    validator: (rule, value, callback) => {
-                        if (!value.url) {
-                            callback(new Error('请上传专利证书'));
-                        } else {
-                            callback();
-                        }
-                    },
-                    trigger: 'change'
-                }
-            }
-        };
-    },
-    methods: {
-        onSubmit() {
-            this.$refs.form.validate(valid => {
-                if (valid) {
-                    this.submit();
-                } else {
-                    return false;
-                }
-            });
-        },
-        submit() {
-            let info = { ...this.info };
-            this.$emit('uploadAttement', this.form.attachment1);
-            this.$emit('uploadAttement', this.form.attachment2);
-            info.workflow = 'ANNUAL_FEE';
-            this.$emit('submit', info);
-            this.show = false;
-        }
-    }
-};
-</script>

+ 0 - 85
src/main/vue/src/components/internationalPatent/RegisterPayment.vue

@@ -1,85 +0,0 @@
-<template>
-    <el-dialog title="补充办登信息" :visible.sync="show" destroy-on-close center width="600px">
-        <el-form
-            hide-required-asterisk
-            :model="form"
-            :rules="rules"
-            ref="form"
-            label-width="140px"
-            style="padding-right: 130px"
-        >
-            <el-form-item label="是否缴费完成" prop="payment">
-                <el-radio-group v-model="form.payment">
-                    <el-radio :label="true">
-                        是
-                    </el-radio>
-                    <el-radio :label="false">
-                        否
-                    </el-radio>
-                </el-radio-group>
-            </el-form-item>
-            <el-form-item label="客户付款凭证/截图" prop="attachment1" v-if="form.payment">
-                <attachment-upload
-                    v-model="form.attachment1"
-                    :fileSize.sync="form.attachment1.size"
-                ></attachment-upload>
-            </el-form-item>
-
-            <el-form-item>
-                <el-button style="width: 150px" size="normal" type="primary" @click="onSubmit">提交</el-button>
-                <el-button style="width: 120px" size="normal" @click="show = false">取消</el-button>
-            </el-form-item>
-        </el-form>
-    </el-dialog>
-</template>
-
-<script>
-import logoPatent from '@/mixins/logoPatent';
-export default {
-    mixins: [logoPatent],
-    props: {
-        info: {}
-    },
-    data() {
-        return {
-            form: {
-                payment: true,
-                attachment1: { attachmentName: '客户付款凭证/截图', fileName: '', url: '', remark: '', size: '' }
-            },
-            show: false,
-            rules: {
-                payment: { required: true, message: '是否已经缴费', trigger: 'change' },
-                attachment1: {
-                    validator: (rule, value, callback) => {
-                        if (!value.url) {
-                            callback(new Error('请上传客户付款凭证/截图'));
-                        } else {
-                            callback();
-                        }
-                    },
-                    trigger: 'change'
-                }
-            }
-        };
-    },
-    methods: {
-        onSubmit() {
-            this.$refs.form.validate(valid => {
-                if (valid) {
-                    this.submit();
-                } else {
-                    return false;
-                }
-            });
-        },
-        submit() {
-            let info = { ...this.info };
-            info.payment = this.form.payment;
-            this.$emit('uploadAttement', this.form.attachment1);
-            info.workflow = 'REGISTER';
-            this.$emit('submit', info);
-            this.show = false;
-        }
-    }
-};
-</script>

+ 2 - 2
src/main/vue/src/components/internationalPatent/Reply.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="上传答复通知" :visible.sync="show" destroy-on-close center width="600px">
+    <el-dialog title="上传补正答复信息" :visible.sync="show" destroy-on-close center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"
@@ -86,7 +86,7 @@ export default {
             this.$emit('uploadAttement', this.form.attachment1);
             info.officialPeriod = this.form.officialPeriod;
             info.submitPeriod = this.form.submitPeriod;
-            info.workflow = 'PENDING_REVIEW';
+            info.workflow = 'REPLY_SUBMISSION';
             this.$emit('submit', info);
             this.show = false;
         }

+ 0 - 86
src/main/vue/src/components/internationalPatent/ReplyBack.vue

@@ -1,86 +0,0 @@
-<template>
-    <el-dialog title="确定答复意向" :visible.sync="show" destroy-on-close center width="600px">
-        <el-form
-            hide-required-asterisk
-            :model="form"
-            :rules="rules"
-            ref="form"
-            label-width="140px"
-            style="padding-right: 130px"
-        >
-            <el-form-item label="是否决定答复" prop="decideReply">
-                <el-radio-group v-model="form.decideReply">
-                    <el-radio :label="true"> 是 </el-radio>
-                    <el-radio :label="false"> 否 </el-radio>
-                </el-radio-group>
-                <div class="el-form-tips" v-if="!form.decideReply">注:放弃答复后,案件立即终止,请谨慎操作</div>
-            </el-form-item>
-            <el-form-item label="准备答复意见" prop="isClientReady" v-if="form.decideReply">
-                <el-radio-group v-model="form.isClientReady">
-                    <el-radio :label="true"> 客户准备 </el-radio>
-                    <el-radio :label="false"> 律师准备 </el-radio>
-                </el-radio-group>
-            </el-form-item>
-
-            <el-form-item>
-                <el-button style="width: 150px" size="normal" type="primary" @click="onSubmit">提交</el-button>
-                <el-button style="width: 120px" size="normal" @click="show = false">取消</el-button>
-            </el-form-item>
-        </el-form>
-    </el-dialog>
-</template>
-
-<script>
-import logoPatent from '@/mixins/logoPatent';
-export default {
-    mixins: [logoPatent],
-    props: {
-        info: {}
-    },
-    data() {
-        return {
-            form: {
-                decideReply: true
-            },
-            show: false,
-            rules: {
-                isClientReady: { required: true, message: '请选择准备答复意见', trigger: 'change' }
-            }
-        };
-    },
-    methods: {
-        onSubmit() {
-            this.$refs.form.validate(valid => {
-                if (valid) {
-                    this.submit();
-                } else {
-                    return false;
-                }
-            });
-        },
-        submit() {
-            let info = { ...this.info };
-
-            info.decideReply = this.form.decideReply;
-
-            if (info.decideReply) {
-                info.isClientReady = this.form.isClientReady;
-                info.workflow = 'REPLY_SUBMISSIONS';
-            } else {
-                info.workflow = 'NO_REPLY';
-            }
-
-            this.$emit('submit', info);
-            this.show = false;
-        }
-    }
-};
-</script>
-<style lang="less" scoped>
-.el-form-tips {
-    font-size: 12px;
-    color: #d75e41;
-    line-height: 17px;
-    margin-top: 18px;
-}
-</style>

+ 17 - 12
src/main/vue/src/components/internationalPatent/ReplyResult.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="确定答复结果" :visible.sync="show" destroy-on-close center width="600px">
+    <el-dialog title="确认答复状态" :visible.sync="show" destroy-on-close center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"
@@ -8,14 +8,15 @@
             label-width="140px"
             style="padding-right: 130px"
         >
-            <el-form-item label="是否通过答复" prop="replyPassed">
-                <el-radio-group v-model="form.replyPassed">
+            <el-form-item prop="replyStatus" label="答复意见状态">
+                <el-input v-model="form.replyStatus"></el-input>
+            </el-form-item>
+
+            <el-form-item label="是否继续官文流转" prop="officialCirculation">
+                <el-radio-group v-model="form.officialCirculation">
                     <el-radio :label="true"> 是 </el-radio>
                     <el-radio :label="false"> 否 </el-radio>
                 </el-radio-group>
-                <div class="el-form-tips" v-if="!form.replyPassed">
-                    注:选择没有通过则需要重新进行答复补正,请谨慎操作
-                </div>
             </el-form-item>
 
             <el-form-item>
@@ -36,10 +37,13 @@ export default {
     data() {
         return {
             form: {
-                replyPassed: true
+                officialCirculation: false
             },
             show: false,
-            rules: {}
+            rules: {
+                replyStatus: { required: true, message: '请选择授权办登通知日', trigger: 'blur' },
+                officialCirculation: { required: true, message: '请选择授权办登通知日', trigger: 'change' }
+            }
         };
     },
     methods: {
@@ -55,12 +59,13 @@ export default {
         submit() {
             let info = { ...this.info };
 
-            info.replyPassed = this.form.replyPassed;
+            info.replyStatus = this.form.replyStatus;
+            info.officialCirculation = this.form.officialCirculation;
 
-            if (info.replyPassed) {
-                info.workflow = 'PENDING_REGISTER';
+            if (info.officialCirculation) {
+                info.workflow = 'OFFICIAL_CIRCULATION';
             } else {
-                info.workflow = 'REPLY_TO_NOTICE';
+                info.workflow = 'COMPLETED';
                 //否回答复通知
             }
 

+ 1 - 1
src/main/vue/src/components/internationalPatent/replySubmissions.vue

@@ -63,7 +63,7 @@ export default {
         submit() {
             let info = { ...this.info };
             this.$emit('uploadAttement', this.form.attachment1);
-            info.workflow = 'REPLY_RESULT';
+            info.workflow = 'CONFIRM_REPLY';
             this.$emit('submit', info);
             this.show = false;
         }

+ 1 - 12
src/main/vue/src/mixins/internationalPatent.js

@@ -9,7 +9,7 @@ export default {
                     workflows: [
                         { label: '待添加供应商', value: 'ADD_SUPPLIERS' },
                         { label: '待提交供应商材料', value: 'SUPPLIER_MATERIALS' },
-                        { label: '维护案件', value: 'MAINTAIN_CASE' },
+                        { label: '维护案件信息', value: 'MAINTAIN_CASE' },
                         { label: '待官文流转', value: 'OFFICIAL_CIRCULATION' }
                     ]
                 },
@@ -28,17 +28,6 @@ export default {
                     type: 'warning',
                     workflows: [{ label: '待确认答复状态', value: 'CONFIRM_REPLY' }]
                 },
-                {
-                    label: '授权阶段',
-                    value: 'GRANT_STAGE',
-                    type: 'info',
-                    workflows: [
-                        { label: '待办登', value: 'PENDING_REGISTER' },
-                        { label: '待办登', value: 'PAYMENT_REGISTER' },
-                        { label: '办理登记', value: 'REGISTER' },
-                        { label: '待维护年费信息', value: 'ANNUAL_FEE' }
-                    ]
-                },
                 {
                     label: '已完成',
                     value: 'COMPLETED',

+ 8 - 0
src/main/vue/src/styles/app.less

@@ -422,6 +422,14 @@ li {
         color: #eead81;
     }
 }
+
+.error-end {
+    .el-form-item__error {
+        top: 11px;
+        left: calc(100% + 10px);
+        white-space: nowrap;
+    }
+}
 .edit-tabs {
     flex-grow: 1;
     .flex-col();

+ 93 - 24
src/main/vue/src/views/InternationalPatentAdd.vue

@@ -58,14 +58,14 @@
                     <el-form-item
                         style="margin-bottom:10px;"
                         prop="applicantAddress"
-                        label="注册地址"
-                        class="input-pre-zh"
+                        label="申请人地址"
+                        class="input-pre-zh error-end"
                     >
                         <el-input style="width:480px;" v-model="formData.applicantAddress" placeholder="请输入中文地址">
                             <template #prepend>中</template>
                         </el-input>
                     </el-form-item>
-                    <el-form-item prop="applicantEnAddress" label=" " class="input-pre-en">
+                    <el-form-item prop="applicantEnAddress" label=" " class="input-pre-en  error-end">
                         <el-input
                             style="width:480px;"
                             v-model="formData.applicantEnAddress"
@@ -79,17 +79,20 @@
                         style="margin-bottom:10px;"
                         prop="inventorName"
                         label="发明人姓名"
-                        class="input-pre-zh"
+                        class="input-pre-zh  error-end"
                     >
                         <el-input style="width:480px;" v-model="formData.inventorName" placeholder="请输入中文名称">
                             <template #prepend>中</template>
                         </el-input>
                     </el-form-item>
-                    <el-form-item prop="inventorEnName" label=" " class="input-pre-en">
+                    <el-form-item prop="inventorEnName" label=" " class="input-pre-en  error-end">
                         <el-input style="width:480px;" v-model="formData.inventorEnName" placeholder="请输入英文名称">
                             <template #prepend>英</template>
                         </el-input>
                     </el-form-item>
+                    <el-form-item prop="priorityNo" label="优先权号">
+                        <el-input v-model="formData.priorityNo" placeholder="请输入..."></el-input>
+                    </el-form-item>
 
                     <el-form-item prop="priorityDate" label="优先权日">
                         <el-date-picker
@@ -101,7 +104,7 @@
                         </el-date-picker>
                     </el-form-item>
                     <el-form-item prop="priorityCountry" label="优先权国别">
-                        <el-input v-model="formData.priorityCountry"></el-input>
+                        <el-input v-model="formData.priorityCountry" placeholder="请输入..."></el-input>
                     </el-form-item>
                     <el-form-item label="PCT申请信息表单" prop="attachment1">
                         <attachment-upload
@@ -134,7 +137,7 @@
                         ></attachment-upload>
                     </el-form-item>
 
-                    <el-form-item class="form-submit">
+                    <el-form-item class="form-submit" label=" ">
                         <el-button @click="onSave" :loading="saving" size="default" type="primary">保存 </el-button>
                         <el-button @click="onDelete" :loading="saving" size="default" type="danger" v-if="formData.id"
                             >删除
@@ -176,7 +179,62 @@ export default {
                 attachment3: { attachmentName: '申请文稿', fileName: '', url: '', remark: '', size: '' },
                 attachment4: { attachmentName: '', fileName: '', url: '', remark: '', size: '' }
             },
-            rules: {},
+            rules: {
+                name: { required: true, message: '请输入专利名称', trigger: 'blur' },
+                type: { required: true, message: '请选择专利类型', trigger: 'change' },
+                clientPartnerId: { required: true, message: '请选择选择客户', trigger: 'change' },
+                applicantName: { required: true, message: '请输入申请人名称', trigger: 'blur' },
+                applicantEnName: { required: true, message: '请输入申请人英文名称', trigger: 'blur' },
+                applicantAddress: { required: true, message: '请输入申请人地址', trigger: 'blur' },
+                applicantEnAddress: { required: true, message: '请输入申请人英文地址', trigger: 'blur' },
+                inventorName: { required: true, message: '请输入发明人姓名', trigger: 'blur' },
+                inventorEnName: { required: true, message: '请输入发明人英文名称', trigger: 'blur' },
+                priorityNo: { required: true, message: '请输入优先权号', trigger: 'blur' },
+                priorityDate: { required: true, message: '请选择优先权日', trigger: 'change' },
+                priorityCountry: { required: true, message: '请输入优先权国别', trigger: 'blur' },
+                attachment1: {
+                    validator: (rule, value, callback) => {
+                        if (!value.url) {
+                            callback(new Error('请上传PCT申请信息表单'));
+                        } else {
+                            callback();
+                        }
+                    },
+                    trigger: 'change'
+                },
+                attachment2: {
+                    validator: (rule, value, callback) => {
+                        if (!value.url) {
+                            callback(new Error('请上传总委托书'));
+                        } else {
+                            callback();
+                        }
+                    },
+                    trigger: 'change'
+                },
+                attachment3: {
+                    validator: (rule, value, callback) => {
+                        if (!value.url) {
+                            callback(new Error('请上传申请文稿'));
+                        } else {
+                            callback();
+                        }
+                    },
+                    trigger: 'change'
+                },
+                attachment4: {
+                    validator: (rule, value, callback) => {
+                        if (!value.url && value.name) {
+                            callback(new Error('请上传' + value.name));
+                        } else if (value.url && !value.name) {
+                            callback(new Error('请输入附件名称'));
+                        } else {
+                            callback();
+                        }
+                    },
+                    trigger: 'change'
+                }
+            },
             workflowOptions: [
                 { label: '待添加供应商', value: 'ADD_SUPPLIERS' },
                 { label: '待提交供应商材料', value: 'SUPPLIER_MATERIALS' },
@@ -208,10 +266,24 @@ export default {
         submit() {
             let data = { ...this.formData };
 
+            delete data.attachment1;
+            delete data.attachment2;
+            delete data.attachment3;
+            delete data.attachment4;
+
+            data.applyDate = format(new Date(), 'yyyy-MM-dd');
+            data.workflow = 'ADD_SUPPLIERS';
+
             this.saving = true;
             this.$http
-                .post('/internationalPatent/save', data, { body: 'json' })
+                .post('/internationalPatent/saveDTO', data, { body: 'json' })
                 .then(res => {
+                    this.uploadAttement(this.formData.attachment1, res.patentId);
+                    this.uploadAttement(this.formData.attachment2, res.patentId);
+                    this.uploadAttement(this.formData.attachment3, res.patentId);
+                    if (this.formData.attachment4.url) {
+                        this.uploadAttement(this.formData.attachment4, res.patentId);
+                    }
                     this.saving = false;
                     this.$message.success('成功');
                     this.$router.go(-1);
@@ -222,21 +294,18 @@ export default {
                     this.$message.error(e.error);
                 });
         },
-        onDelete() {
-            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
-                .then(() => {
-                    return this.$http.post(`/internationalPatent/del/${this.formData.id}`);
-                })
-                .then(() => {
-                    this.$message.success('删除成功');
-                    this.$router.go(-1);
-                })
-                .catch(e => {
-                    if (e !== 'cancel') {
-                        console.log(e);
-                        this.$message.error((e || {}).error || '删除失败');
-                    }
-                });
+        uploadAttement(info, patentId) {
+            let data = { ...info };
+            if (!data.url) {
+                return;
+            }
+            data.patentId = patentId;
+            data.userId = this.$store.state.userInfo.id;
+            data.version = 1;
+            if (data.size) {
+                data.size += 'KB';
+            }
+            this.$http.post('/attachment/save', data, { body: 'json' });
         }
     }
 };

+ 273 - 83
src/main/vue/src/views/InternationalPatentEdit.vue

@@ -1,82 +1,101 @@
 <template>
     <div class="edit-view">
         <page-title>
-            <el-button @click="$router.go(-1)">取消</el-button>
-            <el-button @click="del" :loading="$store.state.fetchingData" type="danger" v-if="formData.id">
-                删除
-            </el-button>
-            <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+            <template slot="title">
+                专利详情:{{ formData.name }}
+                <el-tag :type="statusInfo.type" style="margin-left: 10px">
+                    {{ statusInfo.label }}
+                </el-tag>
+            </template>
         </page-title>
-        <div class="edit-view__content-wrapper">
-            <div class="edit-view__content-section">
-                <divider />
-                <el-form
-                    :model="formData"
-                    :rules="rules"
-                    ref="form"
-                    label-width="136px"
-                    label-position="right"
-                    size="small"
-                    style="max-width: 500px;"
-                >
-                    <el-form-item prop="workflow" label="流程">
-                        <el-select v-model="formData.workflow" clearable filterable placeholder="请选择">
-                            <el-option
-                                v-for="item in workflowOptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value"
-                            >
-                            </el-option>
-                        </el-select>
-                    </el-form-item>
-                    <el-form-item prop="pctApplyNo" label="pct申请号">
-                        <el-input v-model="formData.pctApplyNo"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="pctApplyDate" label="pct申请日">
-                        <el-date-picker
-                            v-model="formData.pctApplyDate"
-                            type="date"
-                            value-format="yyyy-MM-dd"
-                            placeholder="选择日期"
-                        >
-                        </el-date-picker>
-                    </el-form-item>
-                    <el-form-item prop="actualOfficialAmount" label="官费实际金额">
-                        <el-input-number type="number" v-model="formData.actualOfficialAmount"></el-input-number>
-                    </el-form-item>
-                    <el-form-item prop="replyStatus" label="答复意见状态">
-                        <el-input v-model="formData.replyStatus"></el-input>
-                    </el-form-item>
-                    <el-form-item prop="officialCirculation" label="是否继续官文流转">
-                        <el-switch v-model="formData.officialCirculation"></el-switch>
-                    </el-form-item>
-                    <el-form-item class="form-submit">
-                        <el-button @click="onSave" :loading="saving" size="default" type="primary">保存 </el-button>
-                        <el-button @click="onDelete" :loading="saving" size="default" type="danger" v-if="formData.id"
-                            >删除
-                        </el-button>
-                        <el-button @click="$router.go(-1)" size="default">取消</el-button>
-                    </el-form-item>
-                </el-form>
+        <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" @click="$refs.feeAdd.init()">新增费用</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>
+            <div class="tips" v-if="nowStatus && formData.applyStatus !== 'COMPLETED'">
+                <div class="tips-text">
+                    <span class="name">当前流程节点</span>
+                    <span class="val">{{ nowStatus }}</span>
+                </div>
+
+                <div class="tips-text">
+                    <span class="name">处理人</span>
+                    <span class="val">{{ user }}</span>
+                </div>
+
+                <div class="tips-text">
+                    <span class="name">处理截止日期</span>
+                    <span class="val">{{ date }}</span>
+                </div>
+
+                <el-button @click="action" type="text" size="small">立即处理</el-button>
+            </div>
+            <el-tab-pane label="基本信息" name="first">
+                <base-info ref="base" :info.sync="formData" @submit="submit"></base-info>
+            </el-tab-pane>
+            <el-tab-pane label="附件列表" name="second">
+                <attachment-list ref="attachmentList" :info="formData"></attachment-list>
+            </el-tab-pane>
+            <el-tab-pane label="费用信息" name="third">
+                <fee-list ref="feeList" :info="formData"></fee-list>
+            </el-tab-pane>
+            <!-- <el-tab-pane label="流程信息" name="fourth">
+                <workflow ref="workflow" :info="formData"></workflow>
+            </el-tab-pane> -->
+        </el-tabs>
+        <attachment-add ref="attachmentAdd" :info="formData" @refreash="init"></attachment-add>
+        <fee-add ref="feeAdd" isLogoPatent :info="formData" @refreash="init"></fee-add>
+
+        <maintain-case
+            ref="maintainCase"
+            :info="formData"
+            @submit="submit"
+            @uploadAttement="uploadAttement"
+        ></maintain-case>
+        <office-attachment
+            ref="officeAttachment"
+            :info="formData"
+            @submit="submit"
+            @uploadAttement="uploadAttement"
+        ></office-attachment>
+        <reply ref="reply" :info="formData" @submit="submit" @uploadAttement="uploadAttement"></reply>
+        <reply-submissions
+            ref="replySubmissions"
+            :info="formData"
+            @submit="submit"
+            @uploadAttement="uploadAttement"
+        ></reply-submissions>
+
+        <reply-result
+            ref="replyResult"
+            :info="formData"
+            @submit="submit"
+            @uploadAttement="uploadAttement"
+        ></reply-result>
     </div>
 </template>
 <script>
+import attachmentList from '../components/AttachmentList.vue';
+import AttachmentAdd from '../components/AttachmentAdd.vue';
+import FeeList from '../components/fee/FeeList.vue';
+import FeeAdd from '../components/fee/FeeAdd.vue';
+import internationalPatent from '@/mixins/internationalPatent';
+import BaseInfo from '../components/internationalPatent/BaseInfo.vue';
+import MaintainCase from '../components/internationalPatent/MaintainCase.vue';
+import Reply from '../components/internationalPatent/Reply.vue';
+import ReplySubmissions from '../components/internationalPatent/replySubmissions.vue';
+import ReplyResult from '../components/internationalPatent/ReplyResult.vue';
+import Workflow from '../components/Workflow.vue';
+import OfficeAttachment from '../components/internationalPatent/OfficeAttachment.vue';
 export default {
     name: 'InternationalPatentEdit',
+    mixins: [internationalPatent],
     created() {
         if (this.$route.query.id) {
-            this.$http
-                .get('internationalPatent/get/' + this.$route.query.id)
-                .then(res => {
-                    this.formData = res;
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.$message.error(e.error);
-                });
+            this.getInfo();
         }
     },
     data() {
@@ -84,19 +103,93 @@ export default {
             saving: false,
             formData: {},
             rules: {},
-            workflowOptions: [
-                { label: '待添加供应商', value: 'ADD_SUPPLIERS' },
-                { label: '待提交供应商材料', value: 'SUPPLIER_MATERIALS' },
-                { label: '待维护案件', value: 'MAINTAIN_CASE' },
-                { label: '待官文流转', value: 'OFFICIAL_CIRCULATION' },
-                { label: '待补正答复', value: 'SUPPLEMENTARY_REPLY' },
-                { label: '待上传答复意见书', value: 'REPLY_SUBMISSION' },
-                { label: '待确认答复状态', value: 'CONFIRM_REPLY' },
-                { label: '已完成', value: 'COMPLETED' }
-            ]
+            clientPartnerIdOptions: [],
+            supplierPartnerIdOptions: [],
+            activeName: 'first'
         };
     },
+    computed: {
+        nowStatus() {
+            return this.workflowFormatter('', '', this.formData.workflow);
+        },
+        user() {
+            if (
+                this.formData.workflow === 'REPLY_SUBMISSION' ||
+                this.formData.workflow === 'PAYMENT_REGISTER' ||
+                this.formData.workflow === 'ANNUAL_FEE'
+            ) {
+                return '客户经理';
+            } else if (this.formData.workflow === 'REPLY_SUBMISSIONS') {
+                if (this.formData.isClientReady) {
+                    return '客户经理';
+                } else {
+                    return '项目经理';
+                }
+            } else if (this.formData.workflow) {
+                return '项目经理';
+            } else {
+                return '';
+            }
+        },
+        date() {
+            if (this.formData.workflow === 'SUPPLIER_MATERIALS') {
+                return this.formData.supplierSubmitPeriod;
+            } else if (this.formData.workflow === 'REPLY_SUBMISSION') {
+                return this.formData.submitPeriod;
+            } else {
+                return '无';
+            }
+        },
+        statusInfo() {
+            let info = [...this.statusOptions].find(item => {
+                return item.value === this.formData.applyStatus;
+            });
+
+            return (
+                info || {
+                    type: '',
+                    label: ''
+                }
+            );
+        }
+    },
     methods: {
+        applyStatusFormatter(status) {
+            let selectedOption = this.statusOptions.find(i => i.value === status);
+            if (selectedOption) {
+                return selectedOption;
+            } else {
+                return null;
+            }
+        },
+        getInfo() {
+            this.$http
+                .get('internationalPatent/getDTO/' + this.$route.query.id)
+                .then(res => {
+                    this.formData = res;
+                    this.$nextTick(() => {
+                        this.init();
+                    });
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.$message.error(e.error);
+                });
+        },
+        init() {
+            if (this.activeName === 'first') {
+                this.$refs.base.init();
+            } else if (this.activeName === 'second') {
+                this.$refs.attachmentList.init();
+            } else if (this.activeName === 'third') {
+                this.$refs.feeList.init();
+            }
+        },
+        tabClick(tab) {
+            this.$nextTick(() => {
+                this.init();
+            });
+        },
         onSave() {
             this.$refs.form.validate(valid => {
                 if (valid) {
@@ -106,16 +199,15 @@ export default {
                 }
             });
         },
-        submit() {
-            let data = { ...this.formData };
-
+        submit(info) {
+            let data = { ...info };
             this.saving = true;
             this.$http
-                .post('/internationalPatent/save', data, { body: 'json' })
+                .post('/internationalPatent/saveDTO', data, { body: 'json' })
                 .then(res => {
                     this.saving = false;
                     this.$message.success('成功');
-                    this.$router.go(-1);
+                    this.getInfo();
                 })
                 .catch(e => {
                     console.log(e);
@@ -138,8 +230,106 @@ export default {
                         this.$message.error((e || {}).error || '删除失败');
                     }
                 });
+        },
+        uploadAttement(info) {
+            let data = { ...info };
+            if (!data.url) {
+                return;
+            }
+            data.patentId = this.formData.patentId;
+            data.userId = this.$store.state.userInfo.id;
+            data.version = 1;
+            if (data.size) {
+                data.size += 'KB';
+            }
+            this.$http.post('/attachment/save', data, { body: 'json' });
+        },
+        action() {
+            if (this.formData.workflow === 'ADD_SUPPLIERS') {
+                this.$refs.addSupplierNo.show = true;
+            } else if (this.formData.workflow === 'SUPPLIER_MATERIALS') {
+                this.$refs.backSupplier.show = true;
+            } else if (this.formData.workflow === 'MAINTAIN_CASE') {
+                this.$refs.maintainCase.show = true;
+            } else if (this.formData.workflow === 'OFFICIAL_CIRCULATION') {
+                this.$refs.officeAttachment.show = true;
+            } else if (this.formData.workflow === 'SUPPLEMENTARY_REPLY') {
+                this.$refs.reply.show = true;
+            } else if (this.formData.workflow === 'REPLY_SUBMISSION') {
+                this.$refs.replySubmissions.show = true;
+            } else if (this.formData.workflow === 'CONFIRM_REPLY') {
+                this.$refs.replyResult.show = true;
+            }
         }
+    },
+    components: {
+        BaseInfo,
+        attachmentList,
+        AttachmentAdd,
+        FeeList,
+        FeeAdd,
+        MaintainCase,
+        Reply,
+        ReplySubmissions,
+        ReplyResult,
+        OfficeAttachment
     }
 };
 </script>
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+.edit-tabs {
+    position: relative;
+
+    .right-btns {
+        position: absolute;
+        right: 20px;
+        top: -44px;
+        .el-button {
+            min-width: 100px;
+        }
+    }
+}
+
+.tips {
+    .flex();
+    height: 40px;
+    background: tint(@warn, 68%);
+    border: 1px solid @warn;
+    margin: 20px 20px 0;
+    padding: 0 20px;
+    position: relative;
+
+    .tips-text {
+        margin-right: 60px;
+        .name {
+            font-size: 12px;
+            color: #5e6166;
+            line-height: 22px;
+        }
+
+        .val {
+            font-size: 12px;
+            font-weight: bold;
+            color: @warn;
+            line-height: 22px;
+            margin-left: 10px;
+        }
+    }
+
+    .el-button {
+        position: absolute;
+        right: 20px;
+    }
+}
+</style>
+<style lang="less">
+.el-dialog {
+    .el-form {
+        .el-form-item {
+            &:last-child {
+                margin-top: 70px;
+            }
+        }
+    }
+}
+</style>

+ 2 - 3
src/main/vue/src/views/InternationalPatentList.vue

@@ -76,10 +76,9 @@
             <el-table-column prop="patent.priorityDate" min-width="100" label="优先权日" :formatter="dateFormatter">
             </el-table-column>
 
-            <el-table-column label="操作" align="center" fixed="right" min-width="150">
+            <el-table-column label="操作" align="center" fixed="right" min-width="80">
                 <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="editRow(row)" type="primary" size="mini" plain>查看详情</el-button>
                 </template>
             </el-table-column>
         </el-table>