lsw 9 ماه پیش
والد
کامیت
4a32feb75f

+ 6 - 0
app/common/common.scss

@@ -760,3 +760,9 @@
 		}
 	}
 }
+.pd0{
+	padding-bottom: 0px;
+}
+.pl0{
+	padding-left: 0px;
+}

+ 103 - 0
app/components/complete/complete.vue

@@ -0,0 +1,103 @@
+<template>
+	<view v-if="show">
+		<u-popup :show="show" round="15" mode="center" :closeable="true" :customStyle="{ width: '90%' }" @close="show = false">
+			<view class="popup">
+				<u-divider text="确认完成任务" class="mt20 mb0"></u-divider>
+				<view class="mbb">
+					<view class="bz">1,同意即表示乙方完成了兼职工作,平台将会打款给乙方</view>
+					<view class="bz">2,驳回即表示乙方尚未完成兼职工作,继续督促乙方完成</view>
+				</view>
+				<view class="xy">
+					<u-checkbox-group class="checkbox" v-model="item.checked">
+						<u-checkbox size="15" shape="circle" label="我已阅读并同意" labelSize="14" name="true"></u-checkbox>
+					</u-checkbox-group>
+				</view>
+				<textarea rows="3" placeholder="请输入驳回原因" v-model="item.rejectMsg" v-if="item.isComplete == 3"></textarea>
+				<view class="flex">
+					<view class="f">
+						<button class="btn" @click="add(2)">确定</button>
+					</view>
+					<view class="f">
+						<button class="btn" @click="add(3)">驳回</button>
+					</view>
+				</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'complete',
+	data() {
+		return {
+			show: false,
+			item: {}
+		};
+	},
+	methods: {
+		init(taskId) {
+			this.show = true;
+			this.item.id = taskId;
+		},
+		add(isComplete) {
+			this.item.isComplete = isComplete;
+			this.$forceUpdate();
+			let rule = [{ name: 'checked', checkType: 'notnull', errorMsg: '请并勾选我已阅读并同意' }];
+			if (isComplete == 3) {
+				rule.push({ name: 'rejectMsg', checkType: 'notnull', errorMsg: '请输入驳回原因' });
+			}
+			if (!this.verify.check(this.item, rule)) {
+				uni.showModal({ content: this.verify.error, showCancel: false });
+				return false;
+			}
+			this.http.request({
+				url: '/app/deliver/jTaskComplete',
+				data: this.item,
+				method: 'POST',
+				success: (res) => {
+					uni.showModal({
+						title: '提示',
+						content: '操作成功',
+						showCancel: false,
+						success: (res) => {
+							this.$emit('confirm');
+							this.show = false;
+						}
+					});
+				}
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.mbb {
+	padding: 7px;
+	background-color: aliceblue;
+	border-radius: 5px;
+	.bz {
+		font-size: 14px;
+		line-height: 21px;
+	}
+}
+.xy {
+	overflow: hidden;
+	margin-top: 15px;
+	margin-bottom: 10px;
+}
+textarea {
+	height: 80px;
+	width: 93%;
+	padding: 10px;
+	margin-top: 10px;
+	background-color: #f1f1f1;
+	border-radius: 5px;
+}
+.flex {
+	.f {
+		padding: 0px 5px 0px 5px;
+	}
+}
+</style>

+ 1 - 0
app/components/invite/invite.vue

@@ -54,6 +54,7 @@ export default {
 							method: 'POST',
 							success: (res) => {
 								uni.showToast({ title: '发送成功' });
+								this.$emit('confirm');
 								this.$emit('input', false);
 							}
 						});

+ 3 - 1
app/pages/user/index.vue

@@ -183,6 +183,7 @@
 					<view class="int">
 						<view class="icon" style="background-color: #03a9f4">&#xe63c;</view>
 						<view class="title">甲方任务</view>
+						<view class="bage" v-if="user.completeApplication > 0">{{ user.completeApplication > 99 ? '99+' : user.completeApplication }}</view>
 					</view>
 				</view>
 			</view>
@@ -191,6 +192,7 @@
 					<view class="int">
 						<view class="icon" style="background-color: #03a9f4">&#xe63c;</view>
 						<view class="title">乙方任务</view>
+						<view class="bage" v-if="user.completeReject > 0">{{ user.completeReject > 99 ? '99+' : user.completeReject }}</view>
 					</view>
 				</view>
 			</view>
@@ -271,7 +273,7 @@ export default {
 		};
 	},
 	onShow() {
-/* 		 		this.user = {
+/* 		this.user = {
 			token: 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjdhZGY4MzFmLWE0NjQtNGY5YS04YTY5LWMzM2QyNDU2MzI2ZSJ9.EPHElRmlVoFTfT4OxHNpvIC7bDKc1gKpNiO1u_dBOerYh5JFIuSrSkgp0PtQ0kOhO9iuvU0dttEGbsgofdrcpQ'
 		};
 		uni.setStorageSync('user', this.user); */

+ 2 - 1
app/pages/user/money/index.vue

@@ -30,6 +30,7 @@
 					<text v-if="item.state == 1 && item.type == 1" style="color: #4caf50">兼职支出</text>
 					<text v-if="item.state == 0 && item.type == 2" style="color: #f44336">提现审核中...</text>
 					<text v-if="item.state == 1 && item.type == 2" style="color: #4caf50">提现成功</text>
+					<text v-if="item.state == 1 && item.type == 3" style="color: #4caf50">兼职收入</text>
 					<text v-if="item.state == 2 && item.type == 2" style="color: #f44336" @click="popup(item.msg)">
 						<text class="icon" style="padding-right: 5px">&#xe610;</text>
 						<text>提现失败,退回余额</text>
@@ -38,7 +39,7 @@
 					<text>{{ item.createTime }}</text>
 				</view>
 				<view class="price">
-					<text v-if="item.type == 0" style="color: orangered">+{{ item.money }}元</text>
+					<text v-if="item.type == 0 || item.type == 3" style="color: orangered">+{{ item.money }}元</text>
 					<text v-if="item.type == 1 || item.type == 4" style="color: darkgray">-{{ item.money }}元</text>
 					<text v-if="item.type == 2 && item.state == 0" style="color: darkgray">-{{ item.money }}元</text>
 					<text v-if="item.type == 2 && item.state == 1" style="color: darkgray">-{{ item.money }}元</text>

+ 17 - 2
app/pages/user/resume/application/task_detail.vue

@@ -26,17 +26,25 @@
 						<text>任务日志</text>
 					</button>
 				</view>
-				<view class="f">
-					<button class="btn" @click="send()" :disabled="obj.isComplete == 1 || obj.isComplete == 2">
+				<view class="f" style="flex: 1.4;">
+					<button class="btn" @click="send()" :disabled="obj.isComplete == 1 || obj.isComplete == 2" v-if="obj.role == 1">
 						<text class="icon">&#xe612;</text>
 						<text v-if="obj.isComplete == 0">确认完成</text>
 						<text v-if="obj.isComplete == 1">等待甲方确认</text>
 						<text v-if="obj.isComplete == 2">任务完成</text>
+						<text v-if="obj.isComplete == 3">申请驳回,重新提交</text>
+					</button>
+					<button class="btn" @click="show()" :disabled="obj.isComplete != 1" v-else>
+						<text class="icon">&#xe612;</text>
+						<text v-if="obj.isComplete == 0">任务进行中...</text>
+						<text v-if="obj.isComplete == 1">确认完成</text>
+						<text v-if="obj.isComplete == 2">任务完成</text>
 						<text v-if="obj.isComplete == 3">申请完成驳回</text>
 					</button>
 				</view>
 			</view>
 		</view>
+		<complete ref="complete" @confirm="confirm"></complete>
 	</view>
 </template>
 
@@ -85,6 +93,13 @@ export default {
 					}
 				}
 			});
