wangguoyu 2 mēneši atpakaļ
vecāks
revīzija
bf6034e8f7

+ 36 - 0
api/jiazheng.js

@@ -23,3 +23,39 @@ export function getAliyunPolicy(data = {}) {
     timeout: 20000
   })
 }
+
+export function getJiazhengLeixing(data = {}) {
+  return request({
+    url: '/app/user/jiazheng/ops/leixing',
+    headers: {
+      isToken: false
+    },
+    method: 'post',
+    data,
+    timeout: 20000
+  })
+}
+
+export function getJiazhengJineng(data = {}) {
+  return request({
+    url: '/app/user/jiazheng/ops/jineng',
+    headers: {
+      isToken: false
+    },
+    method: 'post',
+    data,
+    timeout: 20000
+  })
+}
+
+export function getJiazhengZhuangtai(data = {}) {
+  return request({
+    url: '/app/user/jiazheng/ops/zhuangtai',
+    headers: {
+      isToken: false
+    },
+    method: 'post',
+    data,
+    timeout: 20000
+  })
+}

+ 235 - 0
pages/admin/Jiazheng/common/dataChecked.vue

@@ -0,0 +1,235 @@
+<template>
+	<view class="skill-container">
+		<!-- 技能块展示 -->
+		<view class="skill-list">
+			<view v-for="item in displayedList" :key="item.id" class="skill-block"
+				:class="{ selected: isSelected(item.id) }" @click="toggleSelect(item)">
+				{{ item.name }}
+			</view>
+			<!-- 添加按钮 -->
+			<view v-if="showAddButton" class="add-block" @click="handleAdd">
+				+ 添加
+			</view>
+		</view>
+
+		<!-- 展开/收起按钮 -->
+		<view v-if="showExpandButton" class="expand-button" @click="toggleExpand">
+			{{ showAll ? '收起' : `展开` }}
+		</view>
+
+		<!-- 	<view v-if="showExpandButton" class="expand-button" @click="toggleExpand">
+			{{ showAll ? '收起' : `展开剩余${remainingCount}项` }}
+		</view> -->
+
+		<!-- 添加弹窗 -->
+		<uni-popup ref="addPopup" type="dialog">
+			<view class="add-popup">
+				<input v-model="newName" placeholder="请输入技能名称" class="add-input" />
+				<view class="button-group">
+					<button @click="confirmAdd" class="confirm-button">确认</button>
+					<button @click="cancelAdd" class="cancel-button">取消</button>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'SkillSelector',
+		props: {
+			// 技能列表(必须包含id和name字段)
+			list: {
+				type: Array,
+				required: true,
+				default: () => []
+			},
+			// 默认显示数量
+			defaultCount: {
+				type: Number,
+				default: 10
+			},
+			// 是否显示添加功能
+			showAdd: {
+				type: Boolean,
+				default: true
+			},
+			// 新增模式选择
+			mode: {
+				type: String,
+				default: 'multiple', // 'single' | 'multiple'
+				validator: (value) => ['single', 'multiple'].includes(value)
+			}
+		},
+		data() {
+			return {
+				showAll: false,
+				selectedData: [],
+				newName: ''
+			};
+		},
+		computed: {
+			displayedList() {
+				return this.showAll ? this.list : this.list.slice(0, this.defaultCount);
+			},
+			remainingCount() {
+				return this.list.length - this.defaultCount;
+			},
+			showExpandButton() {
+				return this.list.length > this.defaultCount;
+			},
+			showAddButton() {
+				if (!this.showAdd) return false;
+				return this.showAll || this.list.length < this.defaultCount;
+			}
+		},
+		methods: {
+			isSelected(id) {
+				return this.selectedData.some(item => item.id === id);
+			},
+			// toggleSelect(data) {
+			// 	const index = this.selectedData.indexOf(data);
+			// 	console.log('index', index);
+			// 	if (index == -1) {
+			// 		this.selectedData.push(data);
+			// 	} else {
+			// 		this.selectedData.splice(index, 1);
+			// 	}
+
+			// 	console.log('this.selectedData', this.selectedData);
+			// 	this.$emit('change', this.selectedData);
+			// },
+
+			toggleSelect(data) {
+				if (this.mode == 'single') {
+					this.handleSingleSelect(data);
+				} else {
+					this.handleMultipleSelect(data);
+				}
+				this.$emit('change', this.selectedData);
+			},
+			// 单选处理逻辑
+			handleSingleSelect(data) {
+				const isSelected = this.selectedData.some(item => item.id == data.id);
+				if (isSelected) {
+					// 取消选择
+					this.selectedData = [];
+				} else {
+					// 替换选择
+					this.selectedData = [data];
+				}
+			},
+			// 多选处理逻辑
+			handleMultipleSelect(data) {
+				const index = this.selectedData.findIndex(item => item.id == data.id);
+				if (index === -1) {
+					this.selectedData.push(data);
+				} else {
+					this.selectedData.splice(index, 1);
+				}
+			},
+			toggleExpand() {
+				this.showAll = !this.showAll;
+			},
+
+			handleAdd() {
+				this.$refs.addPopup.open();
+			},
+
+			confirmAdd() {
+				if (!this.newName.trim()) {
+					uni.showToast({
+						title: '请输入技能名称',
+						icon: 'none'
+					});
+					return;
+				}
+
+				const newObject = {
+					id: this.list.length, // 使用时间戳作为临时ID
+					name: this.newName
+				};
+				console.log('list', this.list);
+				console.log('newObject', newObject);
+
+				this.$emit('add', newObject);
+				this.newName = '';
+				this.$refs.addPopup.close();
+			},
+
+			cancelAdd() {
+				this.newName = '';
+				this.$refs.addPopup.close();
+			}
+		}
+	};
+</script>
+
+<style scoped>
+	.skill-container {
+		padding: 20rpx;
+	}
+
+	.skill-list {
+		display: flex;
+		flex-wrap: wrap;
+		gap: 20rpx;
+	}
+
+	.skill-block {
+		padding: 12rpx 24rpx;
+		background: #f5f5f5;
+		border-radius: 8rpx;
+		font-size: 28rpx;
+		color: #333;
+	}
+
+	.skill-block.selected {
+		background: #007aff;
+		color: #fff;
+	}
+
+	.add-block {
+		background: transparent;
+		border: 1px dashed #007aff;
+		color: #007aff;
+	}
+
+	.expand-button {
+		margin-top: 30rpx;
+		color: #007aff;
+		font-size: 28rpx;
+		text-align: center;
+	}
+
+	.add-popup {
+		padding: 40rpx;
+		background: #fff;
+		border-radius: 16rpx;
+	}
+
+	.add-input {
+		width: 100%;
+		padding: 20rpx;
+		border: 1px solid #eee;
+		border-radius: 8rpx;
+		margin-bottom: 40rpx;
+	}
+
+	.button-group {
+		display: flex;
+		gap: 20rpx;
+	}
+
+	.confirm-button {
+		flex: 1;
+		background: #007aff;
+		color: #fff;
+	}
+
+	.cancel-button {
+		flex: 1;
+		background: #ff3b30;
+		color: #fff;
+	}
+</style>

