panhui 4 lat temu
rodzic
commit
edb5d38f50

+ 4 - 5
src/main/vue/src/mixins/internationalPatent.js

@@ -10,7 +10,7 @@ export default {
                         { label: '待添加供应商', value: 'ADD_SUPPLIERS' },
                         { label: '待提交供应商材料', value: 'SUPPLIER_MATERIALS' },
                         { label: '待维护案件', value: 'MAINTAIN_CASE' },
-                        { label: '待上传答复通知', value: 'REPLY_TO_NOTICE' }
+                        { label: '待官文流转', value: 'OFFICIAL_CIRCULATION' }
                     ]
                 },
                 {
@@ -18,16 +18,15 @@ export default {
                     value: 'SUBSTANTIVE_STAGE',
                     type: 'warning',
                     workflows: [
-                        { label: '待确定答复意向', value: 'PENDING_REVIEW' },
-                        { label: '不答复终止', value: 'NO_REPLY' },
-                        { label: '上传答复意见书', value: 'REPLY_SUBMISSIONS' }
+                        { label: '待补正答复', value: 'SUPPLEMENTARY_REPLY' },
+                        { label: '待上传答复意见书', value: 'REPLY_SUBMISSION' }
                     ]
                 },
                 {
                     label: '复审阶段',
                     value: 'REVIEW_STAGE',
                     type: 'warning',
-                    workflows: [{ label: '待确定答复结果', value: 'REPLY_RESULT' }]
+                    workflows: [{ label: '待确认答复状态', value: 'CONFIRM_REPLY' }]
                 },
                 {
                     label: '授权阶段',

+ 9 - 0
src/main/vue/src/router.js

@@ -258,6 +258,15 @@ const router = new Router({
                         title: '国内专利申请'
                     }
                 },
+                {
+                    path: '/internationalPatentAdd',
+                    name: 'internationalPatentAdd',
+                    component: () =>
+                        import(/* webpackChunkName: "internationalPatentEdit" */ '@/views/InternationalPatentAdd.vue'),
+                    meta: {
+                        title: '新增国际申请专利'
+                    }
+                },
                 {
                     path: '/internationalPatentEdit',
                     name: 'InternationalPatentEdit',

+ 4 - 5
src/main/vue/src/views/DomesticPatentEdit.vue

@@ -42,9 +42,9 @@
             <el-tab-pane label="费用信息" name="third">
                 <fee-list ref="feeList" :info="formData"></fee-list>
             </el-tab-pane>
-            <el-tab-pane label="流程信息" name="fourth">
+            <!-- <el-tab-pane label="流程信息" name="fourth">
                 <workflow ref="workflow" :info="formData"></workflow>
-            </el-tab-pane>
+            </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>
@@ -129,7 +129,7 @@ export default {
             rules: {},
             clientPartnerIdOptions: [],
             supplierPartnerIdOptions: [],
-            activeName: 'fourth'
+            activeName: 'first'
         };
     },
     computed: {
@@ -308,8 +308,7 @@ export default {
         Register,
         RegisterPayment,
         RegisterComplate,
-        AnnualFee,
-        Workflow
+        AnnualFee
     }
 };
 </script>

+ 133 - 28
src/main/vue/src/views/InternationalPatentAdd.vue

@@ -8,15 +8,34 @@
                     :model="formData"
                     :rules="rules"
                     ref="form"
-                    label-width="136px"
+                    label-width="116px"
                     label-position="right"
                     size="small"
-                    style="max-width: 500px;"
+                    style="width: 600px;"
+                    hide-required-asterisk
+                    inline
                 >
-                    <el-form-item prop="workflow" label="流程">
-                        <el-select v-model="formData.workflow" clearable filterable placeholder="请选择">
+                    <el-form-item prop="name" label="专利名称">
+                        <el-input style="width: 300px;" v-model="formData.name" placeholder="请输入"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="type" label="专利类型">
+                        <el-radio-group v-model="formData.type">
+                            <el-radio :label="item.value" v-for="(item, index) in typeOptions" :key="index">
+                                {{ item.label }}
+                            </el-radio>
+                        </el-radio-group>
+                    </el-form-item>
+
+                    <el-form-item prop="clientPartnerId" label="选择客户">
+                        <el-select
+                            style="width: 300px;"
+                            v-model="formData.clientPartnerId"
+                            clearable
+                            filterable
+                            placeholder="请选择"
+                        >
                             <el-option
-                                v-for="item in workflowOptions"
+                                v-for="item in clientPartnerIdOptions"
                                 :key="item.value"
                                 :label="item.label"
                                 :value="item.value"
@@ -24,27 +43,97 @@
                             </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 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="10px" 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
+                        style="margin-bottom:10px;"
+                        prop="applicantAddress"
+                        label="注册地址"
+                        class="input-pre-zh"
+                    >
+                        <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-input
+                            style="width:480px;"
+                            v-model="formData.applicantEnAddress"
+                            placeholder="请输入英文地址"
+                        >
+                            <template #prepend>英</template>
+                        </el-input>
+                    </el-form-item>
+
+                    <el-form-item
+                        style="margin-bottom:10px;"
+                        prop="inventorName"
+                        label="发明人姓名"
+                        class="input-pre-zh"
+                    >
+                        <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-input style="width:480px;" v-model="formData.inventorEnName" placeholder="请输入英文名称">
+                            <template #prepend>英</template>
+                        </el-input>
                     </el-form-item>
-                    <el-form-item prop="pctApplyDate" label="pct申请日">
+
+                    <el-form-item prop="priorityDate" label="优先权日">
                         <el-date-picker
-                            v-model="formData.pctApplyDate"
+                            v-model="formData.priorityDate"
                             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 prop="priorityCountry" label="优先权国别">
+                        <el-input v-model="formData.priorityCountry"></el-input>
+                    </el-form-item>
+                    <el-form-item label="PCT申请信息表单" prop="attachment1">
+                        <attachment-upload
+                            v-model="formData.attachment1"
+                            :fileSize.sync="formData.attachment1.size"
+                        ></attachment-upload>
                     </el-form-item>
-                    <el-form-item prop="replyStatus" label="答复意见状态">
-                        <el-input v-model="formData.replyStatus"></el-input>
+                    <el-form-item label="总委托书" prop="attachment2">
+                        <attachment-upload
+                            v-model="formData.attachment2"
+                            :fileSize.sync="formData.attachment2.size"
+                        ></attachment-upload>
                     </el-form-item>
-                    <el-form-item prop="officialCirculation" label="是否继续官文流转">
-                        <el-switch v-model="formData.officialCirculation"></el-switch>
+                    <el-form-item label="申请文稿" prop="attachment3">
+                        <attachment-upload
+                            v-model="formData.attachment3"
+                            :fileSize.sync="formData.attachment3.size"
+                        ></attachment-upload>
+                    </el-form-item>
+                    <el-form-item label="自定义附件" prop="attachment4">
+                        <el-input
+                            size="mini"
+                            v-model="formData.attachment4.attachmentName"
+                            placeholder="请输入附件名称"
+                        ></el-input>
+
+                        <attachment-upload
+                            v-model="formData.attachment4"
+                            :fileSize.sync="formData.attachment4.size"
+                        ></attachment-upload>
                     </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"
@@ -61,22 +150,32 @@
 export default {
     name: 'InternationalPatentEdit',
     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.$http
+            .post('/partner/all', { size: 1000, query: { del: false, type: 'CLIENT' } }, { body: 'json' })
+            .then(res => {
+                if (res.content.length > 0) {
+                    res.content.forEach(item => {
+                        this.clientPartnerIdOptions.push({
+                            label: item.name,
+                            value: item.id
+                        });
+                    });
+                }
+            })
+            .catch(e => {
+                console.log(e);
+                this.$message.error(e.error);
+            });
     },
     data() {
         return {
             saving: false,
-            formData: {},
+            formData: {
+                attachment1: { attachmentName: 'PCT申请信息表单', fileName: '', url: '', remark: '', size: '' },
+                attachment2: { attachmentName: '总委托书', fileName: '', url: '', remark: '', size: '' },
+                attachment3: { attachmentName: '申请文稿', fileName: '', url: '', remark: '', size: '' },
+                attachment4: { attachmentName: '', fileName: '', url: '', remark: '', size: '' }
+            },
             rules: {},
             workflowOptions: [
                 { label: '待添加供应商', value: 'ADD_SUPPLIERS' },
@@ -87,7 +186,13 @@ export default {
                 { label: '待上传答复意见书', value: 'REPLY_SUBMISSION' },
                 { label: '待确认答复状态', value: 'CONFIRM_REPLY' },
                 { label: '已完成', value: 'COMPLETED' }
-            ]
+            ],
+            typeOptions: [
+                { label: '发明专利', value: 'INVENTION' },
+                { label: '实用新型专利', value: 'UTILITY_MODEL' },
+                { label: '外观设计专利', value: 'APPEARANCE_DESIGN' }
+            ],
+            clientPartnerIdOptions: []
         };
     },
     methods: {

+ 78 - 27
src/main/vue/src/views/InternationalPatentList.vue

@@ -18,6 +18,32 @@
             >
                 <el-button @click="getData" slot="append" icon="el-icon-search"> </el-button>
             </el-input>
+
+            <div class="filters-left">
+                <el-radio-group class="filters-item" v-model="applyStatus" size="mini" @change="refreash">
+                    <el-radio-button v-for="(item, index) in statusOptions" :key="index" :label="item.value">
+                        {{ item.label }}
+                    </el-radio-button>
+                </el-radio-group>
+
+                <el-select
+                    size="mini"
+                    class="filters-item"
+                    v-model="logoWorkflow"
+                    placeholder="筛选节点流程"
+                    clearable
+                    filterable
+                    @change="refreash"
+                >
+                    <el-option
+                        v-for="item in selectLogoWorkflowOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                    >
+                    </el-option>
+                </el-select>
+            </div>
         </div>
         <el-table
             :data="tableData"
@@ -29,18 +55,27 @@
             cell-class-name="table-cell"
             :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="workflow" label="流程" :formatter="workflowFormatter"> </el-table-column>
-            <el-table-column prop="pctApplyNo" label="pct申请号"> </el-table-column>
-            <el-table-column prop="pctApplyDate" label="pct申请日"> </el-table-column>
-            <el-table-column prop="actualOfficialAmount" label="官费实际金额"> </el-table-column>
-            <el-table-column prop="replyStatus" label="答复意见状态"> </el-table-column>
-            <el-table-column prop="officialCirculation" label="是否继续官文流转">
+            <el-table-column align="center" type="selection" width="50"> </el-table-column>
+            <el-table-column prop="patent" label="案件状态">
                 <template slot-scope="{ row }">
-                    <el-tag :type="row.officialCirculation ? '' : 'info'">{{ row.officialCirculation }}</el-tag>
+                    <el-tag
+                        v-if="row.patent && row.patent.applyStatus"
+                        :type="applyStatusFormatter(row.patent.applyStatus).type"
+                        >{{ applyStatusFormatter(row.patent.applyStatus).label }}</el-tag
+                    >
                 </template>
             </el-table-column>
+            <el-table-column prop="patent.uwNo" min-width="140" label="寰球案号"> </el-table-column>
+            <el-table-column prop="patent.name" min-width="160" label="专利名称"> </el-table-column>
+            <el-table-column prop="workflow" min-width="120" label="当前流程" :formatter="workflowFormatter">
+            </el-table-column>
+            <el-table-column prop="pctApplyDate" label="pct申请日"> </el-table-column>
+            <el-table-column prop="pctApplyNo" label="pct申请号"> </el-table-column>
+            <el-table-column prop="patent.applyDate" min-width="100" label="申请日" :formatter="dateFormatter">
+            </el-table-column>
+            <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">
                 <template slot-scope="{ row }">
                     <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
@@ -74,34 +109,43 @@
 <script>
 import { mapState } from 'vuex';
 import pageableTable from '@/mixins/pageableTable';
-
+import internationalPatent from '@/mixins/internationalPatent';
 export default {
     name: 'InternationalPatentList',
-    mixins: [pageableTable],
+    mixins: [pageableTable, internationalPatent],
     data() {
         return {
             multipleMode: false,
             search: '',
-            url: '/internationalPatent/all',
+            url: '/internationalPatent/allDTO',
             downloading: false,
-            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' }
-            ]
+            applyStatus: 'APPLY_STAGE',
+            logoWorkflow: ''
         };
     },
     computed: {
         selection() {
             return this.$refs.table.selection.map(i => i.id);
+        },
+        selectLogoWorkflowOptions() {
+            if (this.applyStatus) {
+                return [...this.statusOptions].find(item => {
+                    return item.value === this.applyStatus;
+                })?.workflows;
+            } else {
+                return this.workflowOptions;
+            }
         }
     },
     methods: {
+        applyStatusFormatter(status) {
+            let selectedOption = this.statusOptions.find(i => i.value === status);
+            if (selectedOption) {
+                return selectedOption;
+            } else {
+                return null;
+            }
+        },
         workflowFormatter(row, column, cellValue, index) {
             let selectedOption = this.workflowOptions.find(i => i.value === cellValue);
             if (selectedOption) {
@@ -110,7 +154,13 @@ export default {
             return '';
         },
         beforeGetData() {
-            return { search: this.search };
+            return {
+                search: this.search,
+                query: {
+                    applyStatus: this.applyStatus,
+                    workflow: this.logoWorkflow
+                }
+            };
         },
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;
@@ -120,10 +170,7 @@ export default {
         },
         addRow() {
             this.$router.push({
-                path: '/internationalPatentEdit',
-                query: {
-                    ...this.$route.query
-                }
+                path: '/internationalPatentAdd'
             });
         },
         editRow(row) {
@@ -181,6 +228,10 @@ export default {
                         this.$message.error(e.error);
                     }
                 });
+        },
+        refreash() {
+            this.page = 1;
+            this.getData();
         }
     }
 };