xxdezh 7 bulan lalu
induk
melakukan
ac260f1c60
2 mengubah file dengan 691 tambahan dan 660 penghapusan
  1. 495 522
      package/screen/screen.vue
  2. 196 138
      pages/index/index.vue

+ 495 - 522
package/screen/screen.vue

@@ -1,547 +1,520 @@
 <template>
-  <view>
-    <navBar title="筛选" color="#000" />
-    <!-- 列表 -->
-    <view class="list flex justify-between">
-      <!-- 右侧列表 -->
-      <view class="list-r">
-        <scroll-view
-          scroll-y="true"
-          @scroll="scrolls"
-          scroll-with-animation="true"
-          :scroll-into-view="'bottomView' + current"
-          style="width: 100%; height: 100%; padding-bottom: 20rpx"
-        >
-          <block v-if="type">
-            <view
-              class="list-r-item"
-              :id="'bottomView' + index"
-              v-if="list.length > 0 && index != 3"
-              v-for="(item, index) in list"
-              :key="index"
-            >
-              <view class="list-r-item-title">
-                {{ item.name }}
-              </view>
-              <view class="list-r-item-childs flex justify-around align-center flex-wrap">
-                <view
-                  class="list-r-item-childs-i flex justify-center align-center"
-                  v-for="(ite, ind) in item.list"
-                  :class="ite.select == true ? 'activeRight' : ''"
-                  @click="selectHyList(index, item.name, ite, ind)"
-                  :key="ind"
-                >
-                  {{ ite.value }}
-                </view>
-                <view
-                  class="list-r-item-childs-i flex justify-center align-center"
-                  style="height: 0; padding: 0"
-                >
-                </view>
-              </view>
-            </view>
-          </block>
-          <block v-else>
-            <view
-              class="list-r-item"
-              :id="'bottomView' + index"
-              v-if="list.length > 0"
-              v-for="(item, index) in list"
-              :key="index"
-            >
-              <view class="list-r-item-title">
-                {{ item.name }}
-              </view>
-              <view class="list-r-item-childs flex justify-around align-center flex-wrap">
-                <view
-                  class="list-r-item-childs-i flex justify-center align-center"
-                  v-for="(ite, ind) in item.list"
-                  :class="ite.select == true ? 'activeRight' : ''"
-                  @click="selectHyList(index, item.name, ite, ind)"
-                  :key="ind"
-                >
-                  {{ ite.value }}
-                </view>
-                <view
-                  class="list-r-item-childs-i flex justify-center align-center"
-                  style="height: 0; padding: 0"
-                >
-                </view>
-              </view>
-            </view>
-          </block>
-          <empty v-if="list.length == 0" />
-        </scroll-view>
-      </view>
-    </view>
-    <!-- 底部按钮 -->
-    <view class="bottom flex justify-center">
-      <view class="bottom-box flex justify-between">
-        <view @click="cleanSe()" class="bottom-box-left flex justify-center align-center">
-          清除
-        </view>
-        <view
-          @click="submitSe()"
-          class="bottom-box-right flex justify-center align-center"
-        >
-          确定
-        </view>
-      </view>
-    </view>
-  </view>
+	<view>
+		<navBar title="筛选" color="#000" />
+		<!-- 列表 -->
+		<view class="list flex justify-between">
+			<!-- 右侧列表 -->
+			<view class="list-r">
+				<scroll-view scroll-y="true" @scroll="scrolls" scroll-with-animation="true"
+					:scroll-into-view="'bottomView' + current" style="width: 100%; height: 100%; padding-bottom: 20rpx">
+					<block v-if="type">
+						<view class="list-r-item" :id="'bottomView' + index" v-if="list.length > 0 && index != 3"
+							v-for="(item, index) in list" :key="index">
+							<view class="list-r-item-title">
+								{{ item.name }}
+							</view>
+							<view class="list-r-item-childs flex justify-around align-center flex-wrap">
+								<view class="list-r-item-childs-i flex justify-center align-center"
+									v-for="(ite, ind) in item.list" :class="ite.select == true ? 'activeRight' : ''"
+									@click="selectHyList(index, item.name, ite, ind)" :key="ind">
+									{{ ite.value }}
+								</view>
+								<view class="list-r-item-childs-i flex justify-center align-center"
+									style="height: 0; padding: 0">
+								</view>
+							</view>
+						</view>
+					</block>
+					<block v-else>
+						<view class="list-r-item" :id="'bottomView' + index" v-if="list.length > 0"
+							v-for="(item, index) in list" :key="index">
+							<view class="list-r-item-title">
+								{{ item.name }}
+							</view>
+							<view class="list-r-item-childs flex justify-around align-center flex-wrap">
+								<view class="list-r-item-childs-i flex justify-center align-center"
+									v-for="(ite, ind) in item.list" :class="ite.select == true ? 'activeRight' : ''"
+									@click="selectHyList(index, item.name, ite, ind)" :key="ind">
+									{{ ite.value }}
+								</view>
+								<view class="list-r-item-childs-i flex justify-center align-center"
+									style="height: 0; padding: 0">
+								</view>
+							</view>
+						</view>
+					</block>
+					<empty v-if="list.length == 0" />
+				</scroll-view>
+			</view>
+		</view>
+		<!-- 底部按钮 -->
+		<view class="bottom flex justify-center">
+			<view class="bottom-box flex justify-between">
+				<view @click="cleanSe()" class="bottom-box-left flex justify-center align-center">
+					清除
+				</view>
+				<view @click="submitSe()" class="bottom-box-right flex justify-center align-center">
+					确定
+				</view>
+			</view>
+		</view>
+	</view>
 </template>
 
 <script>
