riku
2025-04-17 ec7f5ba1f7eb84507e1c8e7b6f66b1ecfbc22728
线上监管

修改线上监管功能
已修改16个文件
已添加4个文件
680 ■■■■■ 文件已修改
app.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/dataLocation.js 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/stat-card/index.wxml 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/stat-card/index.wxss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
miniprogram_npm/tdesign-miniprogram/progress/progress.wxss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/enterprise.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/sceneType.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/home/inspection-proxy.js 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/home/inspection.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/home/supervision-proxy.js 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/inspection/ranking/index.js 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/inspection/ranking/index.wxml 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/inspection/ranking/index.wxss 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/inspection/ranking/search/index.js 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/inspection/ranking/search/index.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/inspection/ranking/search/index.wxml 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/inspection/ranking/search/index.wxss 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/selfpatrol/components/patrol-task/index.wxss 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/simple-home/index.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project.private.config.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app.json
@@ -35,7 +35,8 @@
    "pages/inspection/scene/info/index",
    "pages/inspection/scene/info/device-info/index",
    "pages/inspection/scene/info/device-status/index",
    "pages/simple-home/index"
    "pages/simple-home/index",
    "pages/inspection/ranking/search/index"
  ],
  "tabBar": {
    "custom": true,
common/dataLocation.js
@@ -79,44 +79,44 @@
              { label: '共和新路街道', value: '310106018' },
            ],
          },
          {
            label: '普陀区',
            value: '310107',
            children: [
              { label: '全部街镇', value: '-310107' },
              { label: '曹杨新村街道', value: '310107005' },
              { label: '万里街道', value: '310107021' },
              { label: '真如镇街道', value: '310107022' },
              { label: '长征镇', value: '310107102' },
              { label: '桃浦镇', value: '310107103' },
              { label: '石泉路街道', value: '310107017' },
              { label: '甘泉路街道', value: '310107016' },
              { label: '长寿路街道', value: '310107015' },
              { label: '长风新村街道', value: '310107014' },
              { label: '宜川路街道', value: '310107020' },
            ],
          },
          {
            label: '闵行区',
            value: '310112',
            children: [
              { label: '全部街镇', value: '-310112' },
              { label: '江川路街道', value: '310112001' },
              { label: '古美街道', value: '310112006' },
              { label: '新虹街道', value: '310112008' },
              { label: '浦锦街道', value: '310112009' },
              { label: '莘庄镇', value: '310112101' },
              { label: '七宝镇', value: '310112102' },
              { label: '颛桥镇', value: '310112103' },
              { label: '华漕镇', value: '310112106' },
              { label: '虹桥镇', value: '310112107' },
              { label: '梅陇镇', value: '310112108' },
              { label: '吴泾镇', value: '310112110' },
              { label: '马桥镇', value: '310112112' },
              { label: '浦江镇', value: '310112114' },
              { label: '莘庄工业区', value: '310112501' },
            ],
          },
          // {
          //   label: '普陀区',
          //   value: '310107',
          //   children: [
          //     { label: '全部街镇', value: '-310107' },
          //     { label: '曹杨新村街道', value: '310107005' },
          //     { label: '万里街道', value: '310107021' },
          //     { label: '真如镇街道', value: '310107022' },
          //     { label: '长征镇', value: '310107102' },
          //     { label: '桃浦镇', value: '310107103' },
          //     { label: '石泉路街道', value: '310107017' },
          //     { label: '甘泉路街道', value: '310107016' },
          //     { label: '长寿路街道', value: '310107015' },
          //     { label: '长风新村街道', value: '310107014' },
          //     { label: '宜川路街道', value: '310107020' },
          //   ],
          // },
          // {
          //   label: '闵行区',
          //   value: '310112',
          //   children: [
          //     { label: '全部街镇', value: '-310112' },
          //     { label: '江川路街道', value: '310112001' },
          //     { label: '古美街道', value: '310112006' },
          //     { label: '新虹街道', value: '310112008' },
          //     { label: '浦锦街道', value: '310112009' },
          //     { label: '莘庄镇', value: '310112101' },
          //     { label: '七宝镇', value: '310112102' },
          //     { label: '颛桥镇', value: '310112103' },
          //     { label: '华漕镇', value: '310112106' },
          //     { label: '虹桥镇', value: '310112107' },
          //     { label: '梅陇镇', value: '310112108' },
          //     { label: '吴泾镇', value: '310112110' },
          //     { label: '马桥镇', value: '310112112' },
          //     { label: '浦江镇', value: '310112114' },
          //     { label: '莘庄工业区', value: '310112501' },
          //   ],
          // },
          {
            label: '长宁区',
            value: '310105',
components/stat-card/index.wxml
@@ -2,7 +2,13 @@
<view class="wrap">
  <view class="stat-card__title-wrap">
    <view class="stat-card__title">
      <t-icon wx:if="{{icon}}" class="stat-card__title-icon" name="{{icon}}" size="36rpx" color="var(--td-brand-color)" />
      <t-icon
        wx:if="{{icon}}"
        class="stat-card__title-icon"
        name="{{icon}}"
        size="36rpx"
        color="var(--td-brand-color)"
      />
      <text class="stat-card__title-text">{{title}}</text>
    </view>
    <text class="stat-card__sub-title" bind:tap="onSubTitleClick">{{subTitle}}</text>
@@ -11,7 +17,6 @@
    <t-loading theme="dots" size="50rpx" />
  </view>
  <view wx:else class="stat-card__tags">
    <!-- <block wx:else> -->
    <view
      bindtap="handleClick"
      data-index="{{index}}"
@@ -21,12 +26,18 @@
      wx:index="index"
    >
      <view class="name">
        <text>{{item.name}}</text>
        <t-icon name="chevron-right" size="var(--icon-width)" color="black" />
        <block wx:if="{{item.clickable != false}}">
          <text class="icon-text">{{item.name}}</text>
          <t-icon name="chevron-right" size="var(--icon-width)" color="black" />
        </block>
        <text wx:else>{{item.name}}</text>
      </view>
      <view class="value" style="{{item.color ? 'color:' + item.color + ';' : ''}}"> {{item.value}} </view>
      <view class="diff {{item.diff == '' ? 'diff-2' : ''}}"> {{item.diff == '' ? '0' : item.diff}} </view>
      <view class="value" style="{{item.color ? 'color:' + item.color + ';' : ''}}">
        {{item.value}}
      </view>
      <view class="diff {{item.diff == '' ? 'diff-2' : ''}}">
        {{item.diff == '' ? '0' : item.diff}}
      </view>
    </view>
    <!-- </block> -->
  </view>
</view>
components/stat-card/index.wxss
@@ -65,7 +65,7 @@
  /* border: 1px black solid; */
}
.stat-card__tag .name>text {
.icon-text {
  margin-left: var(--icon-width);
}
miniprogram_npm/tdesign-miniprogram/progress/progress.wxss
@@ -103,7 +103,7 @@
}
.t-progress__canvas--circle .t-progress__info {
  margin: 0;
  font-size: 40rpx;
  font-size: var(--td-progress-info-font-size, 40rpx);
  font-weight: 700;
  line-height: 56rpx;
  overflow: hidden;
model/enterprise.js
@@ -31,16 +31,19 @@
      value: first,
      // diff: first == 0 ? '0%' : '100%',
      diff: '',
      clickable: false,
    },
    {
      name: '运营中',
      value: second,
      diff: first == 0 ? '0%' : `${p1}%`,
      clickable: false,
    },
    {
      name: '关闭',
      value: third,
      diff: first == 0 ? '0%' : `${p2}%`,
      clickable: false,
    },
  ];
}
model/sceneType.js
@@ -23,7 +23,7 @@
  let s = sceneMap[value]
  if (s == undefined) {
    if (value != undefined) {
      s = '-1'
      s = value
    }
  }
  return s