+ 1 - 1
pages/admin/Jiazheng/jiazhengUserManager.vue

@@ -27,7 +27,7 @@
 	export default {
 		data() {
 			return {
-				current: 2,
+				current: 1,
 				tabs: ['个人资料', '求职信息', '照片资料', '办证信息']
 			}
 		},

+ 127 - 13
pages/admin/Jiazheng/qiuzhiXinxi.vue

@@ -1,27 +1,141 @@
 <template>
 	<view>
-		求职信息
+		<view>
+			<view>
+				*类型
+			</view>
+			<dataChecked :list="typeList" mode="multiple" :defaultCount="9" @change="selectChangeType" @add="addType" />
+		</view>
+		<view>
+			<view>经验</view>
+		</view>
+		<view>
+			<view>
+				*技能
+			</view>
+			<dataChecked :list="skillList" mode="multiple" :defaultCount="9" @change="selectChangeSkill"
+				@add="addSkill" />
+		</view>
+		<view>
+			<view>
+				状态
+			</view>
+			<dataChecked :list="zhuangtaiList" mode="single" :showAdd="false" @change="selectChangeZhuangtai" />
+		</view>
+		<picker :range="xinziJibie" mode='selector' @change="xinziJibieChange" @cancel="xinziJibieCancel">
+			<view>薪资级别</view>
+		</picker>
+		<view>
+			<view>期望薪资</view>
+			  <input v-model="inputValue"  placeholder="面议" />
+		</view>	
+		<view>
+			<view>工作经历</view>
+			  <input v-model="inputValue"  placeholder="请填写工作经历" />
+		</view>
+	
 	</view>
 </template>
 
 <script>
+	import dataChecked from './common/dataChecked.vue';
 	import {
-		ref
-	} from "vue";
+		getJiazhengLeixing,
+		getJiazhengJineng,
+		getJiazhengZhuangtai
+	} from "@/api/jiazheng.js";
+
 	export default {
+		components: {
+			dataChecked
+		},
+		// onLoad 是 uni-app 的页面生命周期钩子,不需要导入
+		created() {
+			this.getLeixing()
+			this.getJineng()
+			this.getZhuangtai()
+		},
 		data() {
 			return {
-		
-			}
+				// 从后端获取的技能列表
+				skillList: [],
+				typeList: [],
+				zhuangtaiList: [],
+				inputValue: '',
+				xinziJibie: ["一", "二","三","四","五",],
+			};
 		},
 		methods: {
-			changeTab(index) {
-				
+			// 点击完成按钮的时候触发,
+			xinziJibieChange(e) {
+				//通过e.detail.value获取值,获取的是自定义数据的下标
+				const val = e.detail.value
+				console.log(val);
+			},
+			xinziJibieCancel(e) {
+				console.log("您已取消选择");
+			},
+
+			getLeixing() {
+				getJiazhengLeixing({}).then(res => {
+					this.skillList = this.dataConversionObject(res.data)
+					console.log('this.skillList', this.skillList);
+				}).catch(error => {
+					console.error('获取技能类型失败:', error);
+				});
+			},
+			getJineng() {
+				getJiazhengJineng({}).then(res => {
+					this.typeList = this.dataConversionObject(res.data)
+					console.log('this.typeList', this.typeList);
+				}).catch(error => {
+					console.error('获取技能类型失败:', error);
+				});
+			},
+			getZhuangtai() {
+				getJiazhengZhuangtai({}).then(res => {
+					console.log('res', res);
+					this.zhuangtaiList = res.data
+					// this.typeList = this.dataConversionObject(res.data)
+					// console.log('this.typeList', this.typeList);
+				}).catch(error => {
+					console.error('获取技能类型失败:', error);
+				});
+			},
+			dataConversionObject(data) {
+				let newList
+				newList = data.map((name, index) => ({
+					id: index,
+					name: name
+				}));
+				return newList
+			},
+			dataConversionArray(data) {
+				let newList
+				newList = data.map((item, index) => {
+					return item.name
+				});
+				return newList
+			},
+			selectChangeType(data) {
+				console.log('typeData', data);
+			},
+			addType(newType) {
+				this.typeList.push({
+					...newType,
+				});
+			},
+			selectChangeSkill(data) {
+				console.log('SkillData', data);
+			},
+			addSkill(newSkill) {
+				this.skillList.push({
+					...newSkill,
+				});
+			},
+			selectChangeZhuangtai(data) {
+				console.log('zhuangtaiData', data);
 			}
 		}
-	}
-</script>
-
-<style>
-
-</style>
+	};
+</script>