-import empty from "../../components/empty.vue";
-import navBar from "@/components/nav-bar/index.vue";
-export default {
-  components: {
-    empty,
-	navBar
-  },
-  data() {
-    return {
-      current: 0,
-      currents: 0,
-      list: [],
-      top_list: [],
-      selectArr: [],
-      type: "",
-      isBrowse: false, //是否是从用户浏览记录里过来的
-      isCompyBrowse: false, //是否是从企业浏览记录过来的
-      isCompyHistory: false, //是否是从企业的投递记录过来的
-    };
-  },
-  onLoad(option) {
-    if (option.type) {
-      this.type = option.type;
-    }
-    if (option.isBrowse) {
-      this.isBrowse = true;
-    } else {
-      this.isBrowse = false;
-    }
-    if (option.isCompyBrowse) {
-      this.isCompyBrowse = true;
-    } else {
-      this.isCompyBrowse = false;
-    }
-    if (option.isCompyHistory) {
-      this.isCompyHistory = true;
-    } else {
-      this.isCompyHistory = false;
-    }
-    this.getSchools();
-  },
-  methods: {
-    /**
-     * 清空筛选条件并清空缓存
-     */
-    cleanSe() {
-      this.list.map((item) => {
-        item.list.map((ite) => {
-          ite.select = false;
-        });
-      });
-      if (this.isBrowse) {
-        uni.removeStorageSync("browse");
-      } else if (this.isCompyBrowse) {
-        uni.removeStorageSync("isCompyBrowse");
-      } else if (this.isCompyHistory) {
-        uni.removeStorageSync("isCompyHistory");
-      } else {
-        uni.removeStorageSync("filter");
-      }
-    },
-    /**
-     * 处理选中的条件
-     */
-    submitSe() {
-      let arr = JSON.parse(JSON.stringify(this.list));
-      arr =
-        arr &&
-        arr.map((item) => {
-          item.list =
-            item.list &&
-            item.list.filter((val) => {
-              if (val.select) return val;
-            });
-          if (item.list.length > 0) {
-            return item;
-          }
-        });
-      arr = arr.filter((val) => {
-        if (val) return val;
-      });
+	import empty from "../../components/empty.vue";
+	import navBar from "@/components/nav-bar/index.vue";
+	export default {
+		components: {
+			empty,
+			navBar
+		},
+		data() {
+			return {
+				current: 0,
+				currents: 0,
+				list: [],
+				top_list: [],
+				selectArr: [],
+				type: "",
+				isBrowse: false, //是否是从用户浏览记录里过来的
+				isCompyBrowse: false, //是否是从企业浏览记录过来的
+				isCompyHistory: false, //是否是从企业的投递记录过来的
+			};
+		},
+		onLoad(option) {
+			if (option.type) {
+				this.type = option.type;
+			}
+			if (option.isBrowse) {
+				this.isBrowse = true;
+			} else {
+				this.isBrowse = false;
+			}
+			if (option.isCompyBrowse) {
+				this.isCompyBrowse = true;
+			} else {
+				this.isCompyBrowse = false;
+			}
+			if (option.isCompyHistory) {
+				this.isCompyHistory = true;
+			} else {
+				this.isCompyHistory = false;
+			}
+			this.getSchools();
+		},
+		methods: {
+			/**
+			 * 清空筛选条件并清空缓存
+			 */
+			cleanSe() {
+				this.list.map((item) => {
+					item.list.map((ite) => {
+						ite.select = false;
+					});
+				});
+				if (this.isBrowse) {
+					uni.removeStorageSync("browse");
+				} else if (this.isCompyBrowse) {
+					uni.removeStorageSync("isCompyBrowse");
+				} else if (this.isCompyHistory) {
+					uni.removeStorageSync("isCompyHistory");
+				} else {
+					uni.removeStorageSync("filter");
+				}
+			},
+			/**
+			 * 处理选中的条件
+			 */
+			submitSe() {
+				let arr = JSON.parse(JSON.stringify(this.list));
+				arr =
+					arr &&
+					arr.map((item) => {
+						item.list =
+							item.list &&
+							item.list.filter((val) => {
+								if (val.select) return val;
+							});
+						if (item.list.length > 0) {
+							return item;
+						}
+					});
+				arr = arr.filter((val) => {
+					if (val) return val;
+				});
 
-      if (this.isBrowse) {
-        uni.setStorageSync("browse", arr);
-      } else if (this.isCompyBrowse) {
-        uni.setStorageSync("isCompyBrowse", arr);
-      } else if (this.isCompyHistory) {
-        uni.setStorageSync("isCompyHistory", arr);
-      } else {
-        uni.setStorageSync("filter", arr);
-      }
-	  uni.$emit('updateRecord')
-      uni.navigateBack();
-    },
-    /**
-     * @param {Object} index 外层下标
-     * @param {Object} name 外层名称
-     * @param {Object} info 内层对象
-     * @param {Object} ind 内层下标
-     * 选择右侧的筛选
-     * 学历、薪资、经验单选,其余可以多选
-     */
-    selectHyList(index, name, info, ind) {
-      // 定义需要单选的类型
-      const singleSelectTypes = ['学历要求', '薪资范围(单选)', '经验要求'];
-      
-      if (singleSelectTypes.includes(name)) {
-        // 单选逻辑:先取消当前分类下所有选项的选中状态,再选中当前点击的选项
-        this.list[index].list.forEach(item => {
-          item.select = false;
-        });
-        info.select = true;
-      } else {
-        // 其余多选逻辑保持不变
-        if (info.value == "不限") {
-          this.list[index].list.forEach(item => {
-            item.select = false;
-          });
-          info.select = true;
-        } else {
-          this.list[index].list.forEach(item => {
-            if (item.value == "不限") {
-              item.select = false;
-            }
-          });
-          info.select = !info.select;
-        }
-      }
-      this.$forceUpdate();
-    },
-    /**
-     * @param {Object} index
-     * 点击切换分类
-     */
-    change_click_index(index) {
-      this.current = index;
-      //解决最后一个 ***来回*** 问题
-      uni.setStorageSync("resolve", "last");
-      setTimeout(() => {
-        uni.removeStorageSync("resolve");
-      }, 400);
-    },
-    scrolls(e) {
-      if (!uni.getStorageSync("resolve")) {
-        // this.get_node_details(e);
-      }
-    },
-    /**
-     * @param {Object} options
-     * 获取节点信息
-     */
-    get_node_details(options) {
-      const query = uni.createSelectorQuery().in(this);
-      query
-        .selectAll(".list-r-item")
-        .boundingClientRect((data) => {
-          this.top_list = data.map((item) => {
-            return Math.ceil(item.top);
-          });
-          this.async_detail_msg(options);
-        })
-        .exec();
-    },
-    /**
-     * @param {Object} options
-     * 设置滚动的位置
-     */
-    async_detail_msg(options) {
-      let top_page = options.detail.scrollTop + this.top_list[0];
-      for (let i = 0; i < this.top_list.length; i++) {
-        let node1 = this.top_list[i];
-        let node2 = this.top_list[i + 1];
-        if (node2 && top_page >= node1 && top_page < node2) {
-          this.current = i;
-          break;
-        } else if (node2 && top_page === node2) {
-          this.current = i + 1;
-          break;
-        }
-      }
-    },
-    /**
-     * 获取学历列表
-     */
-    getSchools() {
-      this.$Request
-        .get("/app/dict/list", {
-          type: "学历",
-        })
-        .then((res) => {
-          if (res.code == 0) {
-            let list = [
-              {
-                value: "不限",
-              },
-            ];
-            let obj = {
-              name: "学历要求",
-              list: [...list, ...res.data],
-            };
-            this.getMoney(obj);
-          }
-        });
-    },
-    /**
-     * 获取薪资 列表
-     */
-    getMoney(obj1) {
-      this.$Request
-        .get("/app/dict/list", {
-          type: "薪资 ",
-        })
-        .then((res) => {
-          if (res.code == 0) {
-            let list = [
-              {
-                value: "不限",
-              },
-            ];
-            let obj = {
-              name: "薪资范围(单选)",
-              list: [...list, ...res.data],
-            };
-            this.getJy(obj1, obj);
-          }
-        });
-    },
-    /**
-     * 获取工作经验列表
-     */
-    getJy(obj1, obj2) {
-      this.$Request
-        .get("/app/dict/list", {
-          type: "工作经验 ",
-        })
-        .then((res) => {
-          if (res.code == 0) {
-            let list = [
-              {
-                value: "不限",
-              },
-            ];
-            let obj = {
-              name: "经验要求",
-              list: [...list, ...res.data],
-            };
-            this.getGm(obj1, obj2, obj);
-          }
-        });
-    },
-    /**
-     * 获取公司规模列表
-     */
-    getGm(obj1, obj2, obj3) {
-      this.$Request
-        .get("/app/dict/list", {
-          type: "公司规模 ",
-        })
-        .then((res) => {
-          if (res.code == 0) {
-            let list = [
-              {
-                value: "不限",
-              },
-            ];
-            let obj = {
-              name: "公司规模",
-              list: [...list, ...res.data],
-            };
-            this.getIndustryList(obj1, obj2, obj3, obj);
-          }
-        });
-    },
-    /**
-     * 获取行业列表
-     */
-    getIndustryList(obj1, obj2, obj3, obj4) {
-      this.$Request.get("/app/industry/getIndustryList").then((res) => {
-        if (res.code == 0) {
-          let list = [
-            {
-              value: "不限",
-            },
-          ];
-          let arrAy = [];
-          res.data.map((item) => {
-            arrAy = [...arrAy, ...item.childrenList];
-          });
-          let arrs = JSON.parse(JSON.stringify(arrAy).replace(/industryName/g, "value"));
-          let obj = {
-            name: "行业",
-            list: [...list, ...arrs],
-          };
-          let arr = [];
-          arr[0] = obj1;
-          arr[1] = obj2;
-          arr[2] = obj3;
-          arr[3] = obj4;
-          //arr[4] = obj;
-          arr.map((item) => {
-            item.list.map((ite) => {
-              ite.select = false;
-            });
-          });
+				if (this.isBrowse) {
+					uni.setStorageSync("browse", arr);
+				} else if (this.isCompyBrowse) {
+					uni.setStorageSync("isCompyBrowse", arr);
+				} else if (this.isCompyHistory) {
+					uni.setStorageSync("isCompyHistory", arr);
+				} else {
+					uni.setStorageSync("filter", arr);
+				}
+				uni.$emit('updateRecord')
+				uni.navigateBack();
+			},
+			/**
+			 * @param {Object} index 外层下标
+			 * @param {Object} name 外层名称
+			 * @param {Object} info 内层对象
+			 * @param {Object} ind 内层下标
+			 * 选择右侧的筛选
+			 * 学历、薪资、经验单选,其余可以多选
+			 */
+			selectHyList(index, name, info, ind) {
+				// 定义需要单选的类型
+				const singleSelectTypes = ['学历要求', '薪资范围(单选)', '经验要求'];
 
-          this.list = arr;
-          // 从缓存加载选中状态
-          const storageKeys = [
-            {key: 'filter', condition: !this.isBrowse && !this.isCompyBrowse && !this.isCompyHistory},
-            {key: 'browse', condition: this.isBrowse},
-            {key: 'isCompyBrowse', condition: this.isCompyBrowse},
-            {key: 'isCompyHistory', condition: this.isCompyHistory}
-          ];
+				if (singleSelectTypes.includes(name)) {
+					// 单选逻辑:先取消当前分类下所有选项的选中状态,再选中当前点击的选项
+					this.list[index].list.forEach(item => {
+						item.select = false;
+					});
+					info.select = true;
+				} else {
+					// 其余多选逻辑保持不变
+					if (info.value == "不限") {
+						this.list[index].list.forEach(item => {
+							item.select = false;
+						});
+						info.select = true;
+					} else {
+						this.list[index].list.forEach(item => {
+							if (item.value == "不限") {
+								item.select = false;
+							}
+						});
+						info.select = !info.select;
+					}
+				}
+				this.$forceUpdate();
+			},
+			/**
+			 * @param {Object} index
+			 * 点击切换分类
+			 */
+			change_click_index(index) {
+				this.current = index;
+				//解决最后一个 ***来回*** 问题
+				uni.setStorageSync("resolve", "last");
+				setTimeout(() => {
+					uni.removeStorageSync("resolve");
+				}, 400);
+			},
+			scrolls(e) {
+				if (!uni.getStorageSync("resolve")) {
+					// this.get_node_details(e);
+				}
+			},
+			/**
+			 * @param {Object} options
+			 * 获取节点信息
+			 */
+			get_node_details(options) {
+				const query = uni.createSelectorQuery().in(this);
+				query
+					.selectAll(".list-r-item")
+					.boundingClientRect((data) => {
+						this.top_list = data.map((item) => {
+							return Math.ceil(item.top);
+						});
+						this.async_detail_msg(options);
+					})
+					.exec();
+			},
+			/**
+			 * @param {Object} options
+			 * 设置滚动的位置
+			 */
+			async_detail_msg(options) {
+				let top_page = options.detail.scrollTop + this.top_list[0];
+				for (let i = 0; i < this.top_list.length; i++) {
+					let node1 = this.top_list[i];
+					let node2 = this.top_list[i + 1];
+					if (node2 && top_page >= node1 && top_page < node2) {
+						this.current = i;
+						break;
+					} else if (node2 && top_page === node2) {
+						this.current = i + 1;
+						break;
+					}
+				}
+			},
+			/**
+			 * 获取学历列表
+			 */
+			getSchools() {
+				this.$Request
+					.get("/app/dict/list", {
+						type: "学历",
+					})
+					.then((res) => {
+						if (res.code == 0) {
+							let list = [{
+								value: "不限",
+							}, ];
+							let obj = {
+								name: "学历要求",
+								list: [...list, ...res.data],
+							};
+							this.getMoney(obj);
+						}
+					});
+			},
+			/**
+			 * 获取薪资 列表
+			 */
+			getMoney(obj1) {
+				this.$Request
+					.get("/app/dict/list", {
+						type: "薪资 ",
+					})
+					.then((res) => {
+						if (res.code == 0) {
+							let list = [{
+								value: "不限",
+							}, ];
+							let obj = {
+								name: "薪资范围(单选)",
+								list: [...list, ...res.data],
+							};
+							this.getJy(obj1, obj);
+						}
+					});
+			},
+			/**
+			 * 获取工作经验列表
+			 */
+			getJy(obj1, obj2) {
+				this.$Request
+					.get("/app/dict/list", {
+						type: "工作经验 ",
+					})
+					.then((res) => {
+						if (res.code == 0) {
+							let list = [{
+								value: "不限",
+							}, ];
+							let obj = {
+								name: "经验要求",
+								list: [...list, ...res.data],
+							};
+							this.getGm(obj1, obj2, obj);
+						}
+					});
+			},
+			/**
+			 * 获取公司规模列表
+			 */
+			getGm(obj1, obj2, obj3) {
+				this.$Request
+					.get("/app/dict/list", {
+						type: "公司规模 ",
+					})
+					.then((res) => {
+						if (res.code == 0) {
+							let list = [{
+								value: "不限",
+							}, ];
+							let obj = {
+								name: "公司规模",
+								list: [...list, ...res.data],
+							};
+							this.getIndustryList(obj1, obj2, obj3, obj);
+						}
+					});
+			},
+			/**
+			 * 获取行业列表
+			 */
+			getIndustryList(obj1, obj2, obj3, obj4) {
+				this.$Request.get("/app/industry/getIndustryList").then((res) => {
+					if (res.code == 0) {
+						let list = [{
+							value: "不限",
+						}, ];
+						let arrAy = [];
+						res.data.map((item) => {
+							arrAy = [...arrAy, ...item.childrenList];
+						});
+						let arrs = JSON.parse(JSON.stringify(arrAy).replace(/industryName/g, "value"));
+						let obj = {
+							name: "行业",
+							list: [...list, ...arrs],
+						};
+						let arr = [];
+						arr[0] = obj1;
+						arr[1] = obj2;
+						arr[2] = obj3;
+						arr[3] = obj4;
+						//arr[4] = obj;
+						arr.map((item) => {
+							item.list.map((ite) => {
+								ite.select = false;
+							});
+						});
 
-          for (const {key, condition} of storageKeys) {
-            if (condition && uni.getStorageSync(key)) {
-              const storedData = uni.getStorageSync(key);
-              const selectedValues = [];
-              storedData.forEach(item => {
-                item.list.forEach(ite => {
-                  selectedValues.push(ite.value);
-                });
-              });
-              
-              this.list.forEach(item => {
-                item.list.forEach(ite => {
-                  if (selectedValues.includes(ite.value)) {
-                    ite.select = true;
-                  }
-                });
-              });
-              break;
-            }
-          }
-        }
-      });
-    },
-  },
-};
+						this.list = arr;
+						// 从缓存加载选中状态
+						const storageKeys = [{
+								key: 'filter',
+								condition: !this.isBrowse && !this.isCompyBrowse && !this.isCompyHistory
+							},
+							{
+								key: 'browse',
+								condition: this.isBrowse
+							},
+							{
+								key: 'isCompyBrowse',
+								condition: this.isCompyBrowse
+							},
+							{
+								key: 'isCompyHistory',
+								condition: this.isCompyHistory
+							}
+						];
+
+						for (const {
+								key,
+								condition
+							}
+							of storageKeys) {
+							if (condition && uni.getStorageSync(key)) {
+								const storedData = uni.getStorageSync(key);
+								const selectedValues = [];
+								storedData.forEach(item => {
+									item.list.forEach(ite => {
+										selectedValues.push(ite.value);
+									});
+								});
+
+								this.list.forEach(item => {
+									item.list.forEach(ite => {
+										if (selectedValues.includes(ite.value)) {
+											ite.select = true;
+										}
+									});
+								});
+								break;
+							}
+						}
+					}
+				});
+			},
+		},
+	};
 </script>
 
 <style lang="scss">
