Browse Source

优化大模型搜索页面

songxy 4 months ago
parent
commit
05385e9d44
63 changed files with 4 additions and 2651 deletions
  1. 1 14
      ais_search/web/public/config.js
  2. BIN
      ais_search/web/public/images/zczt/list-0.png
  3. BIN
      ais_search/web/public/images/zczt/list-1.png
  4. BIN
      ais_search/web/public/images/zczt/list-10.png
  5. BIN
      ais_search/web/public/images/zczt/list-11.png
  6. BIN
      ais_search/web/public/images/zczt/list-12.png
  7. BIN
      ais_search/web/public/images/zczt/list-13.png
  8. BIN
      ais_search/web/public/images/zczt/list-2.png
  9. BIN
      ais_search/web/public/images/zczt/list-3.png
  10. BIN
      ais_search/web/public/images/zczt/list-4.png
  11. BIN
      ais_search/web/public/images/zczt/list-5.png
  12. BIN
      ais_search/web/public/images/zczt/list-6.png
  13. BIN
      ais_search/web/public/images/zczt/list-7.png
  14. BIN
      ais_search/web/public/images/zczt/list-8.png
  15. BIN
      ais_search/web/public/images/zczt/list-9.png
  16. BIN
      ais_search/web/public/images/zczt/list1_2.png
  17. BIN
      ais_search/web/public/images/zczt/list2_2.png
  18. BIN
      ais_search/web/public/images/zczt/list3_2.png
  19. BIN
      ais_search/web/public/images/zczt/list4_2.png
  20. BIN
      ais_search/web/public/images/zczt/list5_2.png
  21. BIN
      ais_search/web/public/images/zczt/list6_2.png
  22. 0 0
      ais_search/web/public/json/china.geo.json
  23. 0 7
      ais_search/web/src/api/server/land-supply.js
  24. 0 11
      ais_search/web/src/api/server/land.js
  25. 0 7
      ais_search/web/src/api/server/policy.js
  26. 0 48
      ais_search/web/src/api/server/user-favorites.js
  27. 0 7
      ais_search/web/src/api/server/zdzt.js
  28. BIN
      ais_search/web/src/assets/images/ai-search/data-card-icon.png
  29. BIN
      ais_search/web/src/assets/images/ai-search/top-panel-bg.png
  30. BIN
      ais_search/web/src/assets/images/home/card-menu-approval-content.png
  31. BIN
      ais_search/web/src/assets/images/home/card-menu-approval-title.png
  32. BIN
      ais_search/web/src/assets/images/home/card-menu-approval.png
  33. BIN
      ais_search/web/src/assets/images/home/card-menu-bg.png
  34. BIN
      ais_search/web/src/assets/images/home/card-menu-gis-content.png
  35. BIN
      ais_search/web/src/assets/images/home/card-menu-gis-title.png
  36. BIN
      ais_search/web/src/assets/images/home/card-menu-gis.png
  37. BIN
      ais_search/web/src/assets/images/home/card-menu-land-content.png
  38. BIN
      ais_search/web/src/assets/images/home/card-menu-land-title.png
  39. BIN
      ais_search/web/src/assets/images/home/card-menu-land.png
  40. BIN
      ais_search/web/src/assets/images/home/card-menu-policy-content.png
  41. BIN
      ais_search/web/src/assets/images/home/card-menu-policy-title.png
  42. BIN
      ais_search/web/src/assets/images/home/card-menu-policy.png
  43. BIN
      ais_search/web/src/assets/images/home/card-menu-writer-content.png
  44. BIN
      ais_search/web/src/assets/images/home/card-menu-writer-title.png
  45. BIN
      ais_search/web/src/assets/images/home/card-menu-writer.png
  46. BIN
      ais_search/web/src/assets/images/home/icon-title-main.png
  47. BIN
      ais_search/web/src/assets/images/home/icon-title-main1.png
  48. BIN
      ais_search/web/src/assets/images/home/js-home-logo.png
  49. 0 27
      ais_search/web/src/struct/ArrayQueue.js
  50. 0 218
      ais_search/web/src/utils/policy-api.js
  51. 0 269
      ais_search/web/src/views/home/components/IndustryTrendsCard.vue
  52. 0 153
      ais_search/web/src/views/home/components/JsHomeHeader.vue
  53. 0 409
      ais_search/web/src/views/home/components/LandAuctionCard.vue
  54. 0 480
      ais_search/web/src/views/home/components/MarketCard.vue
  55. 0 359
      ais_search/web/src/views/home/components/MarketDynamicsCard.vue
  56. 0 64
      ais_search/web/src/views/home/components/NewPolicyPriorityTopicsCard.vue
  57. 0 144
      ais_search/web/src/views/home/components/PolicyDynamicsCard.vue
  58. 0 63
      ais_search/web/src/views/home/components/PolicyPriorityTopicsCard.vue
  59. 0 167
      ais_search/web/src/views/home/components/fiveItem.js
  60. 0 41
      ais_search/web/src/views/home/config.ts
  61. 0 68
      ais_search/web/src/views/home/config1.ts
  62. 2 95
      ais_search/web/src/views/home/home.vue
  63. 1 0
      ais_search/web/vite.config.js

+ 1 - 14
ais_search/web/public/config.js

