Commit b2f9850f460142377f332bb60145a0fb604e59f4

Authored by lichao
1 parent d9b9463f

提交12-19

garbage-removal/src/common/area.js
1   -var areaData=[[[{"label":"芙蓉区","value":"430102"},{"label":"天心区","value":"430103"},{"label":"岳麓区","value":"430104"},{"label":"开福区","value":"430105"},{"label":"雨花区","value":"430111"},{"label":"望城区","value":"430112"},{"label":"长沙县","value":"430121"},{"label":"浏阳市","value":"430181"},{"label":"宁乡市","value":"430182"},{ "label": "湘江新区", "value": "430183" }],[{"label":"荷塘区","value":"430202"},{"label":"芦淞区","value":"430203"},{"label":"石峰区","value":"430204"},{"label":"天元区","value":"430211"},{"label":"株洲县","value":"430221"},{"label":"攸县","value":"430223"},{"label":"茶陵县","value":"430224"},{"label":"炎陵县","value":"430225"},{"label":"云龙示范区","value":"430271"},{"label":"醴陵市","value":"430281"}],[{"label":"雨湖区","value":"430302"},{"label":"岳塘区","value":"430304"},{"label":"湘潭县","value":"430321"},{"label":"湖南湘潭高新技术产业园区","value":"430371"},{"label":"湘潭昭山示范区","value":"430372"},{"label":"湘潭九华示范区","value":"430373"},{"label":"湘乡市","value":"430381"},{"label":"韶山市","value":"430382"}],[{"label":"珠晖区","value":"430405"},{"label":"雁峰区","value":"430406"},{"label":"石鼓区","value":"430407"},{"label":"蒸湘区","value":"430408"},{"label":"南岳区","value":"430412"},{"label":"衡阳县","value":"430421"},{"label":"衡南县","value":"430422"},{"label":"衡山县","value":"430423"},{"label":"衡东县","value":"430424"},{"label":"祁东县","value":"430426"},{"label":"衡阳综合保税区","value":"430471"},{"label":"湖南衡阳高新技术产业园区","value":"430472"},{"label":"湖南衡阳松木经济开发区","value":"430473"},{"label":"耒阳市","value":"430481"},{"label":"常宁市","value":"430482"}],[{"label":"双清区","value":"430502"},{"label":"大祥区","value":"430503"},{"label":"北塔区","value":"430511"},{"label":"邵东县","value":"430521"},{"label":"新邵县","value":"430522"},{"label":"邵阳县","value":"430523"},{"label":"隆回县","value":"430524"},{"label":"洞口县","value":"430525"},{"label":"绥宁县","value":"430527"},{"label":"新宁县","value":"430528"},{"label":"城步苗族自治县","value":"430529"},{"label":"武冈市","value":"430581"}],[{"label":"岳阳楼区","value":"430602"},{"label":"云溪区","value":"430603"},{"label":"君山区","value":"430611"},{"label":"岳阳县","value":"430621"},{"label":"华容县","value":"430623"},{"label":"湘阴县","value":"430624"},{"label":"平江县","value":"430626"},{"label":"岳阳市屈原管理区","value":"430671"},{"label":"汨罗市","value":"430681"},{"label":"临湘市","value":"430682"}],[{"label":"武陵区","value":"430702"},{"label":"鼎城区","value":"430703"},{"label":"安乡县","value":"430721"},{"label":"汉寿县","value":"430722"},{"label":"澧县","value":"430723"},{"label":"临澧县","value":"430724"},{"label":"桃源县","value":"430725"},{"label":"石门县","value":"430726"},{"label":"常德市西洞庭管理区","value":"430771"},{"label":"津市市","value":"430781"}],[{"label":"永定区","value":"430802"},{"label":"武陵源区","value":"430811"},{"label":"慈利县","value":"430821"},{"label":"桑植县","value":"430822"}],[{"label":"资阳区","value":"430902"},{"label":"赫山区","value":"430903"},{"label":"南县","value":"430921"},{"label":"桃江县","value":"430922"},{"label":"安化县","value":"430923"},{"label":"益阳市大通湖管理区","value":"430971"},{"label":"湖南益阳高新技术产业园区","value":"430972"},{"label":"沅江市","value":"430981"}],[{"label":"北湖区","value":"431002"},{"label":"苏仙区","value":"431003"},{"label":"桂阳县","value":"431021"},{"label":"宜章县","value":"431022"},{"label":"永兴县","value":"431023"},{"label":"嘉禾县","value":"431024"},{"label":"临武县","value":"431025"},{"label":"汝城县","value":"431026"},{"label":"桂东县","value":"431027"},{"label":"安仁县","value":"431028"},{"label":"资兴市","value":"431081"}],[{"label":"零陵区","value":"431102"},{"label":"冷水滩区","value":"431103"},{"label":"祁阳县","value":"431121"},{"label":"东安县","value":"431122"},{"label":"双牌县","value":"431123"},{"label":"道县","value":"431124"},{"label":"江永县","value":"431125"},{"label":"宁远县","value":"431126"},{"label":"蓝山县","value":"431127"},{"label":"新田县","value":"431128"},{"label":"江华瑶族自治县","value":"431129"},{"label":"永州经济技术开发区","value":"431171"},{"label":"永州市金洞管理区","value":"431172"},{"label":"永州市回龙圩管理区","value":"431173"}],[{"label":"鹤城区","value":"431202"},{"label":"中方县","value":"431221"},{"label":"沅陵县","value":"431222"},{"label":"辰溪县","value":"431223"},{"label":"溆浦县","value":"431224"},{"label":"会同县","value":"431225"},{"label":"麻阳苗族自治县","value":"431226"},{"label":"新晃侗族自治县","value":"431227"},{"label":"芷江侗族自治县","value":"431228"},{"label":"靖州苗族侗族自治县","value":"431229"},{"label":"通道侗族自治县","value":"431230"},{"label":"怀化市洪江管理区","value":"431271"},{"label":"洪江市","value":"431281"}],[{"label":"娄星区","value":"431302"},{"label":"双峰县","value":"431321"},{"label":"新化县","value":"431322"},{"label":"冷水江市","value":"431381"},{"label":"涟源市","value":"431382"}],[{"label":"吉首市","value":"433101"},{"label":"泸溪县","value":"433122"},{"label":"凤凰县","value":"433123"},{"label":"花垣县","value":"433124"},{"label":"保靖县","value":"433125"},{"label":"古丈县","value":"433126"},{"label":"永顺县","value":"433127"},{"label":"龙山县","value":"433130"},{"label":"湖南吉首经济开发区","value":"433172"},{"label":"湖南永顺经济开发区","value":"433173"}]]];export default areaData;
  1 +var areaData = [[[{"label": "湘江新区", "value": "430183"},{"label": "芙蓉区", "value": "430102"}, {"label": "天心区", "value": "430103"}, {
  2 + "label": "岳麓区",
  3 + "value": "430104"
  4 +}, {"label": "开福区", "value": "430105"}, {"label": "雨花区", "value": "430111"}, {
  5 + "label": "望城区",
  6 + "value": "430112"
  7 +}, {"label": "长沙县", "value": "430121"}, {"label": "浏阳市", "value": "430181"}, {
  8 + "label": "宁乡市",
  9 + "value": "430182"
  10 +}], [{"label": "荷塘区", "value": "430202"}, {
  11 + "label": "芦淞区",
  12 + "value": "430203"
  13 +}, {"label": "石峰区", "value": "430204"}, {"label": "天元区", "value": "430211"}, {
  14 + "label": "株洲县",
  15 + "value": "430221"
  16 +}, {"label": "攸县", "value": "430223"}, {"label": "茶陵县", "value": "430224"}, {
  17 + "label": "炎陵县",
  18 + "value": "430225"
  19 +}, {"label": "云龙示范区", "value": "430271"}, {"label": "醴陵市", "value": "430281"}], [{
  20 + "label": "雨湖区",
  21 + "value": "430302"
  22 +}, {"label": "岳塘区", "value": "430304"}, {"label": "湘潭县", "value": "430321"}, {
  23 + "label": "湖南湘潭高新技术产业园区",
  24 + "value": "430371"
  25 +}, {"label": "湘潭昭山示范区", "value": "430372"}, {"label": "湘潭九华示范区", "value": "430373"}, {
  26 + "label": "湘乡市",
  27 + "value": "430381"
  28 +}, {"label": "韶山市", "value": "430382"}], [{"label": "珠晖区", "value": "430405"}, {
  29 + "label": "雁峰区",
  30 + "value": "430406"
  31 +}, {"label": "石鼓区", "value": "430407"}, {"label": "蒸湘区", "value": "430408"}, {
  32 + "label": "南岳区",
  33 + "value": "430412"
  34 +}, {"label": "衡阳县", "value": "430421"}, {"label": "衡南县", "value": "430422"}, {
  35 + "label": "衡山县",
  36 + "value": "430423"
  37 +}, {"label": "衡东县", "value": "430424"}, {"label": "祁东县", "value": "430426"}, {
  38 + "label": "衡阳综合保税区",
  39 + "value": "430471"
  40 +}, {"label": "湖南衡阳高新技术产业园区", "value": "430472"}, {
  41 + "label": "湖南衡阳松木经济开发区",
  42 + "value": "430473"
  43 +}, {"label": "耒阳市", "value": "430481"}, {"label": "常宁市", "value": "430482"}], [{
  44 + "label": "双清区",
  45 + "value": "430502"
  46 +}, {"label": "大祥区", "value": "430503"}, {"label": "北塔区", "value": "430511"}, {
  47 + "label": "邵东县",
  48 + "value": "430521"
  49 +}, {"label": "新邵县", "value": "430522"}, {"label": "邵阳县", "value": "430523"}, {
  50 + "label": "隆回县",
  51 + "value": "430524"
  52 +}, {"label": "洞口县", "value": "430525"}, {"label": "绥宁县", "value": "430527"}, {
  53 + "label": "新宁县",
  54 + "value": "430528"
  55 +}, {"label": "城步苗族自治县", "value": "430529"}, {"label": "武冈市", "value": "430581"}], [{
  56 + "label": "岳阳楼区",
  57 + "value": "430602"
  58 +}, {"label": "云溪区", "value": "430603"}, {"label": "君山区", "value": "430611"}, {
  59 + "label": "岳阳县",
  60 + "value": "430621"
  61 +}, {"label": "华容县", "value": "430623"}, {"label": "湘阴县", "value": "430624"}, {
  62 + "label": "平江县",
  63 + "value": "430626"
  64 +}, {"label": "岳阳市屈原管理区", "value": "430671"}, {"label": "汨罗市", "value": "430681"}, {
  65 + "label": "临湘市",
  66 + "value": "430682"
  67 +}], [{"label": "武陵区", "value": "430702"}, {"label": "鼎城区", "value": "430703"}, {
  68 + "label": "安乡县",
  69 + "value": "430721"
  70 +}, {"label": "汉寿县", "value": "430722"}, {"label": "澧县", "value": "430723"}, {
  71 + "label": "临澧县",
  72 + "value": "430724"
  73 +}, {"label": "桃源县", "value": "430725"}, {"label": "石门县", "value": "430726"}, {
  74 + "label": "常德市西洞庭管理区",
  75 + "value": "430771"
  76 +}, {"label": "津市市", "value": "430781"}], [{"label": "永定区", "value": "430802"}, {
  77 + "label": "武陵源区",
  78 + "value": "430811"
  79 +}, {"label": "慈利县", "value": "430821"}, {"label": "桑植县", "value": "430822"}], [{
  80 + "label": "资阳区",
  81 + "value": "430902"
  82 +}, {"label": "赫山区", "value": "430903"}, {"label": "南县", "value": "430921"}, {
  83 + "label": "桃江县",
  84 + "value": "430922"
  85 +}, {"label": "安化县", "value": "430923"}, {
  86 + "label": "益阳市大通湖管理区",
  87 + "value": "430971"
  88 +}, {"label": "湖南益阳高新技术产业园区", "value": "430972"}, {
  89 + "label": "沅江市",
  90 + "value": "430981"
  91 +}], [{"label": "北湖区", "value": "431002"}, {"label": "苏仙区", "value": "431003"}, {
  92 + "label": "桂阳县",
  93 + "value": "431021"
  94 +}, {"label": "宜章县", "value": "431022"}, {"label": "永兴县", "value": "431023"}, {
  95 + "label": "嘉禾县",
  96 + "value": "431024"
  97 +}, {"label": "临武县", "value": "431025"}, {"label": "汝城县", "value": "431026"}, {
  98 + "label": "桂东县",
  99 + "value": "431027"
  100 +}, {"label": "安仁县", "value": "431028"}, {"label": "资兴市", "value": "431081"}], [{
  101 + "label": "零陵区",
  102 + "value": "431102"
  103 +}, {"label": "冷水滩区", "value": "431103"}, {"label": "祁阳县", "value": "431121"}, {
  104 + "label": "东安县",
  105 + "value": "431122"
  106 +}, {"label": "双牌县", "value": "431123"}, {"label": "道县", "value": "431124"}, {
  107 + "label": "江永县",
  108 + "value": "431125"
  109 +}, {"label": "宁远县", "value": "431126"}, {"label": "蓝山县", "value": "431127"}, {
  110 + "label": "新田县",
  111 + "value": "431128"
  112 +}, {"label": "江华瑶族自治县", "value": "431129"}, {
  113 + "label": "永州经济技术开发区",
  114 + "value": "431171"
  115 +}, {"label": "永州市金洞管理区", "value": "431172"}, {
  116 + "label": "永州市回龙圩管理区",
  117 + "value": "431173"
  118 +}], [{"label": "鹤城区", "value": "431202"}, {"label": "中方县", "value": "431221"}, {
  119 + "label": "沅陵县",
  120 + "value": "431222"
  121 +}, {"label": "辰溪县", "value": "431223"}, {"label": "溆浦县", "value": "431224"}, {
  122 + "label": "会同县",
  123 + "value": "431225"
  124 +}, {"label": "麻阳苗族自治县", "value": "431226"}, {
  125 + "label": "新晃侗族自治县",
  126 + "value": "431227"
  127 +}, {"label": "芷江侗族自治县", "value": "431228"}, {
  128 + "label": "靖州苗族侗族自治县",
  129 + "value": "431229"
  130 +}, {"label": "通道侗族自治县", "value": "431230"}, {"label": "怀化市洪江管理区", "value": "431271"}, {
  131 + "label": "洪江市",
  132 + "value": "431281"
  133 +}], [{"label": "娄星区", "value": "431302"}, {"label": "双峰县", "value": "431321"}, {
  134 + "label": "新化县",
  135 + "value": "431322"
  136 +}, {"label": "冷水江市", "value": "431381"}, {"label": "涟源市", "value": "431382"}], [{
  137 + "label": "吉首市",
  138 + "value": "433101"
  139 +}, {"label": "泸溪县", "value": "433122"}, {"label": "凤凰县", "value": "433123"}, {
  140 + "label": "花垣县",
  141 + "value": "433124"
  142 +}, {"label": "保靖县", "value": "433125"}, {"label": "古丈县", "value": "433126"}, {
  143 + "label": "永顺县",
  144 + "value": "433127"
  145 +}, {"label": "龙山县", "value": "433130"}, {
  146 + "label": "湖南吉首经济开发区",
  147 + "value": "433172"
  148 +}, {"label": "湖南永顺经济开发区", "value": "433173"}]]];
  149 +export default areaData;