-/* 样式保持不变 */
-page {
-  background-color: #ffffff;
-}
+	/* 样式保持不变 */
+	page {
+		background-color: #ffffff;
+	}
 
-.activeRight {
-  color: rgba(1, 107, 246, 1) !important;
-  background-color: rgba(153, 196, 250, 0.4) !important;
-  border-radius: 18rpx !important;
-  border: 0.5px solid rgba(1, 107, 246, 1);
-}
+	.activeRight {
+		color: rgba(1, 107, 246, 1) !important;
+		background-color: rgba(153, 196, 250, 0.4) !important;
+		border-radius: 18rpx !important;
+		border: 0.5px solid rgba(1, 107, 246, 1);
+	}
 
-.active {
-  border-left: 8rpx solid #016bf6 !important;
-  color: #016bf6 !important;
-}
+	.active {
+		border-left: 8rpx solid #016bf6 !important;
+		color: #016bf6 !important;
+	}
 
-.list {
-  width: 100%;
-  /* #ifdef H5 */
-  height: calc(100vh - 200rpx);
-  /* #endif */
-  /* #ifndef H5 */
-  height: calc(100vh - 120rpx);
+	.list {
+		width: 100%;
+		/* #ifdef H5 */
+		height: calc(100vh - 200rpx);
+		/* #endif */
+		/* #ifndef H5 */
+		height: calc(100vh - 120rpx);
 
-  /* #endif */
-  .list-l {
-    width: 30%;
-    height: 100%;
+		/* #endif */
+		.list-l {
+			width: 30%;
+			height: 100%;
 
-    .list-l-item {
-      margin-top: 40rpx;
-      font-size: 28rpx;
-      color: #121212;
-      padding-left: 20rpx;
-      border-left: 8rpx solid #ffffff;
-    }
-  }
+			.list-l-item {
+				margin-top: 40rpx;
+				font-size: 28rpx;
+				color: #121212;
+				padding-left: 20rpx;
+				border-left: 8rpx solid #ffffff;
+			}
+		}
 
-  .list-r {
-    width: 100%;
-    height: 100%;
-    border-left: 1rpx solid #f2f2f7;
-    box-sizing: border-box;
+		.list-r {
+			width: 100%;
+			height: 100%;
+			border-left: 1rpx solid #f2f2f7;
+			box-sizing: border-box;
 
-    .list-r-item {
-      width: 100%;
-      margin-top: 40rpx;
+			.list-r-item {
+				width: 100%;
+				margin-top: 40rpx;
 
-      .list-r-item-title {
-        width: 100%;
-        color: #121212;
-        font-size: 32rpx;
-        font-weight: bold;
-        padding-left: 30rpx;
-      }
+				.list-r-item-title {
+					width: 100%;
+					color: #121212;
+					font-size: 32rpx;
+					font-weight: bold;
+					padding-left: 30rpx;
+				}
 
-      .list-r-item-childs {
-        width: 100%;
+				.list-r-item-childs {
+					width: 100%;
 
-        .list-r-item-childs-i {
-          width: calc((100% - 120rpx) / 2);
-          margin-top: 20rpx;
-          padding-top: 16rpx;
-          padding-bottom: 16rpx;
-          padding-left: 16rpx;
-          padding-right: 16rpx;
-          font-size: 26rpx;
-          color: #121212;
-          background: rgba(245, 248, 254, 1);
-          text-align: center;
-          border-radius: 18rpx;
-        }
-      }
-    }
-  }
-}
+					.list-r-item-childs-i {
+						width: calc((100% - 120rpx) / 2);
+						margin-top: 20rpx;
+						padding-top: 16rpx;
+						padding-bottom: 16rpx;
+						padding-left: 16rpx;
+						padding-right: 16rpx;
+						font-size: 26rpx;
+						color: #121212;
+						background: rgba(245, 248, 254, 1);
+						text-align: center;
+						border-radius: 18rpx;
+					}
+				}
+			}
+		}
+	}
 
