Commit a9d6544d authored by 王启林's avatar 王启林
parents 00eb684e 698b1537
...@@ -41,6 +41,7 @@ export default { ...@@ -41,6 +41,7 @@ export default {
methods: { methods: {
onChange(checked) { onChange(checked) {
this.$emit("change", checked ? 1 : 0); this.$emit("change", checked ? 1 : 0);
this.$emit("onChange", checked ? 1 : 0);
}, },
}, },
}; };
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
<a-layout-header class="header"> <a-layout-header class="header">
<div class="flex aic"> <div class="flex aic">
<router-link to="/" class="flex aic"> <router-link to="/" class="flex aic">
<img width="32" src="@/assets/img/logo.png" /> <!-- <img width="32" src="@/assets/img/logo.png" /> -->
<h1 style="padding-left: 10px">{{ systemName }}</h1> <h1>{{ systemName }}</h1>
</router-link> </router-link>
<HeaderSite class="ml20"></HeaderSite> <HeaderSite class="ml20"></HeaderSite>
</div> </div>
......
...@@ -354,19 +354,17 @@ export default { ...@@ -354,19 +354,17 @@ export default {
onSelectLeftRow(record, selected) { onSelectLeftRow(record, selected) {
if (selected && record.children && record.children.length) { if (selected && record.children && record.children.length) {
record.children.forEach((v) => { record.children.forEach((v) => {
this.selectedLeftRowKeys.push(v.id); this.selectedLeftRowKeys= [...new Set([...this.selectedLeftRowKeys,v.id])]
this.deleteData.push(v); this.deleteData=[...new Set([...this.deleteData,v])];
}); });
} else if (selected) { } else if (!selected) {
this.selectedLeftRowKeys.push(record.id);
this.deleteData.push(record);
} else {
this.selectedLeftRowKeys = this.selectedLeftRowKeys.filter( this.selectedLeftRowKeys = this.selectedLeftRowKeys.filter(
(v) => v != record.id (v) => v != record.id
); );
this.deleteData = this.deleteData.filter((v) => { this.deleteData = this.deleteData.filter((v) => {
return this.selectedLeftRowKeys.some((val) => v.id == val); return v.id !=record.id
}); });
} }
}, },
// 批量删除 // 批量删除
......
...@@ -190,11 +190,18 @@ export default { ...@@ -190,11 +190,18 @@ export default {
}, },
changePage() {}, changePage() {},
onSelectRow(record, selected) { onSelectRow(record, selected) {
if (selected && record.children.length) { if (selected && record.children && record.children.length) {
record.children.forEach((v) => { record.children.forEach((v) => {
this.rowKeys.push(v.id); this.rowKeys = [...new Set([...this.rowKeys, v.id])];
}); });
} else { } else if (!selected && record.children && record.children.length) {
this.rowKeys = this.rowKeys.filter((v) => v != record.id);
record.children.forEach((v) => {
this.rowKeys = this.rowKeys.filter((val) => val != v.id);
});
} else if (selected && record.parentId) {
this.rowKeys = [...new Set([...this.rowKeys, record.parentId])];
} else if (!selected) {
this.rowKeys = this.rowKeys.filter((v) => v != record.id); this.rowKeys = this.rowKeys.filter((v) => v != record.id);
} }
}, },
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
:visible="Visible" :visible="Visible"
@cancel="handleClose" @cancel="handleClose"
:maskClosable="false" :maskClosable="false"
:destroyOnClose="true"
> >
<a-form-model <a-form-model
ref="formData" ref="formData"
...@@ -43,20 +44,6 @@ ...@@ -43,20 +44,6 @@
{{ v.name }}</a-select-option {{ v.name }}</a-select-option
> >
</a-select> </a-select>
<!-- <a-select
placeholder="请选择部门"
v-model="form.deptId"
@change="handleChange"
>
<a-select-option
:data-deptNum="v.deptNumber"
v-for="v in deptList"
:key="v.id"
:value="v.id"
>
{{ v.name }}
</a-select-option>
</a-select> -->
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
...@@ -96,14 +83,43 @@ ...@@ -96,14 +83,43 @@
<a-input v-model="form.fromnum" placeholder="请输入窗口编号" /> <a-input v-model="form.fromnum" placeholder="请输入窗口编号" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row>
<a-row>
<a-col :span="12"> <a-col :span="12">
<a-form-model-item label="红旗窗口" prop="hongqi"> <a-form-model-item label="红旗窗口" prop="hongqi">
<y-switch v-model="form.hongqi"></y-switch> <y-switch v-model="form.hongqi"></y-switch>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row>
<a-col span="12">
<a-form-model-item label="无人值守" prop="duty">
<y-switch v-model="form.duty" @onChange="changeDuty"></y-switch>
<a-tooltip>
<template slot="title">
该功能用于窗口无工作人员入驻,无需叫号、评价的情况下,定义窗口屏显示内容。
</template>
<a-icon class="question-icon" type="question-circle" />
</a-tooltip>
</a-form-model-item>
</a-col>
</a-row>
<a-row v-if="form.duty">
<a-col :span="12">
<a-form-model-item label="显示内容" prop="dutyContent">
<a-input
v-model="form.dutyContent"
placeholder="请输入窗口屏显示内容"
/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="显示英文" prop="dutyEnglish">
<a-input
v-model="form.dutyEnglish"
placeholder="请输入窗口屏显示英文"
/>
</a-form-model-item>
</a-col>
</a-row>
<a-row> <a-row>
<a-col :span="24"> <a-col :span="24">
<a-form-model-item <a-form-model-item
...@@ -205,6 +221,9 @@ export default { ...@@ -205,6 +221,9 @@ export default {
summary: "", // 备注 summary: "", // 备注
building: 1, // 楼栋 building: 1, // 楼栋
level: 1, // 楼层 level: 1, // 楼层
duty: "", // 无人值守
dutyContent: "", // 无人值守显示内容
dutyEnglish: "", // 无人值守显示英文内容
}, },
rules: { rules: {
siteName: [ siteName: [
...@@ -302,11 +321,24 @@ export default { ...@@ -302,11 +321,24 @@ export default {
this.$refs.formData.resetFields(); this.$refs.formData.resetFields();
this.Visible = false; this.Visible = false;
}, },
// 改变无人值守
changeDuty(val) {
if (!val) {
this.form.dutyContent = "";
this.form.dutyEnglish = "";
}
},
}, },
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.question-icon {
margin-left: 10px;
font-size: 20px;
cursor: pointer;
color: #999;
}
/deep/.ant-modal-content { /deep/.ant-modal-content {
width: 800px; width: 800px;
} }
......
...@@ -53,6 +53,7 @@ import AppraiseSkin from "../appraiseskin/AppraiseSkin.vue"; ...@@ -53,6 +53,7 @@ import AppraiseSkin from "../appraiseskin/AppraiseSkin.vue";
import SampleFormSkin from "../sampleFormSkin/SampleFormSkin.vue"; import SampleFormSkin from "../sampleFormSkin/SampleFormSkin.vue";
import WriteFormSkin from "../writeFormSkin/WriteFormSkin.vue"; import WriteFormSkin from "../writeFormSkin/WriteFormSkin.vue";
import InformationSkin from "../informationskin/InformationSkin.vue"; import InformationSkin from "../informationskin/InformationSkin.vue";
import SelfService from "../selfservice/SelfService.vue";
export default { export default {
components: { components: {
LandscapeMode, LandscapeMode,
...@@ -63,6 +64,7 @@ export default { ...@@ -63,6 +64,7 @@ export default {
SampleFormSkin, SampleFormSkin,
WriteFormSkin, WriteFormSkin,
InformationSkin, InformationSkin,
SelfService,
}, },
props: {}, props: {},
data() { data() {
...@@ -76,40 +78,41 @@ export default { ...@@ -76,40 +78,41 @@ export default {
this.$bus.$on("selectPreview", (row, index) => { this.$bus.$on("selectPreview", (row, index) => {
this.skinInfo = { ...row }; this.skinInfo = { ...row };
this.index = index; this.index = index;
console.log(this.skinInfo);
}); });
}, },
computed: { computed: {
component() { component() {
let str = ""; let str = "";
switch (this.skinInfo.productId) { switch (this.skinInfo.productName) {
case 1: case "排号机":
str = "LandscapeMode"; str = "LandscapeMode";
break; break;
case 2: case "窗口屏":
str = "WindowSkin"; str = "WindowSkin";
break; break;
case 3: case "呼叫器":
str = "CallOutSkin"; str = "CallOutSkin";
break; break;
case 4: case "集中显示屏":
str = "CentralizeSkin"; str = "CentralizeSkin";
break; break;
case 5: case "导视机":
// str = "CentralizeSkin"; // str = "CentralizeSkin";
break; break;
case 6: case "评价器":
str = "AppraiseSkin"; str = "AppraiseSkin";
break; break;
case 7: case "自助服务终端":
// str = "AppraiseSkin"; str = "SelfService";
break; break;
case 8: case "填单机":
str = "WriteFormSkin"; str = "WriteFormSkin";
break; break;
case 9: case "样表机":
str = "SampleFormSkin"; str = "SampleFormSkin";
break; break;
case 10: case "信息发布终端":
str = "InformationSkin"; str = "InformationSkin";
break; break;
} }
......
...@@ -187,6 +187,7 @@ import AppraiseSkin from "../appraiseskin/AppraiseSkin.vue"; ...@@ -187,6 +187,7 @@ import AppraiseSkin from "../appraiseskin/AppraiseSkin.vue";
import SampleFormSkin from "../sampleFormSkin/SampleFormSkin.vue"; import SampleFormSkin from "../sampleFormSkin/SampleFormSkin.vue";
import WriteFormSkin from "../writeFormSkin/WriteFormSkin.vue"; import WriteFormSkin from "../writeFormSkin/WriteFormSkin.vue";
import InformationSkin from "../informationskin/InformationSkin.vue"; import InformationSkin from "../informationskin/InformationSkin.vue";
import SelfService from "../selfservice/SelfService.vue"
import { uploadFile, skinSave, getTemplateList } from "@/services/surface"; import { uploadFile, skinSave, getTemplateList } from "@/services/surface";
import html2canvas from "html2canvas"; import html2canvas from "html2canvas";
import { Empty } from "ant-design-vue"; import { Empty } from "ant-design-vue";
...@@ -201,6 +202,7 @@ export default { ...@@ -201,6 +202,7 @@ export default {
SampleFormSkin, SampleFormSkin,
WriteFormSkin, WriteFormSkin,
InformationSkin, InformationSkin,
SelfService
}, },
props: { props: {
isShow: { isShow: {
...@@ -262,35 +264,35 @@ export default { ...@@ -262,35 +264,35 @@ export default {
}, },
component() { component() {
let str = ""; let str = "";
switch (this.facilityInfo.productId) { switch (this.facilityInfo.productName) {
case 1: case "排号机":
str = "LandscapeMode"; str = "LandscapeMode";
break; break;
case 2: case "窗口屏":
str = "WindowSkin"; str = "WindowSkin";
break; break;
case 3: case "呼叫器":
str = "CallOutSkin"; str = "CallOutSkin";
break; break;
case 4: case "集中显示屏":
str = "CentralizeSkin"; str = "CentralizeSkin";
break; break;
case 5: case "导视机":
// str = "CentralizeSkin"; // str = "CentralizeSkin";
break; break;
case 6: case "评价器":
str = "AppraiseSkin"; str = "AppraiseSkin";
break; break;
case 7: case "自助服务终端":
// str = "AppraiseSkin"; str = "SelfService";
break; break;
case 8: case "填单机":
str = "WriteFormSkin"; str = "WriteFormSkin";
break; break;
case 9: case "样表机":
str = "SampleFormSkin"; str = "SampleFormSkin";
break; break;
case 10: case "信息发布终端":
str = "InformationSkin"; str = "InformationSkin";
break; break;
} }
......
<template>
<div class="skin-box">
<!-- 自助服务终端 横板 -->
<div
:id="conponentsId"
v-if="imageResolution === '1'"
class="across-skin flex flexc aic"
:style="{
background: filterItem('1', 0),
}"
>
<!-- 头部 -->
<div class="header flex aic jcb">
<div class="left flex aic">
<div
class="title"
:style="{
color: filterItem('2', 0),
}"
>
自助服务终端
</div>
</div>
<div
class="right flex aic"
:style="{
color: filterItem('3', 0),
}"
>
<div class="time">10:32</div>
<div class="flex flexc">
<span>2023/02/16</span>
<span>星期四</span>
</div>
</div>
</div>
<div class="main flex aic jcb flex1">
<div class="left">
<div class="top">
<div class="search-box">
<div class="search">请输入你想查询的内容关键字</div>
<div
class="search_btn"
:style="{
color: filterItem('7', 0),
background: filterItem('8', 0),
}"
>
搜索
</div>
</div>
<div class="banner flex aic jcc">banner</div>
</div>
<div class="bottom">新闻区</div>
</div>
<div class="right flex aic jcc">应用展示区</div>
</div>
<!-- 底部 -->
<div class="footer mt20">
<div
class="footer-item footer-item1"
:style="{
background: filterItem('7', 0),
}"
>
首页
</div>
<div class="footer-item">服务</div>
<div class="footer-item">互动</div>
<div class="footer-item">我的</div>
<div
class="footer-item footer-item5"
:style="{
color: filterItem('7', 0),
background: filterItem('8', 0),
}"
>
登录/注册
</div>
</div>
</div>
<!-- 空数据显示 -->
<div class="empty flex aic jcc" v-else>
<a-empty
:image="require('../../../../assets/img/original.png')"
:image-style="{
height: '80px',
}"
>
<span slot="description"> <a href="#API">暂无皮肤模板</a> </span>
</a-empty>
</div>
</div>
</template>
<script>
export default {
props: {
skinFieldList: {
type: Array,
required: true,
default: () => {
return [];
},
},
imageResolution: {
required: true,
default: "1",
},
conponentsId: {
required: true,
type: String,
},
},
data() {
return {
api: process.env.VUE_APP_API_IMG_URL,
};
},
methods: {
// 过滤属性类型
filterItem(type, index) {
let arr = this.skinFieldList.filter((v) => {
return v.remark == type;
});
if (arr.length) {
return this.filterValueType(arr[index]);
} else {
return "";
}
},
// 过滤属性值类型
filterValueType(info = {}) {
let value = "";
if (info.fieldType !== "" && info.fieldType === "1" && info.fieldValue) {
value = info.fieldValue;
} else if (
info.fieldType !== "" &&
info.fieldType === "2" &&
info.fieldValue
) {
value = `url(${this.api + info.fieldValue})`;
}
return value;
},
},
};
</script>
<style lang="less" scoped>
.across-skin {
width: 1000px;
height: 562.5px;
background: linear-gradient(#26c5ff, #2c66ff);
background-repeat: no-repeat !important ;
background-position: center !important ;
background-size: cover !important ;
.header {
width: 100%;
color: #fff;
padding: 20px;
.title {
font-size: 30px;
font-weight: 600;
}
.right {
.time {
font-size: 26px;
font-weight: 600;
margin-right: 10px;
}
}
}
.main {
width: 100%;
padding: 20px;
margin-top: 10px;
color: #fff;
.left {
width: 39%;
height: 100%;
padding: 10px;
border-radius: 4px;
border: 1px dashed #ececec;
.top {
height: 59%;
display: flex;
flex-direction: column;
.search-box {
height: 40px;
padding: 0px 4px;
margin-bottom: 10px;
border-radius: 4px;
background-color: #fff;
display: flex;
align-items: center;
justify-content: space-between;
.search {
color: #ccc;
}
.search_btn {
width: 60px;
height: 36px;
border-radius: 4px;
background-color: #dee9ff;
display: flex;
justify-content: center;
align-items: center;
color: #206eff;
}
}
.banner {
flex: 0.9;
border: 1px dashed #ececec;
border-radius: 4px;
}
}
.bottom {
height: 39%;
display: flex;
align-items: center;
justify-content: center;
border: 1px dashed #ececec;
}
}
.right {
width: 59%;
height: 100%;
border-radius: 4px;
border: 1px dashed #ececec;
}
}
.footer {
width: 100%;
height: 60px;
display: flex;
justify-content: flex-end;
background-color: #fff;
.footer-item1 {
color: #fff;
background-color: #206eff;
}
.footer-item {
display: flex;
align-items: center;
justify-content: center;
width: 160px;
height: 100%;
border-left: 1px solid #ececec;
border-right: 1px solid #ececec;
font-size: 20px;
}
.footer-item5 {
color: #206eff;
background-color: #dee9ff;
}
}
}
</style>
\ No newline at end of file
-- ----------------------------
2023-2-21
-- ----------------------------
ALTER TABLE mortals_sys_window ADD COLUMN `duty` tinyint (1) default 0 COMMENT '无人值守(1.是,0.否)' AFTER hongqi;
ALTER TABLE mortals_sys_window ADD COLUMN `dutyContent` varchar (256) default "" COMMENT '显示内容' AFTER duty;
ALTER TABLE mortals_sys_window ADD COLUMN `dutyEnglish` varchar (256) default "" COMMENT '显示英文' AFTER dutyContent;
package com.mortals.xhx.base.framework.exception; package com.mortals.xhx.base.framework.exception;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ControllerAdvice;
...@@ -13,10 +14,9 @@ import com.mortals.framework.exception.AppException; ...@@ -13,10 +14,9 @@ import com.mortals.framework.exception.AppException;
* 统一异常处理 * 统一异常处理
*/ */
@ControllerAdvice @ControllerAdvice
@Slf4j
public class ExceptionHandle { public class ExceptionHandle {
private final static Logger log = LoggerFactory.getLogger(ExceptionHandle.class);
public static final String KEY_RESULT_CODE = "code"; public static final String KEY_RESULT_CODE = "code";
public static final String KEY_RESULT_MSG = "msg"; public static final String KEY_RESULT_MSG = "msg";
public static final String KEY_RESULT_DATA = "data"; public static final String KEY_RESULT_DATA = "data";
......
...@@ -46,12 +46,24 @@ public interface UploadService extends IService { ...@@ -46,12 +46,24 @@ public interface UploadService extends IService {
*/ */
void fileDownload(String fileName, Boolean delete, HttpServletResponse response); void fileDownload(String fileName, Boolean delete, HttpServletResponse response);
/**
* 预览
* @param fileName
* @param response
*/
void preview(String fileName, HttpServletResponse response); void preview(String fileName, HttpServletResponse response);
/**
* 上传
* @param fileName
* @param response
*/
void uploadDownload(String fileName, HttpServletResponse response); void uploadDownload(String fileName, HttpServletResponse response);
/**
* 刪除
* @param fileName
*/
void deleteFile(String fileName); void deleteFile(String fileName);
} }
\ No newline at end of file
...@@ -12,6 +12,7 @@ import com.mortals.framework.web.BaseJsonBodyController; ...@@ -12,6 +12,7 @@ import com.mortals.framework.web.BaseJsonBodyController;
import com.mortals.xhx.module.dept.model.DeptEntity; import com.mortals.xhx.module.dept.model.DeptEntity;
import com.mortals.xhx.module.dept.model.DeptQuery; import com.mortals.xhx.module.dept.model.DeptQuery;
import com.mortals.xhx.module.dept.service.DeptService; import com.mortals.xhx.module.dept.service.DeptService;
import com.mortals.xhx.module.matter.model.MatterEntity;
import com.mortals.xhx.module.matter.model.MatterQuery; import com.mortals.xhx.module.matter.model.MatterQuery;
import com.mortals.xhx.module.matter.model.vo.MatterInfo; import com.mortals.xhx.module.matter.model.vo.MatterInfo;
import com.mortals.xhx.module.matter.service.MatterService; import com.mortals.xhx.module.matter.service.MatterService;
...@@ -66,6 +67,8 @@ public class DemoWebApiController { ...@@ -66,6 +67,8 @@ public class DemoWebApiController {
private WindowMatterService windowMatterService; private WindowMatterService windowMatterService;
@Autowired @Autowired
private DeptService deptService; private DeptService deptService;
@Autowired
private MatterService matterService;
@PostMapping(value = "testGov") @PostMapping(value = "testGov")
...@@ -103,6 +106,23 @@ public class DemoWebApiController { ...@@ -103,6 +106,23 @@ public class DemoWebApiController {
return Rest.ok(cookieStr); return Rest.ok(cookieStr);
} }
@PostMapping(value = "reEventShow")
@UnAuth
public Rest<String> reEventShow() {
List<SiteMatterEntity> siteMatterEntities = siteMatterService.find(new SiteMatterQuery());
for (SiteMatterEntity siteMatterEntity : siteMatterEntities) {
if(ObjectUtils.isEmpty(siteMatterEntity.getEventTypeShow())){
MatterEntity matterEntity = matterService.get(siteMatterEntity.getMatterId());
if(!ObjectUtils.isEmpty(matterEntity)&&!ObjectUtils.isEmpty(matterEntity.getEventTypeShow())){
siteMatterEntity.setEventTypeShow(matterEntity.getEventTypeShow());
siteMatterService.update(siteMatterEntity);
}
}
}
return Rest.ok();
}
@PostMapping(value = "reDepts") @PostMapping(value = "reDepts")
@UnAuth @UnAuth
......
...@@ -54,4 +54,5 @@ public class MatterInfo { ...@@ -54,4 +54,5 @@ public class MatterInfo {
*/ */
private String promiseTimeLimitShow; private String promiseTimeLimitShow;
} }
\ No newline at end of file
...@@ -16,4 +16,9 @@ public class MatterVo extends BaseEntityLong { ...@@ -16,4 +16,9 @@ public class MatterVo extends BaseEntityLong {
private List<Long> idList; private List<Long> idList;
/**
* 行政处罚排除
*/
private List <String> eventTypeShowNotList;
} }
\ No newline at end of file
...@@ -4,6 +4,7 @@ import cn.hutool.setting.Setting; ...@@ -4,6 +4,7 @@ import cn.hutool.setting.Setting;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth; import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result; import com.mortals.framework.model.Result;
...@@ -25,6 +26,7 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -25,6 +26,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -54,6 +56,23 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe ...@@ -54,6 +56,23 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe
super.setModuleDesc("基础事项"); super.setModuleDesc("基础事项");
} }
/**
* @param query
* @param model
* @param context
* @throws AppException
*/
@Override
protected void doListBefore(MatterEntity query, Map<String, Object> model, Context context) throws AppException {
if(ObjectUtils.isEmpty(query.getEventTypeShowNotList())){
ArrayList<String> notList = new ArrayList<>();
notList.add("行政处罚");
query.setEventTypeShowNotList(notList);
}
super.doListBefore(query, model, context);
}
@Override @Override
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "appoveObjectShow", paramService.getParamBySecondOrganize("Matter", "appoveObjectShow")); this.addDict(model, "appoveObjectShow", paramService.getParamBySecondOrganize("Matter", "appoveObjectShow"));
......
...@@ -34,4 +34,7 @@ public class SiteMatterVo extends BaseEntityLong { ...@@ -34,4 +34,7 @@ public class SiteMatterVo extends BaseEntityLong {
*/ */
private String areaCode; private String areaCode;
/** 事项类型排除列表 */
private List <String> eventTypeShowNotList;
} }
\ No newline at end of file
package com.mortals.xhx.module.site.service.impl; package com.mortals.xhx.module.site.service.impl;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result; import com.mortals.framework.model.Result;
import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
import com.mortals.xhx.common.code.BusinessTypeEnum;
import com.mortals.xhx.common.code.IsBusinessEnum; import com.mortals.xhx.common.code.IsBusinessEnum;
import com.mortals.xhx.module.business.model.BusinessEntity; import com.mortals.xhx.module.business.model.BusinessEntity;
import com.mortals.xhx.module.business.model.BusinessMatterEntity; import com.mortals.xhx.module.business.model.BusinessMatterEntity;
...@@ -10,18 +14,15 @@ import com.mortals.xhx.module.business.model.BusinessMatterQuery; ...@@ -10,18 +14,15 @@ import com.mortals.xhx.module.business.model.BusinessMatterQuery;
import com.mortals.xhx.module.business.model.BusinessQuery; import com.mortals.xhx.module.business.model.BusinessQuery;
import com.mortals.xhx.module.business.service.BusinessMatterService; import com.mortals.xhx.module.business.service.BusinessMatterService;
import com.mortals.xhx.module.business.service.BusinessService; import com.mortals.xhx.module.business.service.BusinessService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.common.code.SatusEnum;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.xhx.module.site.dao.SiteBusinessDao; import com.mortals.xhx.module.site.dao.SiteBusinessDao;
import com.mortals.xhx.module.site.model.SiteBusinessEntity; import com.mortals.xhx.module.site.model.SiteBusinessEntity;
import com.mortals.xhx.module.site.model.SiteBusinessQuery; import com.mortals.xhx.module.site.model.SiteBusinessQuery;
import com.mortals.xhx.module.site.service.SiteBusinessService;
import com.mortals.xhx.module.site.model.SiteBusinessTreeSelect; import com.mortals.xhx.module.site.model.SiteBusinessTreeSelect;
import com.mortals.xhx.module.site.service.SiteBusinessService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.util.*; import java.util.*;
...@@ -35,6 +36,7 @@ import java.util.stream.Collectors; ...@@ -35,6 +36,7 @@ import java.util.stream.Collectors;
* @date 2022-01-13 * @date 2022-01-13
*/ */
@Service("siteBusinessService") @Service("siteBusinessService")
@Slf4j
public class SiteBusinessServiceImpl extends AbstractCRUDCacheServiceImpl<SiteBusinessDao, SiteBusinessEntity, Long> implements SiteBusinessService { public class SiteBusinessServiceImpl extends AbstractCRUDCacheServiceImpl<SiteBusinessDao, SiteBusinessEntity, Long> implements SiteBusinessService {
@Autowired @Autowired
...@@ -43,13 +45,56 @@ public class SiteBusinessServiceImpl extends AbstractCRUDCacheServiceImpl<SiteBu ...@@ -43,13 +45,56 @@ public class SiteBusinessServiceImpl extends AbstractCRUDCacheServiceImpl<SiteBu
@Autowired @Autowired
private BusinessMatterService businessMatterService; private BusinessMatterService businessMatterService;
/**
* @param params
* @param pageInfo
* @param context
* @return
* @throws AppException
*/
@Override @Override
protected void findAfter(SiteBusinessEntity params, PageInfo pageInfo, Context context, List<SiteBusinessEntity> list) throws AppException { protected SiteBusinessEntity findBefore(SiteBusinessEntity params, PageInfo pageInfo, Context context) throws AppException {
if (!ObjectUtils.isEmpty(params.getIdNotList())) {
Set<Long> notIdSet = params.getIdNotList().stream().collect(Collectors.toSet());
//排除掉了父级,但是子集存在,需要吧父id排除到notlist外
SiteBusinessQuery siteBusinessQuery = new SiteBusinessQuery(); SiteBusinessQuery siteBusinessQuery = new SiteBusinessQuery();
siteBusinessQuery.setIdList(params.getIdNotList());
List<SiteBusinessEntity> rootSiteBusiness = this.find(siteBusinessQuery).stream().filter(f -> f.getIsBusiness() == IsBusinessEnum.一级业务.getValue()).collect(Collectors.toList());
for (SiteBusinessEntity root : rootSiteBusiness) {
SiteBusinessQuery query = new SiteBusinessQuery();
query.setParentId(root.getId());
List<SiteBusinessEntity> childSiteBusiness = this.find(query, context);
//判断排除的id是否包含所有
Boolean bool = false;
for (SiteBusinessEntity child : childSiteBusiness) {
if (!notIdSet.contains(child.getId())) {
bool = true;
break;
}
}
if (bool) {
//排除掉父id
notIdSet.remove(root.getId());
}
}
params.setIdNotList(notIdSet.stream().collect(Collectors.toList()));
}
return super.findBefore(params, pageInfo, context);
}
@Override
protected void findAfter(SiteBusinessEntity params, PageInfo pageInfo, Context context, List<SiteBusinessEntity> list) throws AppException {
if (!ObjectUtils.isEmpty(params.getIdNotList())) { if (!ObjectUtils.isEmpty(params.getIdNotList())) {
//排除掉已经存在的ids //排除掉已经存在的ids
log.info("idNotList:{}", JSON.toJSONString(params.getIdNotList()));
Iterator<SiteBusinessEntity> iterator = list.iterator(); Iterator<SiteBusinessEntity> iterator = list.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
SiteBusinessQuery siteBusinessQuery = new SiteBusinessQuery();
SiteBusinessEntity item = iterator.next(); SiteBusinessEntity item = iterator.next();
siteBusinessQuery.siteId(item.getSiteId()); siteBusinessQuery.siteId(item.getSiteId());
siteBusinessQuery.setParentId(item.getBusinessId()); siteBusinessQuery.setParentId(item.getBusinessId());
...@@ -60,6 +105,8 @@ public class SiteBusinessServiceImpl extends AbstractCRUDCacheServiceImpl<SiteBu ...@@ -60,6 +105,8 @@ public class SiteBusinessServiceImpl extends AbstractCRUDCacheServiceImpl<SiteBu
if (ObjectUtils.isEmpty(childs)) { if (ObjectUtils.isEmpty(childs)) {
//子节点已经全部选中,删除父节点 //子节点已经全部选中,删除父节点
iterator.remove(); iterator.remove();
pageInfo.setTotalResult(pageInfo.getTotalResult() - 1);
} else { } else {
childs.stream().forEach(item1 -> { childs.stream().forEach(item1 -> {
buildChildBusiness(item1); buildChildBusiness(item1);
...@@ -71,6 +118,7 @@ public class SiteBusinessServiceImpl extends AbstractCRUDCacheServiceImpl<SiteBu ...@@ -71,6 +118,7 @@ public class SiteBusinessServiceImpl extends AbstractCRUDCacheServiceImpl<SiteBu
} }
} else { } else {
list.stream().peek(item -> { list.stream().peek(item -> {
SiteBusinessQuery siteBusinessQuery = new SiteBusinessQuery();
List<SiteBusinessEntity> childs = this.find(siteBusinessQuery.siteId(item.getSiteId()).parentId(item.getBusinessId())); List<SiteBusinessEntity> childs = this.find(siteBusinessQuery.siteId(item.getSiteId()).parentId(item.getBusinessId()));
childs.stream().forEach(item1 -> { childs.stream().forEach(item1 -> {
buildChildBusiness(item1); buildChildBusiness(item1);
......
package com.mortals.xhx.module.site.web; package com.mortals.xhx.module.site.web;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.framework.web.BasePhpCRUDJsonMappingController; import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.site.model.SiteMatterEntity; import com.mortals.xhx.module.site.model.SiteMatterEntity;
import com.mortals.xhx.module.site.service.SiteMatterService; import com.mortals.xhx.module.site.service.SiteMatterService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Map;
/** /**
* 站点事项 * 站点事项
* *
...@@ -27,4 +33,19 @@ public class SiteMatterController extends BaseCRUDJsonBodyMappingController<Site ...@@ -27,4 +33,19 @@ public class SiteMatterController extends BaseCRUDJsonBodyMappingController<Site
super.setModuleDesc("站点事项"); super.setModuleDesc("站点事项");
} }
/**
* @param query
* @param model
* @param context
* @throws AppException
*/
@Override
protected void doListBefore(SiteMatterEntity query, Map<String, Object> model, Context context) throws AppException {
super.doListBefore(query, model, context);
if(ObjectUtils.isEmpty(query.getEventTypeShowNotList())){
ArrayList<String> notList = new ArrayList<>();
notList.add("行政处罚");
query.setEventTypeShowNotList(notList);
}
}
} }
\ No newline at end of file
...@@ -12,7 +12,7 @@ import com.mortals.xhx.module.window.model.vo.WindowVo; ...@@ -12,7 +12,7 @@ import com.mortals.xhx.module.window.model.vo.WindowVo;
* 站点部门窗口实体对象 * 站点部门窗口实体对象
* *
* @author zxfei * @author zxfei
* @date 2022-01-12 * @date 2023-02-21
*/ */
public class WindowEntity extends WindowVo { public class WindowEntity extends WindowVo {
...@@ -58,6 +58,18 @@ public class WindowEntity extends WindowVo { ...@@ -58,6 +58,18 @@ public class WindowEntity extends WindowVo {
* 红旗窗口 (1.是,0.否) * 红旗窗口 (1.是,0.否)
*/ */
private Integer hongqi; private Integer hongqi;
/**
* 无人值守(1.是,)
*/
private Integer duty;
/**
* 显示内容
*/
private String dutyContent;
/**
* 显示英文
*/
private String dutyEnglish;
/** /**
* 备注 * 备注
*/ */
...@@ -255,6 +267,60 @@ public class WindowEntity extends WindowVo { ...@@ -255,6 +267,60 @@ public class WindowEntity extends WindowVo {
this.hongqi = hongqi; this.hongqi = hongqi;
} }
/**
* 获取 无人值守(1.是,)
*
* @return Integer
*/
public Integer getDuty() {
return duty;
}
/**
* 设置 无人值守(1.是,)
*
* @param duty
*/
public void setDuty(Integer duty) {
this.duty = duty;
}
/**
* 获取 显示内容
*
* @return String
*/
public String getDutyContent() {
return dutyContent;
}
/**
* 设置 显示内容
*
* @param dutyContent
*/
public void setDutyContent(String dutyContent) {
this.dutyContent = dutyContent;
}
/**
* 获取 显示英文
*
* @return String
*/
public String getDutyEnglish() {
return dutyEnglish;
}
/**
* 设置 显示英文
*
* @param dutyEnglish
*/
public void setDutyEnglish(String dutyEnglish) {
this.dutyEnglish = dutyEnglish;
}
/** /**
* 获取 备注 * 获取 备注
* *
...@@ -339,6 +405,9 @@ public class WindowEntity extends WindowVo { ...@@ -339,6 +405,9 @@ public class WindowEntity extends WindowVo {
sb.append(",englishRegion:").append(getEnglishRegion()); sb.append(",englishRegion:").append(getEnglishRegion());
sb.append(",fromnum:").append(getFromnum()); sb.append(",fromnum:").append(getFromnum());
sb.append(",hongqi:").append(getHongqi()); sb.append(",hongqi:").append(getHongqi());
sb.append(",duty:").append(getDuty());
sb.append(",dutyContent:").append(getDutyContent());
sb.append(",dutyEnglish:").append(getDutyEnglish());
sb.append(",summary:").append(getSummary()); sb.append(",summary:").append(getSummary());
sb.append(",building:").append(getBuilding()); sb.append(",building:").append(getBuilding());
sb.append(",level:").append(getLevel()); sb.append(",level:").append(getLevel());
...@@ -351,7 +420,7 @@ public class WindowEntity extends WindowVo { ...@@ -351,7 +420,7 @@ public class WindowEntity extends WindowVo {
this.siteName = ""; this.siteName = "";
this.deptId = 0L; this.deptId = null;
this.deptName = ""; this.deptName = "";
...@@ -367,6 +436,12 @@ public class WindowEntity extends WindowVo { ...@@ -367,6 +436,12 @@ public class WindowEntity extends WindowVo {
this.hongqi = 1; this.hongqi = 1;
this.duty = 0;
this.dutyContent = "";
this.dutyEnglish = "";
this.summary = ""; this.summary = "";
this.building = 1; this.building = 1;
......
...@@ -386,7 +386,7 @@ ...@@ -386,7 +386,7 @@
#{item} #{item}
</foreach> </foreach>
</if> </if>
<if test="conditionParamRef.containsKey('idNotList')"> <if test="conditionParamRef.containsKey('idNotList') and conditionParamRef.idNotList.size() > 0">
${_conditionType_} a.id not in ${_conditionType_} a.id not in
<foreach collection="conditionParamRef.idNotList" open="(" close=")" index="index" item="item" separator=","> <foreach collection="conditionParamRef.idNotList" open="(" close=")" index="index" item="item" separator=",">
#{item} #{item}
......
...@@ -77,8 +77,7 @@ client.global.set("App_id", JSON.parse(response.body).data.id); ...@@ -77,8 +77,7 @@ client.global.set("App_id", JSON.parse(response.body).data.id);
%} %}
###自助终端应用查看 ###自助终端应用查看
GET {{baseUrl}}/app/info?id={{App_id}} GET {{baseUrl}}/app/info?id=1
Authorization: {{authToken}}
Accept: application/json Accept: application/json
###自助终端应用编辑 ###自助终端应用编辑
......
...@@ -20,11 +20,9 @@ POST {{baseUrl}}/matter/list ...@@ -20,11 +20,9 @@ POST {{baseUrl}}/matter/list
Content-Type: application/json Content-Type: application/json
{ {
"siteId": "", "siteId": 1,
"matterName": "%对墓穴占地面积超过标准的处罚%",
"deptCode":"",
"page": 1, "page": 1,
"size": 10 "size": 100
} }
###微官网事项列表 ###微官网事项列表
......
...@@ -4,10 +4,10 @@ POST {{baseUrl}}/site/business/list ...@@ -4,10 +4,10 @@ POST {{baseUrl}}/site/business/list
Content-Type: application/json Content-Type: application/json
{ {
"idNotList": [11,12,17,18,19,20], "idNotList": [11,18,17,14,27,26],
"siteId": 1, "siteId": 1,
"page":1, "page":1,
"size":5 "size":10
} }
###站点业务列表 ###站点业务列表
......
###站点列表 ###站点列表
POST {{baseUrl}}/site/list POST {{baseUrl}}/site/list
Authorization: {{authToken}}
Content-Type: application/json Content-Type: application/json
{ {
......
...@@ -6,7 +6,8 @@ Content-Type: application/json ...@@ -6,7 +6,8 @@ Content-Type: application/json
{ {
"siteId":1, "siteId":1,
"page":1, "page":1,
"size":-1 "matterName":"加处罚款",
"size":10
} }
......
...@@ -77,6 +77,11 @@ Content-Type: application/json ...@@ -77,6 +77,11 @@ Content-Type: application/json
{} {}
###testre
POST {{baseUrl}}/test/reEventShow
Content-Type: application/json
{}
###短信设置编辑 ###短信设置编辑
......
...@@ -4,9 +4,11 @@ POST {{baseUrl}}/window/list ...@@ -4,9 +4,11 @@ POST {{baseUrl}}/window/list
Content-Type: application/json Content-Type: application/json
{ {
"siteId":8, "siteId":1,
"page":1, "page":1,
"size":10 "size":10,
"name": "",
"fromnum": "1E%"
} }
......
// 只能为数字验证 // 只能为数字验证
export function isNumber (rule, value, callback) { export function isNumber(rule, value, callback) {
var number = /^\d+$/ var number = /^\d+$/;
if (!number.test(value)) { if (!number.test(value)) {
callback(new Error("格式有误,只能为数字")) callback(new Error("格式有误,只能为数字"));
} else { } else {
callback() callback();
} }
} }
// 验证流水编号 // 验证流水编号
export const checkFlowNum = (rule,value,callback)=>{ export const checkFlowNum = (rule, value, callback) => {
let reg = /^[A-Z][a-zA-Z0-9]{3,32}$/ let reg = /^[A-Z][a-zA-Z0-9]{3,32}$/;
if(!value){ if (!value) {
callback(new Error('请输入流水编号')) callback(new Error("请输入流水编号"));
}else if(!reg.test(value)){ } else if (!reg.test(value)) {
callback(new Error('格式为大写字母开头,4~32位')) callback(new Error("格式为大写字母开头,4~32位"));
}else{ } else {
callback() callback();
} }
} };
// 验证英文 // 验证英文
export const checkEn = (rule,value,callback)=>{ export const checkEn = (rule, value, callback) => {
let reg = /^[a-zA-Z]{2,15}$/ let reg = /^[a-zA-Z]{2,15}$/;
if(!value){ if (!value) {
callback(new Error('请输入英文名称')) callback(new Error("请输入英文名称"));
}else if(!reg.test(value)){ } else if (!reg.test(value)) {
callback(new Error('格式为字母a-z,A-Z,2~15位')) callback(new Error("格式为字母a-z,A-Z,2~15位"));
}else{ } else {
callback() callback();
} }
} };
// 验证账号 // 验证账号
export const changeAccount = (rule, value, callback) => { export const changeAccount = (rule, value, callback) => {
if (!value) { if (!value) {
...@@ -45,8 +45,8 @@ export const changeAccount = (rule, value, callback) => { ...@@ -45,8 +45,8 @@ export const changeAccount = (rule, value, callback) => {
export const changePassWord = (rule, value, callback) => { export const changePassWord = (rule, value, callback) => {
if (!value) { if (!value) {
callback(new Error("请输入密码")); callback(new Error("请输入密码"));
} else if (!/^[a-zA-Z0-9_-]{5,18}$/.test(value)) { } else if (!/^[a-zA-Z0-9_!@#$%^&*`~()-+=]{5,18}$/.test(value)) {
callback(new Error("5到18位(字母,数字,下划线,中横线)")); callback(new Error("5到18位(字母、数字、特殊字符)"));
} else { } else {
callback(); callback();
} }
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<a-tabs v-model="tabsActive" @change="tabsChange" :forceRender="false"> <a-tabs v-model="tabsActive" @change="tabsChange" :forceRender="false">
<a-tab-pane <a-tab-pane
:key="item.path" :key="item.path"
v-for="(item, index) of tabsList['children']" v-for="item of tabsList['children']"
:tab="item['meta']['title']" :tab="item['meta']['title']"
> >
</a-tab-pane> </a-tab-pane>
......
This diff is collapsed.
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