pages/home/inspection-proxy.js
@@ -2,7 +2,7 @@
  fetchInspectionStatistic,
  fetchSubtaskSummaryByArea,
} from '../../services/inspection/fetchInspection';
import dayjs from "dayjs";
import dayjs from 'dayjs';
/**
 * çŽ°åœºå·¡æŸ¥ç›‘ç®¡ç›¸å…³ä¿¡æ¯èŽ·å–é€»è¾‘
@@ -17,7 +17,7 @@
    fetchInspection(page) {
      this.setData({ inspectionLoading: true });
      const { provinceCode, cityCode, districtCode, townCode, sceneTypeValue, time } = this.data;
      const eTime = dayjs(time).endOf('M').format('YYYY-MM-DD HH:mm:ss')
      const eTime = dayjs(time).endOf('M').format('YYYY-MM-DD HH:mm:ss');
      fetchSubtaskSummaryByArea({
        provincecode: provinceCode,
        citycode: cityCode,
@@ -31,6 +31,7 @@
          this.setData({
            inspectionRes: res.data,
          });
          this.fetchSupervisionByDistrict(this.data.tabIndex);
        })
        .finally(() => {
          this.setData({ inspectionLoading: false });
@@ -38,7 +39,18 @@
    },
    onTabsChange(e) {
      this.setData({ tabIndex: e.detail.value });
      this.fetchSupervisionByDistrict(e.detail.value);
    },
    fetchSupervisionByDistrict(index) {
      if (this.data.inspectionRes.length == 0) return;
      const { sceneTypeValue } = this.data;
      const { provinceName, cityName, districtName } = this.data.inspectionRes[index];
      const params = { provinceName, cityName, districtName, sceneTypes: sceneTypeValue };
      this._fetchSupervision(1, params);
    },
    navToInspection(e) {
      const i1 = e.detail.index;
      const { inspectionRes, time, sceneTypeText, sceneTypeValue, tabIndex } = this.data;
pages/home/inspection.wxml
@@ -29,7 +29,7 @@
</t-tabs>
<stat-card
  wx:elif="{{inspectionRes.length == 1}}"
  wx:else
  title="现场巡查"
  subTitle="问题分析 >"
  stats="{{inspectionRes[0].count}}"
pages/home/supervision-proxy.js
@@ -13,6 +13,8 @@
    riskRes: [],
    creditPeriod: '',
    creditRes: [],
    // å–消网络请求标志
    cancelFetch: [],
  },
  lifetimes: {
    attached: function () {},
@@ -22,33 +24,53 @@
     * çº¿ä¸Šç›‘管统计信息
     */
    fetchSupervision(page) {
      const { provinceName, cityName, districtName, townName, sceneTypeValue } = this.data;
      const params = { provinceName, cityName, districtName, townName, sceneTypes: sceneTypeValue };
      this._fetchSupervision(page, params);
    },
    _fetchSupervision(page, params) {
      // å–消正在进行中的上一次请求
      let { cancelFetch } = this.data;
      if (cancelFetch.length > 0) {
        cancelFetch[0] = true;
        cancelFetch = [];
      }
      let abort = false;
      cancelFetch.push(abort);
      this.setData({ cancelFetch });
      this.setData({ supervisionLoading: true });
      // ä¼ä¸šæ•°é‡
      const { provinceName, cityName, districtName, townName, sceneTypeValue } = this.data;
      const f1 = fetchEnterpriseCount({
        data: { provinceName, cityName, districtName, townName, sceneTypes: sceneTypeValue },
        data: params,
      }).then(res => {
        this.setData({
          enterpriseCountRes: res.data,
        });
        if (!abort) {
          this.setData({
            enterpriseCountRes: res.data,
          });
        }
      });
      // ç»¼åˆé£Žé™©
      const f2 = fetchRiskCount({
        data: { provinceName, cityName, districtName, townName, sceneTypes: sceneTypeValue },
        data: params,
      }).then(res => {
        this.setData({
          riskPeriod: res.data.period,
          riskRes: res.data.count,
        });
        if (!abort) {
          this.setData({
            riskPeriod: res.data.period,
            riskRes: res.data.count,
          });
        }
      });
      // çŽ¯ä¿¡ç 
      const f3 = fetchCreditCodeCount({
        data: { provinceName, cityName, districtName, townName, sceneTypes: sceneTypeValue },
        data: params,
      }).then(res => {
        this.setData({
          creditPeriod: res.data.period,
          creditRes: res.data.count,
        });
        if (!abort) {
          this.setData({
            creditPeriod: res.data.period,
            creditRes: res.data.count,
          });
        }
      });
      Promise.all([f1, f2, f3]).finally(() => {
@@ -87,7 +109,8 @@
    },
    _navParams() {
      const { provinceName, cityName, districtName, townName, sceneTypeValue, locationValue } = this.data;
      const { provinceName, cityName, districtName, townName, sceneTypeValue, locationValue } =
        this.data;
      let url = `?sceneType=${sceneTypeValue[0]}`;
      if (provinceName) url += `&province=${provinceName}`;
      if (cityName) url += `&city=${cityName}`;
pages/inspection/ranking/index.js
@@ -10,13 +10,7 @@
Page({
  behaviors: [useLoading, useProblemChangeList, useStatistic, useSortOptions],
  data: {
    // summaryList: [],
    // sort: '',
    // sortBy: 'pro',
    // statistic: {
    //   proNum: 0,
    //   changeNum: 0,
    // },
    placeholder: '输入关键字搜索场景',
  },
  onLoad(options) {
@@ -51,43 +45,6 @@
    });
  },
  // fetchSceneProSummary(params, page) {
  //   const params = _getParamsArea(this.data);
  //   return fetchSceneProSummary({ area: params, page }).then(res => {
  //     if (res.success) {
  //       this.setData({
  //         summaryList: page == 1 ? res.data : this.data.summaryList.concat(res.data),
  //       });
  //     } else {
  //       this.setData({
  //         summaryList: [],
  //       });
  //     }
  //     return res.head;
  //   });
  // },
  // fetchProblems(params, page) {
  //   const params = _getParamsArea(this.data);
  //   return fetchProblemsStatistic(params).then(res => {
  //     let proNum = 0,
  //       changeNum = 0,
  //       changePer = 0;
  //     res.data.forEach(r => {
  //       proNum += r.count;
  //       changeNum += r.changeCount;
  //     });
  //     if (proNum > 0) {
  //       changePer = Math.round((changeNum / proNum) * 1000) / 10;
  //       changePer += '%';
  //     }
  //     this.setData({
  //       statistic: { proNum, changeNum, changePer },
  //     });
  //     return res.head;
  //   });
  // },
  onTimePickerConfirm(e) {
    const { timeValue } = e.detail;
    this.setData({
@@ -115,29 +72,24 @@
    this._startLoad();
  },
  onSortChange(e) {
    const { sorts } = e.detail;
    const { type } = e.currentTarget.dataset;
    this.setData({
      sort: sorts,
      sortBy: type,
      proSort: type == 'pro' ? sorts : 'default',
      changeSort: type == 'changePer' ? sorts : 'default',
    });
    this._startLoad();
  },
  // navToDetail(e) {
  //   const { index } = e.currentTarget.dataset;
  //   const summary = this.data.summaryList[index];
  //   wx.navigateTo({
  //     url: '/pages/inspection/detail/index',
  //     success: result => {
  //       result.eventChannel.emit('acceptInspectionDetailData', {
  //         scene: summary.scene,
  //         time: this.data.time,
  //       });
  //     },
  // onSortChange(e) {
  //   const { sorts } = e.detail;
  //   const { type } = e.currentTarget.dataset;
  //   this.setData({
  //     sort: sorts,
  //     sortBy: type,
  //     proSort: type == 'pro' ? sorts : 'default',
  //     changeSort: type == 'changePer' ? sorts : 'default',
  //   });
  //   this._startLoad();
  // },
  navToSearchPage() {
    wx.navigateTo({
      url: '/pages/inspection/ranking/search/index',
      success: result => {},
      fail: res => {},
      complete: res => {},
    });
  },
});
pages/inspection/ranking/index.wxml
@@ -4,6 +4,9 @@
<view class="page">
  <t-sticky>
    <view class="page-header">
      <view class="supervision-search" bind:tap="navToSearchPage">
        <t-search placeholder="{{placeholder}}" leftIcon="search" disabled> </t-search>
      </view>
      <view class="filter-wrap">
        <t-time-picker
          color="var(--td-font-white-1)"
@@ -28,93 +31,11 @@
        />
      </view>
      <include src="/pages/inspection/ranking/statistic.wxml" />
      <!-- <view class="ranking-summary__item-abstract" style="margin-left: var(--td-spacer)">
        é—®é¢˜æ€»è®¡{{statistic.proNum}}个,已整改{{statistic.changeNum}}个,未整改{{statistic.proNum -
        statistic.changeNum}}个,整改率{{statistic.changePer}}
      </view> -->
      <include src="/pages/inspection/ranking/sort-options.wxml" />
      <!-- <view class="filter-wrap">
        <sort-btn
          text="问题数"
          custom-class="flex-start "
          icon-color="var(--td-warning-color-4)"
          data-type="pro"
          defaultSort="{{proSort}}"
          bind:sortsChange="onSortChange"
        ></sort-btn>
        <sort-btn
          text="整改率"
          custom-class="flex-start "
          icon-color="var(--td-warning-color-4)"
          data-type="changePer"
          defaultSort="{{changeSort}}"
          bind:sortsChange="onSortChange"
        ></sort-btn>
      </view> -->
    </view>
  </t-sticky>
  <view class="page-container">
    <include src="./problem-change-list.wxml" />
    <!-- <template is="pulldown-loading" wx:if="{{pageLoading && summaryList.length != 0}}" />
    <block wx:if="{{summaryList.length > 0}}">
      <view
        class="ranking-summary__item"
        wx:for="{{summaryList}}"
        data-index="{{index}}"
        bind:tap="navToDetail"
      >
        <view style="flex: 1">
          <view class="ranking-summary__item-name">{{item.scene.name}} </view>
          <t-divider />
          <view class="ranking-summary__item-tag__wrap">
            <view class="ranking-summary__item-abstract">地址:{{item.scene.location}} </view>
          </view>
        </view>
        <view class="flex-v">
          <view class="ranking-summary__item-abstract flex-end"
            >整改率:{{_.changePercent(item.proNum, item.changeNum)}}</view
          >
          <view class="ranking-summary__item-tag__wrap">
            <view class="ranking-summary__item-tag">
              <view class="ranking-summary__tag-count"> {{item.proNum}} </view>
              <t-tag
                max-width="{{130}}"
                shape="square"
                size="small"
                theme="default"
                variant="light-outline"
                >问题</t-tag
              >
            </view>
            <view class="ranking-summary__item-tag">
              <view
                class="ranking-summary__tag-count {{_.tagBorderColor(item.proNum, item.changeNum)}}"
              >
                <text>{{item.changeNum}}</text>
                <view></view>
              </view>
              <t-tag
                max-width="{{130}}"
                shape="square"
                size="small"
                theme="default"
                variant="light-outline"
                >整改</t-tag
              >
            </view>
          </view>
          <view class="ranking-summary__nav-icon">
            <t-icon name="chevron-right" size="24rpx" />
          </view>
        </view>
      </view>
    </block>
    <t-empty-page wx:elif="{{!pageLoading}}" description="暂无相关记录" />
    <load-more
      list-is-empty="{{!summaryList.length}}"
      status="{{loadStatus}}"
      bind:retry="_startLoad"
    /> -->
  </view>
  <view class="page-footer"></view>
</view>
pages/inspection/ranking/index.wxss
@@ -8,6 +8,11 @@
  padding: initial;
}
.supervision-search {
  padding: 0 var(--td-spacer-1);
  padding-top: 1px;
}
.filter-wrap {
  background: initial;
}
pages/inspection/ranking/search/index.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,158 @@
import { searchScene } from '../../../../services/inspection/fetchScene';
import { useLoading } from '../../../../behaviors/loading';
Page({
  behaviors: [useLoading],
  data: {
    placeholder: '输入关键词搜索场景',
    searchValue: '',
    isSearch: false,
    searchResult: [],
    historyWords: [],
    dialog: {
      title: '确认删除当前历史记录',
      showCancelButton: true,
      message: '',
    },
    dialogShow: false,
  },
  historyTag: 'inspectionScene',
  deleteType: 0,
  deleteIndex: '',
  onLoad(options) {},
  onShow() {
    this.queryHistory();
  },
  onReachBottom() {
    this._loadMore();
  },
  queryHistory() {
    wx.getStorage({
      key: this.historyTag,
      success: res => {
        this.setData({
          historyWords: res.data,
        });
      },
    });
  },
  //删除某个历史记录
  deleteCurr(e) {
    const { index } = e.currentTarget.dataset;
    const { dialog } = this.data;
    this.deleteIndex = index;
    this.setData({
      dialog: {
        ...dialog,
        message: '确认删除当前历史记录',
        deleteType: 0,
      },
      dialogShow: true,
    });
  },
  //清空历史记录
  handleClearHistory() {
    const { dialog } = this.data;
    this.deleteType = 1;
    this.setData({
      dialog: {
        ...dialog,
        message: '确认删除所有历史记录',
      },
      dialogShow: true,
    });
  },
  confirm() {
    const { historyWords } = this.data;
    const { deleteType, deleteIndex } = this;
    if (deleteType === 0) {
      historyWords.splice(deleteIndex, 1);
      this.setData({
        historyWords,
        dialogShow: false,
      });
    } else {
      this.setData({ historyWords: [], dialogShow: false });
    }
    wx.setStorage({
      key: this.historyTag,
      data: [],
    });
  },
  close() {
    this.setData({ dialogShow: false });
  },
  //点击历史记录
  handleHistoryTap(e) {
    const { historyWords } = this.data;
    const { dataset } = e.currentTarget;
    const _searchValue = historyWords[dataset.index || 0] || '';
    if (_searchValue) {
      this.setData({ searchValue: _searchValue });
      this._startLoad();
    }
  },
  //点击搜索
  handleSubmit() {
    const { historyWords, searchValue } = this.data;
    if (historyWords.indexOf(searchValue) == -1) {
      historyWords.push(searchValue);
      this.setData({ historyWords });
    }
    wx.setStorage({
      key: this.historyTag,
      data: historyWords,
    });
    this._startLoad();
  },
  //清除搜索
  handleClear() {
    this.setData({ searchValue: '', searchResult: [], isSearch: false });
  },
  handleChange() {
    if (this.data.searchValue == '') {
      this.setData({ searchResult: [], isSearch: false });
    }
  },
  _fetchData(page) {
    const { searchValue } = this.data;
    if (searchValue.length === 0) return;
    this.setData({ isSearch: true });
    const area = {
      sceneName: searchValue,
    };
    return searchScene(area, page).then(res => {
      this.setData({
        searchResult: page == 1 ? res.data : this.data.searchResult.concat(res.data),
      });
      return res.head;
    });
  },
  handCellClick(e) {
    const scene = e.detail;
    wx.navigateTo({
      url: '/pages/inspection/detail/index',
      success: result => {
        result.eventChannel.emit('acceptInspectionDetailData', {
          scene: scene,
          time: new Date(),
        });
      },
    });
  },
});
pages/inspection/ranking/search/index.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
{
  "navigationBarTitleText": "搜索",
  "onReachBottomDistance": 10,
  "usingComponents": {
    "scene-search-result": "/pages/inspection/scene/search/components/scene-search-result/index"
  }
}
pages/inspection/ranking/search/index.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
<view class="page">
  <view class="page-header">
    <t-search
      placeholder="{{placeholder}}"
      model:value="{{searchValue}}"
      bind:submit="handleSubmit"
      bind:clear="handleClear"
      bind:change="handleChange"
      focus
    >
    </t-search>
  </view>
  <view class="page-container">
    <scene-search-result
      wx:for="{{searchResult}}"
      wx:key="index"
      wx:for-index="index"
      result="{{item}}"
      bind:click="handCellClick"
    ></scene-search-result>
    <load-more
      list-is-empty="{{!searchResult.length}}"
      status="{{loadStatus}}"
      bind:retry="_startLoad"
    />
    <t-empty
      wx:if="{{loadStatus == 2 && isSearch && searchResult.length == 0}}"
      icon="info-circle-filled"
      description="无匹配记录"
    />
    <block wx:if="{{!isSearch}}">
      <view wx:if="{{historyWords.length > 0}}" class="history-wrap">
        <view class="search-header">
          <text class="search-title">历史搜索</text>
          <text class="search-clear" bind:tap="handleClearHistory">清除</text>
        </view>
        <view class="search-content">
          <view
            class="search-item"
            hover-class="hover-history-item"
            wx:for="{{historyWords}}"
            bind:tap="handleHistoryTap"
            bindlongpress="deleteCurr"
            data-index="{{index}}"
            wx:key="index"
          >
            {{item}}
          </view>
        </view>
      </view>
      <t-empty
        wx:else
        t-class-image="t-empty__image"
        image="/res/nodata.png"
        description="请搜索"
      />
    </block>
  </view>
  <view class="page-footer"></view>
  <t-dialog
    visible="{{dialogShow}}"
    content="{{dialog.message}}"
    bindconfirm="confirm"
    bind:close="close"
    confirm-btn="确定"
    cancel-btn="{{dialog.showCancelButton ? '取消' : null}}"
    t-class-confirm="add-notes__confirm"
  />
</view>
pages/inspection/ranking/search/index.wxss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
.page {
  background-color: var(--td-white-color1);
}
.history-wrap {
  margin-top: 44rpx;
}
.search-header {
  display: flex;
  flex-flow: row nowrap;
  justify-content: space-between;
  align-items: center;
}
.search-title {
  font-size: 30rpx;
  font-family: PingFangSC-Semibold, PingFang SC;
  font-weight: 600;
  color: rgba(51, 51, 51, 1);
  line-height: 42rpx;
}
.search-clear {
  font-size: 24rpx;
  font-family: PingFang SC;
  line-height: 32rpx;
  color: #999999;
  font-weight: normal;
}
.search-content {
  overflow: hidden;
  display: flex;
  flex-flow: row wrap;
  justify-content: flex-start;
  align-items: flex-start;
  margin-top: 24rpx;
}
.search-item {
  color: #333333;
  font-size: 24rpx;
  line-height: 32rpx;
  font-weight: normal;
  margin-right: 24rpx;
  margin-bottom: 24rpx;
  background: #f5f5f5;
  border-radius: 38rpx;
  padding: 12rpx 24rpx;
}
.add-notes__confirm {
  color: #fa4126 !important;
  /* color: #0d80a3 !important; */
}
.t-empty__image {
  width: 240rpx !important;
  height: 240rpx !important;
}
pages/selfpatrol/components/patrol-task/index.wxss
@@ -34,13 +34,14 @@
}
.t-class-progress {
  /* åŽŸæ¡†æž¶ä¸­çš„æ•´ä½“å®½é«˜æ˜¯å†™æ­»çš„224rpx,修改了框架添加两个宽高变量 */
  --td-progress-width: 80rpx;
  --td-progress-height: 80rpx;
  /* æ–‡å­—大小同理 */
  /* ï¼ˆ2023.10.11)原框架中的整体宽高是写死的224rpx,修改了框架添加两个宽高变量;(2024.11.19)新框架版本1.5.1 å·²ç»åŠ å…¥ç›¸åº”çš„å˜é‡ */
  --td-progress-circle-width: 80rpx;
  /* --td-progress-width: 80rpx;
  --td-progress-height: 80rpx; */
  /* æ–‡å­—大小原框架中添加了以下自定义变量 */
  --td-progress-info-font-size: 20rpx;
  /* å†…圈宽高同理 */
  --td-progress-inner-size: calc(100% - 12rpx*1);
  /* å†…圈宽高同理;(2024.11.19)新框架版本1.5.1 å·²ç»åŠ å…¥ç›¸åº”çš„å˜é‡*/
  --td-progress-stroke-circle-width: 6rpx;
}
/* .page .page-footer {
pages/simple-home/index.js
@@ -44,6 +44,13 @@
    this._loadMore();
  },
  onScenePickerConfirm(e) {
    this.setScene(e);
    this.fetchSupervision();
    this.fetchInspection();
    this._startLoad();
  },
  /**
   * åˆå§‹åŠ è½½
   * å½“所有筛选条件都获取到初始值后,执行一次初始化加载
project.private.config.json
@@ -2,7 +2,7 @@
  "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json ä¸­çš„相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
  "projectname": "ep-law-abiding-manage-weixin",
  "setting": {
    "compileHotReLoad": false,
    "compileHotReLoad": true,
    "urlCheck": false
  },
  "libVersion": "3.5.3"