-.bottom {
-  width: 100%;
-  height: 120rpx;
-  position: fixed;
-  bottom: 0;
-  background-color: #ffffff;
+	.bottom {
+		width: 100%;
+		height: 120rpx;
+		position: fixed;
+		bottom: 0;
+		background-color: #ffffff;
 
-  .bottom-box {
-    width: 686rpx;
-    height: 70rpx;
-    margin-top: 20rpx;
+		.bottom-box {
+			width: 686rpx;
+			height: 70rpx;
+			margin-top: 20rpx;
 
-    .bottom-box-left {
-      width: 40%;
-      height: 80rpx;
-      color: #ffffff;
-      border-radius: 999rpx;
-      background: rgba(153, 196, 250, 1);
-    }
+			.bottom-box-left {
+				width: 40%;
+				height: 80rpx;
+				color: #ffffff;
+				border-radius: 999rpx;
+				background: rgba(153, 196, 250, 1);
+			}
 
-    .bottom-box-right {
-      width: 57%;
-      height: 80rpx;
-      border-radius: 999rpx;
-      background: var(
-        --线性渐变,
-        linear-gradient(90deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%)
-      );
-      color: #ffffff;
-    }
-  }
-}
+			.bottom-box-right {
+				width: 57%;
+				height: 80rpx;
+				border-radius: 999rpx;
+				background: var(--线性渐变,
+						linear-gradient(90deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%));
+				color: #ffffff;
+			}
+		}
+	}
 </style>

