소스 검색

多余文件删除

Xiao_123 1 개월 전
부모
커밋
4031865daf

+ 0 - 16
components/GoTopIcon/index.vue

@@ -1,16 +0,0 @@
-<template>
-	<view v-if="showGoTop" style="position: fixed;right: 30rpx;bottom: 13vh;" @tap="goTop">
-    <uni-icons color="#ff770d" type="icon-4fanhuidingbucheng" size="37" custom-prefix="iconfont"/>
-  </view>
-</template>
-
-<script setup>
-
-//点击回到顶部
-const showGoTop = false
-const goTop = () => {
-}
-</script>
-
-<style lang="scss">
-</style>

+ 0 - 164
components/SearchBar/index.vue

@@ -1,164 +0,0 @@
-<template>
-  <view
-    class="search-content ss-flex ss-col-center ss-row-between"
-    @tap="click"
-    :style="[
-      {
-        borderRadius: radius + 'px',
-        background: elBackground,
-        height: height + 'px',
-        width: width,
-      },
-    ]"
-    :class="[{ 'border-content': navbar }]"
-  >
-    <view class="ss-flex ss-col-center" v-if="navbar">
-      <view class="search-icon _icon-search ss-m-l-10" :style="[{ color: props.iconColor }]"></view>
-      <view class="search-input ss-flex-1 ss-line-1" :style="[{ color: fontColor, width: width }]">
-        {{ placeholder }}
-      </view>
-    </view>
-    <uni-search-bar
-      v-if="!navbar"
-      class="ss-flex-1"
-      :radius="data.borderRadius"
-      :placeholder="data.placeholder"
-      cancelButton="none"
-      clearButton="none"
-      @confirm="onSearch"
-      v-model="state.searchVal"
-    />
-    <view class="keyword-link ss-flex">
-      <view v-for="(item, index) in data.hotKeywords" :key="index">
-        <view
-          class="ss-m-r-16"
-          :style="[{ color: data.textColor }]"
-          @tap.stop="sheep.$router.go('/pages/goods/list', { keyword: item })"
-          >{{ item }}</view
-        >
-      </view>
-    </view>
-    <view v-if="data.hotKeywords && data.hotKeywords.length && navbar" class="ss-flex">
-      <button
-        class="ss-reset-button keyword-btn"
-        v-for="(item, index) in data.hotKeywords"
-        :key="index"
-        :style="[{ color: data.textColor, marginRight: '10rpx' }]"
-      >
-        {{ item }}
-      </button>
-    </view>
-  </view>
-</template>
-
-<script setup>
-  /**
-   * 基础组件 - 搜索栏
-   *
-   * @property {String} elBackground 			- 输入框背景色
-   * @property {String} iconColor 			- 图标颜色
-   * @property {String} fontColor 		  	- 字体颜色
-   * @property {Number} placeholder 			- 默认placeholder
-   * @property {Number} topRadius 			- 组件上圆角
-   * @property {Number} bottomRadius 			- 组件下圆角
-   *
-   * @slot keywords							- 关键字
-   * @event {Function} click 					- 点击组件时触发
-   */
-
-  import { computed, reactive } from 'vue';
-  import sheep from '@/sheep';
-
-  // 组件数据
-  const state = reactive({
-    searchVal: '',
-  });
-
-  // 事件页面
-  const emits = defineEmits(['click']);
-
-  // 接收参数
-  const props = defineProps({
-    data: {
-      type: Object,
-      default: () => ({}),
-    },
-    // 输入框背景色
-    elBackground: {
-      type: String,
-      default: '',
-    },
-    height: {
-      type: Number,
-      default: 36,
-    },
-    // 图标颜色
-    iconColor: {
-      type: String,
-      default: '#b0b3bf',
-    },
-    // 字体颜色
-    fontColor: {
-      type: String,
-      default: '#b0b3bf',
-    },
-    // placeholder
-    placeholder: {
-      type: String,
-      default: '这是一个搜索框',
-    },
-    radius: {
-      type: Number,
-      default: 10,
-    },
-    width: {
-      type: String,
-      default: '100%',
-    },
-    navbar: {
-      type: Boolean,
-      default: true,
-    },
-  });
-
-  // 点击
-  const click = () => {
-    emits('click');
-  };
-
-  function onSearch(e) {
-    if (e.value) {
-      sheep.$router.go('/pages/goods/list', { keyword: e.value });
-      setTimeout(() => {
-        state.searchVal = '';
-      }, 100);
-    }
-  }
-</script>
-
-<style lang="scss" scoped>
-  .border-content {
-    border: 2rpx solid #eee;
-  }
-
-  .search-content {
-    flex: 1;
-    // height: 80rpx;
-    position: relative;
-
-    .search-icon {
-      font-size: 38rpx;
-      margin-right: 20rpx;
-    }
-
-    .keyword-link {
-      position: absolute;
-      right: 16rpx;
-      top: 18rpx;
-    }
-
-    .search-input {
-      font-size: 28rpx;
-    }
-  }
-</style>

+ 0 - 345
components/searchCombox/index.vue

