Browse Source

fix: 零工市场查询接口

zhangying 3 weeks ago
parent
commit
fe80d2357c

+ 9 - 1
doc/待更新脚本.txt

@@ -4,4 +4,12 @@ insert into sys_role_sys_function_code (`RoleID`, `FunctionCode`) values('20afde
 
 INSERT INTO sys_function_code VALUES ('T010507', '企业统计报表', 'T0105', 7);
 INSERT INTO `sys_menu` VALUES ('T010507', 7, '企业统计报表', NULL, 'views/statistics/CompanyStatistics', '/companyStatistics', 'T0105', NULL, 0, 1, 1, 'T010507', 1, NULL, NULL);
-insert into sys_role_sys_function_code (`RoleID`, `FunctionCode`) values('20afde90-a81a-11ed-a6c5-7085c2a9999e','T010507');
+insert into sys_role_sys_function_code (`RoleID`, `FunctionCode`) values('20afde90-a81a-11ed-a6c5-7085c2a9999e','T010507');
+
+INSERT INTO `sys_function_code` (`FunctionCode`, `FunctionName`, `ParentFunctionCode`, `OrderNo`) VALUES ('T010203', '零工市场管理', 'T0102', 3);
+INSERT INTO `sys_function_code` (`FunctionCode`, `FunctionName`, `ParentFunctionCode`, `OrderNo`) VALUES ('T01020301', '查看', 'T010203', 1);
+INSERT INTO `sys_menu` (`MenuNo`, `OrderNo`, `MenuName`, `Icon`, `ViewPath`, `Url`, `ParentMenuNo`, `Description`, `IsTopMenu`, `IsVisible`, `IsLeaf`, `FunctionCode`, `RecordStatus`, `ShortcutIcon`, `IsBlank`) VALUES ('T010203', 3, '零工市场管理', NULL, '', '/gigMarket', 'T0102', '零工市场管理', 0, 1, 1, 'T010203', 1, NULL, NULL);
+INSERT INTO `sys_menu` (`MenuNo`, `OrderNo`, `MenuName`, `Icon`, `ViewPath`, `Url`, `ParentMenuNo`, `Description`, `IsTopMenu`, `IsVisible`, `IsLeaf`, `FunctionCode`, `RecordStatus`, `ShortcutIcon`, `IsBlank`) VALUES ('T01020301', 1, '零工市场', NULL, 'companyService/gigMarket/index', '/index', 'T010203', '', 0, 0, 1, 'T010203', 1, NULL, NULL);
+INSERT INTO `sys_menu` (`MenuNo`, `OrderNo`, `MenuName`, `Icon`, `ViewPath`, `Url`, `ParentMenuNo`, `Description`, `IsTopMenu`, `IsVisible`, `IsLeaf`, `FunctionCode`, `RecordStatus`, `ShortcutIcon`, `IsBlank`) VALUES ('T01020302', 2, '零工市场详情', NULL, 'companyService/gigMarket/detail', '/detail', 'T010203', '', 0, 0, 1, 'T010203', 1, NULL, NULL);
+insert into sys_role_sys_function_code (`RoleID`, `FunctionCode`) values('20afde90-a81a-11ed-a6c5-7085c2a9999e','T010203');
+insert into sys_role_sys_function_code (`RoleID`, `FunctionCode`) values('20afde90-a81a-11ed-a6c5-7085c2a9999e','T01020301');

+ 7 - 0
pom.xml

@@ -175,6 +175,13 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-quartz</artifactId>
         </dependency>
+
+        <!-- Oracle数据库驱动 -->
+        <dependency>
+            <groupId>com.oracle.database.jdbc</groupId>
+            <artifactId>ojdbc10</artifactId>
+            <version>19.15.0.0</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 104 - 0
src/main/java/com/hz/employmentsite/config/MultiDataSourceConfig.java

@@ -0,0 +1,104 @@
+package com.hz.employmentsite.config;
+
+import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
+import com.github.pagehelper.PageInterceptor;
+import org.apache.ibatis.plugin.Interceptor;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.transaction.PlatformTransactionManager;
+
+import javax.sql.DataSource;
+
+@Configuration
+@MapperScan(
+        basePackages = "com.hz.employmentsite.mapper",  // 指定MySQL的Mapper包路径
+        sqlSessionTemplateRef = "mysqlSqlSessionTemplate"
+)
+@MapperScan(
+        basePackages = "com.hz.employmentsite.mapper.oracle",
+        sqlSessionFactoryRef = "oracleSqlSessionFactory" // 关键点:关联 Oracle 的Factory
+)
+public class MultiDataSourceConfig {
+
+    // --------------------------------------------
+    // MySQL 数据源配置 (Primary)
+    // --------------------------------------------
+    @Bean(name = "mysqlDataSource")
+    @ConfigurationProperties(prefix = "spring.datasource.mysql")
+    @Primary  // 标记为主数据源(非必须,若不标注需明确指定)
+    public DataSource mysqlDataSource() {
+        return DruidDataSourceBuilder.create().build();
+    }
+
+    @Bean(name = "mysqlSqlSessionFactory")
+    @Primary
+    public SqlSessionFactory mysqlSqlSessionFactory(
+            @Qualifier("mysqlDataSource") DataSource dataSource) throws Exception {
+        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
+        bean.setDataSource(dataSource);
+        // 添加XML映射文件路径(可选)
+        bean.setMapperLocations(new PathMatchingResourcePatternResolver()
+                .getResources("classpath*:mapping/**/*.xml"));
+        // 其他配置(如分页插件)
+        bean.setPlugins(new Interceptor[]{new PageInterceptor()});
+        return bean.getObject();
+    }
+
+    @Bean(name = "mysqlSqlSessionTemplate")
+    @Primary
+    public SqlSessionTemplate mysqlSqlSessionTemplate(
+            @Qualifier("mysqlSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
+        return new SqlSessionTemplate(sqlSessionFactory);
+    }
+
+    // --------------------------------------------
+    // Oracle 数据源配置
+    // --------------------------------------------
+    @Bean(name = "oracleDataSource")
+    @ConfigurationProperties(prefix = "spring.datasource.oracle")
+    public DataSource oracleDataSource() {
+        return DruidDataSourceBuilder.create().build();
+    }
+
+    @Bean(name = "oracleSqlSessionFactory")
+    public SqlSessionFactory oracleSqlSessionFactory(
+            @Qualifier("oracleDataSource") DataSource dataSource) throws Exception {
+        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
+        bean.setDataSource(dataSource);
+        bean.setMapperLocations(new PathMatchingResourcePatternResolver()
+                .getResources("classpath:mapping/oracle/**/*.xml"));
+        return bean.getObject();
+    }
+
+    @Bean(name = "oracleSqlSessionTemplate")
+    public SqlSessionTemplate oracleSqlSessionTemplate(
+            @Qualifier("oracleSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
+        return new SqlSessionTemplate(sqlSessionFactory);
+    }
+
+    // --------------------------------------------
+    // 事务管理器配置(需要为每个数据源单独指定)
+    // --------------------------------------------
+    @Bean(name = "mysqlTransactionManager")
+    @Primary
+    public PlatformTransactionManager mysqlTransactionManager(
+            @Qualifier("mysqlDataSource") DataSource dataSource) {
+        return new DataSourceTransactionManager(dataSource);
+    }
+
+    @Bean(name = "oracleTransactionManager")
+    public PlatformTransactionManager oracleTransactionManager(
+            @Qualifier("oracleDataSource") DataSource dataSource) {
+        return new DataSourceTransactionManager(dataSource);
+    }
+}
+

+ 25 - 0
src/main/java/com/hz/employmentsite/controller/companyService/GigMarketController.java

@@ -0,0 +1,25 @@
+package com.hz.employmentsite.controller.companyService;
+
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.filter.exception.BaseResponse;
+import com.hz.employmentsite.filter.exception.RespGenerstor;
+import com.hz.employmentsite.services.service.companyService.GigMarketService;
+import com.hz.employmentsite.vo.companyService.GigMarketVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+@RestController
+@RequestMapping("/api/gigMarket")
+public class GigMarketController {
+    @Autowired
+    private GigMarketService gigMarketService;
+
+    @ResponseBody
+    @GetMapping("/getList")
+    public BaseResponse<PageInfo<GigMarketVo>> getList(@RequestParam("pageIndex") int pageIndex, @RequestParam("pageSize") int pageSize,
+                                                       @RequestParam(required = false) String AAE004) throws Exception {
+        PageInfo<GigMarketVo> result = gigMarketService.getList(pageIndex, pageSize, AAE004);
+        return RespGenerstor.success(result);
+    }
+}

+ 13 - 0
src/main/java/com/hz/employmentsite/mapper/oracle/GigMarketMapper.java

@@ -0,0 +1,13 @@
+package com.hz.employmentsite.mapper.oracle;
+
+import com.hz.employmentsite.vo.companyService.GigMarketVo;
+
+import java.util.List;
+
+public interface GigMarketMapper {
+    /**
+     * 查询零工市场列表
+     * @param AAE004 联系人(雇主名称)
+     */
+    List<GigMarketVo> getList(String AAE004);
+}

+ 34 - 0
src/main/java/com/hz/employmentsite/services/impl/companyService/GigMarketServiceImpl.java

@@ -0,0 +1,34 @@
+package com.hz.employmentsite.services.impl.companyService;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.mapper.oracle.GigMarketMapper;
+import com.hz.employmentsite.services.service.companyService.GigMarketService;
+import com.hz.employmentsite.vo.companyService.GigMarketVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class GigMarketServiceImpl implements GigMarketService {
+
+    @Autowired
+    private GigMarketMapper gigMarketMapper;
+
+
+    /**
+     * 查询零工市场列表
+     *
+     * @param pageIndex 分页页码
+     * @param pageSize  分页条数
+     * @param AAE004    联系人(雇主名称)
+     */
+    @Override
+    public PageInfo<GigMarketVo> getList(Integer pageIndex, Integer pageSize, String AAE004) {
+        PageHelper.startPage(pageIndex, pageSize);
+        List<GigMarketVo> dataList = gigMarketMapper.getList(AAE004);
+        PageInfo<GigMarketVo> result = new PageInfo(dataList);
+        return result;
+    }
+}

+ 15 - 0
src/main/java/com/hz/employmentsite/services/service/companyService/GigMarketService.java

@@ -0,0 +1,15 @@
+package com.hz.employmentsite.services.service.companyService;
+
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.vo.companyService.GigMarketVo;
+
+public interface GigMarketService {
+    /**
+     * 查询零工市场列表
+     * @param pageIndex 分页页码
+     * @param pageSize 分页条数
+     * @param AAE004 联系人(雇主名称)
+     */
+    PageInfo<GigMarketVo> getList(Integer pageIndex, Integer pageSize,
+                                  String AAE004);
+}

+ 61 - 0
src/main/java/com/hz/employmentsite/vo/companyService/GigMarketVo.java

@@ -0,0 +1,61 @@
+package com.hz.employmentsite.vo.companyService;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class GigMarketVo {
+    public String BCB906; // 零工岗位ID
+
+    public String BBB911; // 企业ID
+
+    public String BDZDB3; // 工种类型
+
+    public String BGB249; // 工种名称
+
+    public String BCE055; // 岗位名称
+
+    public String BAD002; // 结算方式
+
+    public Double ACB241; // 薪资下限
+
+    public Double ACB242; // 薪资上限
+
+    public String BCD182; // 薪资单位
+
+    public Double ACB240; // 招聘人数
+
+    public String AAE004; // 联系人
+
+    public String AAE005; // 联系电话
+
+    public Date BZE321; // 发布有效期
+
+    public String ACB22A; // 工作描述
+
+    public String ACB204; // 工作地点
+
+    public String ACC530; // 联系地址
+
+    public BigDecimal BCB034; // 经度
+
+    public BigDecimal BCB035; // 纬度
+
+    public String BCZ253; // 发布机构
+
+    public Date BDB286; // 发布时间
+
+    public String BAE045; // 状态
+
+    public String BCCA9R; // 是否退回
+
+    public String BCE851; // 抽审状态
+
+    public String BCB687; // 就业驿站ID
+
+    public String BZE433; // 数据来源
+
+    public String BAE085; // 有效标志
+}

+ 50 - 25
src/main/resources/application.yml

@@ -8,34 +8,59 @@ spring:
     resources:
       static-locations: file:D:\Work\JavaProjects\EmploymentSite\src\main\resources\static\
   datasource:
-    name: employmentsitedb
-    type: com.alibaba.druid.pool.DruidDataSource
-    druid:
-      #监控统计拦截的filters
-      filters: stat
-      driver-class-name: com.mysql.cj.jdbc.Driver
-      #基本属性
+    # 主数据源 (MySQL)
+    mysql:
       url: jdbc:mysql://192.168.0.68:3306/employmentsitedb_dev?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true
-      #url: jdbc:mysql://office.bowintek.com:3306/practicedb?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true
       username: root
       password: bowin@123
-      #配置初始化大小/最小/最大
-      initial-size: 1
-      min-idle: 1
-      max-active: 20
-      #获取连接等待超时时间
-      max-wait: 60000
-      #间隔多久进行一次检测,检测需要关闭的空闲连接
-      time-between-eviction-runs-millis: 60000
-      #一个连接在池中最小生存的时间
-      min-evictable-idle-time-millis: 300000
-      validation-query: SELECT 1
-      test-while-idle: true
-      test-on-borrow: false
-      test-on-return: false
-      #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
-      pool-prepared-statements: false
-      max-pool-prepared-statement-per-connection-size: 20
+      driver-class-name: com.mysql.cj.jdbc.Driver
+      type: com.alibaba.druid.pool.DruidDataSource
+      druid:
+        initial-size: 5
+        min-idle: 3
+        max-active: 20
+        test-on-borrow: true
+        validation-query: SELECT 1 FROM DUAL
+    # 第二个数据源 (Oracle)
+    oracle:
+      url: jdbc:oracle:thin:@192.168.0.68:1521:HZJYYTH
+      username: scott
+      password: bowin
+      driver-class-name: oracle.jdbc.driver.OracleDriver
+      type: com.alibaba.druid.pool.DruidDataSource
+      druid:
+        initial-size: 3
+        min-idle: 1
+        max-active: 15
+        validation-query: SELECT 1 FROM DUAL
+#    name: employmentsitedb
+#    type: com.alibaba.druid.pool.DruidDataSource
+#    druid:
+#      #监控统计拦截的filters
+#      filters: stat
+#      driver-class-name: com.mysql.cj.jdbc.Driver
+#      #基本属性
+#      url: jdbc:mysql://192.168.0.68:3306/employmentsitedb_dev?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true
+#      #url: jdbc:mysql://office.bowintek.com:3306/practicedb?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true
+#      username: root
+#      password: bowin@123
+#      #配置初始化大小/最小/最大
+#      initial-size: 1
+#      min-idle: 1
+#      max-active: 20
+#      #获取连接等待超时时间
+#      max-wait: 60000
+#      #间隔多久进行一次检测,检测需要关闭的空闲连接
+#      time-between-eviction-runs-millis: 60000
+#      #一个连接在池中最小生存的时间
+#      min-evictable-idle-time-millis: 300000
+#      validation-query: SELECT 1
+#      test-while-idle: true
+#      test-on-borrow: false
+#      test-on-return: false
+#      #打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
+#      pool-prepared-statements: false
+#      max-pool-prepared-statement-per-connection-size: 20
   servlet:
       multipart:
         max-request-size: 50MB

+ 13 - 0
src/main/resources/mapping/oracle/GigMarketMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.hz.employmentsite.mapper.oracle.GigMarketMapper">
+    <select id="getList" resultType="com.hz.employmentsite.vo.companyService.CompanyVo">
+        select
+            lgsc.*
+        from CB28 lgsc
+        where 1=1
+        <if test="AAE004!='' and AAE004!=null">
+            and lgsc.AAE004 like Concat('%',#{AAE004},'%')
+        </if>
+    </select>
+</mapper>

+ 14 - 0
vue/src/api/companyService/gigMarket.ts

@@ -0,0 +1,14 @@
+import {request} from "@/utils/request";
+
+export function getGigMarketList(params: any) {
+  return request<object>(
+    {
+      url: "gigMarket/getList",
+      method: 'get',
+      params: params,
+    },
+    {
+      isNew: true,
+    },
+  );
+}

+ 2 - 0
vue/src/router/asyncModules/companyService.ts

@@ -8,4 +8,6 @@ export default {
   'companyService/post/edit': () => import('@/views/companyService/post/edit.vue'),
   'companyService/post/recommend': () => import('@/views/companyService/post/recommend.vue'),
   'companyService/post/detail': () => import('@/views/companyService/post/detail.vue'),
+  'companyService/gigMarket/index': () => import('@/views/companyService/gigMarket/index.vue'),
+  'companyService/gigMarket/detail': () => import('@/views/companyService/gigMarket/detail.vue'),
 };

+ 13 - 0
vue/src/views/companyService/gigMarket/detail.vue

@@ -0,0 +1,13 @@
+<template>
+  <div>
+    零工市场详情
+  </div>
+</template>
+
+<script setup lang="ts">
+
+</script>
+
+<style scoped>
+
+</style>

+ 174 - 0
vue/src/views/companyService/gigMarket/index.vue

@@ -0,0 +1,174 @@
+<template>
+  <div class="card-search">
+    <a-form ref="formRef" name="advanced_search" class="ant-advanced-search-form" :model="searchParams">
+      <a-row :gutter="24">
+        <a-col :span="6">
+          <a-form-item label="企业名称" :label-col="{span:6}" name="companyName">
+            <a-input v-model:value="searchParams.companyName" placeholder="" :allow-clear="true"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="6">
+          <a-form-item label="统一信用代码" :label-col="{span:6}" name="companyCode">
+            <a-input v-model:value="searchParams.companyCode" placeholder="" :allow-clear="true"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="6">
+          <a-form-item label="企业状态" :label-col="{span:6}" name="recordStatus">
+
+          </a-form-item>
+        </a-col>
+        <a-col :span="6" style="text-align: left">
+          <a-button type="primary" html-type="submit" @click="onSearch">查询</a-button>
+          <a-button
+            style="margin: 0 8px"
+            @click="
+              () => {
+                formRef.resetFields();
+                onSearch();
+              }
+            ">重置
+          </a-button>
+          <a style="font-size: 12px" @click="expand = !expand">
+            <template v-if="expand">
+              <UpOutlined/>
+            </template>
+            <template v-else>
+              <DownOutlined/>
+            </template>
+            {{ expand ? '收缩' : '展开' }}
+          </a>
+        </a-col>
+      </a-row>
+      <a-row class="edit-operation">
+        <a-col :span="24" class="flex-space-between">
+          <div>
+            <!-- 表格字段筛选按钮 -->
+            <ColumnsSetting :table-columns="originalColumns" :checked-table-columns="columns"
+                            @on-check="columnsCheckSub"></ColumnsSetting>
+          </div>
+          <div>
+          </div>
+        </a-col>
+      </a-row>
+    </a-form>
+    <div class="search-result-list">
+      <a-table :columns="columns" :data-source="dataList" :scroll="{ x:'100%', y: 500 }" :pagination="pagination"
+               :loading="formState.loading"
+               @change="handleTableChange"
+               :row-selection="{ selectedRowKeys: formState.selectedRowKeys, onChange: onSelectChange}"
+               :row-key="record=>record.companyID"
+               bordered>
+        <template #bodyCell="{ column, text, record }">
+          <template v-if="column.key === 'operation'">
+            <div class="table-operation">
+              <a-button type="link" size="small" @click='onDetail(record)' functioncode="T01020101">查看</a-button>
+            </div>
+          </template>
+        </template>
+      </a-table>
+    </div>
+    <PositionShowModal ref="modalShowRef"></PositionShowModal>
+  </div>
+</template>
+
+<script setup lang="ts">
+import ColumnsSetting from "@/components/common/ColumnsSetting.vue";
+import {DownOutlined, UpOutlined} from "@ant-design/icons-vue";
+import {computed, reactive, ref} from "vue";
+import type {FormInstance, TableProps} from "ant-design-vue";
+import PositionShowModal from "@/views/companyService/company/show.vue";
+import {getPaginationTotalTitle} from "@/utils/common";
+import {getList} from "@/api/companyService/company";
+import {getGigMarketList} from "@/api/companyService/gigMarket";
+
+const formRef = ref<FormInstance>(null);
+const expand = ref(false);
+const searchParams = reactive({
+  pageIndex: 1,
+  pageSize: 20,
+  companyName: '',
+  companyCode: '',
+  recordStatus: '',
+  regionCode: '',
+  streetCode: '',
+  siteID: "",
+  startDate: "",
+  endDate: "",
+  postCountSorter: "",
+  companyTypeID: "",
+  industryID: "",
+  createUserName: ""
+});
+// 原始表格定义数据
+const originalColumns = [
+  {
+    title: '序号',
+    align: "center",
+    key: 'companyID',
+    width: 60,
+    customRender: item => `${searchParams.pageSize * (searchParams.pageIndex - 1) + item.index + 1}`,
+    isDisabled: true
+  },
+  {title: '企业名称', dataIndex: 'companyName', key: 'companyName', width: 200, align: "center"},
+  {title: '操作', key: 'operation', fixed: 'right', width: 150, align: "center", isDisabled: true},
+];
+// 响应式表格定义
+const columns = ref<Array<any>>(originalColumns.filter(item => !item.isDefaultClose));
+const pagination = computed(() => ({
+  total: formState.total,
+  current: searchParams.pageIndex,
+  pageSize: searchParams.pageSize,
+  showSizeChanger: true,
+  showTotal: total => getPaginationTotalTitle(total)
+}));
+const handleTableChange: TableProps['onChange'] = (pag: {
+  pageSize: number;
+  current: number,
+}, filters, sorter: any) => {
+  console.log(filters);
+  searchParams.pageIndex = pag.current;
+  searchParams.pageSize = pag.pageSize;
+  searchParams.postCountSorter = sorter.order;
+  loadData();
+};
+const onSelectChange = (selectedRowKeys: any) => {
+  formState.selectedRowKeys = selectedRowKeys;
+};
+
+const dataList = ref([]);
+const formState = reactive({
+  total: 0,
+  selectedRowKeys: [],
+  loading: false
+});
+
+// 数据加载
+async function loadData() {
+  formState.loading = true;
+  getGigMarketList(searchParams).then((result) => {
+    console.log(result);
+  }).finally(() => {
+    formState.loading = false;
+  })
+}
+
+// 查询按钮
+function onSearch() {
+  loadData();
+}
+
+// 查看详情
+function onDetail(record) {
+  console.log(record)
+}
+
+// 字段展示列选择完毕
+function columnsCheckSub(columnsKeys: Array<string>) {
+  // 从原始表格定义数据中过滤出已选择的字段
+  columns.value = originalColumns.filter((item: any) => columnsKeys.includes(item.key));
+}
+</script>
+
+<style scoped>
+
+</style>