+ 196 - 138
pages/index/index.vue

@@ -36,15 +36,15 @@
 			<!-- 用户端 -->
 			<block v-if="userType==1">
 				<!-- <view class="topbg"> -->
-					<!-- 顶部图片区 -->
-					<!-- #ifdef H5 -->
-					<!-- <view class="banner flex justify-center" style="padding-top: 20rpx;"
+				<!-- 顶部图片区 -->
+				<!-- #ifdef H5 -->
+				<!-- <view class="banner flex justify-center" style="padding-top: 20rpx;"
 						v-if="bannerListuser.length!=0"> -->
-					<!-- #endif -->
-					<!-- #ifndef H5 -->
-					<!-- <view class="banner flex justify-center" v-if="bannerListuser.length!=0"> -->
-					<!-- #endif -->
-					<!-- <view class="banner-box">
+				<!-- #endif -->
+				<!-- #ifndef H5 -->
+				<!-- <view class="banner flex justify-center" v-if="bannerListuser.length!=0"> -->
+				<!-- #endif -->
+				<!-- <view class="banner-box">
 								<swiper :indicator-dots="false" style="width: 100%;height: 100%;" :autoplay="true"
 									:interval="5000" :duration="300">
 									<swiper-item v-for="(item,index) in bannerListuser" :key="index"
@@ -59,8 +59,8 @@
 								</swiper>
 							</view>
 						</view> -->
-					<!-- 公告区 -->
-					<!-- <view class="announcement" v-if="gongao.length!=0">
+				<!-- 公告区 -->
+				<!-- <view class="announcement" v-if="gongao.length!=0">
 							<view class="announcementbox">
 								<view class="anount">最新公告</view>
 								<view class="anounts flex align-center" v-if="gongao.length>0">
@@ -76,8 +76,8 @@
 							</view>
 						</view> -->
 
-					<!-- 企业端 -->
-					<!-- <view v-if="gridlist.length!=0">
+				<!-- 企业端 -->
+				<!-- <view v-if="gridlist.length!=0">
 							<u-grid :col="4" :border="false">
 								<u-grid-item bg-color="#00DD9A">
 									<view v-for="(item,index) in gridlist" :key="index" style="text-align: center;"
@@ -122,8 +122,7 @@
 									</view>
 								</view>
 								<!-- 添加求职意向 -->
-								<view class="topbg-yx-box-r flex align-center"
-									@click="addDirection">
+								<view class="topbg-yx-box-r flex align-center" @click="addDirection">
 									<image src="../../static/images/index/Attachment.svg" class="attachment-icon" />
 								</view>
 							</view>
@@ -176,7 +175,8 @@
 
 								<!-- 标签选择 -->
 								<view class="direction-tags flex align-center flex-wrap">
-									<view class="direction-tag" :class="preference.indexOf(item.id)>=0||(preference.length<=0&&item.id=='不限')?'active':''"
+									<view class="direction-tag"
+										:class="preference.indexOf(item.id)>=0||(preference.length<=0&&item.id=='不限')?'active':''"
 										@click="selectPreference(item)" v-for="(item,index) in directionList"
 										:key="index">
 										{{item.name}}
