|
@@ -0,0 +1,244 @@
|
|
|
+<template>
|
|
|
+ <div id="infos">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24" class="main animate__animated animate__backInRight" v-loading="loading">
|
|
|
+ <el-col :span="24" class="one">
|
|
|
+ <cSearch :is_title="false" :is_back="true" @toBack="toBack"></cSearch>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="two">
|
|
|
+ <el-row class="two_1">
|
|
|
+ <el-col :span="12" class="l">
|
|
|
+ <el-col :span="24" class="title">交易信息</el-col>
|
|
|
+ <el-col :span="24" class="info">
|
|
|
+ <cForm :span="24" :fields="formFields" :form="form" :isSave="false" label-width="auto" :disabled="true">
|
|
|
+ <template #type>
|
|
|
+ <el-option v-for="(i, index) in typeList" :key="index" :label="i.label" :value="i.value"></el-option>
|
|
|
+ </template>
|
|
|
+ <template #is_report>
|
|
|
+ <el-option v-for="(i, index) in isnoList" :key="index" :label="i.label" :value="i.value"></el-option>
|
|
|
+ </template>
|
|
|
+ <template #report>
|
|
|
+ <el-link :underline="false" v-for="i in form.report" :key="i.url" :href="i.url" target="_blank">{{ i.name }}</el-link>
|
|
|
+ </template>
|
|
|
+ <template #record>
|
|
|
+ <cTable :fields="recordfields" :opera="[]" :list="form.record" :usePage="false"> </cTable>
|
|
|
+ </template>
|
|
|
+ </cForm>
|
|
|
+ </el-col>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12" class="r">
|
|
|
+ <el-col :span="24" class="title">合同信息</el-col>
|
|
|
+ <el-col :span="24" class="info">
|
|
|
+ <el-row class="contract">
|
|
|
+ <el-col :span="24" class="contract_1">
|
|
|
+ <span>甲方(转让方):</span>
|
|
|
+ <span>
|
|
|
+ <el-input class="input inputlarge" v-model="form.contract.partya" placeholder="请输入甲方名称" :disabled="true" />
|
|
|
+ </span>
|
|
|
+ <span>;</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="contract_1">
|
|
|
+ <span>乙方(受让方):</span>
|
|
|
+ <span>
|
|
|
+ <el-input class="input inputlarge" v-model="form.contract.partyb" placeholder="请输入甲方名称" />
|
|
|
+ </span>
|
|
|
+ <span>;</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="contract_1">
|
|
|
+ <span>甲,乙方经过平等协商;自愿订立专利权转让合同,并共同遵照执行;</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="contract_1">
|
|
|
+ <span>第一条:甲方将其享有的</span>
|
|
|
+ <span>
|
|
|
+ <el-input class="input" v-model="form.contract.patent_name" placeholder="请输入专利名称" :disabled="true" />
|
|
|
+ </span>
|
|
|
+ <span>专利权有偿转让给乙方,专利号为:</span>
|
|
|
+ <span>
|
|
|
+ <el-input class="input" v-model="form.contract.create_number" placeholder="请输入专利号" :disabled="true" />
|
|
|
+ </span>
|
|
|
+ <span>;</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="contract_1">
|
|
|
+ <span>第二条:甲方向乙方转让</span>
|
|
|
+ <span>
|
|
|
+ <el-input class="input" v-model="form.contract.patent_name" placeholder="请输入专利名称" :disabled="true" />
|
|
|
+ </span>
|
|
|
+ <span>专利权;</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="contract_1">
|
|
|
+ <span>第三条:乙方为此向甲方支付专利权转让费用</span>
|
|
|
+ <span>
|
|
|
+ <el-input class="input" v-model="form.contract.money" placeholder="请输入费用" :disabled="true" />
|
|
|
+ </span>
|
|
|
+ <span>元,于本合同生效后</span>
|
|
|
+ <span>
|
|
|
+ <el-input class="input" v-model="form.contract.days" placeholder="请输入天数" :disabled="true" />
|
|
|
+ </span>
|
|
|
+ <span>天内一次付清;</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="contract_1">
|
|
|
+ <span>第四条:如任何一方违反本合同约定给对方造成损失,守约方可以要求对方承担违约责任;</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="contract_1">
|
|
|
+ <span>第五条:甲方保证此转让行为不侵犯任何第三方的合法权益;</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="contract_1">
|
|
|
+ <span>第六条:本合同于各方签字盖章后生效,未经各方同意,任何一方均无权修改或变更本合同约定;</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="contract_1">
|
|
|
+ <span>第七条:任何因本合同的履行而产生的争议,均应当友好协商解决,如无法协商解决,各方同意交由</span>
|
|
|
+ <span>
|
|
|
+ <el-input class="input" v-model="form.contract.address" placeholder="请输入省市" :disabled="true" />
|
|
|
+ </span>
|
|
|
+ <span>仲裁委员会按照该会现时有效的仲裁规则予以仲裁;</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="contract_1">
|
|
|
+ <span>第八条:本合同一式三份,双方各执一份,备案一份; </span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup lang="ts">
|
|
|
+// 基础
|
|
|
+import type { Ref } from 'vue';
|
|
|
+import { onMounted, ref } from 'vue';
|
|
|
+import { useRoute } from 'vue-router';
|
|
|
+
|
|
|
+// 接口
|
|
|
+import { TranstionStore } from '@common/src/stores/patent/transtion';
|
|
|
+import { DictDataStore } from '@common/src/stores/system/dictData'; // 字典表
|
|
|
+import type { IQueryResult } from '@/util/types.util';
|
|
|
+const transAxios = TranstionStore();
|
|
|
+const dictAxios = DictDataStore();
|
|
|
+
|
|
|
+// 路由
|
|
|
+const route = useRoute();
|
|
|
+
|
|
|
+// 加载中
|
|
|
+const loading: Ref<any> = ref(false);
|
|
|
+
|
|
|
+const form: Ref<any> = ref({ report: [], contract: {} });
|
|
|
+const formFields: Ref<any> = ref([
|
|
|
+ { label: '专利名称', model: 'patent_name' },
|
|
|
+ { label: '申请号', model: 'create_number' },
|
|
|
+ { label: '当前权利人', model: 'on_obligee' },
|
|
|
+ { label: '联系人', model: 'contact' },
|
|
|
+ { label: '手机号', model: 'phone' },
|
|
|
+ { label: '电子邮箱', model: 'email' },
|
|
|
+ { label: '投资预算(万元)', model: 'budget' },
|
|
|
+ { label: '交易类型', model: 'type', type: 'select' },
|
|
|
+ { label: '是否有评估报告', model: 'is_report', type: 'select' },
|
|
|
+ { label: '评估报告', model: 'report', custom: true },
|
|
|
+ { label: '技术说明', model: 'requirementdesc', type: 'textarea' },
|
|
|
+ { label: '商业预期', model: 'expect', type: 'textarea' },
|
|
|
+ { label: '合作条件及要求', model: 'condition', type: 'textarea' },
|
|
|
+ { label: '摘要', model: 'abstract', type: 'textarea' },
|
|
|
+ { label: '变更后专利权人', model: 'on_afterobligee' },
|
|
|
+ { label: '专利权转移日期', model: 'transfer_date', type: 'date' },
|
|
|
+ { label: '审核记录', model: 'record', custom: true }
|
|
|
+]);
|
|
|
+const recordfields: Ref<any> = ref([
|
|
|
+ { label: '状态', model: 'status', format: (i) => getDict(i, 'status') },
|
|
|
+ { label: '提交人', model: 'save_name' },
|
|
|
+ { label: '提交时间', model: 'create_time' },
|
|
|
+ { label: '提交内容', model: 'content' }
|
|
|
+]);
|
|
|
+
|
|
|
+// 字典表
|
|
|
+const typeList: Ref<any> = ref([]);
|
|
|
+const statusList: Ref<any> = ref([]);
|
|
|
+const isnoList: Ref<any> = ref([]);
|
|
|
+
|
|
|
+// 请求
|
|
|
+onMounted(async () => {
|
|
|
+ loading.value = true;
|
|
|
+ await searchOther();
|
|
|
+ await search();
|
|
|
+ loading.value = false;
|
|
|
+});
|
|
|
+const search = async () => {
|
|
|
+ let id = route.query.id;
|
|
|
+ let info: any = { report: [], contract: {} };
|
|
|
+ if (id) {
|
|
|
+ let res: IQueryResult = await transAxios.fetch(id);
|
|
|
+ if (res.errcode == '0') info = res.data;
|
|
|
+ }
|
|
|
+ form.value = info;
|
|
|
+};
|
|
|
+const getDict = (value, model) => {
|
|
|
+ if (model == 'status') {
|
|
|
+ let data = statusList.value.find((i) => i.value == value);
|
|
|
+ if (data) return data.label;
|
|
|
+ else return '暂无';
|
|
|
+ }
|
|
|
+};
|
|
|
+// 查询其他信息
|
|
|
+const searchOther = async () => {
|
|
|
+ let res: IQueryResult;
|
|
|
+ // 类型
|
|
|
+ res = await dictAxios.query({ type: 'patent_trans_type' });
|
|
|
+ if (res.errcode == '0') typeList.value = res.data;
|
|
|
+ // 状态
|
|
|
+ res = await dictAxios.query({ type: 'patent_trans_status' });
|
|
|
+ if (res.errcode == '0') statusList.value = res.data;
|
|
|
+ res = await dictAxios.query({ type: 'common_isno' });
|
|
|
+ if (res.errcode == '0') isnoList.value = res.data;
|
|
|
+};
|
|
|
+// 返回上一页
|
|
|
+const toBack = () => {
|
|
|
+ window.history.go(-1);
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style scoped lang="scss">
|
|
|
+.main {
|
|
|
+ .two {
|
|
|
+ .two_1 {
|
|
|
+ .title {
|
|
|
+ text-align: center;
|
|
|
+ font-size: 25px;
|
|
|
+ font-family: monospace;
|
|
|
+ font-weight: bold;
|
|
|
+ margin: 0 0 10px 0;
|
|
|
+ }
|
|
|
+ .info {
|
|
|
+ border: 1px solid #f1f1f1;
|
|
|
+ padding: 10px;
|
|
|
+ border-radius: 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.contract {
|
|
|
+ padding: 0 10px;
|
|
|
+ .contract_1 {
|
|
|
+ margin: 0 0 10px 0;
|
|
|
+ span {
|
|
|
+ font-size: 16px;
|
|
|
+ font-family: monospace;
|
|
|
+ font-weight: bold;
|
|
|
+ }
|
|
|
+ .input {
|
|
|
+ width: 15%;
|
|
|
+ margin: 0 5px;
|
|
|
+ :deep(.el-input__wrapper) {
|
|
|
+ box-shadow: none;
|
|
|
+ border-bottom: 1px solid #000000;
|
|
|
+ border-radius: 0;
|
|
|
+ }
|
|
|
+ :deep(.el-input__inner) {
|
|
|
+ color: #000000;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .inputlarge {
|
|
|
+ width: 30%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|