Browse Source

客户个人主页

zhangchuang 5 days ago
parent
commit
9917e14eca

+ 52 - 0
src/api/system/system.api.ts

@@ -257,3 +257,55 @@ export const postTechnologyTransfer = async (data: any) => {
     httpErrorHandle();
   }
 };
+
+// 专利申请列表
+// export const getPatentApplicationList = async (data: any) => {
+//   try {
+//     const res = await http(RequestHttpEnum.GET)(
+//       "/intellectual-property/patent-application/list",
+//       data
+//     );
+//     return res;
+//   } catch {
+//     httpErrorHandle();
+//   }
+// };
+
+// 商标申请列表
+export const getTrademarkApplicationList = async (data: any) => {
+  try {
+    const res = await http(RequestHttpEnum.GET)(
+      "/intellectual-property/trademark-application/list",
+      data
+    );
+    return res;
+  } catch {
+    httpErrorHandle();
+  }
+};
+
+// 需求发布记录
+export const getTechnologyInnovationRequirementsList = async (data: any) => {
+  try {
+    const res = await http(RequestHttpEnum.GET)(
+      "/technology-innovation-requirements/list",
+      data
+    );
+    return res;
+  } catch {
+    httpErrorHandle();
+  }
+};
+
+// 科技成果转化列表
+// export const getTechnologyTransferList = async (data: any) => {
+//   try {
+//     const res = await http(RequestHttpEnum.GET)(
+//       "/technology-transfer/list",
+//       data
+//     );
+//     return res;
+//   } catch {
+//     httpErrorHandle();
+//   }
+// };

+ 88 - 94
src/views/user/PatentApplicationRecords.vue

@@ -8,7 +8,7 @@
       <div style="display: flex; align-items: center">
         <el-form-item label="专利名称">
           <el-input
-            v-model="queryForm.trademarkName"
+            v-model="queryForm.patentsName"
             placeholder="请输入专利名称"
             style="width: 200px"
           ></el-input>
@@ -24,7 +24,7 @@
 
         <el-form-item label="创建时间">
           <el-date-picker
-            v-model="queryForm.createDate"
+            v-model="queryForm.createTime"
             type="date"
             placeholder="选择日期"
             style="width: 200px"
@@ -39,46 +39,46 @@
       <div style="display: flex; align-items: center; margin-top: 10px">
         <el-form-item label="法律状态">
           <el-select
-            v-model="queryForm.legalStatus"
+            v-model="queryForm.legislationStatus"
             placeholder="请选择法律状态"
             style="width: 200px"
           >
             <el-option
-              v-for="status in legalStatuses"
-              :key="status.value"
-              :label="status.label"
-              :value="status.value"
-            ></el-option>
+              v-for="item in legal_status"
+              :label="item.label"
+              :value="item.value"
+              :key="item.value"
+            />
           </el-select>
         </el-form-item>
 
         <el-form-item label="年费状态">
           <el-select
-            v-model="queryForm.annualFeeStatus"
+            v-model="queryForm.paymentStatus"
             placeholder="请选择年费状态"
             style="width: 200px"
           >
             <el-option
-              v-for="feeStatus in annualFeeStatuses"
-              :key="feeStatus.value"
-              :label="feeStatus.label"
-              :value="feeStatus.value"
-            ></el-option>
+              v-for="item in annual_fee_payment_status"
+              :label="item.label"
+              :value="item.value"
+              :key="item.value"
+            />
           </el-select>
         </el-form-item>
 
         <el-form-item label="专利类型">
           <el-select
-            v-model="queryForm.trademarkType"
+            v-model="queryForm.patentType"
             placeholder="请选择专利类型"
             style="width: 200px"
           >
             <el-option
-              v-for="type in trademarkTypes"
-              :key="type.value"
-              :label="type.label"
-              :value="type.value"
-            ></el-option>
+              v-for="item in patents_type"
+              :label="item.label"
+              :value="item.value"
+              :key="item.value"
+            />
           </el-select>
         </el-form-item>
 
@@ -89,47 +89,20 @@
     </el-form>
 
     <!-- 数据表格 -->
-    <el-table :data="trademarkData" style="width: 100%">
+    <el-table :data="tableData" style="width: 100%">
       <el-table-column