@@ -312,9 +312,9 @@
 						</view>
 					</view>
 				-->
-				
+
 				<view class="topbg-sticky">
-		<!-- 			<image class="top-bg" src="/static/images/index/index-bg1.png" mode="widthFix" /> -->
+					<!-- 			<image class="top-bg" src="/static/images/index/index-bg1.png" mode="widthFix" /> -->
 					<!-- <view class="top-bg"></view> -->
 					<!-- 标题-搜索 -->
 					<view class="topbg-sticky-box" :style="{ paddingTop: (12 + statusBarHeight) + 'px' }">
@@ -323,15 +323,15 @@
 								<image src="../../static/images/index/xingIcon.svg" class="xing-icon" />
 								<view>星光不负逐梦人</view>
 							</view>
-							
+
 						</view>
 						<view class="topbg-sticky-subtitle">亿职赞,愿你在逐梦路上找到心仪伙伴</view>
 					</view>
-				
+
 					<!-- tabs和筛选 -->
 				</view>
-				
-				
+
+
 
 				<!-- 最新公告 -->
 				<view class="announcement" v-if="gongao.length!=0">
@@ -376,16 +376,17 @@
 									</view>
 								</view>
 								<!-- 发布招聘 -->
-						<!-- 		<view class="qySx-box-r flex align-center" @click="goNavss('/package/addJob/addJob')">
+								<!-- 		<view class="qySx-box-r flex align-center" @click="goNavss('/package/addJob/addJob')">
 									<image src="../../static/images/index/Attachment.svg" class="attachment-icon" />
 								</view> -->
-								
-								<view class="qySx-box-r flex align-center" @click="goNavss('/pages/my/jobPosting?companyId='+companyId+'&status='+companyStatus+'&companyName='+companyName)">
+
+								<view class="qySx-box-r flex align-center"
+									@click="goNavss('/pages/my/jobPosting?companyId='+companyId+'&status='+companyStatus+'&companyName='+companyName)">
 									<image src="../../static/images/index/Attachment.svg" class="attachment-icon" />
 								</view>
-								
+
 							</view>
-							
+
 
 							<!-- 第二行:筛选 -->
 							<view class="qySx-sx-box flex justify-between align-center">
@@ -421,7 +422,7 @@
 				</u-sticky>
 
 				<!-- Vip推荐 -->
-				<view class="vipRecommend">
+				<!-- 				<view class="vipRecommend">
 					<view class="vipRecommend-box">
 						<view class="vipRecommend-close" @click="closeVipRecommend">
 							<image src="../../static/images/index/qiyeDelete.svg" class="close-icon" />
@@ -439,7 +440,7 @@
 							</view>
 						</view>
 					</view>
-				</view>
+				</view> -->
 
 				<!-- 简历列表 -->
 				<view class="qyList flex justify-center">
@@ -450,42 +451,54 @@
 								<view class="qyList-box-item-info flex justify-between align-center">
 									<view class="qyList-box-item-info-l">
 										<view class="" style="color: #212121;font-size: 38rpx;font-weight: 800;">
-											{{item.resumesName}}
+											{{item.userName}}
 										</view>
 										<view class="flex align-center flex-wrap"
 											style="color: #999999;font-size: 26rpx;margin-top: 10rpx;">
-											<text>{{item.resumesAge}}岁</text>
+											<text>{{item.userAge}}岁</text>
 											<text style="margin-left: 20rpx;margin-right: 20rpx;">|</text>
-											<text>{{item.resumesWorkExperience}}</text>
+											<text>{{item.resumesWorkExperience || 0}}</text>
 											<text style="margin-left: 20rpx;margin-right: 20rpx;">|</text>
-											<text>{{item.school}}</text>
+											<text>{{item.degree}}</text>
 											<text style="margin-left: 20rpx;margin-right: 20rpx;">|</text>
-											<text>期望{{item.resumesCompensation}}</text>
+											<text>期望{{item.minSalary}}-{{item.maxSalary}}元</text>
 										</view>
 									</view>
 									<view class="qyList-box-item-info-r">
-										<image :src="item.avatar?item.avatar:'../../static/logo.png'"
+										<image :src="item.userAvatar?item.userAvatar:'../../static/logo.png'"
 											style="width: 95rpx;height: 95rpx;border-radius: 50%;" mode=""></image>
 									</view>
 								</view>
-								<view class="qyList-box-item-job flex align-center">
-									<u-icon name="heart-fill" color="#016BF6" size="30" style="margin-right: 16rpx;">
-									</u-icon>
-									期望岗位:{{item.resumesPost}}
-								</view>
-								<view class="qyList-box-item-job flex align-center">
+						
+								<view class="qyList-box-item-job flex align-center" >
 									<image src="../../static/images/qi.png"
 										style="width: 30rpx;height: 32rpx;margin-right: 16rpx;" mode=""></image>
-									<block v-if="item.resumesCompanyList[0]">
-										{{item.resumesCompanyList[0]?item.resumesCompanyList[0].resumesTitle:''}} /
-										{{item.resumesCompanyList[0]?item.resumesCompanyList[0].resumesPost:''}}
+									<block v-if="item.workType">
+										{{item.workType?item.workType:''}} /
+										{{item.workType?item.workType:''}}
 									</block>
 									<block v-else>
 										暂无工作经历
 									</block>
 								</view>
-								<view class="qyList-box-item-rem" v-if="item.resumesDetails">
-									优势:{{item.resumesDetails}}
+								<view class="qyList-box-item-job flex align-center">
+									<u-icon name="heart-fill" color="#016BF6" size="30" style="margin-right: 16rpx;">
+									</u-icon>
+									求职期望:{{item.expectedPosition}}
+								</view>
+								<view class="resume-skills" v-if="item.skills && item.skills.length > 0">
+							<!-- 	  <text class="skills-label">技能标签:</text> -->
+								  <view class="skills-tags flex flex-wrap">
+								    <text class="tag-item" 
+								          v-for="(skill, skillIdx) in item.skills.split(',')" 
+								          :key="skillIdx">
+								      {{skill}}
+								    </text>
+								  </view>
+								</view>
+								
+								<view class="qyList-box-item-rem" v-if="item.workContent">
+									优势:{{item.workContent}}
 								</view>
 							</view>
 						</view>