+		},
+		confirm() {
+			uni.$emit('task_to_do');
+			uni.navigateBack();
+		},
+		show() {
+			this.$refs.complete.init(this.obj.id);
 		}
 	}
 };

+ 10 - 4
app/pages/user/resume/application/task_to_do.vue

@@ -12,17 +12,20 @@
 				<view class="address">{{ item.startDate }}至{{ item.endDate }}</view>
 				<view class="distance">{{ item.createTime }}</view>
 			</view>
+			<view class="message _error pd0 pl0" v-if="item.isComplete == 3">
+				<view class="msg">驳回原因:{{ item.rejectMsg }}</view>
+			</view>
 			<view class="flex" v-if="param.role == 0">
 				<view class="f br agree" v-if="item.isComplete == 0">进行中...</view>
 				<view class="f br agree" v-if="item.isComplete == 1">对方发起任务完成申请</view>
 				<view class="f br agree" v-if="item.isComplete == 2">已完成(打款)</view>
-				<view class="f br danger" v-if="item.isComplete == 3">未通过</view>
+				<view class="f br danger" v-if="item.isComplete == 3">申请驳回</view>
 			</view>
 			<view class="flex" v-if="param.role == 1">
 				<view class="f br agree" v-if="item.isComplete == 0">进行中...</view>
 				<view class="f br agree" v-if="item.isComplete == 1">确认中...</view>