-        prop="applicationNumber"
-        label="申请号"
-        width="180"
-      ></el-table-column>
-      <el-table-column
-        prop="registrationNumber"
-        label="注册号"
-        width="180"
-      ></el-table-column>
-      <el-table-column prop="trademarkName" label="专利名称"></el-table-column>
-      <el-table-column
-        prop="applicationDate"
-        label="申请日期"
-        width="180"
-      ></el-table-column>
-      <el-table-column
-        prop="trademarkType"
-        label="专利类型"
-        width="120"
-      ></el-table-column>
-      <el-table-column
-        prop="currentStatus"
-        label="当前状态"
-        width="120"
-      ></el-table-column>
-      <el-table-column
-        prop="reviewProgress"
-        label="审查进度"
-        width="120"
-      ></el-table-column>
-      <el-table-column prop="legalStatus" label="法律状态"></el-table-column>
+        v-for="field in fieldsConfig.filter((item) => item.visible)"
+        :key="field.key"
+        :prop="field.key"
+        :label="field.label"
+      />
       <el-table-column label="操作" width="180">
         <template v-slot="scope">
-          <el-button @click="handleEdit(scope.row)" type="text" size="small"
+          <el-button @click="handleEdit(scope.row)" size="small"
             >编辑</el-button
           >
           <el-button
             @click="handleDelete(scope.row)"
-            type="text"
             size="small"
             style="color: red"
             >删除</el-button
@@ -141,60 +114,77 @@
 </template>
 
 <script lang="ts" setup>
-import { ref } from "vue";
-
-interface QueryForm {
-  trademarkName: string;
-  applicationNumber: string;
-  createDate: Date | null;
-  legalStatus: string;
-  annualFeeStatus: string;
-  trademarkType: string;
-}
+import { ref, onMounted } from "vue";
+import { getPatentApplicationList } from "@/api";
+import { useDictStore } from "@/store/modules/useDictStore/index";
 