@@ -518,8 +531,8 @@
 				enable: true, //开启吸顶
 				goback: false,
 				city: '',
-				companyName:"",
-				companyId:"",
+				companyName: "",
+				companyId: "",
 				datasList: [],
 				isfixeds: false,
 				userType: 1,
@@ -559,7 +572,7 @@
 						id: 2,
 						name: '最新',
 					},
-//{
+					//{
 					// 	id: 2,
 					// 	name: '优选',
 					// }
@@ -575,7 +588,7 @@
 				industry: '', //行业
 				salaryRange: '', //薪资
 				companyPeople: '', //公司规模
-				preference:[],
+				preference: [],
 				domeWidth: 0,
 				showModal: true,
 				arr: [],
@@ -590,7 +603,7 @@
 				companList: [], //公司列表
 				directionList: [ //方向列表
 					{
-						id:'不限',
+						id: '不限',
 						name: '不限'
 					}
 				],
@@ -684,7 +697,7 @@
 			// 获取状态栏高度
 			let systemInfo = uni.getSystemInfoSync();
 			this.statusBarHeight = systemInfo.statusBarHeight || 0;
-			this.companyId=uni.getStorageSync('companyId');
+			this.companyId = uni.getStorageSync('companyId');
 			// #ifdef APP
 			this.getAudioPermision()
 			// #endif