@@ -1,345 +0,0 @@
-<template>
-	<view class="uni-combox" :class="border ? '' : 'uni-combox__no-border'">
-		<view class="uni-combox__input-box">
-			<input class="uni-combox__input" type="text" :placeholder="placeholder" placeholder-class="uni-combox__input-plac"
-				v-model="inputVal" @input="onInput" @focus="onFocus" @blur="onBlur" />
-			<uni-icons :type="showSelector? 'top' : 'bottom'" size="14" color="#999" @click="toggleSelector"></uni-icons>
-		</view>
-		<view class="uni-combox__selector" v-if="showSelector">
-			<view class="uni-popper__arrow"></view>
-			<scroll-view scroll-y="true" class="uni-combox__selector-scroll">
-				<view class="uni-combox__selector-empty" v-if="filterCandidatesLength === 0">
-					<text>{{emptyTips}}</text>
-				</view>
-				<view
-          class="uni-combox__selector-item"
-          v-for="(item,index) in filterCandidates" :key="index"
-          :style="item[valueKey] == dictVal ? 'font-weight: bold;background-color: ' + selectedBackground + ';color: ' + selectedColor : ''"
-					@click="onSelectorClick(index)"
-        >
-					<text>{{item[`${labelKey}`]}}</text>
-				</view>
-			</scroll-view>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * Combox 组合输入框
-	 * @description 组合输入框一般用于既可以输入也可以选择的场景
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=1261
-	 * @property {String} label 左侧文字
-	 * @property {String} labelWidth 左侧内容宽度
-	 * @property {String} placeholder 输入框占位符
-	 * @property {Array} candidates 候选项列表
-	 * @property {String} emptyTips 筛选结果为空时显示的文字
-	 * @property {String} value 组合框的值
-	 */
-  const _this = this
-  export default {
-		name: 'uniCombox',
-		emits: ['input', 'update:modelValue', 'onBlur'],
-		props: {
-			border: {
-				type: Boolean,
-				default: true
-			},
-			label: {
-				type: String,
-				default: ''
-			},
-			labelWidth: {
-				type: String,
-				default: 'auto'
-			},
-			keyValue: {
-				type: String,
-				default: ''
-			},
-			placeholder: {
-				type: String,
-				default: ''
-			},
-			candidates: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			emptyTips: {
-				type: String,
-				default: '无匹配项'
-			},
-			itemTextName: {
-				type: String,
-				default: 'label'
-			},
-			itemValueName: {
-				type: String,
-				default: 'value'
-			},
-			labelKey: {
-				type: String,
-				default: 'text'
-			},
-			valueKey: {
-				type: String,
-				default: 'value'
-			},
-			// #ifndef VUE3
-			value: {
-				type: [String, Number],
-				default: ''
-			},
-			// #endif
-			// #ifdef VUE3
-			modelValue: {
-				type: [String, Number],
-				default: ''
-			},
-      // 被选中的背景颜色
-      selectedBackground: {
-        type: String,
-        default: '#daf3e6',
-      },
-      // 被选中的字体颜色
-      selectedColor: {
-        type: String,
-        default: '#00B760',
-      },
-			// #endif
-		},
-
-		data() {
-			return {
-				showSelector: false,
-				inputVal: '', //显示
-				dictVal: '', // id
-				filterCandidates: []
-			}
-		},
-		computed: {
-			labelStyle() {
-				if (this.labelWidth === 'auto') {
-					return ''
-				}
-				return `width: ${this.labelWidth}`
-			},
-			// 为了点击选择能够显示所有选项,把这个filterCandidates放在data中
-			// filterCandidates() {
-			// 	return this.candidates.filter((item) => {
-			// 		return item[`${this.labelKey}`].toString().indexOf(this.inputVal) > -1
-			// 	})
-			// },
-			filterCandidatesLength() {
-				return this.filterCandidates.length
-			}
-		},
-		watch: {
-			//默认值
-			keyValue: {
-				handler(newVal) {
-					this.inputVal = newVal
-				},
-				immediate: true
-			},
-			// #ifndef VUE3
-			value: {
-				handler(newVal) {
-					this.dictVal = newVal
-				},
-				immediate: true
-			},
-			// #endif
-			// #ifndef VUE3
-			// 因为获取列表是个异步的过程,需要对列表进行监听
-			candidates: function(arr) {
-				this.setLabel()
-				this.filterCandidates = arr.filter(item => {
-					return item[`${this.labelKey}`].toString().indexOf(this.inputVal) > -1
-				})
-			},
-			// #endif
-			// #ifdef VUE3
-			modelValue: {
-				handler(newVal) {
-					this.inputVal = newVal
-					this.dictVal = newVal
-					this.setLabel()
-				},
-				immediate: true,
-				deep: true
-			},
-			// #endif
-		},
-		methods: {
-			toggleSelector() {
-				this.showSelector = !this.showSelector
-			},
-			onFocus() {
-				this.filterCandidates = this.candidates
-				this.showSelector = true
-			},
-			onBlur() {
-				setTimeout(() => {
-					this.showSelector = false
-          this.$emit('onBlur')
-				}, 153)
-			},
-			onSelectorClick(index) {
-				this.dictVal = this.filterCandidates[index][`${this.valueKey}`]
-				//this.dictVal 的赋值一定要在this.inputVal前执行,
-				//因为this.filterCandidates会监听this.inputVal的变化被重新赋值
-				//这样在选择列表中非第一个选项会报错
-				this.inputVal = this.filterCandidates[index][`${this.labelKey}`]
-				this.showSelector = false
-				this.$emit('input', this.dictVal)
-				this.$emit('update:modelValue', this.dictVal)
-			},
-			onInput() {
-				this.filterCandidates = this.candidates.filter(item => {
-					return item[`${this.labelKey}`].toString().indexOf(this.inputVal) > -1
-				})
-				setTimeout(() => {
-          if (!this.inputVal) this.dictVal = this.inputVal
-					this.$emit('input', this.inputVal)
-					this.$emit('update:modelValue', this.inputVal)
-				})
-			},
-			setLabel() {
-				this.$nextTick(()=>{
-					if (this.candidates?.length > 0 && this.dictVal) {
-						const obj = this.candidates.find(item => item[`${this.valueKey}`] === this.dictVal)
-						if (obj) {
-							this.inputVal = obj[`${this.labelKey}`]
-						}
-					}
-				})
-			},
-			getOnInputValue() {
-        return this.inputVal
-			},
-			getValue() {
-				if (this.inputVal === this.dictVal) return { [this.itemTextName]: this.inputVal, [this.itemValueName]: null }
-				else return { [this.itemTextName]: null, [this.itemValueName]: this.dictVal }
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.uni-combox {
-		position: relative;
-		display: flex;
-		flex-direction: row;
-		align-items: center;
-		min-height: 70rpx;
-		// width: 100%;
-		padding: 0 15rpx 0 20rpx;
-  	font-size: 28rpx;
-		border: 1px solid #e5e5e5;
-		border-radius: 8rpx;
-		// background-color: #fff;
-	}
-
-	.uni-combox__label {
-		padding-right: 10rpx;
-		color: #999999;
-		font-size: 32rpx;
-		line-height: 44rpx;
-	}
-
-	.uni-combox__input-box {
-		position: relative;
-		display: flex;
-		flex: 1;
-		flex-direction: row;
-		align-items: center;
-	}
-
-	.uni-combox__input {
-		flex: 1;
-		height: 44rpx;
-		font-size: 28rpx;
-		line-height: 44rpx;
-	}
-
-	.uni-combox__input-plac {
-		color: #999;
-		font-size: 12px;
-	}
-
-	.uni-combox__selector {
-		position: absolute;
-		top: calc(100% + 12px);
-		left: 0;
-		z-index: 999;
-		box-sizing: border-box;
-		width: 100%;
-		padding: 8rpx 0;
-		background-color: #FFFFFF;
-		border: 1px solid #ebeef5;
-		border-radius: 12rpx;
-		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
-	}
-
-	.uni-combox__selector-scroll {
-		max-height: 300rpx;
-		box-sizing: border-box;
-	}
-
-	.uni-combox__selector-empty,
-	.uni-combox__selector-item {
-		display: flex;
-		padding: 0px 0px;
-		// padding: 0px 10px;
-		font-size: 14px;
-  	line-height: 70rpx;
-		text-indent: 1rem;
-		text-align: center;
-		cursor: pointer;
-	}
-
-	.uni-combox__selector-item:hover {
-		background-color: #e5e5e5;
-	}
-
-	.uni-combox__selector-empty:last-child,
-	.uni-combox__selector-item:last-child {
-		border-bottom: none;
-	}
-
-	// picker 弹出层通用的指示小三角
-	.uni-popper__arrow,
-	.uni-popper__arrow::after {
-		position: absolute;
-		display: block;
-		width: 0;
-		height: 0;
-		border-color: transparent;
-		border-style: solid;
-		border-width: 12rpx;
-	}
-
-	.uni-popper__arrow {
-		top: -12rpx;
-		left: 10%;
-		margin-right: 3px;
-		border-top-width: 0;
-		border-bottom-color: #ebeef5;
-		filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
-	}
-
-	.uni-popper__arrow::after {
-		content: " ";
-		top: 2rpx;
-		margin-left: -12rpx;
-		border-top-width: 0;
-		border-bottom-color: #fff;
-	}
-
-	.uni-combox__no-border {
-		border: none;
-	}
-</style>

+ 0 - 79
components/studentDeliveryForm/index.vue

@@ -1,79 +0,0 @@
-<template>
-	<view class="f-straight">
-    <uni-forms ref="form" :modelValue="formData" :rules="rules" validateTrigger="bind" :label-width="formLabelWidth">
-      <uni-forms-item label="实习到岗开始时间" name="startTime" required>
-				<picker mode="date" :value="formData.startTime" fields="month" @change="e => formData.startTime = e.detail.value">
-					<view v-if="formData.startTime" class="pickerText">{{ formData.startTime }}</view>
-					<view v-else class="pickerText">请选择</view>
-				</picker>
-			</uni-forms-item>
-      <uni-forms-item label="实习到岗结束时间" name="endTime" required>
-				<picker mode="date" :value="formData.endTime" fields="month" @change="e => formData.endTime = e.detail.value">
-					<view v-if="formData.endTime" class="pickerText">{{ formData.endTime }}</view>
-					<view v-else class="pickerText">请选择</view>
-				</picker>
-			</uni-forms-item>
-    </uni-forms>
-	</view>
-</template>
-
-<script setup>
-import { ref, unref } from 'vue'
-import { convertYearMonthToTimestamp } from '@/utils/date.js'
-
-const props = defineProps({
-  formLabelWidth: { type: [String, Number], default: '136px' },
-})
-
-const form = ref()
-let formData = ref({
-  startTime: '',
-  endTime: ''
-})
-
-const rules = {
-	startTime:{
-		rules: [{required: true, errorMessage: '请选择实习到岗开始时间' }]
-	},
-	endTime:{
-		rules: [{required: true, errorMessage: '请选择实习到岗结束时间' }]
-	}
-}
-
-// 保存
-const getQueryParams = async () => {
-  const valid = await unref(form).validate()
-  if (!valid) return
-  const startTime = convertYearMonthToTimestamp(formData.value.startTime)
-  const endTime = convertYearMonthToTimestamp(formData.value.endTime)
-  if (rules?.startTime && !startTime) {
-    uni.showToast({ icon: 'none', title: '请选择实习到岗开始时间' })
-    return
-  }
-  if (rules?.endTime && !endTime) {
-    uni.showToast({ icon: 'none', title: '请选择实习到岗结束时间' })
-    return
-  }
-  if (startTime > endTime) {
-    uni.showToast({ icon: 'none', title: '开始时间不能大于结束时间' })
-    return
-  }
-  return { practiceStartTime: startTime, practiceEndTime: endTime }
-}
-
-defineExpose({
-	getQueryParams
-})
-</script>
-
-<style scoped lang="scss">
-.f-straight{
-	display: flex;
-	justify-content: center;
-	flex-direction: column;
-}
-.pickerText {
-  height: 36px;
-  line-height: 36px;
-}
-</style>

+ 0 - 8
layout/components/auth-modal.vue

@@ -4,12 +4,6 @@
     <ct-popup :show="authType !== ''" round="10" :showClose="true" @close="closeAuthModal">
       <login></login>
     </ct-popup>
-    <!-- <ct-popup :show="authType === 'necessaryInfo'" round="0" :showClose="false" @close="closeAuthModal">
-      <necessaryInfo></necessaryInfo>
-    </ct-popup>
-    <ct-popup :show="authType === 'selectUserType'" round="0" :showClose="false" @close="closeAuthModal">
-      <selectUserType></selectUserType>
-    </ct-popup> -->
   </view>
 </template>
 
@@ -18,8 +12,6 @@ import { closeAuthModal } from '@/hooks/useModal'
 import ctPopup from '@/components/ui/ct-popup'
 import { modalStore } from '@/store/modal';
 import login from './authModal/login'
-import necessaryInfo from './authModal/necessaryInfo'
-import selectUserType from './authModal/selectUserType'
 
 
 const modal = modalStore()

+ 0 - 248
layout/components/authModal/necessaryInfo/index.vue

@@ -1,248 +0,0 @@
-<!-- 校验是否完善人才必填信息 -->
-<template>
-  <scroll-view class="scrollBox" scroll-y="true">
-    <view class="content">
-      <view class="text-center ss-m-b-50 font-size-20 color-primary">请完善您的基本信息</view>
-      <uni-forms
-        ref="baseInfoRef"
-        v-model="formData"
-        :rules="formRules"
-        validateTrigger="bind"
-        label-width="86px"
-        labelAlign="center"
-      >
-        <uni-forms-item label="头像" name="avatar" class="f-straight" required>
-          <view style="display: flex;flex-wrap: wrap;">
-            <view class="upload-img" v-if="formData?.avatar">
-              <uni-icons size="35" type="clear" color="#fe574a" style="position: absolute;right: -15px; top: -15px; z-index: 9" @click="formData.avatar = ''"></uni-icons>
-              <image :src="formData?.avatar" mode="contain" style="width: 200rpx;height: 200rpx;" @click="handlePreviewImage"></image>
-            </view>
-            <view v-else class="upload-file" @click="uploadPhotos">
-              <uni-icons type="plusempty" size="50" color="#f1f1f1"></uni-icons>
-            </view>
-          </view>
-        </uni-forms-item>
-        <uni-forms-item name="name" label="姓名" required>
-          <uni-easyinput placeholder="请输入姓名" v-model="formData.name" :inputBorder="false" type="text"></uni-easyinput>
-        </uni-forms-item>
-        <uni-forms-item name="sex" label="性别" required>
-          <uni-data-picker v-model="formData.sex" :localdata="dictObj.sex" :clear-icon="false" popup-title="请选择性别" :map="{ text: 'label', value: 'value' }"></uni-data-picker>
-        </uni-forms-item>
-        <uni-forms-item name="phone" label="联系电话" required>
-          <uni-easyinput placeholder="请输入联系电话" v-model="formData.phone" :inputBorder="false" type="number"></uni-easyinput>
-        </uni-forms-item>
-        <uni-forms-item name="email" label="常用邮箱" required>
-          <uni-easyinput v-model="formData.email" placeholder="请输入常用邮箱" />
-        </uni-forms-item>
-        <uni-forms-item required label="出生日期" name="birthday">
-          <uni-datetime-picker type="date" return-type="timestamp" v-model="formData.birthday" />
-        </uni-forms-item>
-        <uni-forms-item name="enterpriseName" label="任职企业名称" required>
-          <uni-easyinput placeholder="请填写任职企业名称(可填暂无)" v-model="formData.enterpriseName" :clear-icon="true" type="text"></uni-easyinput>
-        </uni-forms-item>
-        <uni-forms-item name="positionName" label="任职职位名称" required>
-          <uni-easyinput placeholder="请填写任职职位名称(可填暂无)" v-model="formData.positionName" :clear-icon="true" type="text"></uni-easyinput>
-        </uni-forms-item>
-        <uni-forms-item name="interestedPositionId" label="意向职位" required>
-          <uni-data-picker v-model="formData.interestedPositionId" :localdata="dictObj.positionSecondData" :clear-icon="false" popup-title="请选择意向职位" :map="{ text: 'nameCn', value: 'id' }"></uni-data-picker>
-        </uni-forms-item>
-        <uni-forms-item name="jobStatus" label="求职状态" required>
-          <uni-data-picker v-model="formData.jobStatus" :localdata="dictObj.jobStatus" :clear-icon="false" popup-title="请选择求职状态" :map="{ text: 'label', value: 'value' }"></uni-data-picker>
-        </uni-forms-item>
-        <uni-forms-item name="expType" label="工作经验" required>
-          <uni-data-picker v-model="formData.expType" :localdata="dictObj.exp" :clear-icon="false" popup-title="请选择工作经验" :clear="false" :map="{ text: 'label', value: 'value' }"></uni-data-picker>
-        </uni-forms-item>
-        <uni-forms-item name="eduType" label="最高学历" required>
-          <uni-data-picker v-model="formData.eduType" :localdata="dictObj.edu" :clear-icon="false" popup-title="请选择最高学历" :clear="false" :map="{ text: 'label', value: 'value' }"></uni-data-picker>
-        </uni-forms-item>
-      </uni-forms>
-      <view class="f-horizon-center">
-        <button type="primary" size="default" class="send-button" @click="submit">提 交</button>
-      </view>
-      <view class="f-horizon-center">
-        <view class="changeRole" @tap="handleLogout">切换账号</view>
-      </view>
-    </view>
-    <uni-popup ref="logoutPopup" type="dialog">
-      <uni-popup-dialog type="warn" cancelText="取消" confirmText="确定" title="系统提示" content="确认退出账号?" @confirm="handleLogoutConfirm" @close="handleLogoutClose">
-      </uni-popup-dialog>
-    </uni-popup>
-  </scroll-view>
-</template>
-<script setup>
-import { ref, unref, onMounted, nextTick } from 'vue'
-import { mobile, emailRequired } from '@/utils/validate'
-import { dictObj } from '@/utils/position.js'
-import { savePersonSimpleInfo } from '@/api/user'
-import { showAuthModal } from '@/hooks/useModal'
-import { userStore } from '@/store/user'; const useUserStore = userStore()
-import { uploadFile } from '@/api/file'
-
-const baseInfoRef = ref()
-const formData = ref({ // 必填项目
-  name: null,
-  sex: null,
-  phone: null,
-  email: null,
-  birthday: '1990-01-01',
-  enterpriseName: null,
-  positionName: null,
-  interestedPositionId: null,
-  jobStatus: null,
-  expType: null,
-  eduType: null,
-})
-
-onMounted(() => {
-  nextTick(() => {
-    const baseInfo = useUserStore?.baseInfo || null
-    if (baseInfo && Object.keys(baseInfo).length) {
-      Object.keys(formData.value).forEach(key => {
-        formData.value[key] = baseInfo[key] || baseInfo[key] === 0 ? baseInfo[key] : formData.value[key] ? formData.value[key] : null
-      })
-    }
-    if (!formData.value.phone && useUserStore?.phone) formData.value.phone = useUserStore.phone
-  })
-})
-
-const formRules = {
-	avatar:{
-		rules: [{required: true, errorMessage: '请上传头像' }]
-	},
-	name:{
-		rules: [{required: true, errorMessage: '请输入姓名' }]
-	},
-  sex : {
-    rules: [{required: true, errorMessage: '请选择您的性别' }]
-  },
-  phone: mobile,
-  birthday:{
-		rules: [{required: true, errorMessage: '请选择您的出生日期' }]
-	},
-  enterpriseName:{
-		rules: [{required: true, errorMessage: '请填写任职企业名称(可填暂无)' }]
-	},
-  positionName:{
-		rules: [{required: true, errorMessage: '请填写任职职位名称(可填暂无)' }]
-	},
-  email: emailRequired,
-  expType: {
-		rules: [{required: true, errorMessage: '请选择您的工作年限' }]
-	},
-  eduType: {
-		rules: [{required: true, errorMessage: '请选择您的最高学历' }]
-	},
-  jobStatus: {
-		rules: [{required: true, errorMessage: '请选择您的求职状态' }]
-	}
-}
-
-const logoutPopup = ref()
-// 退出登录
-const handleLogout = () => {
-  logoutPopup.value.open()
-}
-const handleLogoutClose = () => {
-  logoutPopup.value.close()
-}
-const handleLogoutConfirm = async () => {
-  await useUserStore.handleLogout()
-  showAuthModal()
-}
-
-// 图片预览
-const handlePreviewImage = () => {
-  uni.previewImage({
-    current: 0,
-    urls: [formData.value.avatar]
-  })
-}
-// 选择头像
-const uploadPhotos = () => {
-  wx.chooseImage({
-    count: 1,
-    sizeType: ['original', 'compressed'],
-    sourceType: ['album', 'camera'],
-    success: function(res){
-      const size = res.tempFiles[0]?.size || 0
-      if (size >= 31457280) {
-        uni.showToast({
-          icon: 'none',
-          title: '头像上传大小不得超过 20MB !',
-          duration: 2000
-        })
-        return
-      }
-      const path = res.tempFilePaths[0]
-      uploadFile(path, 'img').then(res => {
-        formData.value.avatar = res.data
-      }).catch(error => {
-        uni.showToast({
-          icon: 'error',
-          title: '图片上传失败!',
-          duration: 2000
-        })
-      })
-    }
-  })
-}
-
-const dealQuery = () => {
-  const interestedList = [{ positionId: formData.value.interestedPositionId || null }]
-  const workExpList = [{
-    enterpriseName: formData.value.enterpriseName || null,
-    positionName: formData.value.positionName || null,
-  }]
-  return { ...formData.value, interestedList, workExpList }
-}
-const submit = async () => {
-  const validate = await unref(baseInfoRef).validate()
-  if (!validate) return uni.showToast({ title: '请将信息补充完整', icon: 'none' })
-  
-  try {
-    const query = dealQuery()
-    await savePersonSimpleInfo(query)
-    uni.showToast({ title: '保存成功', icon: 'none' })
-    await useUserStore.getInfo()
-    // await useUserStore.getUserInfo()
-  } catch (err) {
-    uni.showToast({ title: err?.msg || '保存失败', icon: 'none' })
-  }
-}
-
-</script>
-<style lang="scss" scoped>
-.scrollBox {
-  width: 100vw;
-  // height: 100vh;
-  height: calc(100vh - 30rpx);
-  margin-bottom: 30rpx;
-}
-.content {
-  padding: 30rpx;
-}
-
-.changeRole {
-  color: var(--color-666);
-  font-size: 15px;
-  line-height: 26px;
-  margin-bottom: 40rpx;
-}
-.upload-img{
-  position: relative;
-  width: 200rpx;
-  height: 200rpx;
-  border: 1px solid #f1f1f1;
-  margin: 10rpx;
-}
-.upload-file{
-  width: 200rpx;
-  height: 200rpx;
-  border: 1px solid #f1f1f1;
-  margin: 10rpx;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  border-radius: 10rpx;
-}
-</style>

+ 0 - 59
layout/components/authModal/selectUserType/index.vue

@@ -1,59 +0,0 @@
-<!-- 选择是否是学生 -->
-<template>
-  <scroll-view class="scrollBox" scroll-y="true">
-    <template v-if="showSelect">
-      <view class="text-center ss-m-t-50" style="color: #666; font-weight: 400; font-size: 18px">请选择当前角色</view>
-      <view class="ss-p-50">
-        <uni-card class="ss-m-t-30" @tap="handleClickRole(0)">
-          <view class="d-flex flex-column align-center ss-p-y-50">
-            <image src="/static/svg/workMan.svg" class="svg ss-m-l-10"></image>
-            <view class="color-primary text-center" style="font-size: 24px">职场人士</view>
-          </view>
-        </uni-card>
-        <uni-card class="ss-m-t-80" @tap="handleClickRole(1)">
-          <view class="d-flex flex-column align-center ss-p-y-50">
-            <image src="/static/svg/student.svg" class="svg ss-m-l-10"></image>
-            <view class="color-primary text-center" style="font-size: 24px">在校学生</view>
-          </view>
-        </uni-card>
-      </view>
-    </template>
-    <template v-else>
-      <studentInfoForm></studentInfoForm>
-    </template>
-  </scroll-view>
-</template>
-
-<script setup>
-import { ref } from 'vue'
-import studentInfoForm from './studentInfoForm.vue'
-import { showAuthModal } from '@/hooks/useModal'
-
-const showSelect = ref(true)
-
-const handleClickRole = (type) => {
-  if (type) {
-    // 学生用户
-    showSelect.value = false
-  } else {
-    // 普通用户
-    showAuthModal('necessaryInfo')
-    uni.setStorageSync('necessaryInfoReady', 'fddeaddc47868b')
-  }
-}
-
-</script>
-<style lang="scss" scoped>
-.scrollBox {
-  width: 100vw;
-  // height: 100vh;
-  height: calc(100vh - 30rpx);
-  margin-bottom: 30rpx;
-}
-
-.svg {
-  width: 100px;
-  height: 100px;
-  margin-bottom: 30px;
-}
-</style>

+ 0 - 306
layout/components/authModal/selectUserType/studentInfoForm.vue

@@ -1,306 +0,0 @@
-<!-- 校验是否完善人才必填信息 -->
-<template>
-  <scroll-view class="scrollBox" scroll-y="true">
-    <view class="content">
-      <view class="text-center ss-m-b-50 font-size-20 color-primary">请完善学生信息</view>
-      <uni-forms
-        ref="baseInfoRef"
-        v-model="formData"
-        :rules="formRules"
-        validateTrigger="bind"
-        label-width="90px"
-        labelAlign="center"
-      >
-        <uni-forms-item label="头像" name="avatar" class="f-straight" required>
-          <view style="display: flex;flex-wrap: wrap;">
-            <view class="upload-img" v-if="formData?.avatar">
-              <uni-icons size="35" type="clear" color="#fe574a" style="position: absolute;right: -15px; top: -15px; z-index: 9" @click="formData.avatar = ''"></uni-icons>
-              <image :src="formData?.avatar" mode="contain" style="width: 200rpx;height: 200rpx;" @click="handlePreviewImage"></image>
-            </view>
-            <view v-else class="upload-file" @click="uploadPhotos">
-              <uni-icons type="plusempty" size="50" color="#f1f1f1"></uni-icons>
-            </view>
-          </view>
-        </uni-forms-item>
-        <uni-forms-item name="name" label="姓名" required>
-          <uni-easyinput placeholder="请输入姓名" v-model="formData.name" :inputBorder="false" type="text"></uni-easyinput>
-        </uni-forms-item>
-        <uni-forms-item name="sex" label="性别" required>
-          <uni-data-picker v-model="formData.sex" :localdata="dictObj.sex" :clear-icon="false" popup-title="请选择性别" :map="{ text: 'label', value: 'value' }"></uni-data-picker>
-        </uni-forms-item>
-        <uni-forms-item name="idCardNo" label="身份证号码" required>
-          <uni-easyinput placeholder="请输入身份证号码" v-model="formData.idCardNo" :inputBorder="false" type="text"></uni-easyinput>
-        </uni-forms-item>
-        <uni-forms-item name="phone" label="联系电话" required>
-          <uni-easyinput placeholder="请输入联系电话" v-model="formData.phone" :inputBorder="false" type="number"></uni-easyinput>
-        </uni-forms-item>
-        <uni-forms-item required label="出生日期" name="birthday">
-          <uni-datetime-picker type="date" return-type="timestamp" v-model="formData.birthday" />
-        </uni-forms-item>
-        <uni-forms-item name="schoolId" label="就读学校" required>
-          <uni-data-picker v-model="formData.schoolId" :localdata="selects?.schools" :clear-icon="false" popup-title="请选择就读学校" @change="getSelectData(0)" :map="{ text: 'name', value: 'schoolId' }"></uni-data-picker>
-        </uni-forms-item>
-        <uni-forms-item name="schoolDeptId" label="所在院系" required>
-          <uni-data-picker v-model="formData.schoolDeptId" :localdata="selects?.dept" :clear-icon="false" popup-title="请选择所在院系" @change="getSelectData(2)" :map="{ text: 'name', value: 'id' }"></uni-data-picker>
-        </uni-forms-item>
-        <uni-forms-item name="majorId" label="所学专业" required>
-          <uni-data-picker v-model="formData.majorId" :localdata="selects?.major" :clear-icon="false" popup-title="请选择所学专业" @change="getSelectData(2)" :map="{ text: 'nameCn', value: 'id' }"></uni-data-picker>
-        </uni-forms-item>
-        <uni-forms-item name="schoolClassId" label="所在班级" required>
-          <searchComBox ref="schoolClassIdRef" v-model="formData.schoolClassId" :candidates="classList" itemTextName='schoolClassName' itemValueName='schoolClassId' labelKey='name' valueKey='id' placeholder="请选择所在班级"></searchComBox>
-        </uni-forms-item>
-        <uni-forms-item name="studentNo" label="学号" required>
-          <uni-easyinput placeholder="请填写学号" v-model="formData.studentNo" :inputBorder="false" type="text"></uni-easyinput>
-        </uni-forms-item>
-        <uni-forms-item name="emergencyContactName" label="紧急联系人姓名" required>
-          <uni-easyinput placeholder="请填写紧急联系人姓名" v-model="formData.emergencyContactName" :inputBorder="false" type="text"></uni-easyinput>
-        </uni-forms-item>
-        <uni-forms-item name="emergencyContactPhone" label="紧急联系人手机号" required>
-          <uni-easyinput placeholder="请填写紧急联系人手机号" v-model="formData.emergencyContactPhone" :inputBorder="false" type="number"></uni-easyinput>
-        </uni-forms-item>
-      </uni-forms>
-      <view class="f-horizon-center">
-        <button type="primary" size="default" class="send-button" @click="submit">提 交</button>
-      </view>
-      <view class="f-horizon-center">
-        <view class="changeRole" @tap="handleLogout">退出登录</view>
-      </view>
-    </view>
-    <uni-popup ref="logoutPopup" type="dialog">
-      <uni-popup-dialog type="warn" cancelText="取消" confirmText="确定" title="系统提示" content="确认退出账号?" @confirm="handleLogoutConfirm" @close="handleLogoutClose">
-      </uni-popup-dialog>
-    </uni-popup>
-  </scroll-view>
-</template>
-<script setup>
-import { ref, unref, onMounted, nextTick } from 'vue'
-import { mobile, isValidIdCard18 } from '@/utils/validate'
-import { dictObj } from '@/utils/position.js'
-import { saveStudentSimpleInfo } from '@/api/user'
-import { showAuthModal } from '@/hooks/useModal'
-import { userStore } from '@/store/user'; const useUserStore = userStore()
-import { uploadFile } from '@/api/file'
-import { getSchoolList, getDepartmentListBySchoolId, getMajorList } from '@/api/student'
-import searchComBox from '@/components/searchCombox'
-
-const baseInfoRef = ref()
-const formData = ref({ // 必填项目
-  name: null,
-  sex: null,
-  idCardNo: null,
-  phone: null,
-  birthday: '1990-01-01',
-  schoolId: null,
-  schoolDeptId: null,
-  majorId: null,
-  schoolClassId: null,
-  schoolClassName: null,
-  studentNo: null,
-  idCardNo: null,
-  emergencyContactName: null,
-  emergencyContactPhone: null,
-})
-
-onMounted(() => {
-  nextTick(() => {
-    const baseInfo = useUserStore?.baseInfo || null
-    if (baseInfo && Object.keys(baseInfo).length) {
-      Object.keys(formData.value).forEach(key => {
-        formData.value[key] = baseInfo[key] || baseInfo[key] === 0 ? baseInfo[key] : formData.value[key] ? formData.value[key] : null
-      })
-    }
-    if (!formData.value.phone && useUserStore?.phone) formData.value.phone = useUserStore.phone
-  })
-})
-
-// // 下拉列表 
-const selects = ref({})
-const classList = ref([])
-const getSelectData = async (type = 'default', init = false) => { // type: 0院系|1专业|2班级
-  const params = { ...(type !== 'default' && { type }) }
-  // 查院系用 schoolId 查班级用 parentId
-  if (type === 0) {
-    if (!formData.value?.schoolId) return
-    params.schoolId = formData.value.schoolId
-  }
-  if (type === 2) {
-    if (!formData.value?.schoolId && !formData.value?.schoolDeptId) return
-    if (formData.value?.schoolId) params.schoolId = formData.value.schoolId
-    if (formData.value?.schoolDeptId) params.parentId = formData.value.schoolDeptId
-  }
-  const api = {
-    default: getSchoolList,
-    0: getDepartmentListBySchoolId,
-    1: getMajorList,
-    2: getDepartmentListBySchoolId,
-  }
-  const res = await api[type](params)
-  if (type === 'default') {
-    selects.value.schools = res?.data?.length ? res.data : []
-  }
-  if (type === 0) {
-    if (!init) {
-      formData.value.schoolDeptId = null
-      formData.value.schoolClassId = null
-    }
-    selects.value.dept = res?.data?.length ? res.data : []
-  }
-  if (type === 1) {
-    selects.value.major = res?.data?.length ? res.data : []
-  }
-  if (type === 2) {
-    if (!init) formData.value.schoolClassId = null
-    classList.value = res?.data?.length ? res.data : []
-    schoolClassIdRef.value && schoolClassIdRef.value.setLabel()
-  }
-}
-
-const getSelection = async () => {
-  await getSelectData('default', true)
-  await getSelectData(0, true)
-  await getSelectData(1, true)
-  await getSelectData(2, true)
-}
-getSelection()
-
-const formRules = {
-	avatar:{
-		rules: [{required: true, errorMessage: '请上传头像' }]
-	},
-	name:{
-		rules: [{required: true, errorMessage: '请输入姓名' }]
-	},
-  sex: {
-    rules: [{required: true, errorMessage: '请选择您的性别' }]
-  },
-  idCardNo: isValidIdCard18,
-  phone: mobile,
-  birthday:{
-		rules: [{required: true, errorMessage: '请选择出生日期' }]
-	},
-  schoolId:{
-		rules: [{required: true, errorMessage: '请选择就读学校' }]
-	},
-  schoolDeptId:{
-		rules: [{required: true, errorMessage: '请选择所在院系' }]
-	},
-  majorId: {
-		rules: [{required: true, errorMessage: '请填写所在专业' }]
-	},
-  schoolClassId: {
-		rules: [{required: true, errorMessage: '请填写所在班级' }]
-	},
-  studentNo: {
-		rules: [{required: true, errorMessage: '请填写学号' }]
-	},
-  emergencyContactName: {
-		rules: [{required: true, errorMessage: '请填写紧急联系人姓名' }]
-	},
-  emergencyContactPhone: mobile,
-}
-
-const logoutPopup = ref()
-// 退出登录
-const handleLogout = () => {
-  logoutPopup.value.open()
-}
-const handleLogoutClose = () => {
-  logoutPopup.value.close()
-}
-const handleLogoutConfirm = async () => {
-  await useUserStore.handleLogout()
-  showAuthModal()
-}
-
-// 图片预览
-const handlePreviewImage = () => {
-  uni.previewImage({
-    current: 0,
-    urls: [formData.value.avatar]
-  })
-}
-// 选择头像
-const uploadPhotos = () => {
-  wx.chooseImage({
-    count: 1,
-    sizeType: ['original', 'compressed'],
-    sourceType: ['album', 'camera'],
-    success: function(res){
-      const size = res.tempFiles[0]?.size || 0
-      if (size >= 31457280) {
-        uni.showToast({
-          icon: 'none',
-          title: '头像上传大小不得超过 20MB !',
-          duration: 2000
-        })
-        return
-      }
-      const path = res.tempFilePaths[0]
-      uploadFile(path, 'img').then(res => {
-        formData.value.avatar = res.data
-      }).catch(error => {
-        uni.showToast({
-          icon: 'error',
-          title: '图片上传失败!',
-          duration: 2000
-        })
-      })
-    }
-  })
-}
-
-const schoolClassIdRef = ref()
-const submit = async () => {
-  const validate = await unref(baseInfoRef).validate()
-  if (!validate) return uni.showToast({ title: '请将信息补充完整', icon: 'none' })
-  
-  let params = {...formData.value}
-
-  const schoolClassObj = schoolClassIdRef.value?.getValue()
-  params = {...params, ...schoolClassObj}
-
-  try {
-    await saveStudentSimpleInfo(params)
-    uni.showToast({ title: '保存成功', icon: 'none' })
-    await useUserStore.getInfo()
-  } catch (err) {
-    uni.showToast({ title: err?.msg || '保存失败', icon: 'none' })
-  }
-}
-
-</script>
-<style lang="scss" scoped>
-.scrollBox {
-  width: 100vw;
-  // height: 100vh;
-  height: calc(100vh - 30rpx);
-  margin-bottom: 30rpx;
-}
-.content {
-  padding: 30rpx;
-}
-
-.changeRole {
-  color: var(--color-666);
-  font-size: 15px;
-  line-height: 26px;
-  margin-bottom: 40rpx;
-}
-.upload-img{
-  position: relative;
-  width: 200rpx;
-  height: 200rpx;
-  border: 1px solid #f1f1f1;
-  margin: 10rpx;
-}
-.upload-file{
-  width: 200rpx;
-  height: 200rpx;
-  border: 1px solid #f1f1f1;
-  margin: 10rpx;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  border-radius: 10rpx;
-}
-</style>

+ 16 - 0
pages/index/jobFair.vue

@@ -12,6 +12,8 @@
         <image src="https://minio.citupro.com/dev/static/nodata.png" mode="widthFix" style="width: 100vw;height: 100vh;"></image>
       </view>
     </view>
+
+    <payPopup ref="payRef" amount="123" @paySuccess="paySuccess"></payPopup>
   </layout-page>
 </template>
 
@@ -24,6 +26,7 @@ import { showAuthModal } from '@/hooks/useModal'
 import { getJobFairList, checkJobFairPermission } from '@/api/jobFair'
 import { timesTampChange } from '@/utils/date'
 import { userStore } from '@/store/user'
+import payPopup from '@/components/payPopup'
 
 const useUserStore = userStore()
 const items = ref([])
@@ -53,7 +56,10 @@ onShow(() => {
 })
 
 //跳转招聘会详情
+const payRef = ref()
+const itemData = ref({})
 const handleToJobFairEnterprises = async (val) => {
+  itemData.value = val
   if (!val?.id) {
     uni.showToast({ title: '资源获取失败,请稍后重试', icon: 'none' })
   }
@@ -80,9 +86,19 @@ const handleToJobFairEnterprises = async (val) => {
       }
       // 设置门票金额则提示购买门票
       uni.showToast({ title: '您暂时无法参加该招聘会,请先购买门票', icon: 'none', duration: 2000 })
+
+      payRef.value && payRef.value.handleOpen({ spuId: val?.id || '', spuName: val?.title || '', price: 0.1, type: 5 })
     }
   }
 }
+
+// 支付成功
+const paySuccess = () => {
+  uni.showToast({ title: '支付成功', icon: 'success' })
+  uni.navigateTo({
+    url: '/pagesB/jobFair/details?id=' + itemData.value.id
+  })
+}
 </script>
 
 <style scoped lang="scss">

+ 0 - 4
pages/index/position.vue

@@ -253,8 +253,4 @@ const handleClickAdd = () => {
     }
   }
 }
-
-// :deep(.uni-searchbar) {
-//   padding: 10px 30rpx;
-// }
 </style>