Commit 1a3dadd2 authored by 廖旭伟's avatar 廖旭伟

Merge remote-tracking branch 'origin/master'

parents 3ffd0f32 230fd3b8
<template> <template>
<span> <span>
<el-button v-if='!noEdit' type="text" icon="el-icon-edit" size='mini' @click='$emit("edit", row)' title="编辑">编辑</el-button> <el-button
v-if="!noEdit"
type="text"
icon="el-icon-edit"
size="mini"
@click="$emit('edit', row)"
title="编辑"
>编辑</el-button
>
<span>&nbsp;</span> <span>&nbsp;</span>
<el-button v-if='!noView' type="text" icon="el-icon-view" size='mini' @click='$emit("view", row)' title="查看">查看</el-button> <el-button
<span>&nbsp;</span> v-if="!noView"
<Confirm @confirm='$emit("del", row.id)' message='确定要删除该条记录吗?'> type="text"
<el-button v-if='!noDel' type="text" icon="el-icon-delete" size='mini' title="删除">删除</el-button> icon="el-icon-view"
size="mini"
@click="$emit('view', row)"
title="查看"
>查看</el-button
>
<span>&nbsp;</span>
<el-button
v-if="reCheck"
type="text"
icon="el-icon-edit"
size="mini"
@click="$emit('edit', row)"
title="核查"
>核查</el-button
>
<span>&nbsp;</span>
<Confirm @confirm="$emit('del', row.id)" message="确定要删除该条记录吗?">
<el-button
v-if="!noDel"
type="text"
icon="el-icon-delete"
size="mini"
title="删除"
>删除</el-button
>
</Confirm> </Confirm>
</span> </span>
</template> </template>
<script> <script>
import Confirm from '@/components/Confirm.vue'; import Confirm from "@/components/Confirm.vue";
export default { export default {
props: { props: {
noEdit: { noEdit: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
noDel: { noDel: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
noAdd: { noAdd: {
type: Boolean, type: Boolean,
default: false default: false,
},
reCheck: {
type: Boolean,
default: false,
}, },
noView: { noView: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
row: { row: {
type: Object, type: Object,
required: true, required: true,
default: () => {} default: () => {},
}, },
}, },
components: { components: {
Confirm, Confirm,
}, },
methods: { methods: {},
},
data() { data() {
return { return {};
},
} };
}
}
</script> </script>
...@@ -6,7 +6,10 @@ ...@@ -6,7 +6,10 @@
<el-tab-pane label="设计问卷" name="1"> <el-tab-pane label="设计问卷" name="1">
<fc-designer style="height: 79vh;" ref="designer"> <fc-designer style="height: 79vh;" ref="designer">
<template slot="handle"> <template slot="handle">
<ElButton icon="el-icon-upload" type="success" size="small" @click="showDrawer" round>移动端预览 <ElButton style="margin-left: 10px;" icon="el-icon-upload" type="primary" size="small"
@click="issueBtn" round>问卷发布
</ElButton>
<ElButton icon="el-icon-view" type="success" size="small" @click="showDrawer" round>H5预览
</ElButton> </ElButton>
</template> </template>
</fc-designer> </fc-designer>
...@@ -31,6 +34,30 @@ ...@@ -31,6 +34,30 @@
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
<el-dialog title="问卷发布" :visible.sync="issueDialog" width="30%" top="25vh">
<el-form :model="issueForm">
<el-form-item label="问卷封面:" label-width="125px">
<div style="display: flex;align-items: center;">
<img style="width:80px; height: 50px; margin-right: 10px;cursor: pointer;"
v-for="i in issueForm.cover" :src="i" alt="">
</div>
<!-- <el-input v-model="issueForm.cover" autocomplete="off"></el-input> -->
</el-form-item>
<el-form-item label="反馈期限:" label-width="125px">
<el-date-picker v-model="issueForm.time" type="datetimerange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="邀请人员:" label-width="125px">
<el-button type="success" size="small">选择人员</el-button>
</el-form-item>
<div style="text-align: center;">
<el-button size="small" @click="issueDialog = false">取消</el-button>
<el-button type="primary" size="small" @click="issueFormBtn">发布</el-button>
</div>
</el-form>
</el-dialog>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
...@@ -43,8 +70,15 @@ export default { ...@@ -43,8 +70,15 @@ export default {
return { return {
tabs: '1', tabs: '1',
drawer: 0, drawer: 0,
Frule: '', Frule: [],
Fopthion: '', Fopthion: '',
issueDialog: false,
issueForm: {
cover: [
'http://sy.scsmile.cn/YX-JXgl/v1.0/HT/images/%E6%96%B0%E5%A2%9E%E5%8F%8D%E9%A6%88_%E7%AC%AC3%E6%AD%A5_/u26101.svg',
'http://sy.scsmile.cn/YX-JXgl/v1.0/HT/images/%E6%96%B0%E5%A2%9E%E5%8F%8D%E9%A6%88_%E7%AC%AC3%E6%AD%A5_/u26102.svg'
]
},
} }
}, },
mounted() { mounted() {
...@@ -75,11 +109,31 @@ export default { ...@@ -75,11 +109,31 @@ export default {
this.$refs.designer.removeMenuItem("timePicker") this.$refs.designer.removeMenuItem("timePicker")
this.$refs.designer.removeMenuItem("switch") this.$refs.designer.removeMenuItem("switch")
this.$refs.designer.removeMenuItem("tree") this.$refs.designer.removeMenuItem("tree")
this.$refs.designer.removeMenuItem("inputNumber")
this.$refs.designer.removeMenuItem("select")
this.$refs.designer.removeMenuItem("fc-editor")
this.$refs.designer.removeMenuItem("el-button")
this.$refs.designer.removeMenuItem("el-divider")
//配置组件生成规则---直接配置显示在页面上 //配置组件生成规则---直接配置显示在页面上
// const rule = [{ "type": "input", "field": "int", "title": "输入框", "info": "", "_fc_drag_tag": "input", "hidden": false, "display": true }] // const rule = [{ "type": "input", "field": "int", "title": "输入框", "info": "", "_fc_drag_tag": "input", "hidden": false, "display": true }]
// this.$refs.designer.setRule(rule) // this.$refs.designer.setRule(rule)
}, },
methods: { methods: {
//问卷发布
issueBtn() {
this.Frule = formCreate.parseJson(this.getFormJson())
this.Fopthion = formCreate.parseJson(this.getFormOption())
console.log(this.Frule)
//判断是否配置了表单
if (this.Frule.length > 0) {
this.issueDialog = true
} else {
this.$message({
message: '请配置表单后发布',
type: 'warning'
});
}
},
//预览生成按钮的输出 //预览生成按钮的输出
onSubmit(formData) { onSubmit(formData) {
console.log(formData) console.log(formData)
...@@ -101,12 +155,20 @@ export default { ...@@ -101,12 +155,20 @@ export default {
const FcDesignerOptions = this.$refs.designer.getOption(); const FcDesignerOptions = this.$refs.designer.getOption();
console.log(FcDesignerOptions) console.log(FcDesignerOptions)
return JSON.stringify(FcDesignerOptions) return JSON.stringify(FcDesignerOptions)
},
issueFormBtn() {
console.log(this.issueForm)
} }
} }
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
/deep/._fc-m-tools {
flex-direction: row-reverse;
justify-content: flex-start;
}
/deep/._fc-l-title { /deep/._fc-l-title {
text-align: center; text-align: center;
margin-bottom: 10px; margin-bottom: 10px;
......
...@@ -233,7 +233,7 @@ export default { ...@@ -233,7 +233,7 @@ export default {
{ {
label: "处理状态", label: "处理状态",
prop: "processStatus", prop: "checkStatus",
formatter: this.formatter, formatter: this.formatter,
}, },
......
...@@ -82,19 +82,6 @@ ...@@ -82,19 +82,6 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="22">
<el-form-item label="异常时间:">
<el-date-picker
v-model="form.errorTime"
type="date"
placeholder="选择日期"
style="width: 100%;"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="22"> <el-col :span="22">
<el-form-item label="办件时间:"> <el-form-item label="办件时间:">
......
...@@ -27,4 +27,11 @@ public interface RoleUserService extends ICRUDService<RoleUserEntity,Long> { ...@@ -27,4 +27,11 @@ public interface RoleUserService extends ICRUDService<RoleUserEntity,Long> {
void doDistributionUser(RoleUserQuery query); void doDistributionUser(RoleUserQuery query);
void doDistributionRole(RoleUserQuery query); void doDistributionRole(RoleUserQuery query);
/**
* 给用户分配角色
* @param query
*/
void assignRoleToUser(RoleUserQuery query);
} }
\ No newline at end of file
...@@ -70,6 +70,26 @@ public class RoleUserServiceImpl extends AbstractCRUDServiceImpl<RoleUserDao,Rol ...@@ -70,6 +70,26 @@ public class RoleUserServiceImpl extends AbstractCRUDServiceImpl<RoleUserDao,Rol
this.dao.insertBatch(list); this.dao.insertBatch(list);
} }
@Override
public void assignRoleToUser(RoleUserQuery query) {
//删除当前用户所有关联角色
Long userId = query.getUserId();
Map<String, Object> condition = new HashMap<>(1);
condition.put("userId", userId);
dao.delete(condition);
//新增用户角色
List<Long> roleIdList = query.getRoleIdList();
List<RoleUserEntity> list = new ArrayList<>();
for (Long roleId : roleIdList) {
RoleUserEntity rolseUser = new RoleUserEntity();
rolseUser.setRoleId(roleId);
rolseUser.setUserId(userId);
list.add(rolseUser);
}
this.save(list);
}
} }
\ No newline at end of file
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
package com.mortals.xhx.base.system.task.service.impl; package com.mortals.xhx.base.system.task.service.impl;
import cn.hutool.core.net.NetUtil;
import com.mortals.framework.ap.GlobalSysInfo; import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.common.code.ExcuteStatus; import com.mortals.framework.common.code.ExcuteStatus;
import com.mortals.framework.common.code.TaskExcuteStrategy; import com.mortals.framework.common.code.TaskExcuteStrategy;
...@@ -148,7 +149,8 @@ public class TaskServiceImpl extends AbstractCRUDServiceImpl<TaskDao, TaskEntity ...@@ -148,7 +149,8 @@ public class TaskServiceImpl extends AbstractCRUDServiceImpl<TaskDao, TaskEntity
@Override @Override
public void start() throws AppException { public void start() throws AppException {
final String localIp = SystemUtil.getLocalHostIp(); // final String localIp = SystemUtil.getLocalHostIp();
final String localIp = NetUtil.getLocalhostStr();
log.info("任务执行线程启动...-->" + localIp); log.info("任务执行线程启动...-->" + localIp);
thread = new Thread(() -> { thread = new Thread(() -> {
// 将本机上次执行而未完成的任务状态变更 // 将本机上次执行而未完成的任务状态变更
......
...@@ -48,7 +48,7 @@ public class UserEntity extends UserVo implements IUser { ...@@ -48,7 +48,7 @@ public class UserEntity extends UserVo implements IUser {
*/ */
private String qq; private String qq;
/** /**
* 用户类型(0.系统用户,1.普通用户,2.工作人员) * 用户类型(0.系统用户,1.普通用户,2.工作人员,3.普通员工)
*/ */
private Integer userType; private Integer userType;
...@@ -232,7 +232,7 @@ public class UserEntity extends UserVo implements IUser { ...@@ -232,7 +232,7 @@ public class UserEntity extends UserVo implements IUser {
this.qq = qq; this.qq = qq;
} }
/** /**
* 获取 用户类型(0.系统用户,1.普通用户,2.工作人员) * 获取 用户类型(0.系统用户,1.普通用户,2.工作人员,3.普通员工)
* @return Integer * @return Integer
*/ */
public Integer getUserType(){ public Integer getUserType(){
......
...@@ -55,7 +55,7 @@ public class AppealApiController extends BaseJsonBodyController { ...@@ -55,7 +55,7 @@ public class AppealApiController extends BaseJsonBodyController {
/** /**
* 个人申诉绩效统计 * 个人申诉绩效统计
*/ */
@PostMapping(value = "appeal/stat") @PostMapping(value = "stat")
public Rest<AppealStatInfo> appealStat() { public Rest<AppealStatInfo> appealStat() {
String busiDesc = "H5个人申诉绩效统计"; String busiDesc = "H5个人申诉绩效统计";
Rest<AppealStatInfo> rest = Rest.ok(busiDesc + " 【成功】"); Rest<AppealStatInfo> rest = Rest.ok(busiDesc + " 【成功】");
...@@ -72,7 +72,7 @@ public class AppealApiController extends BaseJsonBodyController { ...@@ -72,7 +72,7 @@ public class AppealApiController extends BaseJsonBodyController {
/** /**
* 申诉列表 * 申诉列表
*/ */
@PostMapping(value = "appeal/list") @PostMapping(value = "list")
public Rest<List<PerformAttendAppealEntity>> performList(@RequestBody AppealReq appealReq) { public Rest<List<PerformAttendAppealEntity>> performList(@RequestBody AppealReq appealReq) {
String busiDesc = "个人申诉列表"; String busiDesc = "个人申诉列表";
Rest<List<PerformAttendAppealEntity>> rest = Rest.ok(busiDesc + " 【成功】"); Rest<List<PerformAttendAppealEntity>> rest = Rest.ok(busiDesc + " 【成功】");
...@@ -95,8 +95,8 @@ public class AppealApiController extends BaseJsonBodyController { ...@@ -95,8 +95,8 @@ public class AppealApiController extends BaseJsonBodyController {
/** /**
* 申诉详细 * 申诉详细
*/ */
@PostMapping(value = "appeal/detail") @PostMapping(value = "info")
public Rest<PerformAttendAppealEntity> performDetail(@RequestBody AppealReq appealReq) { public Rest<PerformAttendAppealEntity> performInfo(@RequestBody AppealReq appealReq) {
String busiDesc = "个人申诉详细"; String busiDesc = "个人申诉详细";
Rest<PerformAttendAppealEntity> rest = Rest.ok(busiDesc + " 【成功】"); Rest<PerformAttendAppealEntity> rest = Rest.ok(busiDesc + " 【成功】");
try { try {
...@@ -116,7 +116,7 @@ public class AppealApiController extends BaseJsonBodyController { ...@@ -116,7 +116,7 @@ public class AppealApiController extends BaseJsonBodyController {
/** /**
* 申诉新增 * 申诉新增
*/ */
@PostMapping(value = "appeal/save") @PostMapping(value = "save")
public Rest<String> appealSave(@RequestBody PerformAttendAppealEntity appealEntity) { public Rest<String> appealSave(@RequestBody PerformAttendAppealEntity appealEntity) {
String busiDesc = "个人申诉新增"; String busiDesc = "个人申诉新增";
Rest<String> rest = Rest.ok(busiDesc + " 【成功】"); Rest<String> rest = Rest.ok(busiDesc + " 【成功】");
......
...@@ -48,7 +48,7 @@ public class FeedbackApiController extends BaseJsonBodyController { ...@@ -48,7 +48,7 @@ public class FeedbackApiController extends BaseJsonBodyController {
/** /**
* 反馈列表 * 反馈列表
*/ */
@PostMapping(value = "feedback/list") @PostMapping(value = "list")
public Rest<List<PerformAttendAppealEntity>> feedbackList(@RequestBody FeedbackReq feedbackReq) { public Rest<List<PerformAttendAppealEntity>> feedbackList(@RequestBody FeedbackReq feedbackReq) {
String busiDesc = "个人反馈列表"; String busiDesc = "个人反馈列表";
Rest<List<PerformAttendAppealEntity>> rest = Rest.ok(busiDesc + " 【成功】"); Rest<List<PerformAttendAppealEntity>> rest = Rest.ok(busiDesc + " 【成功】");
...@@ -71,7 +71,7 @@ public class FeedbackApiController extends BaseJsonBodyController { ...@@ -71,7 +71,7 @@ public class FeedbackApiController extends BaseJsonBodyController {
/** /**
* 反馈详细 * 反馈详细
*/ */
@PostMapping(value = "feedback/question") @PostMapping(value = "question")
public Rest<PerformAttendAppealEntity> performDetail(@RequestBody AppealReq appealReq) { public Rest<PerformAttendAppealEntity> performDetail(@RequestBody AppealReq appealReq) {
String busiDesc = "个人申诉详细"; String busiDesc = "个人申诉详细";
Rest<PerformAttendAppealEntity> rest = Rest.ok(busiDesc + " 【成功】"); Rest<PerformAttendAppealEntity> rest = Rest.ok(busiDesc + " 【成功】");
...@@ -92,9 +92,9 @@ public class FeedbackApiController extends BaseJsonBodyController { ...@@ -92,9 +92,9 @@ public class FeedbackApiController extends BaseJsonBodyController {
/** /**
* 申诉新增 * 申诉新增
*/ */
@PostMapping(value = "appeal/save") @PostMapping(value = "save")
public Rest<String> appealSave(@RequestBody PerformAttendAppealEntity appealEntity) { public Rest<String> feedbackSave(@RequestBody PerformAttendAppealEntity appealEntity) {
String busiDesc = "个人申诉新增"; String busiDesc = "反馈回答";
Rest<String> rest = Rest.ok(busiDesc + " 【成功】"); Rest<String> rest = Rest.ok(busiDesc + " 【成功】");
try { try {
......
...@@ -47,7 +47,7 @@ public class PerformApiController extends BaseJsonBodyController { ...@@ -47,7 +47,7 @@ public class PerformApiController extends BaseJsonBodyController {
/** /**
* 个人当天绩效统计 * 个人当天绩效统计
*/ */
@PostMapping(value = "perform/stat") @PostMapping(value = "stat")
public Rest<PerformStatInfo> performStat() { public Rest<PerformStatInfo> performStat() {
String busiDesc = "H5 个人绩效统计"; String busiDesc = "H5 个人绩效统计";
Rest<PerformStatInfo> rest = Rest.ok(busiDesc + " 【成功】"); Rest<PerformStatInfo> rest = Rest.ok(busiDesc + " 【成功】");
...@@ -65,7 +65,7 @@ public class PerformApiController extends BaseJsonBodyController { ...@@ -65,7 +65,7 @@ public class PerformApiController extends BaseJsonBodyController {
/** /**
* 个人当月绩效加分扣分列表 * 个人当月绩效加分扣分列表
*/ */
@PostMapping(value = "perform/list") @PostMapping(value = "list")
public Rest<List<PerformInfo>> performList(@RequestBody PerformReq performReq) { public Rest<List<PerformInfo>> performList(@RequestBody PerformReq performReq) {
String busiDesc = "个人绩效列表"; String busiDesc = "个人绩效列表";
Rest<List<PerformInfo>> rest = Rest.ok(busiDesc + " 【成功】"); Rest<List<PerformInfo>> rest = Rest.ok(busiDesc + " 【成功】");
...@@ -107,7 +107,7 @@ public class PerformApiController extends BaseJsonBodyController { ...@@ -107,7 +107,7 @@ public class PerformApiController extends BaseJsonBodyController {
/** /**
* 详细 * 详细
*/ */
@PostMapping(value = "perform/info") @PostMapping(value = "info")
public Rest<PerformDetailInfo> performInfo(@RequestBody PerformReq performReq) { public Rest<PerformDetailInfo> performInfo(@RequestBody PerformReq performReq) {
String busiDesc = "个人绩效增减详细"; String busiDesc = "个人绩效增减详细";
Rest<PerformDetailInfo> rest = Rest.ok(busiDesc + " 【成功】"); Rest<PerformDetailInfo> rest = Rest.ok(busiDesc + " 【成功】");
......
...@@ -2,6 +2,7 @@ package com.mortals.xhx.daemon.task; ...@@ -2,6 +2,7 @@ package com.mortals.xhx.daemon.task;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.PageUtil; import cn.hutool.core.util.PageUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
...@@ -115,7 +116,7 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -115,7 +116,7 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
List<AttendanceRecordHikEntity> attRecords = doorEventsRest.getData().getList().stream().map(item -> { List<AttendanceRecordHikEntity> attRecords = doorEventsRest.getData().getList().stream().map(item -> {
AttendanceRecordHikEntity recordHikEntity = new AttendanceRecordHikEntity(); AttendanceRecordHikEntity recordHikEntity = new AttendanceRecordHikEntity();
recordHikEntity.initAttrValue(); recordHikEntity.initAttrValue();
StaffEntity staffCache = staffService.getExtCache(item.getJobNo()); StaffEntity staffCache = staffService.getExtCache(StrUtil.padPre(item.getJobNo(), 8, "0"));
if (ObjectUtils.isEmpty(staffCache)) { if (ObjectUtils.isEmpty(staffCache)) {
log.info("staff is null !staffCode:{}",item.getJobNo()); log.info("staff is null !staffCode:{}",item.getJobNo());
return null; return null;
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd"> "mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.user.dao.ibatis.UserDaoImpl"> <mapper namespace="com.mortals.xhx.base.system.user.dao.ibatis.UserDaoImpl">
<!-- 字段和属性映射 --> <!-- 字段和属性映射 -->
<resultMap type="UserEntity" id="UserEntity-Map"> <resultMap type="UserEntity" id="UserEntity-Map">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment