diff --git a/packageRc/components/ImageUpload.vue b/packageRc/components/ImageUpload.vue index 3b4a6fc..262d326 100644 --- a/packageRc/components/ImageUpload.vue +++ b/packageRc/components/ImageUpload.vue @@ -1,9 +1,10 @@ @@ -11,7 +12,9 @@ // import { // uploadImg // } from '@/api/company' - import config from '@/config' + // import config from '@/config' +import config from '@/utilsRc/config.js' +import { getToken } from "@/utilsRc/auth"; //import { // getToken //} from '@/utils/auth' @@ -23,7 +26,7 @@ }, allowedFormats: { type: Array, - default: () => [], // 允许的文件格式 + default: () => ['.png', '.jpg', '.jpeg', '.doc', '.docx', '.pdf', '.xls', '.xlsx'], // 允许的文件格式 }, maxImageSize: { type: Object, @@ -74,6 +77,106 @@ }, }, methods: { + deleteFile(index){ + this.internalFileList.splice(index, 1); + }, + chooseAndUploadFile() { + wx.chooseMessageFile({ + count: this.maxCount, + extension: this.allowedFormats, + // ['.png', '.jpg', '.jpeg', '.doc', '.docx', '.pdf', '.xls', '.xlsx' ], + success: (res) => { + console.log('选择文件成功:', res); + if(this.maxCount - this.internalFileList.length < res.tempFiles.length){ + uni.showToast({ + title: '最多只能上传' + this.maxCount + '个文件', + icon: 'none' + }); + return; + } + + let path = ""; + const twoMBInBytes = 2 * 1024 * 1024; // 2MB转换为字节数 + res.tempFiles.forEach((file) => { + + if (file.size > twoMBInBytes) { + uni.showToast({ + title: "图片大小不能超过2MB", + icon: "none", + }); + return; + } + if (res.tempFiles && res.tempFiles.length > 0) { + path = file.path; + if (this.allowedFormats.indexOf('.'+path.split(".")[1])!=-1) { + uni.showLoading(); + const tempFilePath = file; + uni.uploadFile({ + url: config.baseUrl+'/system/oss/upload', //图片上传地址 + filePath: tempFilePath.path, + name: 'file', + formData: {}, + header: { + // 'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJQSlUyVlJCc1E1aXRMMWgxdjNkcVh2eER1c2VVc0hvRiIsInVzZXJJZCI6MX0.z4Z2XqgXyU0GQU-i7Bsa5T-zCKApTxj1YQ73rk7bAVo' + 'Authorization': 'Bearer ' + getToken(), + }, + success: (res) => { + var data = JSON.parse(res.data); + console.log(data, 'sdfjiosdjfoi') + if(data.code==200) { + this.internalFileList.push({ + url: data.data.url, + file: file + }) + this.$emit('update', this.internalFileList); + // this.serviceForm.fileUrl = this.internalFileList.map(item => item.url).join(',') + this.$forceUpdate() + uni.hideLoading(); + } else { + uni.hideLoading(); + uni.showToast({ + title: res.msg || '上传失败', + icon: 'none', + duration: 2000 + }); + } + }, + fail: (error) => { + uni.showToast({ + title: '上传失败', + icon: 'none' + }); + console.error(error); + } + }) + } else { + uni.showToast({ + icon: "none", + duration: 1500, + title: `只能选择${this.allowedFormats.join('、')}格式文件`, + }); + } + } + }) + + + + // // 添加新选择的图片到列表 + // res.tempFiles.forEach((item, index) => { + // this.fileList.push({ + // url: item.path, + // file: res.tempFiles[index] + // }); + // }); + // 更新 serviceForm.fileUrl + // this.updateFileUrls(); + }, + fail: (err) => { + console.error('选择图片失败:', err); + } + }); + + }, // 新增图片 async handleAfterRead(event) { let lists = [].concat(event.file); @@ -141,11 +244,25 @@ }; - diff --git a/packageRc/pages/daiban/addbangfu.vue b/packageRc/pages/daiban/addbangfu.vue index 12ab9c9..70d4320 100644 --- a/packageRc/pages/daiban/addbangfu.vue +++ b/packageRc/pages/daiban/addbangfu.vue @@ -67,13 +67,7 @@ :localdata="jingbrList1" @change="handleAgentChange" > - - + @@ -190,10 +184,10 @@ + + \ No newline at end of file diff --git a/packageRc/pages/needs/needsList.vue b/packageRc/pages/needs/needsList.vue index 8760146..90309c5 100644 --- a/packageRc/pages/needs/needsList.vue +++ b/packageRc/pages/needs/needsList.vue @@ -3,7 +3,7 @@ - + 共 {{ total }} 条 - {{ getDictLabel(item.currentStatus, currentStatusList) }} - + 需求工种:{{ item.jobWorkTypeName }} - + 需求名称:{{ item.serviceRequirementTitle }} + v-if="queryParams.demandType == 2||queryParams.demandType == 4||queryParams.demandType == 5"> 需求名称:{{ item.demandTitle }} - + 推荐 @@ -73,7 +73,7 @@ :customStyle="{border: 'none'}" @click="requirementHandling(item)">办理 - + 培训 @@ -103,30 +103,35 @@    - - - - {{ formData.actualSolveDate||'请选择' }} - - + + @@ -135,7 +140,7 @@ @cancel="showTime=false"> --> - + > --> @@ -180,10 +185,12 @@ delOtherService, finishOtherService } from '@/apiRc/needs/otherService' + import DealDone from './dealDone.vue' export default { components: { PopupList, - ImageUpload + ImageUpload, + DealDone, }, data() { return { @@ -194,7 +201,7 @@ queryParams: { pageNum: 1, pageSize: 10, - needsType: 1 + demandType: 1 }, total: 0, showMorePage: true, @@ -227,19 +234,23 @@ onLoad({ dictValue }) { - this.queryParams.needsType = dictValue || 1 + this.queryParams.demandType = dictValue || 1 this.getCheckData() }, onShow() { this.search(); }, methods: { + // 日期选择变化处理 + onDateChange(e) { + this.formData.actualSolveDate = e.detail.value; + }, closeopenDeal() { this.$refs.openDeal.close() }, // 新增需求 goAddNeeds() { - this.$tab.navigateTo(`/pages/needs/needDetail?activeType=${this.queryParams.needsType}&showTab=1`) + uni.navigateTo(`/packageRc/pages/needs/needDetail?activeType=${this.queryParams.demandType}&showTab=1`) }, confirmDate(e) { @@ -255,36 +266,36 @@ // 需求推荐/培训 requirementTraining(item, index) { if (index == 1) { - uni.navigateTo( - `/pages/services/serviceDetail?personName=${item.personName}&personId=${item.personId}&jobDemandInfoId=${item.id}&jobWorkType=${item.jobWorkType}&type=3&showTab=1` - ) + uni.navigateTo({ + url: `/packageRc/pages/service/serviceDetail?personName=${item.personName}&personId=${item.personId}&jobDemandInfoId=${item.id}&jobWorkType=${item.jobWorkType}&type=3&showTab=1` + }) } else { - uni.navigateTo( - `/pages/services/serviceDetail?personName=${item.personName}&personId=${item.personId}&skillTrainingId=${item.id}&personStatus=${item.personStatus}&type=4&showTab=1` - ) + uni.navigateTo({ + url: `/packageRc/pages/service/serviceDetail?personName=${item.personName}&personId=${item.personId}&skillTrainingId=${item.id}&personStatus=${item.personStatus}&type=4&showTab=1` + }) } }, clickDelete(item) { this.loading = true; - if (this.queryParams.needsType == 1) { + if (this.queryParams.demandType == 1) { delJobService(item.id).then((res) => { this.deleteFinish(res) }); - } else if (this.queryParams.needsType == 2) { + } else if (this.queryParams.demandType == 2) { delAssistService(item.id).then((res) => { this.deleteFinish(res) }); - } else if (this.queryParams.needsType == 3) { + } else if (this.queryParams.demandType == 3) { delEntrepreneurshipService(item.id).then((res) => { this.deleteFinish(res) }); - } else if (this.queryParams.needsType == 4) { + } else if (this.queryParams.demandType == 4) { delTrainService(item.id).then((res) => { this.deleteFinish(res) }); - } else if (this.queryParams.needsType == 5) { + } else if (this.queryParams.demandType == 5) { delOtherService(item.id).then((res) => { this.deleteFinish(res) }); @@ -298,7 +309,7 @@ }, goNeedsDetail(item) { uni.navigateTo({ - url: `/pages/needs/needDetail?id=${item.id}&type=${this.queryParams.needsType}&showTab=1` + url: `/packageRc/pages/needs/needDetail?id=${item.id}&type=${this.queryParams.demandType}&showTab=1` }) }, getDictLabel(value, list) { @@ -321,12 +332,12 @@ console.log(res.data) }) this.checkData = [ - // { - // name: "需求类型", - // type: "needsType", - // data: [{dictLabel: '求职需求', dictValue: '1'},{dictLabel: '援助需求', dictValue: '2'},{dictLabel: '创业需求', dictValue: '3'},{dictLabel: '培训需求', dictValue: '4'},{dictLabel: '其他需求', dictValue: '5'}], - // activeIndex: 0, - // }, + { + name: "需求类型", + type: "demandType", + data: [{dictLabel: '求职需求', dictValue: '1'},{dictLabel: '创业需求', dictValue: '3'},{dictLabel: '培训需求', dictValue: '4'},{dictLabel: '其他需求', dictValue: '5'}], + activeIndex: 0, + }, { name: "需求状态", type: "currentStatus", @@ -375,9 +386,9 @@ 5: 'other' // 其他需求 }; // 获取当前的需求类型字符串 - const demandType = demandTypeMap[this.queryParams.needsType] || 'other'; + const demandType = demandTypeMap[this.queryParams.demandType] || 'other'; + uni.navigateTo({url: `/packageRc/pages/service/serviceTraceability?id=${item.id}&demandType=${demandType}`}); // 使用映射后的字符串构建URL并导航 - this.$tab.navigateTo(`/pages/services/serviceTraceability?id=${item.id}&demandType=${demandType}`); }, // 触底加载 getBottomList() { @@ -403,27 +414,27 @@ // 获取列表 async getList() { this.loading = true; - if (this.queryParams.needsType == 1) { + // if (this.queryParams.demandType == 1) { listJobService(this.queryParams).then((res) => { this.gettedData(res) }); - } else if (this.queryParams.needsType == 2) { - listAssistService(this.queryParams).then((res) => { - this.gettedData(res) - }); - } else if (this.queryParams.needsType == 3) { - listEntrepreneurshipService(this.queryParams).then((res) => { - this.gettedData(res) - }); - } else if (this.queryParams.needsType == 4) { - listTrainService(this.queryParams).then((res) => { - this.gettedData(res) - }); - } else if (this.queryParams.needsType == 5) { - listOtherService(this.queryParams).then((res) => { - this.gettedData(res) - }); - } + // } else if (this.queryParams.demandType == 2) { + // listAssistService(this.queryParams).then((res) => { + // this.gettedData(res) + // }); + // } else if (this.queryParams.demandType == 3) { + // listEntrepreneurshipService(this.queryParams).then((res) => { + // this.gettedData(res) + // }); + // } else if (this.queryParams.demandType == 4) { + // listTrainService(this.queryParams).then((res) => { + // this.gettedData(res) + // }); + // } else if (this.queryParams.demandType == 5) { + // listOtherService(this.queryParams).then((res) => { + // this.gettedData(res) + // }); + // } }, gettedData(res) { if (res.code == 200) { @@ -444,11 +455,19 @@ // 需求办结 requirementHandling(item) { - this.$refs.openDeal.open() - this.formData = { + // this.$refs.openDeal.open() + // this.formData = { + // id: item.id, + // currentStatus: '3' + // } + console.log(item, 'asdfjoiasiodfjoi') + + this.$refs.dealDone.init({ id: item.id, - currentStatus: '3' - } + currentStatus: "3", + userId: item.userId, + // personStatus: item.personStatus || (this.dict.personStatusList[0] && this.dict.personStatusList[0].dictValue), + }); }, // 需求推荐 @@ -460,6 +479,7 @@ // 办结按钮 async finishJobRecommend() { + uni.showLoading(); try { // 检查必填项 if (!this.formData.actualSolveDate) { @@ -468,9 +488,7 @@ if (!this.formData.solveDesc) { throw new Error('解决说明不能为空'); } - // 显示全局加载 - this.$showLoading(); - // 根据 queryParams.needsType 获取对应的 URL + // 根据 queryParams.demandType 获取对应的 URL const obj = { 1: '/demand/personJobDemandInfo/JdJobDemandDone', 2: '/demand/personAssistDemandInfo/assistDone', @@ -479,7 +497,7 @@ 5: '/demand/personOtherDemandInfo/otherDemandDone', }; - const url = obj[this.queryParams.needsType]; + const url = '/manage/personDemand/demandDone';//obj[this.queryParams.demandType]; if (!url) { throw new Error('无效的需求类型'); } @@ -491,18 +509,17 @@ // 检查响应码是否为200 if (code === 200) { // 显示成功的提示信息 - this.$u.toast(msg); + uni.showToast({title: msg, icon: 'none'}); // this.openDeal = false; - this.$refs.openDeal.close() + this.$refs.openDeal.close() this.search(); } } catch (error) { // 处理错误并显示提示信息 - this.$u.toast('请检查必填项填写'); - console.error('完成需求时发生错误:', error); + uni.showToast({title: '请检查必填项填写', icon: 'none'}); } finally { // 确保加载页总是会被隐藏 - this.$hideLoading(); + uni.hideLoading(); } }, // async finishJobRecommend() { @@ -514,21 +531,22 @@ // 4: '/demand/personTrainDemandInfo/JdTrainDemandDone', // 5: '/demand/personOtherDemandInfo/otherDemandDone', // } - // if (!this.formData.actualSolveDate) return this.$u.toast('解决时间不能为空'); - // if (!this.formData.solveDesc) return this.$u.toast('解决说明不能为空'); + // if (!this.formData.actualSolveDate) return uni.showToast({title: '解决时间不能为空', icon: 'none'}); + // if (!this.formData.solveDesc) return uni.showToast({title: '解决说明不能为空', icon: 'none'}); // const { // code, // data, // msg - // } = await requirementCompletion(obj[this.queryParams.needsType], this.formData) + // } = await requirementCompletion(obj[this.queryParams.demandType], this.formData) // if (code == 200) { - // this.$u.toast(msg) + // uni.showToast({title: ms, icon: 'none'}g) // this.openDeal = false // this.search() // } // }, changeFile(e) { + console.log(e, 34234234234234) // 清空当前的 fileUrl 数组 this.formData.fileUrl = []; // 如果 e 有长度(即用户选择了文件) @@ -539,7 +557,7 @@ this.formData.fileUrl.push(url); } } - this.formData.fileUrl = this.$arrayToString(this.formData.fileUrl) + this.formData.fileUrl = this.formData.fileUrl.join(','); }, } } @@ -569,11 +587,15 @@ .search-icon { width: 40rpx; + height: 40rpx; } } .job-item { position: relative; + margin-bottom: 24rpx; + background: #fff; + border-radius: 16rpx; .item_btn{ height: 100rpx; border-top: 1px solid #e3e8ee; @@ -616,8 +638,6 @@ } .top-container { - background: #fff; - border-radius: 16rpx; padding: 32rpx; // margin-bottom: 24rpx; @@ -774,10 +794,54 @@ width: 100%; } } - .d_flex{ + + .df_flex{ display: flex; view{ flex-grow: 1; + text-align: center; + color: #4c6efb; } - } +} +.df_flex_1{ + flex: 1; +} +.df__direction_column { + flex-direction: column; +} +.df_align_center{ + align-items: center; +} +.df_justify_center{ + justify-content: center; +} +.df_content_between{ + justify-content: space-between; +} +.df_shrink_0{ + flex-shrink: 0; +} + +/* 日期选择器样式 */ +.date-picker-wrapper { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + box-sizing: border-box; + padding: 0 24rpx; + height: 64rpx; + border: 1px solid #ddd; + border-radius: 4px; + background-color: #fff; +} + +// .date-picker-wrapper.noValue { +// background-color: #f9f9f9; +// } + +.date-value { + color: #333; + width: 100% +} diff --git a/packageRc/pages/personalList/personalList.vue b/packageRc/pages/personalList/personalList.vue index 16bf2e8..4c4ba2d 100644 --- a/packageRc/pages/personalList/personalList.vue +++ b/packageRc/pages/personalList/personalList.vue @@ -41,9 +41,9 @@ + style="position: relative; color: #000;display: flex;align-items: center;justify-content: space-between;"> - 共{{ total }}条信息 + 共{{ total }}条信息 @@ -143,7 +143,7 @@ - + 取消 @@ -258,7 +258,7 @@ - + diff --git a/packageRc/pages/service/serviceTraceability.vue b/packageRc/pages/service/serviceTraceability.vue new file mode 100644 index 0000000..3e00548 --- /dev/null +++ b/packageRc/pages/service/serviceTraceability.vue @@ -0,0 +1,285 @@ + + + + + diff --git a/pages.json b/pages.json index 2023d0b..bff1c0c 100644 --- a/pages.json +++ b/pages.json @@ -384,7 +384,7 @@ { "path": "pages/personalList/personalList", "style": { - "navigationBarTitleText": "添加帮扶" + "navigationBarTitleText": "毕业生追踪" } }, { @@ -414,6 +414,11 @@ "style": { "navigationBarTitleText": "服务" } + } , { + "path": "pages/service/serviceTraceability", + "style": { + "navigationBarTitleText": "服务追溯" + } } , { "path": "pages/needs/needDetail", "style": { diff --git a/pages/index/components/index-one.vue b/pages/index/components/index-one.vue index 28212ea..a7304c0 100644 --- a/pages/index/components/index-one.vue +++ b/pages/index/components/index-one.vue @@ -1039,13 +1039,12 @@ import { getToken } from '@/utilsRc/auth.js'; function goRc(){ if (checkLogin()) { let token = getToken(); - if( token != null ){ + if( token != null && token != '' && token != undefined ){ if(storeRc.state.user.type == 'person'){ navTo('/packageRc/pages/index/index'); }else{ navTo('/packageRc/pages/daiban/daiban'); } - console.log(storeRc.state.user.roles, storeRc.state.user.type, 'state') }else{ let userInfo = uni.getStorageSync('userInfo') storeRc.dispatch('LoginByUserInfo', userInfo).then(res => { diff --git a/utilsRc/request.js b/utilsRc/request.js index 89b1861..346431d 100644 --- a/utilsRc/request.js +++ b/utilsRc/request.js @@ -20,7 +20,7 @@ const request = config => { if (getToken() && !isToken) { config.header['Authorization'] = 'Bearer ' + getToken() } - config.header['Authorization'] = 'Bearer ' + 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJQSlUyVlJCc1E1aXRMMWgxdjNkcVh2eER1c2VVc0hvRiIsInVzZXJJZCI6MX0.z4Z2XqgXyU0GQU-i7Bsa5T-zCKApTxj1YQ73rk7bAVo' + config.header['Authorization'] = 'Bearer ' + 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJGUVl3YmRUalAzQ1BMNGFVc0RxeGJmdjAyT3JMZllDVSIsInVzZXJJZCI6MX0.kSOXY2QJQPbfjE0Yx2R3S8yQciA33OZBS9xJtr7cQ1A' // get请求映射params参数 if (config.params) { let url = config.url + '?' + tansParams(config.params)