... ...
garbage-removal/src/pages/home-info/address/addSite.vue
... ... @@ -57,6 +57,7 @@ import citySelect from './citySelect/u-city-select.vue';
57 57 const { proxy } = getCurrentInstance();
58 58 const cityPikerShowFlag = ref(false)
59 59 const addFlag = ref(true)
  60 +const location = ref({});
60 61 const addressInfo = reactive({
61 62 addressArea: "",
62 63 addressDetail: "",
... ... @@ -167,23 +168,65 @@ const submit = () => {
167 168 const chooseAddressDetail = () => {
168 169 console.log('打开地图选择地址');
169 170  
170   - // 直接打开地图选择器,不进行定位
171   - uni.chooseLocation({
172   - success: (res) => {
173   - addressInfo.addressDetail = res.name;
174   - addressInfo.garLongitude = res.longitude;
175   - addressInfo.garLatitude = res.latitude;
  171 + // 先获取当前位置的经纬度
  172 + uni.getLocation({
  173 + type: 'gcj02', // 使用国测局坐标系,与地图选择器的坐标系一致
  174 + altitude: false,
  175 + success: (locationRes) => {
  176 + console.log('获取当前位置成功', locationRes);
  177 +
  178 + // 使用获取到的经纬度作为初始位置打开地图选择器
  179 + uni.chooseLocation({
  180 + longitude: location.value.longitude, // 设置初始经度
  181 + latitude: location.value.latitude, // 设置初始纬度
  182 + success: (res) => {
  183 + addressInfo.addressDetail = res.name;
  184 + addressInfo.garLongitude = res.longitude;
  185 + addressInfo.garLatitude = res.latitude;
  186 + },
  187 + fail: (err) => {
  188 + console.error('地图选择失败:', err);
  189 + uni.$u.toast('地图选择失败');
  190 + }
  191 + });
176 192 },
177 193 fail: (err) => {
178   - console.error('地图选择失败:', err);
  194 + console.error('获取当前位置失败:', err);
  195 +
  196 + // 如果获取位置失败,仍然打开地图选择器,但不自动定位
  197 + uni.chooseLocation({
  198 + success: (res) => {
  199 + addressInfo.addressDetail = res.name;
  200 + addressInfo.garLongitude = res.longitude;
  201 + addressInfo.garLatitude = res.latitude;
  202 + },
  203 + fail: (err) => {
  204 + console.error('地图选择失败:', err);
  205 + uni.$u.toast('地图选择失败');
  206 + }
  207 + });
179 208 }
180 209 });
181 210 };
182 211  
183 212 onMounted(() => {
184 213 proxy.$refs.addressFrom.setRules(rules)
  214 + window.takeLocationCallBack = takeLocalCallBack
185 215 })
186 216  
  217 +const takeLocalCallBack = (lngLat) => {
  218 + const ll = lngLat.split(",");
  219 + console.log(ll);
  220 + location.value = {
  221 + longitude: ll[0],
  222 + latitude: ll[1]
  223 + };
  224 +}
  225 +
  226 +const takeLocation = () => {
  227 + window.JsInterface.takeLocation();
  228 +}
  229 +
187 230 onLoad((options) => {
188 231 if (options.addressObj) {
189 232 let addressObj = JSON.parse(options.addressObj);
... ... @@ -201,6 +244,7 @@ onLoad((options) => {
201 244 if(options.defaultFlag && 'true' == options.defaultFlag){
202 245 addressInfo.defaultFlag = true;
203 246 }
  247 + takeLocation();
204 248 })
205 249 const reset = () => {
206 250 addressInfo.addressArea = ''
... ...
garbage-removal/src/pages/home-info/type-guide/index.vue
1 1 <template>
2   - <view class="type-guide">
3   - <image :src="imageUrl"></image>
4   - </view>
5   - </template>
  2 + <view class="type-guide">
  3 + <image :src="imageUrl" mode="widthFix"></image>
  4 + </view>
  5 +</template>
6 6  
7 7 <script setup>
8 8 const imageUrl = import.meta.env.VITE_BASE_URL + "/type-guide.png";
9 9 </script>
10   -
11   - <style lang="scss" scoped>
12   - .type-guide {
  10 +
  11 +<style lang="scss" scoped> .type-guide {
  12 + width: 100%;
  13 + height: 100%;
  14 + display: flex;
  15 + justify-content: center;
  16 + box-sizing: border-box;
  17 + background-color: white;
  18 + padding-top: 20rpx;
  19 +
  20 + image {
13 21 width: 100%;
14   - height: 100%;
15   - display: flex;
16   - justify-content: center;
17   - box-sizing: border-box;
18   - background-color: white;
19   - padding-top: 20rpx;
20   -
21   - image {
22   - background-size: 100% 100%;
23   - width: 750rpx;
24   - height: 4494rpx;
25   - }
  22 + height: auto;
26 23 }
27   - </style>
  24 +}
  25 +</style>
28 26  
29 27 \ No newline at end of file
... ...
garbage-removal/src/pages/home/index.vue
... ... @@ -19,7 +19,7 @@
19 19 <view class="company-box">
20 20 <view class="info-box">
21 21 <view class="info-box-item" hover-class="click-box" v-for="(item, index) in infoBoxList" :key="index"
22   - @click.stop="handlerCLickInfoBox(item.text)">
  22 + @click.stop="handlerCLickInfoBox(item.text)">
23 23 <view class="info-box-item-icon" :class="item.icon">
24 24 </view>
25 25 <view class="info-box-item-text">{{ item.text }}</view>
... ... @@ -44,20 +44,21 @@
44 44 <view class="company-list-header-left" v-if="(addressInfo && userType == '用户')">
45 45 <u-dropdown active-color="#19a97c">
46 46 <u-dropdown-item :height="'240rpx'" :placement="'left'" v-model="registrationAreaValue"
47   - @change="handleDropdownAreaChange" :title="'所属区域'" :options="dropdownOptions[0]"></u-dropdown-item>
  47 + @update:modelValue="handleDropdownAreaChange" :title="registrationAreaLabel" :options="dropdownOptions[0]"></u-dropdown-item>
48 48  
49 49 <u-dropdown-item :placement="'center'" v-model="carTypeValue" @change="handleDropdownCarChange"
50   - :title="'车辆类型'" :options="dropdownOptions[1]"></u-dropdown-item>
  50 + :title="carTypeValue || '车辆类型'" :options="dropdownOptions[1]"></u-dropdown-item>
51 51  
52 52 <u-dropdown-item :placement="'right'" v-model="sortValue" @change="handleDropdownSortChange"
53   - :title="'排序'" :options="dropdownOptions[2]"></u-dropdown-item>
  53 + :title="sortLabel" :options="dropdownOptions[2]"></u-dropdown-item>
54 54 </u-dropdown>
55 55 </view>
56 56 </view>
57 57 <view class="company-list-content">
58 58 <view class="company-list-content-box">
59   - <z-paging ref="paging" :fixed="false" v-model="companyList" @query="queryList">
60   - <empty-view slot:empty></empty-view>
  59 + <!-- 删除z-paging组件,改为普通容器 -->
  60 + <view v-if="companyList.length > 0">
  61 + <empty-view v-if="companyList.length === 0" />
61 62 <view class="company-list-item" v-for="(item) in companyList" :key="item.id">
62 63 <view class="company-list-item-main">
63 64 <view class="company-list-item-main-right">
... ... @@ -69,32 +70,32 @@
69 70 <view class="company-list-item-main-box" style="display: flex;">
70 71 <view class="company-list-item-main-left-box" style="flex: 1;">
71 72 <view class="company-list-item-main-bottom-box"
72   - @click="handleDetailClick(item, item.servicePhone, userAddress)">
  73 + @click="handleDetailClick(item, item.servicePhone, userAddress)">
73 74 <view class="company-list-item-main-right-score">
74 75 <text class="company-list-item-main-right-text">评分:</text>
75 76 <view v-if="item.score != 0" class="company-list-item-main-right-score-start">
76 77 <u-rate activeColor="#f9ae3d" inactive-color="#f9ae3d" size="28"
77   - :modelValue="item.score" allowHalf readonly></u-rate>
  78 + :modelValue="item.score" allowHalf readonly></u-rate>
78 79 </view>
79 80 <text v-if="item.score > 0" class="company-list-item-main-right-text"
80   - style="color: #fd5d00;">
  81 + style="color: #fd5d00;">
81 82 {{ item.score }}分
82 83 </text>
83 84 <text v-else class="company-list-item-main-right-text"
84   - style="color: #fd5d00;">最近一月暂无评分</text>
  85 + style="color: #fd5d00;">最近一月暂无评分</text>
85 86 </view>
86 87 <view class="company-list-item-main-right-price-number">
87   -
  88 +
88 89 <view class="company-list-item-main-right-number">
89 90 清运数:<text class="company-list-item-main-right-number-text">{{ item.cleanNumber }}</text>
90 91 </view>
91 92 </view>
92 93 </view>
93   -
  94 +
94 95 </view>
95 96 <view class="company-list-item-main-right-box" v-if="(addressInfo && userType == '用户')" style="display: flex;font-size: 28rpx; justify-content: flex-end; align-items: flex-end;color:#458B74;font-weight: bold;">
96 97 <view class="company-list-item-main-right-box-text"
97   - @click.stop="handleCleanGarbage(item, item.servicePhone, userAddress)">
  98 + @click.stop="handleCleanGarbage(item, item.servicePhone, userAddress)">
98 99 预约清运 ->
99 100 </view>
100 101 </view>
... ... @@ -104,7 +105,8 @@
104 105 <view class="company-list-item-bottom">
105 106 </view>
106 107 </view>
107   - </z-paging>
  108 + </view>
  109 + <empty-view v-else />
108 110 </view>
109 111 </view>
110 112 </view>
... ... @@ -126,6 +128,7 @@
126 128 </view>
127 129 </template>
128 130  
  131 +
129 132 <script setup>
130 133 import { queryAddress } from '@/apis/address.js';
131 134 import { queryEnterpriseList } from '@/apis/company.js';
... ... @@ -143,58 +146,67 @@ let maxScore = 5
143 146 const maxStar = ref([]);
144 147 const lightHeight = ref();//胶囊按钮信息
145 148 const topMargin = ref(null);//状态栏高度
146   -const musicheadHeight = ref();
147   -const paging = ref(null)
  149 +const musicheadHeight = ref()
  150 +// 删除paging引用
  151 +// const paging = ref(null)
148 152 const swiperImageList = ref([{
149 153 image: import.meta.env.VITE_BASE_URL + "/swiper-1.jpg"
150 154 }, {
151 155 image: import.meta.env.VITE_BASE_URL + "/swiper-2.jpg"
152 156 }])
153 157  
  158 +// 公司列表缓存
  159 +const companyListCache = ref(new Map())
  160 +
154 161 const userAddress = ref({})
155 162 const addressInfo = ref()
156 163 const sortValue = ref(0)
157 164 const registrationAreaValue = ref('')
158   -const registrationAreaRealValue = ref('')
  165 +const registrationAreaLabel = ref('所属区域')
  166 +const sortLabel = ref('排序')
159 167 const carTypeValue = ref('')
160 168 const carTypeRealValue = ref('')
161 169 const dropdownOptions = ref([
162 170 [{
163   - label: '湘江新区',
164   - value: '湘江新区'
  171 + label: '全部',
  172 + value: ''
165 173 },
166 174 {
  175 + label: '湘江新区',
  176 + value: '湘江新区'
  177 + },
  178 + {
167 179 label: '芙蓉区',
168 180 value: '芙蓉区'
169 181 },
170   - {
171   - label: '天心区',
172   - value: '天心区'
173   - },
174   - {
175   - label: '开福区',
176   - value: '开福区'
177   - },
178   - {
179   - label: '雨花区',
180   - value: '雨花区'
181   - },
182   - {
183   - label: '望城区',
184   - value: '望城区'
185   - },
186   - {
187   - label: '长沙县',
188   - value: '长沙县'
189   - },
190   - {
191   - label: '浏阳市',
192   - value: '浏阳市'
193   - },
194   - {
195   - label: '宁乡市',
196   - value: '宁乡市'
197   - }
  182 + {
  183 + label: '天心区',
  184 + value: '天心区'
  185 + },
  186 + {
  187 + label: '开福区',
  188 + value: '开福区'
  189 + },
  190 + {
  191 + label: '雨花区',
  192 + value: '雨花区'
  193 + },
  194 + {
  195 + label: '望城区',
  196 + value: '望城区'
  197 + },
  198 + {
  199 + label: '长沙县',
  200 + value: '长沙县'
  201 + },
  202 + {
  203 + label: '浏阳市',
  204 + value: '浏阳市'
  205 + },
  206 + {
  207 + label: '宁乡市',
  208 + value: '宁乡市'
  209 + }
198 210 ], [{
199 211 label: '暂未开放',
200 212 value: '暂未开放',
... ... @@ -240,9 +252,9 @@ const handlerCLickInfoBox = (val) =&gt; {
240 252 case '分类指南':
241 253 uni.$u.route('/pages/home-info/type-guide/index')
242 254 break;
243   - case '车型说明':
244   - uni.$u.route('/pages/home-info/car-guide/index')
245   - break;
  255 + case '车型说明':
  256 + uni.$u.route('/pages/home-info/car-guide/index')
  257 + break;
246 258 default:
247 259 break;
248 260 }
... ... @@ -262,33 +274,50 @@ const handleContactClick = (val) =&gt; {
262 274 * @param {number} val
263 275 */
264 276 const handleDropdownSortChange = (val) => {
  277 + // 查找选中项的完整对象
  278 + const selectedItem = dropdownOptions.value[2].find(item => item.value === val);
  279 + if (selectedItem) {
  280 + sortLabel.value = selectedItem.label;
  281 + } else {
  282 + sortLabel.value = '排序'; // 默认标签
  283 + }
  284 +
265 285 sortValue.value = val;
  286 + // 清除缓存
  287 + companyListCache.value.clear();
266 288 // 重新获取列表
267   - paging.value.reload()
  289 + loadCompanyList()
268 290 }
269 291 const handleDropdownAreaChange = (val) => {
270   - if (registrationAreaRealValue.value == val) {
271   - registrationAreaValue.value = ''
272   - registrationAreaRealValue.value = ''
273   - // 重新获取列表
274   - paging.value.reload()
275   - return
  292 + // 查找选中项的完整对象
  293 + const selectedItem = dropdownOptions.value[0].find(item => item.value === val);
  294 + if (selectedItem) {
  295 + registrationAreaLabel.value = selectedItem.label;
  296 + } else {
  297 + registrationAreaLabel.value = '所属区域'; // 默认标签
276 298 }
277   - registrationAreaRealValue.value = val;
  299 +
  300 + registrationAreaValue.value = val;
  301 + // 清除缓存
  302 + companyListCache.value.clear();
278 303 // 重新获取列表
279   - paging.value.reload()
  304 + loadCompanyList()
280 305 }
281 306 const handleDropdownCarChange = (val) => {
282 307 if (carTypeRealValue.value == val) {
283 308 carTypeValue.value = ''
284 309 carTypeRealValue.value = ''
  310 + // 清除缓存
  311 + companyListCache.value.clear();
285 312 // 重新获取列表
286   - paging.value.reload()
  313 + loadCompanyList()
287 314 return
288 315 }
289 316 carTypeRealValue.value = val;
  317 + // 清除缓存
  318 + companyListCache.value.clear();
290 319 // 重新获取列表
291   - paging.value.reload()
  320 + loadCompanyList()
292 321 }
293 322 /**
294 323 * 跳转地址
... ... @@ -323,8 +352,8 @@ const handleCleanClick = () =&gt; {
323 352 // 用户已登录但是没有清运地址的情况
324 353 if (userType.value == '用户') {
325 354 uni.$u.route({
326   - url: `pages/home-info/address/addSite?defaultFlag=true`,
327   - });
  355 + url: `pages/home-info/address/addSite?defaultFlag=true`,
  356 + });
328 357 } else {
329 358 uni.showModal({
330 359 title: '提示',
... ... @@ -364,13 +393,18 @@ const handleCleanGarbage = (companyObj, tel, userAddress) =&gt; {
364 393 }
365 394  
366 395 const handleSearch = (value) => {
  396 + // 清除缓存
  397 + companyListCache.value.clear();
367 398 // 重新加载数据
368   - paging.value.reload()
  399 + loadCompanyList()
369 400 }
370 401  
371 402 const handleClearSearch = () => {
372 403 searchKeyword.value = ''
373   - paging.value.reload()
  404 + // 清除缓存
  405 + companyListCache.value.clear();
  406 + // 重新加载数据
  407 + loadCompanyList()
374 408 }
375 409  
376 410 /**
... ... @@ -407,8 +441,11 @@ onShow(() =&gt; {
407 441 updateOrderBadge()
408 442 let flag = uni.getStorageSync("refreshFlag");
409 443 if(flag){
410   - console.log(paging.value);
411   - paging.value.reload();
  444 + console.log("refreshing page");
  445 + // 清除缓存
  446 + companyListCache.value.clear();
  447 + // 重新加载数据
  448 + loadCompanyList();
412 449 uni.removeStorageSync("refreshFlag");
413 450 }
414 451 })
... ... @@ -476,9 +513,24 @@ const initData = () =&gt; {
476 513 addressInfo.value = '';
477 514 userAddress.value = {};
478 515 }
  516 + }).finally(() => {
  517 + // 在地址信息加载完成后加载公司列表
  518 + loadCompanyList();
479 519 })
480 520 }
481   -const queryList = (pageNo, pageSize) => {
  521 +
  522 +// 新增方法:一次性加载所有公司数据(带缓存)
  523 +const loadCompanyList = () => {
  524 + // 生成缓存键
  525 + const cacheKey = `${sortValue.value}-${registrationAreaValue.value}-${carTypeValue.value}-${userType.value}-${searchKeyword.value}`;
  526 +
  527 + // 检查是否有缓存
  528 + if (companyListCache.value.has(cacheKey)) {
  529 + console.log('使用缓存数据');
  530 + companyList.value = companyListCache.value.get(cacheKey);
  531 + return;
  532 + }
  533 +
482 534 let userTypeValue=0;
483 535 if(userType == '用户'){
484 536 userTypeValue=1;
... ... @@ -489,8 +541,8 @@ const queryList = (pageNo, pageSize) =&gt; {
489 541 }
490 542 let query = {
491 543 companyType: 1,
492   - pageNum: pageNo,
493   - pageSize,
  544 + pageNum: 1,
  545 + pageSize: 9999, // 设置一个足够大的数字以获取所有数据
494 546 orderByColumn: sortValue.value,
495 547 registrationArea: registrationAreaValue.value,
496 548 searchValue: carTypeValue.value,
... ... @@ -501,11 +553,72 @@ const queryList = (pageNo, pageSize) =&gt; {
501 553 // 查询公司信息
502 554 queryEnterpriseList(query).then(res => {
503 555 console.log('获取到的公司列表数据:', res);
504   - paging.value.complete(res.data.data.list);
  556 +
  557 + // 直接设置公司列表数据
  558 + const pageData = res.data.data;
  559 + const list = pageData.list || [];
  560 + companyList.value = list;
  561 +
  562 + // 缓存数据
  563 + companyListCache.value.set(cacheKey, list);
  564 + }).catch(err => {
  565 + console.error('查询公司列表失败:', err);
  566 + companyList.value = [];
505 567 })
506 568 }
  569 +
  570 +// 删除原有的queryList方法
  571 +// const queryList = (pageNo, pageSize) => {
  572 +// let userTypeValue=0;
  573 +// if(userType == '用户'){
  574 +// userTypeValue=1;
  575 +// }else if(userType.value == '清运车辆驾驶员'){
  576 +// userTypeValue=2;
  577 +// }else if(userType.value == '运输企业负责人'){
  578 +// userTypeValue=3;
  579 +// }
  580 +// let query = {
  581 +// companyType: 1,
  582 +// pageNum: pageNo,
  583 +// pageSize,
  584 +// orderByColumn: sortValue.value,
  585 +// registrationArea: registrationAreaValue.value,
  586 +// searchValue: carTypeValue.value,
  587 +// userTypeValue:userTypeValue,
  588 +// userType:userType.value,
  589 +// name: searchKeyword.value
  590 +// }
  591 +// // 查询公司信息
  592 +// queryEnterpriseList(query).then(res => {
  593 +// console.log('获取到的公司列表数据:', res);
  594 +
  595 +// // 从响应中提取分页信息
  596 +// const pageData = res.data.data;
  597 +// const dataList = pageData.list || [];
  598 +// const total = pageData.total || 0;
  599 +// const currentPage = pageData.pageNum || pageNo;
  600 +// const totalPages = pageData.pages || Math.ceil(total / pageSize);
  601 +
  602 +// console.log('分页信息:', { dataList: dataList.length, total, currentPage, totalPages, pageSize });
  603 +
  604 +// // 使用 z-paging 的标准方式处理分页
  605 +// // 如果有数据,调用 complete 并传入数据
  606 +// if (dataList.length > 0) {
  607 +// paging.value.complete(dataList);
  608 +// } else {
  609 +// // 如果没有数据,也要调用 complete 告知没有更多数据
  610 +// paging.value.complete([]);
  611 +// }
  612 +// }).catch(err => {
  613 +// console.error('查询公司列表失败:', err);
  614 +// // 数据加载失败时也需要调用 complete
  615 +// paging.value.complete(false);
  616 +// })
  617 +// }
507 618 </script>
508 619  
  620 +
  621 +
509 622 <style lang="scss" scoped>
510 623 .home-container {
511 624 background: linear-gradient(to bottom, $u-info-light, $u-info-light);
... ...
garbage-removal/src/pages/order-info/order-driver/detail/index.vue
... ... @@ -19,7 +19,7 @@
19 19 订单信息
20 20 </view>
21 21 <view class="order-detail-container-header-item"
22   - @click.stop="handlerJumpOtherApp(dataGram.garLatitude, dataGram.garLongitude, dataGram.garCoordinate)">
  22 + @click.stop="handlerJumpOtherApp(dataGram.garOrderAddress + dataGram.garOrderAddressDetails)">
23 23 <text class="order-detail-container-header-title">清运地点:</text>
24 24 <view class="order-detail-container-header-content" style="text-decoration: underline">
25 25 <text selectable='true'>{{ dataGram.garOrderAddress + dataGram.garOrderAddressDetails }}</text>
... ... @@ -46,15 +46,16 @@
46 46 </view>
47 47  
48 48  
49   - <view class="order-detail-container-header-item" v-for="(disposal,index) in dataGram.disposalSites">
50   - <view>
  49 + <view class="order-detail-container-header-item" v-if="dataGram.disposalSites && dataGram.disposalSites.length > 0" v-for="(disposal,index) in dataGram.disposalSites">
  50 + <view>
51 51 <text class="order-detail-container-header-title" v-if="index == 0" >处置场地:</text>
52 52 <text class="order-detail-container-header-title" v-else >&emsp;&emsp;&emsp;&emsp;&emsp;</text>
  53 + </view>
  54 + <view class="order-detail-container-header-content" style="text-decoration: underline"
  55 + @click.stop="handlerJumpOtherApp(disposal.addrStr)">
  56 + <text>{{ disposal.addrStr }}</text>
  57 + </view>
53 58 </view>
54   - <view class="order-detail-container-header-content" style="text-decoration: underline" @click.stop="handlerJumpOtherApp(disposal.latitude, disposal.longitude, dataGram.garCoordinate)">
55   - <text>{{ disposal.addrStr }}</text>
56   - </view>
57   - </view>
58 59  
59 60  
60 61 <view class="order-detail-container-header-item">
... ... @@ -67,37 +68,6 @@
67 68 <view @click="handleQrCodeClick(orderId)" class="iconfont icon-erweima-xian"></view>
68 69 </view>
69 70 </view>
70   - </view>
71   - <!-- 车辆信息 -->
72   - <view class="order-detail-container-box-card">
73   - <view class="order-detail-container-header-card-title">
74   - <view class="order-detail-container-header-card-uicon"></view>
75   - 车辆信息
76   - </view>
77   - <view class="order-detail-container-header-item" style="justify-content: space-between;"
78   - v-for="(item) in handlerList">
79   - <text class="order-detail-container-header-title" style="color: #303133;">
80   - {{item.garOrderHandlerName}}/{{ item.garHandlerCarCode }}/{{item.garOrderContainerVolume}}
81   - </text>
82   - <view class="order-detail-container-header-content">
83   - <text class="order-detail-container-header-title">
84   - 趟次:{{item.garCarCount}}车
85   - </text>
86   - </view>
87   - </view>
88   - </view>
89   - <!-- 订单记录 -->
90   - <view class="order-detail-container-box-card">
91   - <view class="order-detail-container-header-card-title">
92   - <view class="order-detail-container-header-card-uicon"></view>
93   - 订单信息
94   - </view>
95   - <!-- <view class="order-detail-container-header-item">
96   - <text class="order-detail-container-header-title">订单时间:</text>
97   - <view class="order-detail-container-header-content">
98   - {{ dataGram.garCreateTime }}
99   - </view>
100   - </view> -->
101 71 <view class="order-detail-container-header-item">
102 72 <text class="order-detail-container-header-title">预约时间:</text>
103 73 <view class="order-detail-container-header-content">
... ... @@ -110,7 +80,7 @@
110 80 <text selectable="true">{{ dataGram.garOrderContactTel }}</text>
111 81 <view class="icon-box" style="display: flex; align-items: center; justify-content: center;">
112 82 <u-icon v-if="dataGram.handleFlag" name="phone" size="28"
113   - @click="handleContactClick(dataGram.garOrderContactTel)"></u-icon>
  83 + @click="handleContactClick(dataGram.garOrderContactTel)"></u-icon>
114 84 </view>
115 85 </view>
116 86 </view>
... ... @@ -127,11 +97,26 @@
127 97 {{ dataGram.garRemark }}
128 98 </view>
129 99 </view>
130   -
131   - <view v-if="dataGram.needFollowCar" class="follow-car-notice">
132   - <text style="color: red;">该订单需要搬运上车</text>
  100 + </view>
  101 + <!-- 车辆信息 -->
  102 + <view class="order-detail-container-box-card">
  103 + <view class="order-detail-container-header-card-title">
  104 + <view class="order-detail-container-header-card-uicon"></view>
  105 + 车辆信息
  106 + </view>
  107 + <view class="order-detail-container-header-item" style="justify-content: space-between;"
  108 + v-for="(item) in handlerList">
  109 + <text class="order-detail-container-header-title" style="color: #303133;">
  110 + {{item.garOrderHandlerName}}/{{ item.garHandlerCarCode }}/{{item.garOrderContainerVolume}}
  111 + </text>
  112 + <view class="order-detail-container-header-content">
  113 + <text class="order-detail-container-header-title">
  114 + 趟次:{{item.garCarCount}}车
  115 + </text>
  116 + </view>
133 117 </view>
134 118 </view>
  119 +
135 120 <!-- 处理信息 -->
136 121 <view class="order-detail-container-box-card">
137 122 <view class="order-detail-container-header-card-title">
... ... @@ -232,7 +217,8 @@ import {
232 217 queryGarOrderMatchAsk,
233 218 queryGarOrderMatchAsks,
234 219 queryOrderDetail,
235   - updateOrder
  220 + updateOrder,
  221 + queryDisposalDispatch
236 222 } from "@/apis/order.js";
237 223 import { createQrCode } from '@/apis/qrcode.js';
238 224 import uqrcode from '@/components/Sansnn-uQRCode_4.0.6/components/uqrcode/uqrcode.vue';
... ... @@ -356,6 +342,11 @@ const selectClick = (index) =&gt; {
356 342 const handleOrderDetail = (orderId) => {
357 343 queryOrderDetail(orderId).then(res => {
358 344 dataGram.value = res.data.data;
  345 + // 确保disposalSites存在,如果不存在则初始化为空数组
  346 + if (!dataGram.value.disposalSites) {
  347 + dataGram.value.disposalSites = [];
  348 + }
  349 +
359 350 currentImages.value = res.data.data.currentImages.map(item => {
360 351 return { url: import.meta.env.VITE_BASE_URL + item};
361 352 });
... ... @@ -417,8 +408,38 @@ const handleOrderDetail = (orderId) =&gt; {
417 408 putDownImages.value = res.data.data.putDownImages.map(item => {
418 409 return { url: import.meta.env.VITE_BASE_URL + item };
419 410 });
  411 +
  412 + // 新增:调用queryDisposalDispatch API获取处置场所信息
  413 + queryDisposalDispatch(orderId).then(disposalRes => {
  414 + if (disposalRes.data.success && disposalRes.data.data && disposalRes.data.data.length > 0) {
  415 + // 根据实际返回数据结构提取处置场所信息,只显示有选中联系人的处置场所
  416 + const disposalSites = disposalRes.data.data
  417 + .map(site => {
  418 + // 筛选出personnelInfo中checked为true的联系人
  419 + const selectedPerson = site.personnelInfo && site.personnelInfo.length > 0 ?
  420 + site.personnelInfo.find(person => person.checked) : null;
  421 +
  422 + return {
  423 + addrStr: site.garOrderDisposalCompanyName || '', // 使用公司名称作为地址显示
  424 + latitude: site.latitude || 0,
  425 + longitude: site.longitude || 0,
  426 + selectedPerson: selectedPerson // 保存选中的联系人信息
  427 + };
  428 + })
  429 + // 过滤掉没有选中联系人的处置场所
  430 + .filter(site => site.selectedPerson);
  431 +
  432 + dataGram.value.disposalSites = disposalSites;
  433 + } else {
  434 + dataGram.value.disposalSites = [];
  435 + }
  436 + }).catch(err => {
  437 + console.error('获取处置场所信息失败:', err);
  438 + dataGram.value.disposalSites = [];
  439 + });
420 440 })
421 441 }
  442 +
422 443 /**
423 444 * 拨打电话回调
424 445 */
... ... @@ -427,25 +448,13 @@ const handleContactClick = (val) =&gt; {
427 448 }).catch(err => { });
428 449 }
429 450  
430   -const handlerJumpOtherApp = (latitude, longitude, garCoordinate) => {
431   - // 给出提示确定要跳转吗
432   - uni.showModal({
433   - title: '提示',
434   - content: '是否跳转到app定位进行导航?',
435   - success: function (res) {
436   - if (res.confirm) {
437   - uni.openLocation({
438   - latitude: latitude,
439   - longitude: longitude,
440   - success: function () {
441   - console.log('success');
442   - }
443   - });
444   - }
445   - }
446   - })
  451 +const handlerJumpOtherApp = (locationName) => {
  452 + // 方案一:使用腾讯地图URI API(推荐)
  453 + // 构建腾讯地图搜索链接,使用更完整的参数
  454 + window.location.href =`https://apis.map.qq.com/uri/v1/search?keyword=${encodeURIComponent(locationName)}&region=${encodeURIComponent(locationName)}&referer=XICBZ-ALWKT-2KPXZ-VCBL7-XMRYO-2QFS4&policy=1`;
447 455 }
448 456  
  457 +
449 458 const handleEvaluate = (orderId, userType) => {
450 459 uni.$u.route(`pages/order-info/order-other/evaluate/index?orderId=${orderId}&userType=${userType}`)
451 460 }
... ...
garbage-removal/src/pages/wode/index.vue
... ... @@ -7,9 +7,14 @@
7 7 <view style="display: flex; flex-direction: column; width: 100%;">
8 8 <view class="manager-info">
9 9 <view class="manager-info-transport-company-name">
10   - <text>{{ userInfo.transportCompanyName ? userInfo.transportCompanyName : userInfo.userName }}</text>
  10 + <text v-if="userInfo.transportCompanyName === '' || userInfo.transportCompanyName == null">
  11 + {{userName}}
  12 + </text>
  13 + <text v-else>
  14 + {{ userInfo.transportCompanyName && userInfo.transportCompanyName === userName ? userInfo.transportCompanyName : (userInfo.transportCompanyName ? userInfo.transportCompanyName + '&nbsp;&nbsp;' : '') + (userName ? userName : '') }}
  15 + </text>
11 16 </view>
12   - <view class="choose-type-item-text-right-label">{{ userInfo.userType }}
  17 + <view class="choose-type-item-text-right-label">{{userInfo.userType}}
13 18 </view>
14 19  
15 20 </view>
... ... @@ -74,6 +79,7 @@ import wodeOther from &#39;./wode-other/index.vue&#39;;
74 79 const store = useMainStore();
75 80 const pic = ref(headImg)
76 81 const userInfo = computed(() => store.userInfo)
  82 +const userName =computed(() => store.userName)
77 83  
78 84  
79 85  
... ...