-				<view class="f br agree" v-if="item.isComplete == 2">已完成</view>
-				<view class="f br danger" v-if="item.isComplete == 3">未通过</view>
+				<view class="f br agree" v-if="item.isComplete == 2">已完成(打款)</view>
+				<view class="f br danger" v-if="item.isComplete == 3">申请驳回</view>
 			</view>
 		</view>
 		<view class="loading" v-if="loadMore"><u-loadmore :status="loadMore ? 'loading' : 'nomore'" /></view>
@@ -38,7 +41,7 @@ export default {
 				{ name: '进行中', isComplete: 0 },
 				{ name: '确认中', isComplete: 1 },
 				{ name: '已完成', isComplete: 2 },
-				{ name: '未通过', isComplete: 3 }
+				{ name: '驳回', isComplete: 3 }
 			],
 			list: [],
 			param: { pageNum: 1, pageSize: 10, state: 1, type: 1, isAccept: 1 },
@@ -48,6 +51,9 @@ export default {
 	onLoad(e) {
 		this.param.role = e.role || 0;
 		this.getData();
+		uni.$on('task_to_do', (res) => {
+			this.refresh();
+		});
 	},
 	methods: {
 		getData() {

+ 0 - 1
app/pages/user/resume/deliver/receive/index.vue

@@ -4,7 +4,6 @@
 		<view class="item" v-for="(item, index) in list" :key="index" @click="go('/pages/user/resume/deliver/receive/list?id=' + item.id + '&title=' + item.title + '&total=' + item.total)">
 			<view class="top">
 				<view class="title omit">{{ item.title }}</view>
-				<view class="salary">{{ item.salary }}</view>
 				<view class="bage" v-if="item.noRead > 0">{{ item.noRead > 99 ? '99+' : item.noRead }}</view>
 			</view>
 			<view class="desc">

+ 5 - 2
app/pages/user/resume/deliver/receive/list.vue

@@ -48,17 +48,20 @@ export default {
 				{ name: '未读', isRead: 0 }
 			],
 			list: [],
-			param: { pageNum: 1, pageSize: 10,type:0},
+			param: { pageNum: 1, pageSize: 10, type: 0 },
 			loadMore: true,
 			show: false
 		};
 	},
 	onLoad(e) {
 		this.param.positionId = e.id;
+		this.getData();
+		uni.$on('receive_list', (res) => {
+			this.refresh();
+		});
 		setTimeout(() => {
 			uni.setNavigationBarTitle({ title: e.title + '(' + e.total + ')' });
 		}, 300);
-		this.getData();
 	},
 	methods: {
 		getData() {

+ 5 - 1
app/pages/user/resume/deliver/receive/preview.vue

@@ -30,7 +30,7 @@
 			<text class="icon">&#xe644;</text>
 			<text>拨打电话</text>
 		</button>
-		<invite v-model="show" :resumeDeliverId="resumeDeliverId"></invite>
+		<invite v-model="show" :resumeDeliverId="resumeDeliverId" @confirm="confirm"></invite>
 	</view>
 </template>
 
@@ -54,6 +54,10 @@ export default {
 		});
 	},
 	methods: {
+		confirm() {
+			uni.$emit('receive_list');
+			uni.navigateBack();
+		},
 		call() {
 			uni.makePhoneCall({
 				phoneNumber: this.item.phone

+ 2 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/ResumeDeliver.java

@@ -55,10 +55,10 @@ public class ResumeDeliver {
     private Integer isComplete;
 
     @ApiModelProperty(value = "乙方完成说明")
-    private String cMsg;
+    private String completeMsg;
 
     @ApiModelProperty(value = "甲方驳回完成说明")
-    private String rMsg;
+    private String rejectMsg;
 
     @ApiModelProperty(value = "乙方给甲方评分")
     private BigDecimal jScore;
@@ -67,8 +67,6 @@ public class ResumeDeliver {
     private BigDecimal yScore;    @ApiModelProperty(value = "乙方给甲方评价")
     private String jMsg;
 
-
-
     @ApiModelProperty(value = "甲方给乙方评价")
     private String yMsg;
 

+ 8 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/User.java

@@ -152,4 +152,12 @@ public class User {
     @TableField(exist = false)
     @ApiModelProperty(value = "企业信息")
     private String enterprise;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "甲方收到确认完成申请数")
+    private String completeApplication;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "已方收到申请完成驳回数")
+    private String completeReject;
 }

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/dto/JTaskCompleteDto.java

@@ -21,6 +21,6 @@ public class JTaskCompleteDto {
     private Integer isComplete;
 
     @ApiModelProperty(value = "甲方驳回完成说明")
-    private String rMsg;
+    private String rejectMsg;
 
 }

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/dto/YTaskCompleteDto.java

@@ -14,6 +14,6 @@ public class YTaskCompleteDto {
     private Long id;
 
     @ApiModelProperty(value = "乙方完成说明")
-    private String cMsg;
+    private String completeMsg;
 
 }

+ 6 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/ResumeDeliverServiceImpl.java

@@ -184,6 +184,9 @@ public class ResumeDeliverServiceImpl extends ServiceImpl<ResumeDeliverMapper, R
         if (resumeDeliver == null || !resumeDeliver.getUserId().equals(AppUtil.getUser().getId())) {
             return AjaxResult.error("简历不存在或非法操作");
         }
+        if (resumeDeliver.getType() == 1 && resumeDeliver.getIsAccept() == 1) {
+            return AjaxResult.error("你已同意兼职,无法删除该报名");
+        }
         if (!removeById(id)) {
             throw new ServiceException("删除投递失败");
         }
@@ -210,7 +213,7 @@ public class ResumeDeliverServiceImpl extends ServiceImpl<ResumeDeliverMapper, R
         //面试邀请通知
         if (resumeDeliver.getState() == 1 && resumeDeliver.getIsAccept() == 0 && resumeDeliver.getType() == 0) {
             Position position = positionService.getById(resumeDeliver.getPositionId());
-            Enterprise enterprise = enterpriseService.getById(resumeDeliver.getUserId());
+            Enterprise enterprise = enterpriseService.getById(position.getUserId());
             body.set("template_id", "ll-qdaEgbDN4rEod0nJpsjUuSqHT9e12EniZfRPiNqM");
             body.set("page", "pages/user/resume/deliver/invite");
             content.set("thing5", new JSONObject().set("value", enterprise.getName()));//公司名称
@@ -267,7 +270,7 @@ public class ResumeDeliverServiceImpl extends ServiceImpl<ResumeDeliverMapper, R
             return AjaxResult.error("任务已完成");
         }
         resumeDeliver.setIsComplete(1);
-        resumeDeliver.setCMsg(dto.getCMsg());
+        resumeDeliver.setCompleteMsg(dto.getCompleteMsg());
         if (!updateById(resumeDeliver)) {
             throw new ServiceException("操作任务失败");
         }
@@ -282,7 +285,7 @@ public class ResumeDeliverServiceImpl extends ServiceImpl<ResumeDeliverMapper, R
             return AjaxResult.error("兼职任务不存在或非法操作");
         }
         resumeDeliver.setIsComplete(dto.getIsComplete());
-        resumeDeliver.setCMsg(dto.getRMsg());
+        resumeDeliver.setRejectMsg(dto.getRejectMsg());
         if (!updateById(resumeDeliver)) {
             throw new ServiceException("操作面试失败");
         }

+ 2 - 0
ruoyi-admin/src/main/resources/mapper/work/UserMapper.xml

@@ -28,6 +28,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             ( SELECT COUNT( d.id ) FROM tb_resume_deliver d WHERE d.enterprise_id = u.id AND d.state=1 AND d.type=0) AS inviteUser,/*企业邀请全职面试总数*/
             ( SELECT name FROM tb_enterprise d WHERE d.id = u.id) AS enterprise, /*企业信息*/
             </if>
+            ( SELECT COUNT( d.id ) FROM tb_resume_deliver d WHERE d.enterprise_id = u.id AND d.is_complete = 1 AND d.type=1) AS completeApplication, /*甲方收到确认完成申请数*/
+            ( SELECT COUNT( d.id ) FROM tb_resume_deliver d WHERE d.user_id = u.id AND d.is_complete = 3 AND d.type=1) AS completeReject, /*已方收到申请完成驳回数*/
             ( SELECT COUNT( d.id ) FROM tb_resume_deliver d WHERE d.enterprise_id = u.id AND d.is_read = 0 AND d.type=1) AS noReadApplication, /*甲方收到未查看报名数*/
             ( SELECT COUNT( d.id ) FROM tb_resume_deliver d WHERE d.user_id = u.id AND d.state = 1 AND is_accept = 0 AND type=1) AS partTimeAccept/*兼职邀约未处理*/
         FROM