@@ -708,15 +721,15 @@
 			}
 			let that = this
 			uni.$on('preferenceUpdated', (data) => {
-				let prefer=[]
-				data.preferences.forEach(function(item){
-					var tem={
-						id:item,
-						name:item
+				let prefer = []
+				data.preferences.forEach(function(item) {
+					var tem = {
+						id: item,
+						name: item
 					}
 					prefer.push(tem)
 				})
-				that.directionList=prefer
+				that.directionList = prefer
 			})
 			//获取经纬度后请求岗位接口,经纬度用于筛选距离
 			uni.getLocation({
@@ -780,7 +793,7 @@
 				});
 			}
 		},
-		onUnload(){
+		onUnload() {
 			uni.$off('preferenceUpdated')
 		},
 		//下拉刷新
@@ -1174,7 +1187,7 @@
 				this.$Request.get("/app/company/selectCompanyByUserId").then(res => {
 					if (res.code == 0 && res.data) {
 						this.companyStatus = res.data.status
-						this.companyName=res.data.companyAllName
+						this.companyName = res.data.companyAllName
 						uni.setStorageSync('companyStatus', this.companyStatus)
 					} else {
 						this.companyStatus = ''
@@ -1265,9 +1278,9 @@
 					lng: this.longitude,
 					lat: this.latitude,
 					companyId: uni.getStorageSync('companyId') ? uni.getStorageSync('companyId') : ''
-					
+
 				}
-				this.$Request.get('/app/resumes/selectResumesList', data).then(res => {
+				this.$Request.postJson('/app/resumes/selectResumesList', data).then(res => {
 					uni.stopPullDownRefresh()
 					uni.hideLoading()
 					if (res.code == 0 && res.data) {
@@ -1279,10 +1292,16 @@
 						// 		item.positionWelfare = []
 						// 	}
 						// })
+						
+						  const list = res.data.map(item => {
+						    // 若技能字段为其他名称(如 skillTags),需映射为 skills
+						    item.skills = item.skillTags || ''; 
+						    return item;
+						  });
 						if (this.page == 1) {
-							this.datasList = res.data.list
+							this.datasList = res.data
 						} else {
-							this.datasList = [...this.datasList, ...res.data.list]
+							this.datasList = [...this.datasList, ...res.data]
 						}
 						this.totlo = res.data.totalPage
 					} else {
@@ -1389,7 +1408,7 @@
 					education: this.education, //学历
 					experience: this.experience, //经验
 					industry: this.industry, //行业
-					preference:this.preference.join(','),
+					preference: this.preference.join(','),
 					companyPeople: this.companyPeople, //公司规模
 					lng: this.longitude,
 					lat: this.latitude,
@@ -1431,40 +1450,52 @@
 			 * 工作性质
 			 */
 			getPostType() {
-				var that=this
+				var that = this
 				//行业期望
 				this.$Request.get('/app/intention/getIntentionList', {
-					
+
 				}).then(res => {
 					if (res.code == 0) {
 						let arr = res.data
-					let classRule=[{id:'',name:'',label:'全部'}]
-					
-					let industry=this.directionList
-					var industryArr=this.industry==''?[]:this.industry.split(',')
-					industryArr.forEach(function(item){
-						if(that.$queue.array_column(that.directionList,'name').indexOf(item)<0)
-							industry.push({id:item,name:item})
-					})
-					
-					arr.forEach(function(item){
-						var tmp={}
-						tmp.id=item.ruleClassifyId
-						tmp.name=item.ruleClassifyName
-						tmp.label=item.ruleClassifyName
-						classRule.push(tmp)
-						var indus=item.industry?item.industry.split('/'):[]
-						indus.forEach(function(ind){
-							var tm={}
-							tm.name=ind
-							tm.id=ind
-							if(that.$queue.array_column(industry,'name').indexOf(tm.name)<0)
-								industry.push(tm)
+						let classRule = [{
+							id: '',
+							name: '',
+							label: '全部'
+						}]
+
+						let industry = this.directionList
+						var industryArr = this.industry == '' ? [] : this.industry.split(',')
+						industryArr.forEach(function(item) {
+							if (that.$queue.array_column(that.directionList, 'name').indexOf(item) < 0)
+								industry.push({
+									id: item,
+									name: item
+								})
 						})
-					})
-						classRule.push({id:'',name:'',label:''})//模拟个空企业选项,为了兼容源码和设计图
+
+						arr.forEach(function(item) {
+							var tmp = {}
+							tmp.id = item.ruleClassifyId
+							tmp.name = item.ruleClassifyName
+							tmp.label = item.ruleClassifyName
+							classRule.push(tmp)
+							var indus = item.industry ? item.industry.split('/') : []
+							indus.forEach(function(ind) {
+								var tm = {}
+								tm.name = ind
+								tm.id = ind
+								if (that.$queue.array_column(industry, 'name').indexOf(tm.name) <
+									0)
+									industry.push(tm)
+							})
+						})
+						classRule.push({
+							id: '',
+							name: '',
+							label: ''
+						}) //模拟个空企业选项,为了兼容源码和设计图
 						this.typeList = classRule
-						this.directionList=industry
+						this.directionList = industry
 						// console.log(this.typeList, '1111')
 						this.getUserList()
 					}
@@ -1634,18 +1665,18 @@
 				console.log('关闭VIP推荐')
 				// 可以通过v-if控制显示隐藏
 			},
-			selectIndustry(item){
-				var industry=this.industry==''?[]:this.industry.split(',')
-				var res=industry.indexOf(item.id)
-				if(res>=0){
-					industry.splice(res,1)
-				}else{
-					if(item.id=='不限')
-					industry=[]
+			selectIndustry(item) {
+				var industry = this.industry == '' ? [] : this.industry.split(',')
+				var res = industry.indexOf(item.id)
+				if (res >= 0) {
+					industry.splice(res, 1)
+				} else {
+					if (item.id == '不限')
+						industry = []
 					else
-					industry.push(item.id)
+						industry.push(item.id)
 				}
-				this.industry=industry.length>0?industry.join(','):''
+				this.industry = industry.length > 0 ? industry.join(',') : ''
 				this.setIndustry()
 				this.page = 1
 				if (this.current == this.typeList.length - 1) { //公司
@@ -1654,52 +1685,54 @@
 					this.getUserList()
 				}
 			},
-			setIndustry(){
+			setIndustry() {
 				if (uni.getStorageSync('filter') && (uni.getStorageSync('filter')).length > 0) {
 					let filter = uni.getStorageSync('filter')
 					console.log(filter)
-					let industry=this.industry==''?[]:this.industry.split(',')
-					filter.forEach(function(item){
-						if(item.name=='行业'){
-							let list=[]
-							industry.forEach(function(ite){
-								var tmp={}
-								tmp.value=ite
-								tmp.childrenList=[]
-								tmp.isEnable=1
-								tmp.select=true
+					let industry = this.industry == '' ? [] : this.industry.split(',')
+					filter.forEach(function(item) {
+						if (item.name == '行业') {
+							let list = []
+							industry.forEach(function(ite) {
+								var tmp = {}
+								tmp.value = ite
+								tmp.childrenList = []
+								tmp.isEnable = 1
+								tmp.select = true
 								list.push(tmp)
 							})
-							item.list=list
+							item.list = list
 						}
 					})
 					uni.setStorageSync("filter", filter);
 				}
-			} ,
+			},
 			goIndustry() {
 				uni.navigateTo({
-					url: '/package/screen/screen?industry='+this.directionList.join('/')
+					url: '/package/screen/screen?industry=' + this.directionList.join('/')
 				})
 			},
-			goPreference(){
-				var jobId=this.typeList[this.current].id
-				var jobTitle=this.typeList[this.current].name
+			goPreference() {
+				var jobId = this.typeList[this.current].id
+				var jobTitle = this.typeList[this.current].name
 				uni.navigateTo({
-					url: '/package/jobIntention/preferenceSetting?jobId='+jobId+'&jobTitle='+jobTitle+'&selectedPreferences='+encodeURIComponent(JSON.stringify(this.$queue.array_column(this.directionList,'name')))
+					url: '/package/jobIntention/preferenceSetting?jobId=' + jobId + '&jobTitle=' + jobTitle +
+						'&selectedPreferences=' + encodeURIComponent(JSON.stringify(this.$queue.array_column(this
+							.directionList, 'name')))
 				})
 			},
-			selectPreference(item){
-				var preference=this.preference
-				var res=preference.indexOf(item.id)
-				if(res>=0){
-					preference.splice(res,1)
-				}else{
-					if(item.id=='不限')
-					preference=[]
+			selectPreference(item) {
+				var preference = this.preference
+				var res = preference.indexOf(item.id)
+				if (res >= 0) {
+					preference.splice(res, 1)
+				} else {
+					if (item.id == '不限')
+						preference = []
 					else
-					preference.push(item.id)
+						preference.push(item.id)
 				}
-				this.preference=preference
+				this.preference = preference
 				this.page = 1
 				if (this.current == this.typeList.length - 1) { //公司
 					this.getComanyList()
@@ -1785,10 +1818,9 @@
 		// z-index: 998;
 	}
 
-	.topbg-sticky {
-		
-	}
-	.top-bg{
+	.topbg-sticky {}
+
+	.top-bg {
 		// box-shadow: 0px 4px 62px 0px rgba(153, 171, 198, 0.18);
 		// background: linear-gradient(90deg, rgba(13, 39, 247, 1), rgba(19, 193, 234, 1) 100%);
 		// width: 100%;
@@ -1796,7 +1828,7 @@
 		// position: sticky;
 		// top: 0px;
 		// z-index: 999;
-		
+
 		/* 波浪效果 */
 		// --c: rgba(255, 255, 255, 0.1);
 		// --w1: radial-gradient(100% 57% at top, #0000 100%, var(--c) 100.5%) no-repeat;
@@ -1805,7 +1837,7 @@
 		// background-position: 0% 100%, 100% 100%, 0 0;
 		// background-size: 50% 100%, 50% 100%, 100% 100%;
 		position: absolute;
-		top:0;
+		top: 0;
 		z-index: 0;
 		width: 100%;
 	}
@@ -2037,6 +2069,7 @@
 
 		.topbg-yx-box-l {
 			width: 62%;
+
 			.topbg-yx-box-l-i {
 				display: inline-block;
 				margin-right: 50rpx;
@@ -2354,9 +2387,10 @@
 		// padding-bottom: 40rpx;
 		// padding: 20rpx;
 		margin-bottom: 12rpx;
-		.qySx-bg{
+
+		.qySx-bg {
 			position: absolute;
-			top:0;
+			top: 0;
 			z-index: 0;
 			width: 100%;
 		}
@@ -2579,8 +2613,32 @@
 		width: 100%;
 		height: auto;
 
+  /* 技能标签区域 */
+  .resume-skills {
+    margin: 20rpx 0; // 与上下模块的间距
+
+    .skills-label {
+      font-size: 24rpx;
+      color: #212121;
+      font-weight: 500;
+      display: block;
+      margin-bottom: 12rpx;
+    }
+
+    .skills-tags {
+      gap: 16rpx; // 标签间距
+
+      .tag-item {
+        background: #F6F6F6;
+        color: #666666;
+        font-size: 22rpx;
+        padding: 8rpx 20rpx;
+        border-radius: 8rpx;
+        line-height: 32rpx;
+      }
+    }}
 		.qyList-box {
-			width: 686rpx;
+			width: 716rpx;
 			height: 100%;
 
 			.qyList-box-item {