@@ -1,7 +1,7 @@
 (function (global) {
   global.AppGlobalConfig = {
     system: {
-      name: '万维自然资源大模型 - 综合门户',
+      name: '浙江自然资源大模型',
       copyright: '版权所有© 2024 浙江万维空间信息技术有限公司',
     },
     authToken: 'ZJUGIS-Authorization',
@@ -9,11 +9,6 @@
       encryption: true, // 是否加密
       secretKey: 'yydjydhfyhfggd'
     },
-    newsCategory: {
-      industry: 'HYDT',
-      market: 'SCDT',
-    },
-
     topKs: {
       '0': 5,
       '1': 10,
@@ -22,19 +17,11 @@
 
     server: 'https://natureai.zjugis.com/server',
     managerServer: 'https://natureai.zjugis.com/manager/server',
-    // server: 'http://localhost:7406/server',
-    // managerServer: 'http://localhost:7506/manager/server',
     chatServer: '/chat',
     knowledgeServer: 'https://natureai.zjugis.com/llm',
-    // knowledgeServer: 'https://natureai.zjugis.com/llm_test',
     knowledgeDocUrl: 'http://127.0.0.1:8511/knowledge_base/download_doc?knowledge_base_name=policy&file_name=',
-    // knowledgeDocUrl: 'http://ac.zjugis.com:8511/knowledge_base/download_doc?knowledge_base_name=policy&file_name=',
-
     knowledgeDocUrlProxy: 'https://natureai.zjugis.com/doc/portal/knowledge_base/download_doc/',
-
     landMarketUrl: 'https://natureai.zjugis.com/subscribe/',
-    // landMarketUrl: 'http://0.0.0.0:8519/subscribe/',
-
     // 外链
     links: {
       // 万维问策

BIN
ais_search/web/public/images/zczt/list-0.png


BIN
ais_search/web/public/images/zczt/list-1.png


BIN
ais_search/web/public/images/zczt/list-10.png


BIN
ais_search/web/public/images/zczt/list-11.png


BIN
ais_search/web/public/images/zczt/list-12.png


BIN
ais_search/web/public/images/zczt/list-13.png


BIN
ais_search/web/public/images/zczt/list-2.png


BIN
ais_search/web/public/images/zczt/list-3.png


BIN
ais_search/web/public/images/zczt/list-4.png


BIN
ais_search/web/public/images/zczt/list-5.png


BIN
ais_search/web/public/images/zczt/list-6.png


BIN
ais_search/web/public/images/zczt/list-7.png


BIN
ais_search/web/public/images/zczt/list-8.png


BIN
ais_search/web/public/images/zczt/list-9.png


BIN
ais_search/web/public/images/zczt/list1_2.png


BIN
ais_search/web/public/images/zczt/list2_2.png


BIN
ais_search/web/public/images/zczt/list3_2.png


BIN
ais_search/web/public/images/zczt/list4_2.png


BIN
ais_search/web/public/images/zczt/list5_2.png


BIN
ais_search/web/public/images/zczt/list6_2.png


File diff suppressed because it is too large
+ 0 - 0
ais_search/web/public/json/china.geo.json


+ 0 - 7
ais_search/web/src/api/server/land-supply.js

@@ -1,7 +0,0 @@
-import { createRequest } from '@/utils/api';
-
-const request = createRequest('/api/land/supply');
-
-export default {
-  getLatest: num => request(`/latest/${num || 10}`, {}, 'get', false),
-}

+ 0 - 11
ais_search/web/src/api/server/land.js

@@ -1,11 +0,0 @@
-import { createRequest } from '@/utils/api';
-
-const request = createRequest('/api/land');
-//最新成交或最新推出
-export const getLandTransactionSummary = data => request('/region/transaction/summary', { ...data }, 'post', true);
-//最新推出数据清单
-export const getLandNewestSelling = data => request('/newest/land/selling', { ...data }, 'post', true);
-export const getLandNewestSold = data => request('/newest/land/sold', { ...data }, 'post', true);
-export const getAuctionCalendar = data => request('/auction/calendar', { ...data }, 'post', true);
-export const getLandMajorCities = data => request('/major/cities', { ...data }, 'get', true)
-

+ 0 - 7
ais_search/web/src/api/server/policy.js

@@ -1,7 +0,0 @@
-import { createRequest } from '@/utils/api';
-
-const request = createRequest('/api/policy');
-
-export default {
-  getLatest: num => request(`/latest/${num || 10}`, {}, 'get', false),
-}

+ 0 - 48
ais_search/web/src/api/server/user-favorites.js

@@ -1,48 +0,0 @@
-import { createRequest } from '@/utils/api';
-// 用户收藏相关接口
-const request = createRequest('/api/user/favorites');
-
-export default {
-  /**
-   * 添加用户收藏
-   * @param data
-   * data = {
-   *    "title": "测试", // 收藏的标题名
- *     "relateId": "12323", // 收藏的 id.
- *     "type": "policy-file" // 收藏类型, 包含: 政策文件(policy-file),政策解读(policy-interpretation),政策专题(policy-subject),经典案例(case)
-   * }
-   * 用户的信息不需要传,后台会根据调用接口的当前登录用户来自行关联数据
-   * @returns {Promise<axios.AxiosResponse<any>>}
-   */
-  add: data => request(`/add`, { ...data }, 'post', true),
-
-  /**
-   * 通过类型和关联id删除用户收藏(适用于各详情页取消收藏场景)
-   * @param type
-   * @param relateId
-   * @returns {Promise<axios.AxiosResponse<any>>}
-   */
-  delete: (type, relateId) => request(`/delete/${type}/${relateId}`, { }, 'get', true),
-
-  /**
-   * 通过收藏id删除用户收藏(适用于我的收藏列表-删除的场景)
-   * @param id
-   * @returns {Promise<axios.AxiosResponse<any>>}
-   */
-  deleteById: id => request(`/delete/id/${id}`, { }, 'get', true),
-
-  /**
-   * 获取我的收藏 (分页)
-   * @param param
-   * data = {
-   *      "pageCurrent": 1, // 页码
-   *     "pageSize": 10, // 分页大小
-   *    "type": "policy-file" // 收藏类型, 包含: 政策文件(policy-file),政策解读(policy-interpretation),政策专题(policy-subject),经典案例(case)
-   *     "title": "1" //按标题模糊查询
-   * }
-   * 用户的信息不需要传,后台会根据调用接口的当前登录用户来自行关联数据
-   * @returns {Promise<axios.AxiosResponse<any>>}
-   */
-  myFavorites: param => request(`/my/page`, { ...param }, 'post', true),
-
-}

+ 0 - 7
ais_search/web/src/api/server/zdzt.js

@@ -1,7 +0,0 @@
-import { createRequest } from '@/utils/api';
-
-const request = createRequest('/api/zdzt');
-
-export default {
-    getDataList: p => request('/getList', { ...p }, 'post', false),
-}

BIN
ais_search/web/src/assets/images/ai-search/data-card-icon.png


BIN
ais_search/web/src/assets/images/ai-search/top-panel-bg.png


BIN
ais_search/web/src/assets/images/home/card-menu-approval-content.png


BIN
ais_search/web/src/assets/images/home/card-menu-approval-title.png


BIN
ais_search/web/src/assets/images/home/card-menu-approval.png


BIN
ais_search/web/src/assets/images/home/card-menu-bg.png


BIN
ais_search/web/src/assets/images/home/card-menu-gis-content.png


BIN
ais_search/web/src/assets/images/home/card-menu-gis-title.png


BIN
ais_search/web/src/assets/images/home/card-menu-gis.png


BIN
ais_search/web/src/assets/images/home/card-menu-land-content.png


BIN
ais_search/web/src/assets/images/home/card-menu-land-title.png


BIN
ais_search/web/src/assets/images/home/card-menu-land.png


BIN
ais_search/web/src/assets/images/home/card-menu-policy-content.png


BIN
ais_search/web/src/assets/images/home/card-menu-policy-title.png


BIN
ais_search/web/src/assets/images/home/card-menu-policy.png


BIN
ais_search/web/src/assets/images/home/card-menu-writer-content.png


BIN
ais_search/web/src/assets/images/home/card-menu-writer-title.png


BIN
ais_search/web/src/assets/images/home/card-menu-writer.png


BIN
ais_search/web/src/assets/images/home/icon-title-main.png


BIN
ais_search/web/src/assets/images/home/icon-title-main1.png


BIN
ais_search/web/src/assets/images/home/js-home-logo.png


+ 0 - 27
ais_search/web/src/struct/ArrayQueue.js

@@ -1,27 +0,0 @@
-class ArrayQueue {
-
-  constructor(size = 10) {
-    this._init_size = size;
-    this._array = [];
-  }
-
-  enqueue(value) {
-    if(this._array.length === this._init_size) {
-      this.dequeue();
-    }
-    this._array.push(value);
-  }
-
-  dequeue() {
-    if(this._array.length > 0) {
-      this._array.shift();
-    }
-  }
-
-  toArray() {
-    return this._array;
-  }
-
-}
-
-export default ArrayQueue;

+ 0 - 218
ais_search/web/src/utils/policy-api.js

@@ -1,218 +0,0 @@
-import axios from 'axios'
-
-const baseUrl = '/knowledge'
-
-axios.defaults.withCredentials = false
-
-/**
- * 请求前拦截
- * 添加加载进度条
- */
-axios.interceptors.request.use(config => {
-  return config
-}, error => {
-  return Promise.reject(error)
-})
-
-/**
- * 请求后拦截
- *
- */
-axios.interceptors.response.use(response => {
-  return response
-}, error => {
-  Promise.resolve(error.response)
-  if (!error.response) {
-    if (error.message == 'without token cancel request') { // token过期会取消请求
-      return {
-        status: 9002,
-        statusText: error.message
-      }
-    }
-    return {
-      status: 503,
-      statusText: error.message
-    }
-  }
-  return error.response
-})
-
-/**
- * 检查状态
- * 并对异常状态进行处理
- * @param response
- * @returns {*}
- */
-function checkResponseStatus(response) {
-  if (response.status === 200 || response.status === 304) {
-    const data = response.data
-    data.status = 200
-    return data
-  }
-}
-
-/**
- * 检查状态码
- * @param res
- * @returns {*}
- */
-function checkResponseCode(res) {
-  if(!res) return null;
-  if (res.status !== 200) { // 网络请求存在问题
-  }
-  return res
-}
-/**
- * 导出方法
- */
-export default {
-  /**
-   * post请求
-   * @param url
-   * @param data
-   * @param vue vue 实例
-   * @param requireToken
-   * @returns {Promise<AxiosResponse<any>>}
-   */
-  post(url, data, vue, requireToken) {
-    return axios({
-      method: 'post',
-      url: url,
-      baseURL: baseUrl,
-      data: data,
-      timeout: 60000,
-      vue: vue,
-      requireToken: requireToken == null ? true : requireToken,
-      headers: {
-        'X-Requested-With': 'XMLHttpRequest',
-        'Content-Type': 'application/json; charset=UTF-8'
-      }
-    }).then(checkResponseStatus)
-      .then(checkResponseCode)
-  },
-  /**
-   * postJson请求
-   * @param url
-   * @param data
-   * @param vue vue 实例
-   * @param requireToken
-   * @returns {Promise<AxiosResponse<any>>}
-   */
-  postJson(url, data, vue, requireToken) {
-    return axios({
-      method: 'post',
-      url: url,
-      baseURL: baseUrl,
-      data: data,
-      timeout: 30000,
-      vue: vue,
-      requireToken: requireToken == null ? false : requireToken,
-      headers: {
-        'X-Requested-With': 'XMLHttpRequest',
-        'Content-Type': 'application/json; charset=UTF-8'
-      }
-    }).then(checkResponseStatus).then(checkResponseCode)
-  },
-
-
-  /**
-   * get请求
-   * @param url
-   * @param params
-   * @param vue vue 实例
-   * @param requireToken
-   * @returns {Promise<AxiosResponse<any>>}
-   */
-  get(url, params, vue, requireToken) {
-    return axios({
-      method: 'get',
-      url: url,
-      baseURL: baseUrl,
-      params: params,
-      timeout: 30000,
-      vue: vue,
-      requireToken: requireToken == null ? true : requireToken,
-      headers: {
-        'X-Requested-With': 'XMLHttpRequest'
-      }
-    }).then(checkResponseStatus)
-      .then(checkResponseCode)
-  },
-
-  /**
-   * post 下载文件
-   * @param url
-   * @param params
-   * @param vue
-   * @param requireToken
-   * @returns {AxiosPromise}
-   */
-  postDownLoadFile(url, data, vue, requireToken) {
-    return axios({
-      method: 'post',
-      url: url,
-      baseURL: baseUrl,
-      data: data,
-      timeout: 30000,
-      vue: vue,
-      requireToken: requireToken == null ? true : requireToken,
-      responseType: 'arraybuffer',
-      headers: {
-        'X-Requested-With': 'XMLHttpRequest',
-        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
-        'Content-Disposition': ''
-      }
-    }).then(checkResponseCode)
-  },
-
-  downLoadFile(url, data, title, vue, requireToken) {
-    return axios({
-      method: 'post',
-      url: url,
-      baseURL: baseUrl,
-      data: data,
-      timeout: 30000,
-      vue: vue,
-      requireToken: requireToken == null ? true : requireToken,
-      responseType: 'arraybuffer',
-      headers: {
-        'X-Requested-With': 'XMLHttpRequest',
-        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
-      }
-    }).then(checkResponseCode)
-  },
-
-  /**
-   * 超长的post请求,一般用于请求arcgisserve等参数过长的post请求
-   * @param {*} url
-   * @param {*} data
-   * @param {*} vue
-   * @param {*} requireToken
-   * @returns
-   */
-  request(url, data, _headers) {
-    return axios({
-      method: 'post',
-      url: url,
-      data: data,
-      transformRequest: [
-        function(data) {
-          let ret = ''
-          for (const it in data) {
-            ret +=
-                encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
-          }
-          ret = ret.substring(0, ret.lastIndexOf('&'))
-          return ret
-        }
-      ],
-      headers: _headers || {
-        'Content-Type': 'application/x-www-form-urlencoded'
-      }
-    })
-      .then(checkResponseStatus)
-      .then(checkResponseCode)
-  }
-
-}
-

+ 0 - 269
ais_search/web/src/views/home/components/IndustryTrendsCard.vue

@@ -1,269 +0,0 @@
-<template>
-  <home-card title="行业动态" @more="() => toNews('HYDT')">
-    <template #content>
-      <div class="content">
-        <div class="top-news" @click="toDetailPage(topNews)">
-          <div class="news-icon">
-            <img :src="topNews.img" />
-          </div>
-          <div class="news-desc">
-            <div class="news-title">{{ topNews.infoTitle }}</div>
-            <div class="news-content">{{topNews.infoContent}}</div>
-            <div class="news-time">{{ topNews.infoPubdate }}</div>
-          </div>
-        </div>
-        <div class="news-list">
-          <div class="new" v-for="n in news" :key="n.key" @click="toDetailPage(n)">
-            <div class="dot"></div>
-            <div class="type">{{ n.label }}</div>
-            <div class="title" :title="n.infoTitle">
-              <div class="text">{{ n.infoTitle }}</div>
-            </div>
-            <div :class="`is-new is-new${today === n.infoPubdate ? '-show' : ''}`" />
-            <div class="time">
-              {{ n.infoPubdate }}
-            </div>
-          </div>
-        </div>
-      </div>
-      <div style="display: none;" id="news" v-html="topNews.infoContent">
-
-      </div>
-    </template>
-  </home-card>
-</template>
-<script setup>
-import HomeCard from '@/components/home-card/HomeCard.vue';
-import dayjs from 'dayjs';
-import ManagerAPI from '@/api/manager';
-const today = dayjs().format('YYYY-MM-DD');
-const router = useRouter();
-const topNews = ref({
-
-});
-
-const news = ref([
-
-]);
-
-const getIndustryNews = () => {
-  ManagerAPI.getNews({
-    current: 1,
-    categoryCode: window.AppGlobalConfig.newsCategory.industry,
-    searchKey: '',
-    size: 7
-  }).then((res) => {
-    if (res.success) {
-      const { records = [] } = res.data;
-      news.value = records.slice(1, 6);
-      if (records[0]) {
-        getNewsDetail(records[0].id);
-      }
-    }
-  });
-};
-
-const getNewsDetail = (id) => {
-  ManagerAPI.getNewsDetail(id).then((res) => {
-    if (res.success) {
-      topNews.value = res.data;
-      nextTick(()=> {
-        topNews.value.infoContent = document.getElementById('news').innerText;
-      })
-    }
-  });
-};
-
-const toNews = (type) => {
-  window.open(`/#/news/list?type=${type}`, '_blank')
-  // router.push({
-  //   path: '/news/detail',
-  //   query: {
-  //     type,
-  //   }
-  // })
-}
-
-
-const toDetailPage = (item) => {
-  window.open(`/#/news/detail?type=${item.categoryCode}&id=${item.id}`, '_blank')
-  // router.push({
-  //   path: '/news/detail',
-  //   query: {
-  //     id: item['id']
-  //   }
-  // })
-}
-
-
-onBeforeMount(() => {
-  getIndustryNews();
-});
-</script>
-<style scoped lang="scss">
-.content {
-  width: 100%;
-  padding-top: 30px;
-
-  .top-news {
-    width: 100%;
-    display: flex;
-    cursor: pointer;
-
-    .news-icon {
-      width: 280px;
-      height: 180px;
-      background: #ffffff;
-      border-radius: 4px 4px 4px 4px;
-      margin-right: 20px;
-      img {
-        width: 100%;
-        height: 100%;
-      }
-    }
-
-    .news-desc {
-      width: 359px;
-
-      .news-title {
-        height: 40px;
-        font-family: PingFang SC, PingFang SC;
-        font-weight: 500;
-        font-size: 17px;
-        color: #000d3f;
-        text-align: left;
-        font-style: normal;
-        text-transform: none;
-        cursor: pointer;
-        display: -webkit-box;
-        -webkit-box-orient: vertical;
-        -webkit-line-clamp: 2;
-        overflow: hidden;
-
-        &:hover {
-          color: #0e83f8;
-        }
-      }
-
-      .news-content {
-        margin: 9px 0 13px 0;
-        height: calc(100% - 22px - 48px - 23px);
-        font-family: PingFang SC, PingFang SC;
-        font-weight: 400;
-        font-size: 15px;
-        color: #343434;
-        letter-spacing: 1px;
-        text-align: left;
-        font-style: normal;
-        text-transform: none;
-        overflow: hidden;
-        max-height: 90px;
-        display: -webkit-box;
-        -webkit-box-orient: vertical;
-        -webkit-line-clamp: 5;
-        overflow: hidden;
-      }
-
-      .news-time {
-        height: 20px;
-        line-height: 20px;
-        font-family: PingFang SC, PingFang SC;
-        font-weight: 400;
-        font-size: 14px;
-        color: #575757;
-        text-align: left;
-        font-style: normal;
-        text-transform: none;
-        margin-top: 25px;
-      }
-    }
-  }
-
-  .news-list {
-    margin-top: 17px;
-
-    .new {
-      width: 100%;
-      height: 46px;
-      display: flex;
-      align-items: center;
-      border-bottom: 1px dashed #c9d2e5;
-      cursor: pointer;
-
-      .dot {
-        margin-left: 2px;
-        margin-right: 12px;
-        width: 4px;
-        height: 4px;
-        background: #d0d8ea;
-      }
-
-      .type {
-        margin-right: 11px;
-        width: 66px;
-        height: 22px;
-        background: rgba(255, 255, 255, 0.6);
-        border-radius: 1px 1px 1px 1px;
-        border: 1px solid #e7eaf4;
-        font-family: PingFang SC, PingFang SC;
-        font-weight: 400;
-        font-size: 14px;
-        color: #2d7af4;
-        text-align: left;
-        font-style: normal;
-        text-transform: none;
-        display: flex;
-        justify-content: center;
-        align-items: center;
-      }
-
-      .title {
-        max-width: calc(100% - 18px - 77px - 85px - 38px);
-        font-family: PingFang SC, PingFang SC;
-        font-weight: 400;
-        font-size: 15px;
-        color: #343434;
-        text-align: left;
-        font-style: normal;
-        text-transform: none;
-        display: flex;
-        justify-content: flex-start;
-
-        .text {
-          width: 100%;
-          white-space: nowrap;
-          /*超出的空白区域不换行*/
-          overflow: hidden;
-          /*超出隐藏*/
-          text-overflow: ellipsis;
-        }
-
-        &:hover {
-          color: #0a84ff;
-        }
-      }
-      .is-new {
-        margin-left: 4px;
-        width: 34px;
-        height: 20px;
-        flex: auto;
-
-        &-show {
-          background: url('@/assets/images/home/icon-is-new.png') no-repeat;
-          background-size: contain;
-        }
-      }
-      .time {
-        width: 85px;
-        font-family: PingFang SC, PingFang SC;
-        font-weight: 400;
-        font-size: 14px;
-        color: #575757;
-        text-align: right;
-        font-style: normal;
-        text-transform: none;
-      }
-    }
-  }
-}
-</style>

+ 0 - 153
ais_search/web/src/views/home/components/JsHomeHeader.vue

@@ -1,153 +0,0 @@
-<template>
-  <div class="home-header">
-    <div class="left">
-      <div class="sys-icon" @click="linkToHome"></div>
-      <div class="sys-name" @click="linkToHome" v-if="false">万维自然资源大模型</div>
-    </div>
-    <div class="menus">
-      <div
-        :class="`menu${m.key === activeMenu ? ' menu-active' : ''}`"
-        v-for="m in menus"
-        :key="m.key"
-        @click="linkToMenu(m.key)"
-        v-login-required="{ skip: ['map', 'tool', 'home'].includes(m.key) }"
-      >
-        {{ m.name }}
-      </div>
-    </div>
-    <div class="right user-panel">
-      <user-avatar />
-    </div>
-  </div>
-</template>
-<script setup>
-import UserAvatar from '@/views/components/UserNewAvatar.vue';
-import { linkToHome } from '@/utils/external-links';
-import { linkByLinksKey } from '@/utils/external-links';
-
-const activeMenu = ref('portal');
-
-const menus = [
-  {
-    key: 'portal',
-    path: 'portal',
-    name: '首页'
-  },
-  {
-    key: 'policy',
-    path: 'policy',
-    name: '万维问策'
-  },
-  {
-    key: 'land',
-    path: 'land',
-    name: '万维问地'
-  },
-  {
-    key: 'library',
-    path: 'library',
-    name: '万维文库'
-  },
-  {
-    key: 'writer',
-    path: 'writer',
-    name: '万维智写'
-  },
-  // {
-  //   key: 'approval',
-  //   path: 'approval',
-  //   name: '审批精灵',
-  // },
-  // {
-  //   key: 'map',
-  //   path: 'map',
-  //   name: '地图库'
-  // },
-  // {
-  //   key: 'tool',
-  //   path: 'tool',
-  //   name: '工具箱'
-  // }
-];
-
-const linkToMenu = (key) => {
-  if (key !== 'portal') {
-    linkByLinksKey(key);
-  }
-};
-</script>
-<style scoped lang="scss">
-.home-header {
-  width: 100%;
-  cursor: pointer;
-  height: 100%;
-  background: rgba(255, 255, 255, 0.12);
-  box-shadow: 0px 2px 5px 1px rgba(0, 0, 0, 0.01);
-  border-radius: 0px 0px 0px 0px;
-  // padding: 0 12% 0 13% ;
-  padding: 0 40px 0 40px;
-  display: flex;
-
-  .left {
-    height: 100%;
-    width: 280px;
-    display: flex;
-    justify-content: flex-start;
-    align-items: center;
-
-    .sys-icon {
-      width: 260px;
-      height: 32px;
-      background: url('@/assets/images/home/js-home-logo.png') no-repeat;
-      background-size: 100% 100%;
-      margin-right: 11px;
-    }
-
-    .sys-name {
-      font-family: PingFang SC, PingFang SC;
-      font-weight: bold;
-      font-size: 22px;
-      color: #fff;
-      text-align: left;
-      font-style: normal;
-      text-transform: none;
-      cursor: pointer;
-    }
-  }
-
-  .menus {
-    width: calc(100% - 460px);
-
-    display: flex;
-    align-items: center;
-    justify-content: flex-end;
-    padding-right: 30px;
-
-    .menu {
-      margin-left: 40px;
-      cursor: pointer;
-      height: 60px;
-      line-height: 60px;
-      color: rgba(255, 255, 255, 0.8);
-      font-size: 17px;
-
-      &-active,
-      &:hover {
-        color: rgba(255, 255, 255, 1);
-        transition: 0.2s all linear;
-        border-bottom: 3px solid #fff;
-      }
-    }
-  }
-
-  .right {
-    height: 100%;
-    width: 180px;
-  }
-}
-.home-header:hover {
-  background: rgba(255, 255, 255, 0.18);
-  box-shadow: 0px 2px 5px 1px rgba(0, 0, 0, 0.04);
-  transition: 0.2s all linear;
-}
-</style>

+ 0 - 409
ais_search/web/src/views/home/components/LandAuctionCard.vue

@@ -1,409 +0,0 @@
-<template>
-  <div class="land-auction-container">
-    <div class="home-title">
-      <span class="title"><span class="txt">土地招拍挂</span></span>
-      <div class="right_box">
-        <div class="cities_box">
-          <ul :style="{ height: citiesMap['isMore2'] ? '30px' : 'auto' }">
-            <li @click="dictClickHandle('')" :class="{ active: region === '' }">全国</li>
-            <li
-              v-for="(item, index) in majorCities"
-              :key="index"
-              @click="dictClickHandle(item['dictValue'])"
-              :class="{ active: region === item['dictValue'] }"
-            >
-              {{ item['dictName'] }}
-            </li>
-          </ul>
-          <span class="more" @click="citiesMore('isMore2')">{{
-            citiesMap['isMore2'] ? '更多' : '收起'
-          }}</span>
-        </div>
-        <div class="home_tabs">
-          <span :class="{ active: tabType === 0 }" @click="tabClickHandle5(0)">最新推出</span>
-          <span :class="{ active: tabType === 1 }" @click="tabClickHandle5(1)">最新成交</span>
-          <span :class="{ active: tabType === 2 }" @click="tabClickHandle5(2)">土拍日历</span>
-        </div>
-      </div>
-    </div>
-    <div class="calendar-box" v-if="tabType === 2">
-      <div class="left-box">
-        <ul>
-          <li
-            v-for="(item, index) in weekDates"
-            :key="index"
-            @click="weekClickHandle(item, index)"
-            :class="{ active: weekIndex === index }"
-          >
-            <p>
-              <span class="title" style="width: 64px">{{ item['m'] }}月</span>
-              <span
-                v-if="
-                  item['data'] &&
-                  item['data'].length > 0 &&
-                  item['data'].filter((v) => v.tdzt === 1).length > 0
-                "
-                class="circle"
-              ></span>
-              <span
-                v-if="
-                  item['data'] &&
-                  item['data'].length > 0 &&
-                  item['data'].filter((v) => v.tdzt === 2).length > 0
-                "
-                class="circle"
-                style="background: #ff9800"
-              ></span>
-              <span
-                v-if="
-                  item['data'] &&
-                  item['data'].length > 0 &&
-                  item['data'].filter((v) => v.tdzt === 3).length > 0
-                "
-                class="circle"
-                style="background: #104ebe"
-              ></span>
-            </p>
-            <p>
-              <span class="sub_title">周{{ item['w'] }}</span>
-              <span class="title">{{ item['d'] }}</span>
-            </p>
-          </li>
-        </ul>
-      </div>
-      <div class="right-box">
-        <p>请选择周数</p>
-        <a-date-picker
-          v-model:value="weekVal"
-          picker="week"
-          :format="weekFormat"
-          @change="weekChange"
-        />
-      </div>
-    </div>
-    <div class="block-box" v-if="tabList.length > 0">
-      <div
-        v-for="(item, index) in tabList"
-        :key="index"
-        @click="toWinPage(item['id'])"
-        style="position: relative"
-      >
-        <h4>
-          {{ item['name'] }}
-        </h4>
-        <div
-          class="status"
-          :style="`position: absolute;
-    right: 20px;
-    top: 20px; color: ${['', 'red', '#FF9800', '#104ebe'][item['tdzt'] || 0]}`"
-        >
-          {{ ['', '挂牌中', '公示期', '已成交'][item['tdzt'] || 0] }}
-        </div>
-        <ul class="tags">
-          <li v-if="item['county']">{{ item['county'] }}</li>
-          <li v-if="item['landUseType']">{{ item['landUseType'] }}</li>
-          <li>面积{{ item['area'] }}㎡</li>
-        </ul>
-        <p v-if="tabType === 0">{{ item['startDate'] }}至{{ item['endDate'] }}</p>
-        <p v-else style="padding-bottom: 10px">
-          <span>{{ item.tdzt === 3 ? '成交时间' : '招拍挂起始时间' }}:{{ item['date'] }}</span>
-        </p>
-      </div>
-    </div>
-    <no-data-skeleton v-else :loading="loading5" />
-  </div>
-</template>
-<script setup>
-import { getLandMajorCities } from '@/api/server/land';
-import NoDataSkeleton from '@/components/NoDataSkeleton.vue';
-const citiesMap = reactive({
-  isMore1: true,
-  isMore2: true
-});
-const citiesMore = (key) => {
-  citiesMap[key] = !citiesMap[key];
-};
-import useFiveItem from './fiveItem';
-/**
- * 土地招拍挂
- */
-const {
-  region,
-  tabType,
-  tabList,
-  loading5,
-  initTabList,
-  weekFormat,
-  weekIndex,
-  initWeekIndex,
-  weekVal,
-  initWeekVal,
-  weekDates,
-  weekChange,
-  weekClickHandle,
-  tabClickHandle5,
-  setRegionData
-} = useFiveItem();
-const dictClickHandle = (dictName) => {
-  initTabList();
-  initWeekIndex();
-  initWeekVal();
-  setRegionData(dictName);
-};
-/**
- * 重点城市清单
- */
-const majorCities = ref([]);
-const getLandMajorCitiesAjax = () => {
-  getLandMajorCities().then((result) => {
-    if (result.code === 200) {
-      majorCities.value = result.data;
-    }
-  });
-};
-const toWinPage = (id) => {
-  var url = window.AppGlobalConfig.links['landMarketDetailUrl'] + `?id=${id}`;
-  window.open(url, '_blank');
-};
-onBeforeMount(() => {
-  getLandMajorCitiesAjax();
-  tabClickHandle5(0);
-});
-</script>
-<style scoped lang="scss">
-.land-auction-container {
-  width: 100%;
-  margin-bottom: 54px;
-  .home-title {
-    padding-bottom: 10px;
-    display: flex;
-    &.between {
-      justify-content: space-between;
-    }
-    > span {
-      &.title {
-        color: #27282c;
-        font-size: 20px;
-        position: relative;
-        margin-right: 40px;
-        height: 23px;
-        > .txt {
-          position: relative;
-          z-index: 999;
-        }
-        &.active,
-        &:not(.title-more) {
-          font-weight: bold;
-          &::after {
-            content: '';
-            display: block;
-            position: absolute;
-            bottom: -3px;
-            width: 100%;
-            height: 10px;
-            background: rgba(70, 134, 237, 0.5);
-          }
-          &::before {
-            content: '';
-            display: block;
-            position: absolute;
-            bottom: -3px;
-            right: -10px;
-            border: 5px solid transparent;
-            border-left-color: rgba(70, 134, 237, 0.5);
-            border-bottom-color: rgba(70, 134, 237, 0.5);
-            width: 0px;
-            height: 0px;
-          }
-        }
-        &.title-more {
-          cursor: pointer;
-        }
-      }
-      &.more {
-        color: #0c78f7;
-        font-size: 15px;
-        cursor: pointer;
-      }
-    }
-  }
-  > .home-title {
-    width: 100%;
-    display: flex;
-    > .title {
-      white-space: nowrap;
-      height: 24px;
-      margin-top: 3px;
-    }
-    > .right_box {
-      display: flex;
-      justify-content: space-between;
-      flex: 1;
-      > .cities_box {
-        width: 880px;
-        display: flex;
-        > ul {
-          display: flex;
-          padding: 5px 0px;
-          flex-wrap: wrap;
-          overflow-y: hidden;
-          > li {
-            cursor: pointer;
-            padding: 0px 15px;
-            font-size: 14px;
-            color: #6a707b;
-            border-right: 1px solid rgba(103, 108, 128, 0.2);
-            margin: 5px 0px;
-            &.active {
-              color: #0c78f7;
-            }
-            &:last-child {
-              border-right: 0px;
-            }
-          }
-        }
-        .more {
-          user-select: none;
-          display: inline-block;
-          padding: 0px 5px;
-          height: 24px;
-          line-height: 22px;
-          margin-top: 5px;
-          font-size: 12px;
-          color: #6a707b;
-          border: 1px solid #0c78f7;
-          white-space: nowrap;
-          color: #0c78f7;
-          border-radius: 2px;
-          cursor: pointer;
-        }
-      }
-      > .home_tabs {
-        font-size: 14px;
-        display: inline-block;
-        height: 30px;
-        border-radius: 2px;
-        background-color: #f4f6f8;
-        margin-left: 10px;
-        overflow: hidden;
-        > span {
-          display: inline-block;
-          padding: 5px 10px;
-          cursor: pointer;
-          &.active {
-            color: #fff;
-            background-color: #0c78f7;
-          }
-        }
-      }
-    }
-  }
-  .calendar-box {
-    background: #f4f6f8;
-    padding: 20px;
-    display: flex;
-    align-items: center;
-    > div {
-      &:first-child {
-        flex: 1;
-        > ul {
-          display: flex;
-          justify-content: space-between;
-          padding: 0px 20px;
-          > li {
-            width: 120px;
-            height: 120px;
-            border: 1px solid #c2d1e6;
-            border-radius: 6px;
-            background-color: #fff;
-            padding: 8px;
-            position: relative;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            cursor: pointer;
-            &:hover,
-            &.active {
-              border-color: #0c78f7;
-            }
-            > p {
-              font-family: PingFang SC, PingFang SC;
-              &:first-child {
-                display: flex;
-                align-items: center;
-                justify-content: space-between;
-                position: absolute;
-                top: 8px;
-                left: 8px;
-                right: 8px;
-                > .title {
-                  font-size: 14px;
-                  color: #303a45;
-                }
-                > .circle {
-                  display: inline-block;
-                  width: 6px;
-                  height: 6px;
-                  border-radius: 50%;
-                  background-color: #f00;
-                }
-              }
-              &:last-child {
-                > span {
-                  display: block;
-                  &.sub_title {
-                    font-size: 14px;
-                    color: #6d7481;
-                    margin-bottom: 3px;
-                  }
-                  &.title {
-                    color: #303a45;
-                    font-size: 25px;
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-      &:last-child {
-        padding: 20px;
-        > p {
-          text-align: center;
-          margin-bottom: 8px;
-          color: #27282c;
-        }
-      }
-    }
-  }
-  .block-box {
-    margin-top: 20px;
-    display: grid;
-    grid-template-columns: repeat(3, 1fr);
-    grid-gap: 30px;
-    > div {
-      padding: 10px 20px;
-      box-sizing: border-box;
-      background-color: #f4f6f8;
-      cursor: pointer;
-      > .tags {
-        margin: 10px 0px;
-        > li {
-          display: inline-block;
-          color: #0c78f7;
-          border: 1px solid #0c78f7;
-          font-size: 13px;
-          padding: 3px 10px;
-          background-color: #fff;
-          border-radius: 3px;
-          margin-right: 8px;
-        }
-      }
-      > p {
-        color: #676c80;
-        font-size: 14px;
-      }
-    }
-  }
-}
-</style>

+ 0 - 480
ais_search/web/src/views/home/components/MarketCard.vue

@@ -1,480 +0,0 @@
-<template>
-  <div class="market-container">
-    <div class="title-value">市场动态</div>
-    <div class="content">
-       <div class="icon-bg"></div>
-      <div class="top-summary">
-        <div class="summary-card">
-          <div class="circle circle-supply"></div>
-          <div class="title title-supply">招拍挂出让:</div>
-          <div class="summary">
-            <div class="text">
-              昨日:
-              <div
-                class="value value-supply"
-                v-login-required
-                v-display-control="numberFormatter(landSummary.dayTotal)"
-                @click="jumpToLandMarket('', 1)"
-              >
-                {{ numberFormatter(landSummary.dayTotal) }}
-              </div>
-              个
-            </div>
-            <div class="text">
-              本月:
-              <div
-                class="value value-supply"
-                @click="jumpToLandMarket('', 2)"
-                v-login-required
-                v-display-control="[numberFormatter(landSummary.monthTotal), '*']"
-              >
-                {{ numberFormatter(landSummary.monthTotal) }}
-              </div>
-              个
-            </div>
-          </div>
-        </div>
-        <div class="summary-card m">
-          <div class="circle circle-business"></div>
-          <div class="title title-business">商业用地:</div>
-          <div class="summary">
-            <div class="text">
-              昨日:
-              <div
-                v-display-control="numberFormatter(landSummary.syDayTotal)"
-                v-login-required
-                class="value value-supply"
-                @click="jumpToLandMarket('商服用地', 1)"
-              >
-                {{ numberFormatter(landSummary.syDayTotal) }}
-              </div>
-              个
-            </div>
-            <div class="text">
-              本月:
-              <div
-                class="value value-supply"
-                @click="jumpToLandMarket('商服用地', 2)"
-                v-login-required
-                v-display-control="numberFormatter(landSummary.syMonthTotal)"
-              >
-                {{ numberFormatter(landSummary.syMonthTotal) }}
-              </div>
-              个
-            </div>
-          </div>
-        </div>
-        <div class="summary-card">
-          <div class="circle circle-residence"></div>
-          <div class="title title-residence">住宅用地:</div>
-          <div class="summary">
-            <div class="text">
-              昨日:
-              <div
-                class="value value-supply"
-                @click="jumpToLandMarket('住宅用地', 1)"
-                v-login-required
-                v-display-control="numberFormatter(landSummary.zzDayTotal)"
-              >
-                {{ numberFormatter(landSummary.zzDayTotal) }}
-              </div>
-              个
-            </div>
-            <div class="text">
-              本月:
-              <div
-                class="value value-supply"
-                @click="jumpToLandMarket('住宅用地', 2)"
-                v-login-required
-                v-display-control="numberFormatter(landSummary.zzMonthTotal)"
-              >
-                {{ numberFormatter(landSummary.zzMonthTotal) }}
-              </div>
-              个
-            </div>
-          </div>
-        </div>
-      </div>
-      <div class="bottom-summary">
-       
-        <div class="home-title">
-          <span
-            :class="{ title: true, 'title-more': true, active: currentTab0 == 1 }"
-            @click="tabClickHandle0(1)"
-            ><span class="txt">昨日成交</span></span
-          >
-          <span
-            :class="{ title: true, 'title-more': true, active: currentTab0 == 2 }"
-            @click="tabClickHandle0(2)"
-            ><span class="txt">昨日推出</span></span
-          >
-          <div class="right_box">
-            <span @click="reloadHandle"><RedoOutlined style="margin-right: 3px" />换一换</span>
-          </div>
-        </div>
-        <div class="data_box">
-          <ul>
-            <li v-for="(item, index) in transactionSummaryList" :key="index">
-              <div>
-                <p class="title">
-                  <span style="font-weight: bold" v-display-control="item['region']">{{
-                    item['region']
-                  }}</span
-                  ><span class="time"
-                    >({{ dayjs().subtract(1, 'day').format('YYYY-MM-DD') }})</span
-                  >
-                </p>
-                <p>
-                  <span class="title">{{ currentTab0 === 1 ? '成交' : '推出' }}宗数:</span>
-                  <span class="numberBox">
-                    <span class="number" v-display-control="item['total']">{{
-                      item['total']
-                    }}</span>
-                    <span class="unit">宗</span>
-                  </span>
-                </p>
-                <p>
-                  <span class="title">{{ currentTab0 === 1 ? '成交' : '推出' }}面积:</span>
-                  <span class="numberBox">
-                    <span class="number" v-display-control="item['totalPrice'].toFixed(2)">{{
-                      item['totalPrice'].toFixed(2)
-                    }}</span>
-                    <span class="unit">亩</span>
-                  </span>
-                </p>
-              </div>
-            </li>
-          </ul>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-<script setup>
-import { numberFormatter } from '@/utils/common';
-import dayjs from 'dayjs';
-import SummaryAPI from '@/api/summary';
-import { getLandTransactionSummary } from '@/api/server/land';
-
-import { RedoOutlined } from '@ant-design/icons-vue';
-
-const landSummary = ref({
-  dayTotal: 0,
-  monthTotal: 0,
-  syDayTotal: 0,
-  syMonthTotal: 0,
-  zzDayTotal: 0,
-  zzMonthTotal: 0,
-  gyDayTotal: 0,
-  gyMonthTotal: 0
-});
-/**
- * 换一换
- */
-const reloadIndex = ref(1);
-const reloadHandle = () => {
-  reloadIndex.value++;
-  getLandTransactionSummaryAjax();
-};
-const getYesterdayAndLastMonthSummary = () => {
-  SummaryAPI.getYesterdayAndLastMonthSummary().then((res) => {
-    if (res?.success) {
-      landSummary.value = res?.data || {
-        dayTotal: 0,
-        monthTotal: 0,
-        syDayTotal: 0,
-        syMonthTotal: 0,
-        zzDayTotal: 0,
-        zzMonthTotal: 0,
-        gyDayTotal: 0,
-        gyMonthTotal: 0
-      };
-    }
-  });
-};
-const jumpToLandMarket = (yt, dateType) => {
-  const today = dayjs();
-  const from =
-    dateType === 1
-      ? today.subtract(1, 'day').format('YYYY-MM-DD')
-      : today.format('YYYY-MM-') + '01';
-  const to =
-    dateType === 1
-      ? today.subtract(1, 'day').format('YYYY-MM-DD')
-      : today.endOf('month').format('YYYY-MM-DD');
-
-  window.open(window.AppGlobalConfig.links.landMarketUrl + `?yt=${yt}&from=${from}&to=${to}&zt=3`);
-};
-const currentTab0 = ref(1);
-const transactionSummaryList = ref(new Array(5).fill({ totalPrice: 0 }));
-const tabClickHandle0 = (type) => {
-  currentTab0.value = type;
-  reloadIndex.value = 1;
-  getLandTransactionSummaryAjax();
-};
-const getLandTransactionSummaryAjax = (regionType = 'city') => {
-  getLandTransactionSummary({
-    type: currentTab0.value,
-    regionType,
-    index: reloadIndex.value,
-    date: dayjs().subtract(1, 'day').format('YYYY-MM-DD'),
-    regions: ''
-  }).then((result) => {
-    if (result.code === 200) {
-      transactionSummaryList.value = result.data;
-    }
-  });
-};
-onBeforeMount(() => {
-  getYesterdayAndLastMonthSummary();
-  getLandTransactionSummaryAjax();
-});
-</script>
-<style scoped lang="scss">
-.market-container {
-  width: 100%;
-  margin-bottom: 68px;
-  .title-value {
-    height: 30px;
-    font-family: PingFang SC, PingFang SC;
-    font-weight: 600;
-    font-size: 22px;
-    color: #212121;
-  }
-  .content {
-    width: 100%;
-    margin-top: 24px;
-    height: 280px;
-    background: linear-gradient(180deg, #e0eeff 0%, #eaf3ff 29%, #ffffff 100%);
-    box-shadow: 0px 4px 8px 1px rgba(0, 52, 105, 0.05);
-    border-radius: 6px 6px 6px 6px;
-    padding: 0px 41px 0px 39px;
-    border: 1px solid #ffffff;
-    position: relative;
-    .icon-bg {
-      width: 260px;
-      height: 260px;
-      position: absolute;
-      pointer-events: none;
-      top: 0px;
-      right: 0px;
-      background: url('/images/home/icon-market.png') no-repeat;
-      background-size: 100% 100%;
-    }
-    .top-summary {
-      width: 100%;
-      display: flex;
-      height: 80px;
-      align-items: center;
-      border-bottom: 1px solid #dce6f4;
-
-      .summary-card {
-        display: flex;
-        align-items: center;
-        .circle {
-          width: 8px;
-          height: 8px;
-          margin-right: 11px;
-          background: #2ea4ff;
-          border-radius: 10px 10px 10px 10px;
-          &-supply {
-            background: #2ea4ff;
-          }
-
-          &-business {
-            background: #ff9d19;
-          }
-
-          &-residence {
-            background: #37c98c;
-          }
-        }
-
-        .title {
-          font-family: PingFang SC, PingFang SC;
-          font-weight: 600;
-          font-size: 18px;
-          height: 80px;
-          margin-right: 6px;
-          line-height: 80px;
-          color: #111111;
-          font-style: normal;
-          text-transform: none;
-        }
-
-        .summary {
-          display: flex;
-          height: 80px;
-          align-items: center;
-          .text {
-            display: flex;
-            align-items: center;
-            font-family: PingFang SC, PingFang SC;
-            font-weight: 400;
-            font-size: 15px;
-            color: #343434;
-            text-align: left;
-            font-style: normal;
-            text-transform: none;
-            &:last-of-type {
-              margin-left: 12px;
-            }
-            .value {
-              margin-right: 7px;
-              font-family: PingFang SC, PingFang SC;
-              font-weight: 600;
-              font-size: 18px;
-              text-align: left;
-              font-style: normal;
-              text-transform: none;
-              cursor: pointer;
-
-              &:hover {
-              }
-
-              &-supply {
-                color: #31a2ff;
-              }
-
-              &-business {
-                color: #27c5f4;
-              }
-
-              &-residence {
-                color: #1acc7a;
-              }
-            }
-          }
-        }
-      }
-      .m {
-        margin: 0px 50px;
-      }
-    }
-    .bottom-summary {
-      padding-top: 29px;
-      .home-title {
-        padding-bottom: 10px;
-        width: 100%;
-        display: flex;
-        &.between {
-          justify-content: space-between;
-        }
-        > span {
-          &.title {
-            color: #27282c;
-            font-size: 20px;
-            position: relative;
-            margin-right: 40px;
-            height: 23px;
-            > .txt {
-              position: relative;
-              z-index: 999;
-            }
-            &.active,
-            &:not(.title-more) {
-              font-weight: bold;
-              &::after {
-                content: '';
-                display: block;
-                position: absolute;
-                bottom: -3px;
-                width: 100%;
-                height: 10px;
-                background: rgba(70, 134, 237, 0.5);
-              }
-              &::before {
-                content: '';
-                display: block;
-                position: absolute;
-                bottom: -3px;
-                right: -10px;
-                border: 5px solid transparent;
-                border-left-color: rgba(70, 134, 237, 0.5);
-                border-bottom-color: rgba(70, 134, 237, 0.5);
-                width: 0px;
-                height: 0px;
-              }
-            }
-            &.title-more {
-              cursor: pointer;
-            }
-          }
-          &.more {
-            color: #0c78f7;
-            font-size: 15px;
-            cursor: pointer;
-          }
-        }
-        > .right_box {
-          flex: 1;
-          text-align: right;
-          color: #596471;
-          font-size: 14px;
-          cursor: pointer;
-          display: flex;
-          justify-content: flex-end;
-          align-items: center;
-
-          .year-picker {
-            margin-right: 10px;
-          }
-        }
-      }
-      > .data_box {
-        > ul {
-          display: flex;
-          justify-content: center;
-          align-items: center;
-          padding: 15px 0px 0px 0px;
-          > li {
-            flex: 1.1;
-            border-left: 1px solid #dbe0e5;
-            text-align: center;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            &:first-child {
-              border-left: 0px;
-              flex: 0.9;
-              justify-content: left;
-            }
-            > div {
-              text-align: left;
-              font-size: 14px;
-              color: #27282c;
-              > p {
-                margin: 5px 0px;
-                &.title {
-                  color: #0c78f7;
-                  font-size: 18px;
-                }
-                > .time {
-                  color: #27282f;
-                  font-size: 14px;
-                }
-                .numberBox {
-                  > span {
-                    display: inline-block;
-                  }
-                  > .number {
-                    color: #27282c;
-                    font-size: 18px;
-                    font-weight: bold;
-                  }
-                  > .unit {
-                    font-size: 14px;
-                    color: #27282c;
-                    margin-left: 2px;
-                    font-weight: 500;
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-}
-</style>

+ 0 - 359
ais_search/web/src/views/home/components/MarketDynamicsCard.vue

@@ -1,359 +0,0 @@
-<template>
-  <home-card title="市场动态" @more="() => toNews('SCDT')">
-    <template #content>
-      <div class="content">
-        <div class="top-summary">
-          <div class="summary-card">
-            <div class="title title-supply">招拍挂出让</div>
-            <div class="summary">
-              <div class="text">
-                昨日:
-                <div
-                  class="value value-supply"
-                  v-login-required
-                  v-display-control="numberFormatter(landSummary.dayTotal)"
-                  @click="jumpToLandMarket('', 1)"
-                >
-                  {{ numberFormatter(landSummary.dayTotal) }}
-                </div>
-                个
-              </div>
-              <div class="text">
-                本月:
-                <div
-                  class="value value-supply"
-                  @click="jumpToLandMarket('', 2)"
-                  v-login-required
-                  v-display-control="[numberFormatter(landSummary.monthTotal), '*']"
-                >
-                  {{ numberFormatter(landSummary.monthTotal) }}
-                </div>
-                个
-              </div>
-            </div>
-          </div>
-          <div class="summary-card">
-            <div class="title title-business">商业用地</div>
-            <div class="summary">
-              <div class="text">
-                昨日:
-                <div
-                  v-display-control="numberFormatter(landSummary.syDayTotal)"
-                  v-login-required
-                  class="value value-supply"
-                  @click="jumpToLandMarket('商服用地', 1)"
-                >
-                  {{ numberFormatter(landSummary.syDayTotal) }}
-                </div>
-                个
-              </div>
-              <div class="text">
-                本月:
-                <div
-                  class="value value-supply"
-                  @click="jumpToLandMarket('商服用地', 2)"
-                  v-login-required
-                  v-display-control="numberFormatter(landSummary.syMonthTotal)"
-                >
-                  {{ numberFormatter(landSummary.syMonthTotal) }}
-                </div>
-                个
-              </div>
-            </div>
-          </div>
-          <div class="summary-card">
-            <div class="title title-residence">住宅用地</div>
-            <div class="summary">
-              <div class="text">
-                昨日:
-                <div
-                  class="value value-supply"
-                  @click="jumpToLandMarket('住宅用地', 1)"
-                  v-login-required
-                  v-display-control="numberFormatter(landSummary.zzDayTotal)"
-                >
-                  {{ numberFormatter(landSummary.zzDayTotal) }}
-                </div>
-                个
-              </div>
-              <div class="text">
-                本月:
-                <div
-                  class="value value-supply"
-                  @click="jumpToLandMarket('住宅用地', 2)"
-                  v-login-required
-                  v-display-control="numberFormatter(landSummary.zzMonthTotal)"
-                >
-                  {{ numberFormatter(landSummary.zzMonthTotal) }}
-                </div>
-                个
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="news-list">
-          <div class="new" v-for="n in news" :key="n.key" @click="toDetailPage(n)">
-            <div class="dot"></div>
-            <div class="title" :title="n.infoTitle">
-              <div class="text">{{ n.infoTitle }}</div>
-            </div>
-            <div :class="`is-new is-new${today === n.infoPubdate ? '-show' : ''}`" />
-            <div class="time">
-              {{ n.infoPubdate }}
-            </div>
-          </div>
-        </div>
-      </div>
-    </template>
-  </home-card>
-</template>
-<script setup>
-import { numberFormatter } from '@/utils/common';
-import HomeCard from '@/components/home-card/HomeCard.vue';
-import dayjs from 'dayjs';
-import SummaryAPI from '@/api/summary';
-import ManagerAPI from '@/api/manager';
-
-const today = dayjs().format('YYYY-MM-DD');
-
-const news = ref([]);
-
-const landSummary = ref({
-  dayTotal: 0,
-  monthTotal: 0,
-  syDayTotal: 0,
-  syMonthTotal: 0,
-  zzDayTotal: 0,
-  zzMonthTotal: 0,
-  gyDayTotal: 0,
-  gyMonthTotal: 0
-});
-
-const getYesterdayAndLastMonthSummary = () => {
-  SummaryAPI.getYesterdayAndLastMonthSummary().then((res) => {
-    if (res?.success) {
-      landSummary.value = res?.data || {
-        dayTotal: 0,
-        monthTotal: 0,
-        syDayTotal: 0,
-        syMonthTotal: 0,
-        zzDayTotal: 0,
-        zzMonthTotal: 0,
-        gyDayTotal: 0,
-        gyMonthTotal: 0
-      };
-    }
-  });
-};
-
-const getLandNews = () => {
-  ManagerAPI.getNews({
-    current: 1,
-    categoryCode: window.AppGlobalConfig.newsCategory.market,
-    searchKey: '',
-    size: 6
-  }).then((res) => {
-    if (res.success) {
-      news.value = res.data.records;
-    }
-  });
-};
-
-const toNews = (type) => {
-  window.open(`/#/news/list?type=${type}`, '_blank');
-  // router.push({
-  //   path: '/news/detail',
-  //   query: {
-  //     type,
-  //   }
-  // })
-};
-
-const toDetailPage = (item) => {
-  window.open(`/#/news/detail?type=${item.categoryCode}&id=${item.id}`, '_blank');
-  // router.push({
-  //   path: '/news/detail',
-  //   query: {
-  //     id: item['id']
-  //   }
-  // })
-};
-
-const jumpToLandMarket = (yt, dateType) => {
-  const today = dayjs();
-  const from =
-    dateType === 1
-      ? today.subtract(1, 'day').format('YYYY-MM-DD')
-      : today.format('YYYY-MM-') + '01';
-  const to =
-    dateType === 1
-      ? today.subtract(1, 'day').format('YYYY-MM-DD')
-      : today.endOf('month').format('YYYY-MM-DD');
-
-  window.open(window.AppGlobalConfig.links.landMarketUrl + `?yt=${yt}&from=${from}&to=${to}&zt=3`);
-};
-
-onBeforeMount(() => {
-  getYesterdayAndLastMonthSummary();
-  getLandNews();
-});
-</script>
-<style scoped lang="scss">
-.content {
-  width: 100%;
-  padding-top: 30px;
-
-  .top-summary {
-    width: 100%;
-    display: flex;
-    justify-content: space-between;
-
-    .summary-card {
-      width: 200px;
-      height: 124px;
-      background: #ffffff;
-      border-radius: 4px 4px 4px 4px;
-      border: 1px solid #d6deeb;
-
-      .title {
-        width: 115px;
-        height: 32px;
-        border-radius: 4px 0px 16px 0px;
-        font-family: PingFang SC, PingFang SC;
-        font-weight: 500;
-        font-size: 16px;
-        color: #ffffff;
-        line-height: 0px;
-        text-align: center;
-        font-style: normal;
-        text-transform: none;
-        line-height: 32px;
-
-        &-supply {
-          background: #31a2ff;
-        }
-
-        &-business {
-          background: #27c5f4;
-        }
-
-        &-residence {
-          background: #1acc7a;
-        }
-      }
-
-      .summary {
-        padding: 23px 21px;
-
-        .text {
-          display: flex;
-          align-items: center;
-          margin-bottom: 10px;
-          font-family: PingFang SC, PingFang SC;
-          font-weight: 400;
-          font-size: 15px;
-          color: #343434;
-          text-align: left;
-          font-style: normal;
-          text-transform: none;
-
-          .value {
-            margin-right: 7px;
-            font-family: PingFang SC, PingFang SC;
-            font-weight: 600;
-            font-size: 18px;
-            text-align: left;
-            font-style: normal;
-            text-transform: none;
-            cursor: pointer;
-
-            &:hover {
-            }
-
-            &-supply {
-              color: #31a2ff;
-            }
-
-            &-business {
-              color: #27c5f4;
-            }
-
-            &-residence {
-              color: #1acc7a;
-            }
-          }
-        }
-      }
-    }
-  }
-
-  .news-list {
-    margin-top: 28px;
-
-    .new {
-      width: 100%;
-      height: 46px;
-      display: flex;
-      align-items: center;
-      border-bottom: 1px dashed #c9d2e5;
-      cursor: pointer;
-
-      .dot {
-        margin-left: 2px;
-        margin-right: 12px;
-        width: 4px;
-        height: 4px;
-        background: #d0d8ea;
-      }
-
-      .title {
-        max-width: calc(100% - 18px - 85px - 38px);
-        font-family: PingFang SC, PingFang SC;
-        font-weight: 400;
-        font-size: 15px;
-        color: #343434;
-        text-align: left;
-        font-style: normal;
-        text-transform: none;
-        display: flex;
-        justify-content: flex-start;
-
-        .text {
-          width: 100%;
-          white-space: nowrap;
-          /*超出的空白区域不换行*/
-          overflow: hidden;
-          /*超出隐藏*/
-          text-overflow: ellipsis;
-          /*文本超出显示省略号*/
-        }
-
-        &:hover {
-          color: #0a84ff;
-        }
-      }
-      .is-new {
-        margin-left: 4px;
-        width: 34px;
-        height: 20px;
-        flex: auto;
-
-        &-show {
-          background: url('@/assets/images/home/icon-is-new.png') no-repeat;
-          background-size: contain;
-        }
-      }
-      .time {
-        width: 85px;
-        font-family: PingFang SC, PingFang SC;
-        font-weight: 400;
-        font-size: 14px;
-        color: #575757;
-        text-align: right;
-        font-style: normal;
-        text-transform: none;
-      }
-    }
-  }
-}
-</style>

+ 0 - 64
ais_search/web/src/views/home/components/NewPolicyPriorityTopicsCard.vue

@@ -1,64 +0,0 @@
-<template>
-  <home-card title="政策重点专题" @more="() => toPolicy('ZCZDZT')">
-    <template #content>
-      <div class="content">
-        <div class="item_box">
-          <div
-            class="item_img"
-            v-for="(item, index) in thematicList"
-            :key="index"
-            @click="jumpHotThematic(thematicList[index])"
-          >
-            <img :src="`/images/zczt/${item.remark}.png`" />
-            <span>{{ thematicList[index]['name'] }}</span>
-          </div>
-        </div>
-      </div>
-    </template>
-  </home-card>
-</template>
-<script setup>
-import HomeCard from '@/components/home-card/HomeCard.vue';
-import { thematicList } from '../config1.ts';
-// 跳转详情
-// 到热点专题页面
-const jumpHotThematic = (item) => {
-  // var url = window.AppGlobalConfig.links.policySubject + title;
-  // window.open(url, '_blank');
-    window.open(`${window.AppGlobalConfig.links.policySubject}${item.name}&id=${item.id}`, '_blank');
-};
-const toPolicy = () => {
-  var url = window.AppGlobalConfig.links.subjectUrl;
-  window.open(url, '_blank');
-};
-onBeforeMount(() => {});
-</script>
-<style scoped lang="scss">
-.content {
-  width: 100%;
-  padding-top: 30px;
-
-  .item_box {
-    display: grid !important;
-    cursor: pointer;
-    grid-template-columns: repeat(3, 1fr);
-    grid-gap: 30px;
-    > .item_img {
-      width: 100%;
-      > img {
-        width: 100%;
-        display: block;
-      }
-      > span {
-        display: block;
-        margin-top: 17px;
-        font-family: PingFang SC, PingFang SC;
-        font-weight: 400;
-        font-size: 16px;
-        color: #111111;
-        text-align: center;
-      }
-    }
-  }
-}
-</style>

+ 0 - 144
ais_search/web/src/views/home/components/PolicyDynamicsCard.vue

@@ -1,144 +0,0 @@
-<template>
-  <home-card title="政策动态" @more="() => toPolicy('ZCDT')">
-    <template #content>
-      <div class="content">
-        <div class="policy-list">
-          <div class="half">
-            <div
-              class="policy-item"
-              v-for="(item, index) in policyNews"
-              :key="index"
-              @click="jumpLatestItem(item.id)"
-            >
-              <div class="item-left">
-                <div class="up">{{ item.fbsj?dayjs(item.fbsj, 'YYYY年MM月DD日').format('MM-DD'):'-' }}</div>
-                <div class="down">{{ item.fbsj?dayjs(item.fbsj, 'YYYY年MM月DD日').format('YYYY年'):'-' }}</div>
-              </div>
-              <div class="item-right">
-                <div class="line1">
-                  <span class="level" v-if="item.level">[{{ item.level || '-' }}]</span>
-                  <span class="name">{{ item.name || '-' }}</span>
-                </div>
-                <div class="line2">
-                  {{ item.sxx || '现行有效' }}
-                  <span class="split">|</span>
-                  {{ item.fbdw || '-' }}
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </template>
-  </home-card>
-</template>
-<script setup>
-import HomeCard from '@/components/home-card/HomeCard.vue';
-import dayjs from 'dayjs';
-import PolicyApi from '@/api/server/policy';
-const policyNews = ref([]);
-
-// 获取最新的十条政策
-const getPolicyLatest = () => {
-  PolicyApi.getLatest(5).then((res) => {
-    if (res?.success) {
-      policyNews.value = res?.data || [];
-    }
-  });
-};
-// 跳转详情
-const jumpLatestItem = (id) => {
-  var url = window.AppGlobalConfig.links.policyDetail;
-  url = url.replaceAll('-1', id);
-  window.open(url, '_blank');
-};
-const toPolicy = () => {
-  var url = window.AppGlobalConfig.links.zczkUrl;
-  window.open(url, '_blank');
-};
-onBeforeMount(() => {
-  getPolicyLatest();
-});
-</script>
-<style scoped lang="scss">
-.content {
-  width: 100%;
-  padding-top: 30px;
-
-  .policy-list {
-    width: 100%;
-    display: flex;
-    .half {
-      width: 100%;
-    }
-    .policy-item {
-      width: 100%;
-      height: 50px;
-      display: flex;
-      margin-bottom: 30px;
-      cursor: pointer;
-    }
-    .policy-item:hover {
-      transform: translateY(-5px);
-      transition: all 0.4s;
-    }
-    .item-left {
-      width: 50px;
-      height: 50px;
-      background: #e3eeff;
-      border-radius: 2px;
-      font-family: Arial, Arial;
-      display: flex;
-      flex-direction: column;
-      justify-content: center;
-      align-items: center;
-      .up {
-        font-weight: 400;
-        font-size: 15px;
-        color: #0a111c;
-      }
-      .down {
-        margin-top: 2px;
-        font-weight: 400;
-        font-size: 12px;
-        color: #495a74;
-      }
-    }
-    .item-right {
-      flex: 1;
-      font-weight: 500;
-      font-size: 17px;
-      color: #212121;
-      margin-left: 10px;
-      overflow: hidden;
-      padding-right: 40px;
-      .line1 {
-        width: 100%;
-        white-space: nowrap; /* 禁止文字换行 */
-        overflow: hidden; /* 隐藏超出容器范围的内容 */
-        text-overflow: ellipsis; /* 使用省略号表示被截断的文本 */
-      }
-      .level {
-        margin-right: 10px;
-        font-weight: 500;
-        font-size: 17px;
-        color: #126db1;
-      }
-      .name {
-        font-weight: 500;
-        font-size: 17px;
-        color: #212121;
-      }
-      .line2 {
-        margin-top: 10px;
-        font-weight: 400;
-        font-size: 14px;
-        color: #898f9d;
-        .split {
-          margin: 0 10px;
-        }
-      }
-    }
-  }
-}
-</style>

+ 0 - 63
ais_search/web/src/views/home/components/PolicyPriorityTopicsCard.vue

@@ -1,63 +0,0 @@
-<template>
-  <home-card title="政策重点专题" @more="() => toPolicy('ZCZDZT')">
-    <template #content>
-      <div class="content">
-        <div class="item_box">
-          <div
-            class="item_img"
-            v-for="(item, index) in thematicList"
-            :key="index"
-            @click="jumpHotThematic(thematicList[index]['title'])"
-          >
-            <img :src="thematicList[index]['img']" />
-            <span>{{ thematicList[index]['title'] }}</span>
-          </div>
-        </div>
-      </div>
-    </template>
-  </home-card>
-</template>
-<script setup>
-import HomeCard from '@/components/home-card/HomeCard.vue';
-import { thematicList } from '../config.ts';
-// 跳转详情
-// 到热点专题页面
-const jumpHotThematic = (title) => {
-  var url = window.AppGlobalConfig.links.policySubject + title;
-  window.open(url, '_blank');
-};
-const toPolicy = () => {
-  var url = window.AppGlobalConfig.links.subjectUrl;
-  window.open(url, '_blank');
-};
-onBeforeMount(() => {});
-</script>
-<style scoped lang="scss">
-.content {
-  width: 100%;
-  padding-top: 30px;
-
-  .item_box {
-    display: grid !important;
-    cursor: pointer;
-    grid-template-columns: repeat(3, 1fr);
-    grid-gap: 30px;
-    > .item_img {
-      width: 100%;
-      > img {
-        width: 100%;
-        display: block;
-      }
-      > span {
-        display: block;
-        margin-top: 17px;
-        font-family: PingFang SC, PingFang SC;
-        font-weight: 400;
-        font-size: 16px;
-        color: #111111;
-        text-align: center;
-      }
-    }
-  }
-}
-</style>

+ 0 - 167
ais_search/web/src/views/home/components/fiveItem.js

@@ -1,167 +0,0 @@
-
-import dayjs from 'dayjs';
-import isoWeek from 'dayjs/plugin/isoWeek';
-import weekday from 'dayjs/plugin/weekday';
-
-dayjs.extend(isoWeek);
-dayjs.extend(weekday);
-import {
-  getLandNewestSelling,
-  getLandNewestSold,
-  getAuctionCalendar
-} from '@/api/server/land';
-
-/**
- * @description 土地招拍挂
- * 最新推出
- * 最新成交
- * 土拍日历
- */
-const useFiveItem = () => {
-  const tabType = ref(0)
-  const loading5 = ref(false)
-  const tabList = ref([])
-  const region = ref("")
-  const weekFormat = 'YYYY年第ww周'
-  const weekVal = ref(dayjs(dayjs(), weekFormat))
-  const weekDates = ref([])
-  const numberMapping = {
-    '1': '一',
-    '2': '二',
-    '3': '三',
-    '4': '四',
-    '5': '五',
-    '6': '六',
-    '7': '日'
-  }
-  const initWeekVal = () => {
-    weekVal.value = dayjs(dayjs(), weekFormat)
-  }
-  const initTabList = () => {
-    tabList.value = []
-  }
-  const weekChange = () => {
-    initTabList()
-    initWeekIndex()
-    getAuctionCalendarAjax();
-  }
-  const weekIndex = ref(-1)
-  const initWeekIndex = () => {
-    weekIndex.value = -1;
-  }
-  const weekClickHandle = (item, index) => {
-    weekIndex.value = index;
-    initTabList()
-    if (!item['data']) return;
-    tabList.value = item['data']
-  }
-  const getDateRangeByWeek = (obj) => {
-    const arr = weekVal.value.format('YYYY-ww').split("-")
-    const year = arr[0];
-    const week = arr[1];
-    const date = dayjs().year(year).isoWeek(week);
-    const startOfWeek = date.startOf('isoWeek');
-    weekDates.value = []
-    for (let i = 0; i < 7; i++){
-      const date = startOfWeek.add(i, 'day').format('YYYY-MM-DD');
-      const arr = date.split("-")
-      weekDates.value.push({
-        m: arr[1],
-        d: arr[2],
-        w: numberMapping[i + 1],
-        data: obj[date]
-      });
-    }
-    if (weekIndex.value !== -1) {
-      tabList.value = weekDates.value[weekIndex.value]
-    }
-  }
-  const getLandNewestSellingAjax = () => {
-    loading5.value = true;
-    getLandNewestSelling({
-      region: region.value,
-      regionType: region.value === '' ? '1' : '2',
-      limit: 6
-    }).then((result) => {
-      if (result.code === 200) {
-        tabList.value = result.data
-      }
-    }).finally(() => {
-      loading5.value = false;
-    });
-  }
-  const getLandNewestSoldAjax = () => {
-    loading5.value = true;
-    getLandNewestSold({
-      region: region.value,
-      regionType: region.value === '' ? '1' : '2',
-      limit: 6
-    }).then((result) => {
-      if (result.code === 200) {
-        tabList.value = result.data
-      }
-    }).finally(() => {
-      loading5.value = false;
-    });
-  }
-  const getAuctionCalendarAjax = () => {
-    loading5.value = true;
-    getAuctionCalendar({
-      region: region.value,
-      regionType: region.value === '' ? '1' : '2',
-      from: weekVal.value.startOf('isoWeek').format("YYYY-MM-DD"),
-      to: weekVal.value.endOf('isoWeek').format("YYYY-MM-DD"),
-      landUseType: '',
-      industry: ''
-    }).then((result) => {
-      if (result.code === 200) {
-        weekDates.value = []
-        getDateRangeByWeek(result.data);
-      }
-    }).finally(() => {
-      loading5.value = false;
-    });
-  }
-  const tabClickHandle5 = (type) => {
-    tabType.value = type
-    tabList.value = []
-    initFiveDataAjax(type)
-  }
-  const initFiveDataAjax = (type) => {
-    if (type === 0) {
-      getLandNewestSellingAjax(region)
-      return;
-    }
-    if (type === 1) {
-      getLandNewestSoldAjax(region)
-      return;
-    }
-    if (type === 2) {
-      getAuctionCalendarAjax(region)
-      return;
-    }
-  }
-  const setRegionData = (param) => {
-    region.value = param
-    initFiveDataAjax(tabType.value)
-  }
-  return {
-    region,
-    tabType,
-    tabList,
-    loading5,
-    initTabList,
-    weekFormat,
-    weekIndex,
-    initWeekIndex,
-    weekVal,
-    initWeekVal,
-    weekDates,
-    weekChange,
-    weekClickHandle,
-    tabClickHandle5,
-    setRegionData
-  }
-}
-
-export default useFiveItem;

+ 0 - 41
ais_search/web/src/views/home/config.ts

@@ -1,41 +0,0 @@
-// 热点专题列表
-
-const imgPath = "";
-export const thematicList = [
-  {
-    img: imgPath + '/images/zczt/list1_2.png',
-    title: '低效用地再开发',
-    content:
-      '招商引资,招财引智,对外招商引资的策略,不断创新经济发展方式,鼓励创新,让经济发展与时俱进。'
-  },
-  {
-    img: imgPath + '/images/zczt/list2_2.png',
-    title: '生态保护与修复',
-    content:
-      '加快构建自然保护地体系,共抓大保护、不搞大开发,强化生态保护修复监管,推动生态环境的持续改善。'
-  },
-  {
-    img: imgPath + '/images/zczt/list3_2.png',
-    title: '自然资源确权登记',
-    content:
-      '明确各类自然资源的所有权和生态空间,建立归属清晰、权责明确、保护严格、流转顺畅、监管有效的自然资源资产产权制度。'
-  },
-  {
-    img: imgPath + '/images/zczt/list4_2.png',
-    title: '国土空间规划',
-    content:
-      '建立国土空间规划体系,统筹划定生态保护红线、永久基本农田红线、城镇开发边界等重要控制线,明确国土空间开发保护格局。'
-  },
-  {
-    img: imgPath + '/images/zczt/list5_2.png',
-    title: '耕地保护',
-    content:
-      '采取从严控制建设占用耕地、全面加强耕地种植用途管控、严格落实耕地占补平衡等手段,坚守耕地保护红线。'
-  },
-  {
-    img: imgPath + '/images/zczt/list6_2.png',
-    title: '信息化建设',
-    content:
-      '自然资源信息化建设的目标是提升治理能力,实现数字化、智能化管理,支撑自然资源保护与利用等核心职责履行。'
-  }
-];

+ 0 - 68
ais_search/web/src/views/home/config1.ts

@@ -1,68 +0,0 @@
-// 热点专题列表
-
-const imgPath = "";
-export const thematicList = [
-  {
-    "id": 1,
-    "deleted": 0,
-    "name": "自然资源调查监测",
-    "sort": 1,
-    "remark": "list-0",
-    "parent": -1,
-    "content": "招商引资,招财引智,对外招商引资的策略,不断创新经济发展方式,鼓励创新,让经济发展与时俱进。",
-    "level": 3,
-},
-{
-    "id": 15,
-    "deleted": 0,
-    "name": "自然资源确权登记",
-    "sort": 2,
-    "remark": "list-7",
-    "parent": -1,
-    "content": "明确各类自然资源的所有权和生态空间,建立归属清晰、权责明确、保护严格、流转顺畅、监管有效的自然资源资产产权制度。",
-    "level": 2,
-  
-},
-{
-    "id": 19,
-    "deleted": 0,
-    "name": "自然资源所有者权益",
-    "sort": 3,
-    "remark": "list-1",
-    "parent": -1,
-    "content": "招商引资,招财引智,对外招商引资的策略,不断创新经济发展方式,鼓励创新,让经济发展与时俱进。",
-    "level": 2,
-},
-{
-    "id": 29,
-    "deleted": 0,
-    "name": "国土空间规划",
-    "sort": 4,
-    "remark": "list-8",
-    "parent": -1,
-    "content": "建立国土空间规划体系,统筹划定生态保护红线、永久基本农田红线、城镇开发边界等重要控制线,明确国土空间开发保护格局。",
-    "level": 2,
-    
-},
-{
-    "id": 33,
-    "deleted": 0,
-    "name": "国土空间用途管制",
-    "sort": 5,
-    "remark": "list-2",
-    "parent": -1,
-    "content": "招商引资,招财引智,对外招商引资的策略,不断创新经济发展方式,鼓励创新,让经济发展与时俱进。",
-    "level": 2,
-    
-},
-{
-    "id": 41,
-    "deleted": 0,
-    "name": "自然资源开发利用",
-    "sort": 6,
-    "remark": "list-9",
-    "parent": -1,
-    "content": "招商引资,招财引智,对外招商引资的策略,不断创新经济发展方式,鼓励创新,让经济发展与时俱进。",
-    "level": 2,
-}
-];

+ 2 - 95
ais_search/web/src/views/home/home.vue

@@ -149,7 +149,7 @@ const toggleType = (item, index) => {
 };
 const jumpToSearch = (q) => {
   const { name, type } = scope.value;
-  window.open(`/#/ai-search?q=${encodeURIComponent(q)}&scope=${name}&type=${type}&ds=${isDeepSeek.value}`, '_blank');
+  window.open(`./#/ai-search?q=${encodeURIComponent(q)}&scope=${name}&type=${type}&ds=${isDeepSeek.value}`, '_blank');
 };
 const isDeepSeek = ref((localStorage.getItem("_isDeepSeek") || '0'))
 const dsChange = (type) => {
@@ -189,7 +189,7 @@ const dsChange = (type) => {
         &-main {
           width: 350px;
           height: 56px;
-          background: url('@/assets/images/home/icon-title-main1.png') no-repeat;
+          background: url('@/assets/images/home/icon-title-main.png') no-repeat;
           background-size: 100% 100%;
           margin-bottom: 11px;
         }
@@ -283,14 +283,6 @@ const dsChange = (type) => {
                 background-color: #fff;
               }
             }
-            .sw-checked {
-              :deep(.ant-switch-checked) {
-                background-color: #fff;
-              }
-              :deep(.ant-switch-handle::before) {
-                background-color: #1890ff;
-              }
-            }
           }
         }
         .search-input {
@@ -405,91 +397,6 @@ const dsChange = (type) => {
         }
       }
 
-      .card-menus {
-        height: 125px;
-        width: 100%;
-        display: flex;
-        justify-content: center;
-        position: absolute;
-        bottom: -60px;
-
-        .card-menu {
-          width: 265px;
-          height: 125px;
-          margin-right: 26px;
-          background: #fff;
-          box-shadow: 0 3px 8px 1px rgba(0, 0, 0, 0.06);
-          border-radius: 5px;
-          display: flex;
-          justify-content: center;
-          align-items: center;
-          cursor: pointer;
-          transition: 0.2s all linear;
-
-          &:hover {
-            box-shadow: 0 6px 16px 2px rgba(0, 0, 0, 0.26);
-
-            .desc {
-              .desc-title {
-                color: #0e83f8;
-              }
-            }
-          }
-
-          .icon {
-            width: 90px;
-            height: 72px;
-            margin-right: 12px;
-
-            &-policy {
-              background: url('@/assets/images/home/card-menu-policy.png') no-repeat;
-              background-size: 100% 100%;
-            }
-
-            &-land {
-              background: url('@/assets/images/home/card-menu-land.png') no-repeat;
-              background-size: 100% 100%;
-            }
-
-            &-gis {
-              background: url('@/assets/images/home/card-menu-gis.png') no-repeat;
-              background-size: 100% 100%;
-            }
-
-            &-writer {
-              background: url('@/assets/images/home/card-menu-writer.png') no-repeat;
-              background-size: 100% 100%;
-            }
-
-            &-approval {
-              background: url('@/assets/images/home/card-menu-approval.png') no-repeat;
-              background-size: 100% 100%;
-            }
-          }
-
-          .desc {
-            display: flex;
-            flex-direction: column;
-            justify-content: space-between;
-
-            .desc-title {
-              width: 100px;
-              height: 28px;
-              margin-bottom: 3px;
-              font-family: PingFang SC, PingFang SC;
-              font-weight: 500;
-              font-size: 20px;
-              color: #212121;
-              text-align: left;
-              font-style: normal;
-              text-transform: none;
-            }
-          }
-        }
-        .card-menu:last-child {
-          margin-right: 0 !important;
-        }
-      }
     }
   }
 }

+ 1 - 0
ais_search/web/vite.config.js

@@ -9,6 +9,7 @@ import AutoImport from 'unplugin-auto-import/vite'
 
 // https://vitejs.dev/config/
 export default defineConfig({
+  base: './',
   plugins: [
     vue(),
     SvgLoader(),

Some files were not shown because too many files changed in this diff