-const queryForm = ref<QueryForm>({
-  trademarkName: "",
+const queryForm = ref<any>({
+  patentsName: "",
   applicationNumber: "",
-  createDate: null,
-  legalStatus: "",
-  annualFeeStatus: "",
-  trademarkType: "",
+  createTime: "",
+  legislationStatus: "",
+  paymentStatus: "",
+  patentType: "",
 });
 
-const trademarkTypes = ref([
-  { label: "普通专利", value: "ordinary" },
-  { label: "集体专利", value: "collective" },
-  { label: "证明专利", value: "certification" },
-]);
-
-const legalStatuses = ref([
-  { label: "有效", value: "valid" },
-  { label: "失效", value: "invalid" },
-  { label: "申请中", value: "pending" },
-]);
-
-const annualFeeStatuses = ref([
-  { label: "已缴纳", value: "paid" },
-  { label: "未缴纳", value: "unpaid" },
+const currentPage = ref(1);
+const pageSize = ref(10);
+const total = ref(0);
+const tableData = ref([]);
+
+// 字典
+const dictStore = useDictStore();
+const legal_status = dictStore.dictData.legal_status;
+const annual_fee_payment_status = dictStore.dictData.annual_fee_payment_status;
+const patents_type = dictStore.dictData.patents_type;
+
+// 定义所有字段的配置项
+const fieldsConfig = ref([
+  { key: "patentsName", label: "专利名称", visible: true }, // 专利名称
+  { key: "applicationNumber", label: "申请号", visible: true }, // 申请号
+  { key: "applicationDate", label: "申请日", visible: true }, // 申请日
+  { key: "internalCaseNumber", label: "内部案号", visible: true }, // 内部案号
+  { key: "technologyName", label: "技术对接人", visible: true }, // 技术对接人
+  { key: "auditOfOfficialDeadlines", label: "审意官方绝限期", visible: true }, // 审意官方绝限期
+  { key: "patentRemarks", label: "专利备注", visible: true }, // 专利备注
+  { key: "patentee", label: "专利权人", visible: false }, // 专利权人
+  { key: "firstDeviseName", label: "发明人", visible: false }, // 发明人
+  { key: "patentType", label: "专利类型", visible: false }, // 专利类型
+  { key: "patentStatus", label: "专利进度", visible: false }, // 专利进度
+  { key: "legislationStatus", label: "法律状态", visible: false }, // 法律状态
+  { key: "paymentStatus", label: "年费缴纳", visible: false }, // 年费缴纳
+  { key: "priorityReview", label: "优先审查", visible: false }, // 优先审查
+  { key: "agency", label: "代理机构", visible: false }, // 代理机构
+  { key: "involvingTechnicalRoutes", label: "涉及技术路线", visible: false }, // 涉及技术路线
+  { key: "logs", label: "日志", visible: false }, // 日志
+  // 可根据需要添加更多字段
 ]);
 
-const trademarkData = ref([]);
+const pageInit = async () => {
+  const data = {
+    pageSize: pageSize.value,
+    pageNumber: currentPage.value,
+    ...queryForm.value,
+  };
+  const res = (await getPatentApplicationList(data)) as unknown as any;
+  tableData.value = res.data.list;
+  total.value = res.data.total;
+};
 
 const handleSearch = () => {
-  // 执行查询逻辑,例如向后端发送请求
-  console.log("查询条件:", queryForm.value);
-  // 这里可以填充 trademarkData 以更新表格显示
+  pageInit();
 };
 
 const handleReset = () => {
   queryForm.value = {
-    trademarkName: "",
+    patentsName: "",
     applicationNumber: "",
-    createDate: null,
-    legalStatus: "",
-    annualFeeStatus: "",
-    trademarkType: "",
+    createTime: "",
+    legislationStatus: "",
+    paymentStatus: "",
+    patentType: "",
   };
+  pageInit();
 };
 
 const handleEdit = (row: any) => {
@@ -206,6 +196,10 @@ const handleDelete = (row: any) => {
   // 删除逻辑
   console.log("删除行:", row);
 };
+
+onMounted(() => {
+  pageInit();
+});
 </script>
 
 <style lang="scss" scoped>

+ 135 - 88
src/views/user/TechAchievementTransformation.vue

@@ -1,45 +1,85 @@
-<!-- 技术成果转化 -->
+<!-- 专利注册记录 -->
 <template>
   <div class="page">
     <div class="page-title">技术成果发布记录</div>
 
     <!-- 查询条件 -->
     <el-form :model="queryForm" class="query-form" inline label-width="100px">
-      <div style="display: flex; align-items: center;">
-        <el-form-item label="发布状态">
-          <el-select
-            v-model="queryForm.publishStatus"
-            placeholder="请选择发布状态"
+      <div style="display: flex; align-items: center">
+        <el-form-item label="专利名称">
+          <el-input
+            v-model="queryForm.patentsName"
+            placeholder="请输入专利名称"
             style="width: 200px"
-          >
-            <el-option
-              v-for="status in publishStatuses"
-              :key="status.value"
-              :label="status.label"
-              :value="status.value"
-            ></el-option>
-          </el-select>
+          ></el-input>
         </el-form-item>
 
-        <el-form-item label="发布时间">
+        <el-form-item label="申请编号">
+          <el-input
+            v-model="queryForm.applicationNumber"
+            placeholder="请输入申请编号"
+            style="width: 200px"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="创建时间">
           <el-date-picker
-            v-model="queryForm.publishDate"
+            v-model="queryForm.createTime"
             type="date"
-            placeholder="选择发布日期"
+            placeholder="选择日期"
             style="width: 200px"
           ></el-date-picker>
         </el-form-item>
 
-        <el-form-item label="成果名称">
-          <el-input
-            v-model="queryForm.outcomeName"
-            placeholder="请输入成果名称"
+        <el-form-item>
+          <el-button type="primary" @click="handleSearch">查询</el-button>
+        </el-form-item>
+      </div>
+
+      <div style="display: flex; align-items: center; margin-top: 10px">
+        <el-form-item label="法律状态">
+          <el-select
+            v-model="queryForm.legislationStatus"
+            placeholder="请选择法律状态"
             style="width: 200px"
-          ></el-input>
+          >
+            <el-option
+              v-for="item in legal_status"
+              :label="item.label"
+              :value="item.value"
+              :key="item.value"
+            />
+          </el-select>
         </el-form-item>
 
-        <el-form-item>
-          <el-button type="primary" @click="handleSearch">查询</el-button>
+        <el-form-item label="年费状态">
+          <el-select
+            v-model="queryForm.paymentStatus"
+            placeholder="请选择年费状态"
+            style="width: 200px"
+          >
+            <el-option
+              v-for="item in annual_fee_payment_status"
+              :label="item.label"
+              :value="item.value"
+              :key="item.value"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="专利类型">
+          <el-select
+            v-model="queryForm.patentType"
+            placeholder="请选择专利类型"
+            style="width: 200px"
+          >
+            <el-option
+              v-for="item in patents_type"
+              :label="item.label"
+              :value="item.value"
+              :key="item.value"
+            />
+          </el-select>
         </el-form-item>
 
         <el-form-item>
@@ -49,40 +89,24 @@
     </el-form>
 
     <!-- 数据表格 -->
-    <el-table :data="outcomeData" style="width: 100%">
-      <el-table-column
-        prop="technologyOutcomeName"
-        label="科技成果名称"
-      ></el-table-column>
-      <el-table-column
-        prop="industry"
-        label="所属行业"
-        width="180"
-      ></el-table-column>
-      <el-table-column
-        prop="maturity"
-        label="成熟度"
-        width="120"
-      ></el-table-column>
+    <el-table :data="tableData" style="width: 100%">
       <el-table-column
-        prop="publishDate"
-        label="发布时间"
-      ></el-table-column>
-      <el-table-column
-        prop="publishStatus"
-        label="发布状态"
-      ></el-table-column>
+        v-for="field in fieldsConfig.filter((item) => item.visible)"
+        :key="field.key"
+        :prop="field.key"
+        :label="field.label"
+      />
       <el-table-column label="操作" width="180">
         <template v-slot="scope">
-          <el-button @click="handleDetails(scope.row)" type="text" size="small">
-            详情
-          </el-button>
-          <el-button @click="handleWithdraw(scope.row)" type="text" size="small" style="color: red">
-            撤回
-          </el-button>
-          <el-button @click="handleEdit(scope.row)" type="text" size="small">
-            修改
-          </el-button>
+          <el-button @click="handleEdit(scope.row)" size="small"
+            >编辑</el-button
+          >
+          <el-button
+            @click="handleDelete(scope.row)"
+            size="small"
+            style="color: red"
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
@@ -90,56 +114,79 @@
 </template>
 
 <script lang="ts" setup>
-import { ref } from "vue";
-
-interface QueryForm {
-  publishStatus: string;
-  publishDate: Date | null;
-  outcomeName: string;
-}
-
-const queryForm = ref<QueryForm>({
-  publishStatus: "",
-  publishDate: null,
-  outcomeName: "",
+import { ref, onMounted } from "vue";
+import { getTechnologyTransferList } from "@/api";
+import { useDictStore } from "@/store/modules/useDictStore/index";
+
+const queryForm = ref<any>({
+  patentsName: "",
+  applicationNumber: "",
+  createTime: "",
+  legislationStatus: "",
+  paymentStatus: "",
+  patentType: "",
 });
 
-const publishStatuses = ref([
-  { label: "已发布", value: "published" },
-  { label: "待发布", value: "pending" },
-  { label: "已撤回", value: "withdrawn" },
+const currentPage = ref(1);
+const pageSize = ref(10);
+const total = ref(0);
+const tableData = ref([]);
+
+// 字典
+const dictStore = useDictStore();
+const legal_status = dictStore.dictData.legal_status;
+const annual_fee_payment_status = dictStore.dictData.annual_fee_payment_status;
+const patents_type = dictStore.dictData.patents_type;
+
+// 定义所有字段的配置项
+const fieldsConfig = ref([
+  { key: "technologicalNeedsName", label: "科技成果名称", visible: true }, 
+  { key: "sector", label: "所属行业", visible: true },
+  { key: "maturityLevel", label: "成熟度", visible: true }, 
+  { key: "createTime", label: "发布时间", visible: true }, 
+  { key: "auditStatus", label: "发布状态", visible: true },
 ]);
 
-const outcomeData = ref([]);
+const pageInit = async () => {
+  const data = {
+    pageSize: pageSize.value,
+    pageNumber: currentPage.value,
+    ...queryForm.value,
+  };
+  const res = (await getTechnologyTransferList(data)) as unknown as any;
+  tableData.value = res.data.list;
+  total.value = res.data.total;
+};
 
 const handleSearch = () => {
-  // 执行查询逻辑,例如向后端发送请求
-  console.log("查询条件:", queryForm.value);
-  // 这里可以填充 outcomeData 以更新表格显示
+  pageInit();
 };
 
 const handleReset = () => {
   queryForm.value = {
-    publishStatus: "",
-    publishDate: null,
-    outcomeName: "",
+    patentsName: "",
+    applicationNumber: "",
+    createTime: "",
+    legislationStatus: "",
+    paymentStatus: "",
+    patentType: "",
   };
+  pageInit();
 };
 
-const handleDetails = (row: any) => {
-  // 详情逻辑
-  console.log("详情行:", row);
+const handleEdit = (row: any) => {
+  // 编辑逻辑
+  console.log("编辑行:", row);
 };
 
-const handleWithdraw = (row: any) => {
-  // 撤回逻辑
-  console.log("撤回行:", row);
+const handleDelete = (row: any) => {
+  // 删除逻辑
+  console.log("删除行:", row);
 };
 
-const handleEdit = (row: any) => {
-  // 修改逻辑
-  console.log("修改行:", row);
-};
+onMounted(() => {
+  pageInit();
+});
 </script>
 
 <style lang="scss" scoped>

+ 135 - 88
src/views/user/TechInnovationDemand.vue

@@ -1,45 +1,85 @@
-<!-- 技术创新需求 -->
+<!-- 专利注册记录 -->
 <template>
   <div class="page">
     <div class="page-title">需求发布记录</div>
 
     <!-- 查询条件 -->
     <el-form :model="queryForm" class="query-form" inline label-width="100px">
-      <div style="display: flex; align-items: center;">
-        <el-form-item label="发布状态">
-          <el-select
-            v-model="queryForm.publishStatus"
-            placeholder="请选择发布状态"
+      <div style="display: flex; align-items: center">
+        <el-form-item label="专利名称">
+          <el-input
+            v-model="queryForm.patentsName"
+            placeholder="请输入专利名称"
             style="width: 200px"
-          >
-            <el-option
-              v-for="status in publishStatuses"
-              :key="status.value"
-              :label="status.label"
-              :value="status.value"
-            ></el-option>
-          </el-select>
+          ></el-input>
         </el-form-item>
 
-        <el-form-item label="发布时间">
+        <el-form-item label="申请编号">
+          <el-input
+            v-model="queryForm.applicationNumber"
+            placeholder="请输入申请编号"
+            style="width: 200px"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="创建时间">
           <el-date-picker
-            v-model="queryForm.publishDate"
+            v-model="queryForm.createTime"
             type="date"
-            placeholder="选择发布日期"
+            placeholder="选择日期"
             style="width: 200px"
           ></el-date-picker>
         </el-form-item>
 
-        <el-form-item label="需求名称">
-          <el-input
-            v-model="queryForm.demandName"
-            placeholder="请输入需求名称"
+        <el-form-item>
+          <el-button type="primary" @click="handleSearch">查询</el-button>
+        </el-form-item>
+      </div>
+
+      <div style="display: flex; align-items: center; margin-top: 10px">
+        <el-form-item label="法律状态">
+          <el-select
+            v-model="queryForm.legislationStatus"
+            placeholder="请选择法律状态"
             style="width: 200px"
-          ></el-input>
+          >
+            <el-option
+              v-for="item in legal_status"
+              :label="item.label"
+              :value="item.value"
+              :key="item.value"
+            />
+          </el-select>
         </el-form-item>
 
-        <el-form-item>
-          <el-button type="primary" @click="handleSearch">查询</el-button>
+        <el-form-item label="年费状态">
+          <el-select
+            v-model="queryForm.paymentStatus"
+            placeholder="请选择年费状态"
+            style="width: 200px"
+          >
+            <el-option
+              v-for="item in annual_fee_payment_status"
+              :label="item.label"
+              :value="item.value"
+              :key="item.value"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="专利类型">
+          <el-select
+            v-model="queryForm.patentType"
+            placeholder="请选择专利类型"
+            style="width: 200px"
+          >
+            <el-option
+              v-for="item in patents_type"
+              :label="item.label"
+              :value="item.value"
+              :key="item.value"
+            />
+          </el-select>
         </el-form-item>
 
         <el-form-item>
@@ -49,40 +89,24 @@
     </el-form>
 
     <!-- 数据表格 -->
-    <el-table :data="demandData" style="width: 100%">
-      <el-table-column
-        prop="innovationDemandName"
-        label="创新需求名称"
-      ></el-table-column>
-      <el-table-column
-        prop="industry"
-        label="所属行业"
-        width="180"
-      ></el-table-column>
-      <el-table-column
-        prop="budget"
-        label="资金预算"
-        width="180"
-      ></el-table-column>
+    <el-table :data="tableData" style="width: 100%">
       <el-table-column
-        prop="publishDate"
-        label="发布时间"
-      ></el-table-column>
-      <el-table-column
-        prop="publishStatus"
-        label="发布状态"
-      ></el-table-column>
+        v-for="field in fieldsConfig.filter((item) => item.visible)"
+        :key="field.key"
+        :prop="field.key"
+        :label="field.label"
+      />
       <el-table-column label="操作" width="180">
         <template v-slot="scope">
-          <el-button @click="handleDetails(scope.row)" type="text" size="small">
-            详情
-          </el-button>
-          <el-button @click="handleWithdraw(scope.row)" type="text" size="small" style="color: red">
-            撤回
-          </el-button>
-          <el-button @click="handleEdit(scope.row)" type="text" size="small">
-            修改
-          </el-button>
+          <el-button @click="handleEdit(scope.row)" size="small"
+            >编辑</el-button
+          >
+          <el-button
+            @click="handleDelete(scope.row)"
+            size="small"
+            style="color: red"
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
@@ -90,56 +114,79 @@
 </template>
 
 <script lang="ts" setup>
-import { ref } from "vue";
-
-interface QueryForm {
-  publishStatus: string;
-  publishDate: Date | null;
-  demandName: string;
-}
-
-const queryForm = ref<QueryForm>({
-  publishStatus: "",
-  publishDate: null,
-  demandName: "",
+import { ref, onMounted } from "vue";
+import { getTechnologyInnovationRequirementsList } from "@/api";
+import { useDictStore } from "@/store/modules/useDictStore/index";
+
+const queryForm = ref<any>({
+  patentsName: "",
+  applicationNumber: "",
+  createTime: "",
+  legislationStatus: "",
+  paymentStatus: "",
+  patentType: "",
 });
 
-const publishStatuses = ref([
-  { label: "已发布", value: "published" },
-  { label: "待发布", value: "pending" },
-  { label: "已撤回", value: "withdrawn" },
+const currentPage = ref(1);
+const pageSize = ref(10);
+const total = ref(0);
+const tableData = ref([]);
+
+// 字典
+const dictStore = useDictStore();
+const legal_status = dictStore.dictData.legal_status;
+const annual_fee_payment_status = dictStore.dictData.annual_fee_payment_status;
+const patents_type = dictStore.dictData.patents_type;
+
+// 定义所有字段的配置项
+const fieldsConfig = ref([
+  { key: "technologicalNeedsName", label: "创新需求名称", visible: true }, // 专利名称
+  { key: "sector", label: "所属行业", visible: true }, // 专利名称
+  { key: "capital", label: "资金预算", visible: true }, // 专利名称
+  { key: "createTime", label: "发布时间", visible: true }, // 专利名称
+  { key: "auditStatus", label: "发布状态", visible: true }, // 专利名称
 ]);
 
-const demandData = ref([]);
+const pageInit = async () => {
+  const data = {
+    pageSize: pageSize.value,
+    pageNumber: currentPage.value,
+    ...queryForm.value,
+  };
+  const res = (await getTechnologyInnovationRequirementsList(data)) as unknown as any;
+  tableData.value = res.data.list;
+  total.value = res.data.total;
+};
 
 const handleSearch = () => {
-  // 执行查询逻辑,例如向后端发送请求
-  console.log("查询条件:", queryForm.value);
-  // 这里可以填充 demandData 以更新表格显示
+  pageInit();
 };
 
 const handleReset = () => {
   queryForm.value = {
-    publishStatus: "",
-    publishDate: null,
-    demandName: "",
+    patentsName: "",
+    applicationNumber: "",
+    createTime: "",
+    legislationStatus: "",
+    paymentStatus: "",
+    patentType: "",
   };
+  pageInit();
 };
 
-const handleDetails = (row: any) => {
-  // 详情逻辑
-  console.log("详情行:", row);
+const handleEdit = (row: any) => {
+  // 编辑逻辑
+  console.log("编辑行:", row);
 };
 
-const handleWithdraw = (row: any) => {
-  // 撤回逻辑
-  console.log("撤回行:", row);
+const handleDelete = (row: any) => {
+  // 删除逻辑
+  console.log("删除行:", row);
 };
 
-const handleEdit = (row: any) => {
-  // 修改逻辑
-  console.log("修改行:", row);
-};
+onMounted(() => {
+  pageInit();
+});
 </script>
 
 <style lang="scss" scoped>

+ 83 - 97
src/views/user/TrademarkRegistrationRecords.vue

@@ -8,7 +8,7 @@
       <div style="display: flex; align-items: center">
         <el-form-item label="商标名称">
           <el-input
-            v-model="queryForm.trademarkName"
+            v-model="queryForm.patentsName"
             placeholder="请输入商标名称"
             style="width: 200px"
           ></el-input>
@@ -24,7 +24,7 @@
 
         <el-form-item label="创建时间">
           <el-date-picker
-            v-model="queryForm.createDate"
+            v-model="queryForm.createTime"
             type="date"
             placeholder="选择日期"
             style="width: 200px"
@@ -39,46 +39,46 @@
       <div style="display: flex; align-items: center; margin-top: 10px">
         <el-form-item label="法律状态">
           <el-select
-            v-model="queryForm.legalStatus"
+            v-model="queryForm.legislationStatus"
             placeholder="请选择法律状态"
             style="width: 200px"
           >
             <el-option
-              v-for="status in legalStatuses"
-              :key="status.value"
-              :label="status.label"
-              :value="status.value"
-            ></el-option>
+              v-for="item in legal_status"
+              :label="item.label"
+              :value="item.value"
+              :key="item.value"
+            />
           </el-select>
         </el-form-item>
 
         <el-form-item label="年费状态">
           <el-select
-            v-model="queryForm.annualFeeStatus"
+            v-model="queryForm.paymentStatus"
             placeholder="请选择年费状态"
             style="width: 200px"
           >
             <el-option
-              v-for="feeStatus in annualFeeStatuses"
-              :key="feeStatus.value"
-              :label="feeStatus.label"
-              :value="feeStatus.value"
-            ></el-option>
+              v-for="item in annual_fee_payment_status"
+              :label="item.label"
+              :value="item.value"
+              :key="item.value"
+            />
           </el-select>
         </el-form-item>
 
         <el-form-item label="商标类型">
           <el-select
-            v-model="queryForm.trademarkType"
+            v-model="queryForm.patentType"
             placeholder="请选择商标类型"
             style="width: 200px"
           >
             <el-option
-              v-for="type in trademarkTypes"
-              :key="type.value"
-              :label="type.label"
-              :value="type.value"
-            ></el-option>
+              v-for="item in patents_type"
+              :label="item.label"
+              :value="item.value"
+              :key="item.value"
+            />
           </el-select>
         </el-form-item>
 
@@ -89,50 +89,26 @@
     </el-form>
 
     <!-- 数据表格 -->
-    <el-table :data="trademarkData" style="width: 100%">
+    <el-table :data="tableData" style="width: 100%">
       <el-table-column
-        prop="applicationNumber"
-        label="申请号"
-        width="180"
-      ></el-table-column>
-      <el-table-column
-        prop="registrationNumber"
-        label="注册号"
-        width="180"
-      ></el-table-column>
-      <el-table-column prop="trademarkName" label="商标名称"></el-table-column>
-      <el-table-column
-        prop="applicationDate"
-        label="申请日期"
-        width="180"
-      ></el-table-column>
-      <el-table-column
-        prop="trademarkType"
-        label="商标类型"
-        width="120"
-      ></el-table-column>
-      <el-table-column
-        prop="currentStatus"
-        label="当前状态"
-        width="120"
-      ></el-table-column>
-      <el-table-column
-        prop="reviewProgress"
-        label="审查进度"
-        width="120"
-      ></el-table-column>
-      <el-table-column prop="legalStatus" label="法律状态"></el-table-column>
-      <el-table-column label="操作" width="180">
+        v-for="field in fieldsConfig.filter((item) => item.visible)"
+        :key="field.key"
+        :prop="field.key"
+        :label="field.label"
+      />
+      <el-table-column label="操作" width="220">
         <template v-slot="scope">
-          <el-button @click="handleEdit(scope.row)" type="text" size="small"
-            >编辑</el-button
+          <el-button @click="handleEdit(scope.row)" size="small"
+            >查看</el-button
+          >
+          <el-button @click="handleEdit(scope.row)" size="small"
+            >补充材料</el-button
           >
           <el-button
             @click="handleDelete(scope.row)"
-            type="text"
             size="small"
             style="color: red"
-            >删除</el-button
+            >下载</el-button
           >
         </template>
       </el-table-column>
@@ -141,60 +117,66 @@
 </template>
 
 <script lang="ts" setup>
-import { ref } from "vue";
-
-interface QueryForm {
-  trademarkName: string;
-  applicationNumber: string;
-  createDate: Date | null;
-  legalStatus: string;
-  annualFeeStatus: string;
-  trademarkType: string;
-}
+import { ref, onMounted } from "vue";
+import { getTrademarkApplicationList } from "@/api";
+import { useDictStore } from "@/store/modules/useDictStore/index";
 
-const queryForm = ref<QueryForm>({
-  trademarkName: "",
+const queryForm = ref<any>({
+  patentsName: "",
   applicationNumber: "",
-  createDate: null,
-  legalStatus: "",
-  annualFeeStatus: "",
-  trademarkType: "",
+  createTime: "",
+  legislationStatus: "",
+  paymentStatus: "",
+  patentType: "",
 });
 
-const trademarkTypes = ref([
-  { label: "普通商标", value: "ordinary" },
-  { label: "集体商标", value: "collective" },
-  { label: "证明商标", value: "certification" },
+const currentPage = ref(1);
+const pageSize = ref(10);
+const total = ref(0);
+const tableData = ref([]);
+
+// 字典
+const dictStore = useDictStore();
+const legal_status = dictStore.dictData.legal_status;
+const annual_fee_payment_status = dictStore.dictData.annual_fee_payment_status;
+const patents_type = dictStore.dictData.patents_type;
+
+// 定义所有字段的配置项
+const fieldsConfig = ref([
+  { key: "logoNumber", label: "申请号/注册号", visible: true },
+  { key: "trademarkName", label: "商标名称", visible: true },
+  { key: "createTime", label: "注册日期", visible: true },
+  { key: "logoType", label: "商标类型", visible: true },
+  { key: "", label: "当前状态", visible: true },
+  { key: "auditStatus", label: "审查进度", visible: true },
+  { key: "legislationStatus", label: "法律状态", visible: true },
 ]);
 
-const legalStatuses = ref([
-  { label: "有效", value: "valid" },
-  { label: "失效", value: "invalid" },
-  { label: "申请中", value: "pending" },
-]);
-
-const annualFeeStatuses = ref([
-  { label: "已缴纳", value: "paid" },
-  { label: "未缴纳", value: "unpaid" },
-]);
-
-const trademarkData = ref([]);
+const pageInit = async () => {
+  const data = {
+    pageSize: pageSize.value,
+    pageNumber: currentPage.value,
+    ...queryForm.value,
+  };
+  const res = (await getTrademarkApplicationList(data)) as unknown as any;
+  tableData.value = res.data.list;
+  total.value = res.data.total;
+};
 
 const handleSearch = () => {
-  // 执行查询逻辑,例如向后端发送请求
-  console.log("查询条件:", queryForm.value);
-  // 这里可以填充 trademarkData 以更新表格显示
+  pageInit();
 };
 
 const handleReset = () => {
   queryForm.value = {
-    trademarkName: "",
+    patentsName: "",
     applicationNumber: "",
-    createDate: null,
-    legalStatus: "",
-    annualFeeStatus: "",
-    trademarkType: "",
+    createTime: "",
+    legislationStatus: "",
+    paymentStatus: "",
+    patentType: "",
   };
+  pageInit();
 };
 
 const handleEdit = (row: any) => {
@@ -206,6 +188,10 @@ const handleDelete = (row: any) => {
   // 删除逻辑
   console.log("删除行:", row);
 };
+
+onMounted(() => {
+  pageInit();
+});
 </script>
 
 <style lang="scss" scoped>