Merge branch 'main' of https://dd3skj.picp.vip/JyuHsin/zhgh_jshvc
This commit is contained in:
+3
-1
@@ -376,7 +376,9 @@ public class ActivityBasicScopeController {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())){
|
||||||
|
cnd.andEX("u.unionid", "=", SecurityUtil.getUnionId());
|
||||||
|
}
|
||||||
cnd.andEX("u.unionid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnionId());
|
cnd.andEX("u.unionid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnionId());
|
||||||
cnd.andEX("u.unitid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnitId());
|
cnd.andEX("u.unitid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnitId());
|
||||||
cnd.andEX("u.personType", IN_OR_NIN_OP, activityUserScopePageParam.getPersonTypes());
|
cnd.andEX("u.personType", IN_OR_NIN_OP, activityUserScopePageParam.getPersonTypes());
|
||||||
|
|||||||
+1
@@ -140,6 +140,7 @@ public class ActivityCultureApplyActivityController {
|
|||||||
Dict args = Dict.create();
|
Dict args = Dict.create();
|
||||||
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
||||||
args.set(FlowConst.FORM_DATA, tissue);
|
args.set(FlowConst.FORM_DATA, tissue);
|
||||||
|
args.set("activity_type", tissue.getActivity_type());
|
||||||
ProcessInstance instance = flowEngine.startProcessInstanceByKey("WHHD", tissue.getId(), SecurityUtil.getUserId(), args);
|
ProcessInstance instance = flowEngine.startProcessInstanceByKey("WHHD", tissue.getId(), SecurityUtil.getUserId(), args);
|
||||||
|
|
||||||
// 自动完成第一个申请任务
|
// 自动完成第一个申请任务
|
||||||
|
|||||||
+5
-1
@@ -102,7 +102,11 @@ public class ActivityCultureAuditActivityController {
|
|||||||
LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10
|
LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10
|
||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
cnd.and("t.taskName", "=", "76a03838-caa4-4561-ba0f-0da0d3a17c37");
|
if (activity_type==40002){
|
||||||
|
cnd.and("t.taskName", "=", "12f7ed7d-9286-4453-8754-57df7d3b260b");
|
||||||
|
}else{
|
||||||
|
cnd.and("t.taskName", "=", "76a03838-caa4-4561-ba0f-0da0d3a17c37");
|
||||||
|
}
|
||||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||||
|
|
||||||
cnd.andEX("YEAR(tissue.startTime)", "=", year);
|
cnd.andEX("YEAR(tissue.startTime)", "=", year);
|
||||||
|
|||||||
+1
-1
@@ -145,7 +145,7 @@ public class ActivityDeclareMineController {
|
|||||||
|
|
||||||
@At
|
@At
|
||||||
@ApiOperation("活动申报,查看活动申报")
|
@ApiOperation("活动申报,查看活动申报")
|
||||||
@SaCheckPermission("activityDeclare.mine")
|
@SaCheckPermission("activityDeclare")
|
||||||
public Result findOne(@Valid String id) {
|
public Result findOne(@Valid String id) {
|
||||||
ActivityDeclareInfo info = dao.fetch(ActivityDeclareInfo.class, id);
|
ActivityDeclareInfo info = dao.fetch(ActivityDeclareInfo.class, id);
|
||||||
return Result.success().addData(info);
|
return Result.success().addData(info);
|
||||||
|
|||||||
+8
-2
@@ -13,6 +13,7 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Sqls;
|
import org.nutz.dao.Sqls;
|
||||||
import org.nutz.dao.sql.Sql;
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
@@ -94,8 +95,6 @@ public class ActivityDeclareSchoolUnionController {
|
|||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
pageParam.buildSearch(cnd, "info.");
|
|
||||||
|
|
||||||
cnd.and("t.taskName", "=", "81428a9b-63c0-44b8-a28c-17d282c2cc8e");
|
cnd.and("t.taskName", "=", "81428a9b-63c0-44b8-a28c-17d282c2cc8e");
|
||||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||||
|
|
||||||
@@ -105,6 +104,13 @@ public class ActivityDeclareSchoolUnionController {
|
|||||||
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
|
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (StrUtil.isNotBlank(pageParam.getSearchKeyword())) {
|
||||||
|
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||||
|
seg.orLike("info.userName", pageParam.getSearchKeyword());
|
||||||
|
seg.orLike("info.loginName", pageParam.getSearchKeyword());
|
||||||
|
cnd.and(seg);
|
||||||
|
}
|
||||||
|
|
||||||
if (StrUtil.isAllBlank(pageParam.getPageOrderName(), pageParam.getPageOrderBy())) {
|
if (StrUtil.isAllBlank(pageParam.getPageOrderName(), pageParam.getPageOrderBy())) {
|
||||||
cnd.desc("info.applyTime");
|
cnd.desc("info.applyTime");
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+2
-2
@@ -145,8 +145,8 @@ public class ActivityWorksCollectionReadController {
|
|||||||
cnd.andEX("up.activityId", "=", pageForm.getActivityId());
|
cnd.andEX("up.activityId", "=", pageForm.getActivityId());
|
||||||
cnd.andEX("up.subjectId", "=", pageForm.getSubjectId());
|
cnd.andEX("up.subjectId", "=", pageForm.getSubjectId());
|
||||||
cnd.andEX("up.worksId", "=", pageForm.getWorksId());
|
cnd.andEX("up.worksId", "=", pageForm.getWorksId());
|
||||||
cnd.andEX("unionId", "=", pageForm.getUnionId());
|
cnd.andEX("up.unionId", "=", pageForm.getUnionId());
|
||||||
cnd.andEX("unitId", "=", pageForm.getUnitId());
|
cnd.andEX("up.unitId", "=", pageForm.getUnitId());
|
||||||
if (StrUtil.isAllNotBlank(pageForm.getSearchKeyword())) {
|
if (StrUtil.isAllNotBlank(pageForm.getSearchKeyword())) {
|
||||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||||
seg.orLike("userName", pageForm.getSearchKeyword());
|
seg.orLike("userName", pageForm.getSearchKeyword());
|
||||||
|
|||||||
+1
-1
@@ -48,7 +48,7 @@ public class BlessingUserController {
|
|||||||
FROM
|
FROM
|
||||||
blessing_user blu
|
blessing_user blu
|
||||||
LEFT JOIN blessing bl ON bl.id = blu.blessingId
|
LEFT JOIN blessing bl ON bl.id = blu.blessingId
|
||||||
LEFT JOIN `user` u ON u.id = blu.userId
|
LEFT JOIN `vw_user` u ON u.id = blu.userId
|
||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
if (Strings.isNotBlank(pageForm.getSearchKeyword()) && Strings.isNotBlank(pageForm.getSearchName())) {
|
if (Strings.isNotBlank(pageForm.getSearchKeyword()) && Strings.isNotBlank(pageForm.getSearchName())) {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="signature-wrap">
|
<div class="signature-wrap">
|
||||||
<canvas id="canvas"></canvas>
|
<canvas id="canvas"></canvas>
|
||||||
<div class="action-buttons">
|
<div :class="isLikelyMobile() ? 'action-buttons' : 'action-buttons pc-action-buttons'">
|
||||||
<button @click="clear" class="action-button-danger" type="button">清空</button>
|
<button @click="clear" class="action-button-danger" type="button">清空</button>
|
||||||
<button @click="undo" class="action-button-warning" type="button">撤销</button>
|
<button @click="undo" class="action-button-warning" type="button">撤销</button>
|
||||||
<button @click="save" class="action-button-primary" type="button">确定</button>
|
<button @click="save" class="action-button-primary" type="button">确定</button>
|
||||||
@@ -48,6 +48,13 @@ module.exports = {
|
|||||||
rotate() {
|
rotate() {
|
||||||
signature.getRotateCanvas(90)
|
signature.getRotateCanvas(90)
|
||||||
},
|
},
|
||||||
|
isLikelyMobile() {
|
||||||
|
const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;
|
||||||
|
const isSmallScreen = window.screen.width <= 768;
|
||||||
|
const hasMobileUA = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
||||||
|
|
||||||
|
return hasMobileUA || (isTouchDevice && isSmallScreen);
|
||||||
|
},
|
||||||
save() {
|
save() {
|
||||||
if (signature.isEmpty()) {
|
if (signature.isEmpty()) {
|
||||||
alert("请签字后再保存")
|
alert("请签字后再保存")
|
||||||
@@ -56,7 +63,11 @@ module.exports = {
|
|||||||
// const png = signature.getPNG()
|
// const png = signature.getPNG()
|
||||||
//旋转一下 横过来
|
//旋转一下 横过来
|
||||||
const rotateCanvas = signature.getRotateCanvas(-90)
|
const rotateCanvas = signature.getRotateCanvas(-90)
|
||||||
this.$emit("save", rotateCanvas.toDataURL())
|
if (this.isLikelyMobile()) {
|
||||||
|
this.$emit("save", rotateCanvas.toDataURL())
|
||||||
|
} else {
|
||||||
|
this.$emit("save", signature.toDataURL())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@@ -110,6 +121,13 @@ module.exports = {
|
|||||||
row-gap: 20px;
|
row-gap: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.signature-wrap .pc-action-buttons {
|
||||||
|
bottom: 50px;
|
||||||
|
right: 50px;
|
||||||
|
left: unset;
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
|
||||||
.action-buttons button {
|
.action-buttons button {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|||||||
@@ -1,96 +1,109 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-card shadow="never" class="pc-signature-card">
|
<el-card shadow="never" class="pc-signature-card">
|
||||||
<div class="pc-signature">
|
<div class="pc-signature">
|
||||||
<el-link type="primary">扫描下方二维码进行签字</el-link>
|
<el-link type="primary">扫描下方二维码进行签字</el-link>
|
||||||
<div class="signature-body">
|
<div class="signature-body" v-loading="loading">
|
||||||
<QrCode v-if="!signatureContent" :options="{ width: 126 }" :value="signatureAddress" class="signature-qrcode"></QrCode>
|
<QrCode v-if="!signatureContent" :options="{ width: 126 }" :value="signatureAddress"
|
||||||
<el-image v-if="signatureContent" :src="signatureContent" class="signature-image"></el-image>
|
class="signature-qrcode"></QrCode>
|
||||||
</div>
|
<el-image v-if="signatureContent" :src="signatureContent" class="signature-image"></el-image>
|
||||||
<el-link type="danger" icon="el-icon-edit" @click="signatureAgain" v-if="signatureContent">重签</el-link>
|
</div>
|
||||||
</div>
|
<el-link type="danger" icon="el-icon-edit" @click="signatureAgain" v-if="signatureContent">重签</el-link>
|
||||||
</el-card>
|
</div>
|
||||||
|
</el-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "sysSignaturePc",
|
name: "sysSignaturePc",
|
||||||
store,
|
store,
|
||||||
props: {
|
props: {
|
||||||
value: {
|
value: {
|
||||||
type: String,
|
type: String,
|
||||||
default: ""
|
default: ""
|
||||||
}
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
value: {
|
|
||||||
handler(val) {
|
|
||||||
if(val){
|
|
||||||
this.signatureContent = val
|
|
||||||
this.$emit("input", this.signatureContent)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
immediate: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
//前端唯一标识 当然后端还有用户id作为唯一标识
|
|
||||||
id: new Date().getTime() + Math.floor(Math.random() * 10000) + 1,
|
|
||||||
signatureAddress: null,
|
|
||||||
interval: null,
|
|
||||||
signatureContent: null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
async init() {
|
|
||||||
const { code, data } = await this.$axios.post("/platform/signature/get")
|
|
||||||
if (code === 0) {
|
|
||||||
this.signatureContent = data && data.signature
|
|
||||||
this.$emit("input", this.signatureContent)
|
|
||||||
}
|
|
||||||
this.signatureAddress = origin + "/platform/signature/scanPcCode?id=" + this.id
|
|
||||||
console.log(this.signatureAddress)
|
|
||||||
},
|
|
||||||
signatureAgain() {
|
|
||||||
const val = sessionStorage.getItem("h5-scan-code-signature-" + this.id)
|
|
||||||
this.signatureContent = val
|
|
||||||
this.$emit("input", val)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.init()
|
|
||||||
webSocketPubSub.subscribe("h5-scan-code-signature", (data) => {
|
|
||||||
console.info("ws:收到签字成功消息:", data)
|
|
||||||
this.signatureContent = data.value
|
|
||||||
this.$emit("input", data.value)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
value: {
|
||||||
|
handler(val) {
|
||||||
|
if (val) {
|
||||||
|
this.signatureContent = val
|
||||||
|
this.$emit("input", this.signatureContent)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
immediate: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
//前端唯一标识 当然后端还有用户id作为唯一标识
|
||||||
|
id: new Date().getTime() + Math.floor(Math.random() * 10000) + 1,
|
||||||
|
signatureAddress: null,
|
||||||
|
interval: null,
|
||||||
|
signatureContent: null,
|
||||||
|
loading: true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async init() {
|
||||||
|
const {code, data} = await this.$axios.post("/platform/signature/get")
|
||||||
|
if (code === 0) {
|
||||||
|
this.signatureContent = data && data.signature
|
||||||
|
this.$emit("input", this.signatureContent)
|
||||||
|
}
|
||||||
|
this.signatureAddress = origin + "/platform/signature/scanPcCode?id=" + this.id
|
||||||
|
},
|
||||||
|
signatureAgain() {
|
||||||
|
const val = sessionStorage.getItem("h5-scan-code-signature-" + this.id)
|
||||||
|
this.signatureContent = val
|
||||||
|
this.$emit("input", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async mounted() {
|
||||||
|
await this.init()
|
||||||
|
webSocketPubSub.subscribe("h5-scan-code-signature", (data) => {
|
||||||
|
console.info("ws:收到签字成功消息:", data)
|
||||||
|
this.signatureContent = data.value
|
||||||
|
this.$emit("input", data.value)
|
||||||
|
})
|
||||||
|
|
||||||
|
// 可选:轮询或 watch ready 状态
|
||||||
|
const checkReady = () => {
|
||||||
|
if (webSocketPubSub.ws && webSocketPubSub.ws.readyState === WebSocket.OPEN) {
|
||||||
|
console.info("ws.readyState is open");
|
||||||
|
this.loading = false;
|
||||||
|
console.log(this.signatureAddress)
|
||||||
|
} else {
|
||||||
|
setTimeout(checkReady, 100);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
checkReady();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.pc-signature-card {
|
.pc-signature-card {
|
||||||
border: 1px solid var(--border-color-base);
|
border: 1px solid var(--border-color-base);
|
||||||
}
|
}
|
||||||
|
|
||||||
.pc-signature {
|
.pc-signature {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
row-gap: 20px;
|
row-gap: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.signature-body {
|
.signature-body {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.signature-qrcode {
|
.signature-qrcode {
|
||||||
transition: opacity 0.5s ease;
|
transition: opacity 0.5s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.signature-image {
|
.signature-image {
|
||||||
height: 100px;
|
height: 100px;
|
||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -31,9 +31,9 @@
|
|||||||
<link rel="stylesheet" href="${base!}/assets/platform/css/common.css" />
|
<link rel="stylesheet" href="${base!}/assets/platform/css/common.css" />
|
||||||
|
|
||||||
<!-- import Jquery -->
|
<!-- import Jquery -->
|
||||||
<script src="${base!}/assets/platform/plugins/jquery/jquery.js"></script>
|
<script src="${base!}/assets/platform/plugins/jquery/jquery-high.min.js"></script>
|
||||||
<!-- pjax是异步加载html片段的工具,模拟前端路由机制 -->
|
<!-- pjax是异步加载html片段的工具,模拟前端路由机制 -->
|
||||||
<script src="${base!}/assets/platform/plugins/pjax/jquery.pjax.js"></script>
|
<script src="${base!}/assets/platform/plugins/pjax/jquery.pjax-high.min.js"></script>
|
||||||
<!-- nprogress 配合pjax使用 -->
|
<!-- nprogress 配合pjax使用 -->
|
||||||
<link rel="stylesheet" href="${base!}/assets/platform/plugins/nprogress/nprogress.css" />
|
<link rel="stylesheet" href="${base!}/assets/platform/plugins/nprogress/nprogress.css" />
|
||||||
<script src="${base!}/assets/platform/plugins/nprogress/nprogress.js"></script>
|
<script src="${base!}/assets/platform/plugins/nprogress/nprogress.js"></script>
|
||||||
@@ -100,9 +100,28 @@
|
|||||||
|
|
||||||
<script src="https://map.qq.com/api/gljs?v=2.exp&key=MLLBZ-GQECI-ASXG7-5GNOZ-XW2OF-H5BVH"></script>
|
<script src="https://map.qq.com/api/gljs?v=2.exp&key=MLLBZ-GQECI-ASXG7-5GNOZ-XW2OF-H5BVH"></script>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script>
|
||||||
window._AMapSecurityConfig = {
|
// 在加载 lodash 后、使用前插入
|
||||||
securityJsCode: "4fa1e1aeabba7eb9518129cf57ab17c1"
|
const originalDefaultsDeep = window._.defaultsDeep;
|
||||||
|
window._.defaultsDeep = function(...args) {
|
||||||
|
// 先对所有参数做原型污染清洗
|
||||||
|
const cleanArgs = args.map(arg => sanitizeForPrototypePollution(arg));
|
||||||
|
return originalDefaultsDeep.apply(window._, cleanArgs);
|
||||||
|
};
|
||||||
|
|
||||||
|
function sanitizeForPrototypePollution(obj) {
|
||||||
|
if (obj === null || typeof obj !== 'object') return obj;
|
||||||
|
if (Array.isArray(obj)) return obj.map(sanitizeForPrototypePollution);
|
||||||
|
|
||||||
|
const clean = {};
|
||||||
|
for (const key in obj) {
|
||||||
|
if (!Object.hasOwn(obj, key)) continue;
|
||||||
|
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
clean[key] = sanitizeForPrototypePollution(obj[key]);
|
||||||
|
}
|
||||||
|
return clean;
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -168,7 +187,7 @@
|
|||||||
this.isSubscribed = true
|
this.isSubscribed = true
|
||||||
this.sendJoinMessage()
|
this.sendJoinMessage()
|
||||||
}
|
}
|
||||||
}, 2000)
|
}, 1000)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 事件处理
|
// 事件处理
|
||||||
@@ -202,6 +221,7 @@
|
|||||||
// )
|
// )
|
||||||
// 连接建立时不立即发送 join,等待订阅完成
|
// 连接建立时不立即发送 join,等待订阅完成
|
||||||
this.ping()
|
this.ping()
|
||||||
|
console.info('websocket open success')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,9 +263,9 @@
|
|||||||
if (this.ws.readyState === WebSocket.OPEN) {
|
if (this.ws.readyState === WebSocket.OPEN) {
|
||||||
this.sendJoinMessage()
|
this.sendJoinMessage()
|
||||||
}
|
}
|
||||||
}, 1000)
|
}, 500)
|
||||||
}
|
}
|
||||||
}, 3000) // 延迟3秒重连
|
}, 1000) // 延迟2秒重连
|
||||||
}
|
}
|
||||||
|
|
||||||
// 窗口事件处理
|
// 窗口事件处理
|
||||||
|
|||||||
@@ -100,26 +100,28 @@
|
|||||||
<!-- import jsencrypt-->
|
<!-- import jsencrypt-->
|
||||||
<script src="${base!}/assets/platform/plugins/jsencrypt/jsencrypt.min.js"></script>
|
<script src="${base!}/assets/platform/plugins/jsencrypt/jsencrypt.min.js"></script>
|
||||||
<script>
|
<script>
|
||||||
// 安全地冻结 Object.prototype(跳过不可配置属性)
|
// 在加载 lodash 后、使用前插入
|
||||||
(function () {
|
const originalDefaultsDeep = window._.defaultsDeep;
|
||||||
const badKeys = ['constructor', 'prototype'];
|
window._.defaultsDeep = function(...args) {
|
||||||
for (const key of badKeys) {
|
// 先对所有参数做原型污染清洗
|
||||||
if (key in Object.prototype) {
|
const cleanArgs = args.map(arg => sanitizeForPrototypePollution(arg));
|
||||||
try {
|
return originalDefaultsDeep.apply(window._, cleanArgs);
|
||||||
delete Object.prototype[key];
|
};
|
||||||
} catch (e) {
|
|
||||||
// 忽略无法删除的属性(如 __proto__ 在现代浏览器中不可删除)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 冻结 Object.prototype(如果可能)
|
function sanitizeForPrototypePollution(obj) {
|
||||||
try {
|
if (obj === null || typeof obj !== 'object') return obj;
|
||||||
Object.freeze(Object.prototype);
|
if (Array.isArray(obj)) return obj.map(sanitizeForPrototypePollution);
|
||||||
} catch (e) {
|
|
||||||
// 忽略错误(某些环境可能不允许)
|
const clean = {};
|
||||||
|
for (const key in obj) {
|
||||||
|
if (!Object.hasOwn(obj, key)) continue;
|
||||||
|
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
clean[key] = sanitizeForPrototypePollution(obj[key]);
|
||||||
}
|
}
|
||||||
})();
|
return clean;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
new Vue({
|
new Vue({
|
||||||
|
|||||||
+1
-1
@@ -356,7 +356,7 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if (this.$auth.hasRoleOr(["BRANCH_UNION_WENTI_SPORTS", "UNION_REIMBURSEMENT_MANAGER"])) {
|
if (this.$auth.hasRoleOr(["BRANCH_UNION_WENTI_SPORTS", "BRANCH_UNION_CHAIRMAN"])) {
|
||||||
this.activityDeclareReimbursementList.map(v => {
|
this.activityDeclareReimbursementList.map(v => {
|
||||||
if (["BRANCH_UNION"].includes(v.name)) {
|
if (["BRANCH_UNION"].includes(v.name)) {
|
||||||
activityDeclareReimbursementList.push(v)
|
activityDeclareReimbursementList.push(v)
|
||||||
|
|||||||
+13
-13
@@ -2,18 +2,18 @@
|
|||||||
<el-descriptions :column="2" border>
|
<el-descriptions :column="2" border>
|
||||||
<el-descriptions-item label="活动名称">{{ viewData.activityName }}</el-descriptions-item>
|
<el-descriptions-item label="活动名称">{{ viewData.activityName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="活动类型">{{ getActivityTypeName(viewData.activityType) }}</el-descriptions-item>
|
<el-descriptions-item label="活动类型">{{ getActivityTypeName(viewData.activityType) }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}</el-descriptions-item>
|
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}</el-descriptions-item>
|
||||||
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请协会' : '申请单位'">{{ viewData.declareUnitName }}</el-descriptions-item>
|
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请协会' : '申请单位'">{{ viewData.declareUnitName }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="联系方式">{{ viewData.mobile }}</el-descriptions-item>
|
<el-descriptions-item label="联系方式">{{ viewData.mobile }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="申请时间">{{ viewData.applyTime }}</el-descriptions-item>
|
<el-descriptions-item label="申请时间">{{ viewData.applyTime }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="活动计划时间">{{ viewData.planStartTime + ' ~ ' + viewData.planEndTime }}</el-descriptions-item>
|
<el-descriptions-item label="活动计划时间">{{ viewData.planStartTime + ' ~ ' + viewData.planEndTime }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="活动人数">{{ viewData.activityNumber }}</el-descriptions-item>
|
<el-descriptions-item label="活动人数">{{ viewData.activityNumber }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="活动地址" :span="2">{{ viewData.activityAddress }}</el-descriptions-item>
|
<el-descriptions-item label="活动地址" :span="2">{{ viewData.activityAddress }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="活动预算费用" :span="2">
|
<el-descriptions-item label="活动预算费用" :span="2">
|
||||||
<el-table :data="viewData.budgets" border max-height="500" size="mini" style="width: calc(1200px - 150px - 15%)">
|
<el-table :data="viewData.budgets" border max-height="500" size="mini" style="width: calc(1200px - 150px - 15%)">
|
||||||
<el-table-column label="序号" sortable type="index" width="100"></el-table-column>
|
<el-table-column label="序号" sortable type="index" width="100"></el-table-column>
|
||||||
@@ -21,16 +21,16 @@
|
|||||||
<el-table-column label="预算费用" prop="budgetPrice"></el-table-column>
|
<el-table-column label="预算费用" prop="budgetPrice"></el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="活动方案及简介" :span="2">
|
<el-descriptions-item label="活动方案及简介" :span="2">
|
||||||
<div v-html="viewData.activityContent"></div>
|
<div v-html="viewData.activityContent"></div>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="附件" :span="2">
|
<el-descriptions-item label="附件" :span="2">
|
||||||
<file-preview v-if="viewData.files && viewData.files.length > 0" :files="viewData.files" complete_result></file-preview>
|
<file-preview v-if="viewData.files && viewData.files.length > 0" :files="viewData.files" complete_result></file-preview>
|
||||||
<span v-else>暂无</span>
|
<span v-else>暂无</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="签字" :span="2">
|
<el-descriptions-item label="签字" :span="2">
|
||||||
<el-image v-if="viewData.sign"
|
<el-image v-if="viewData.sign"
|
||||||
:src="viewData.sign"
|
:src="viewData.sign"
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
<span v-else>暂无</span>
|
<span v-else>暂无</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
||||||
<template v-for="task in doneTasks">
|
<template v-for="task in doneTasks">
|
||||||
<div class="task-panel mt10">
|
<div class="task-panel mt10">
|
||||||
<div class="task-panel-header">{{ task.displayName }}</div>
|
<div class="task-panel-header">{{ task.displayName }}</div>
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE" :value="task.ext.submitType"></dict-tag>
|
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE" :value="task.ext.submitType"></dict-tag>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
||||||
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else>
|
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else>
|
||||||
<el-descriptions-item label="办理用户">{{ task.taskFormData.userName }}({{task.taskFormData.loginName}})</el-descriptions-item>
|
<el-descriptions-item label="办理用户">{{ task.taskFormData.userName }}({{task.taskFormData.loginName}})</el-descriptions-item>
|
||||||
<el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>
|
<el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.task-panel-header {
|
.task-panel-header {
|
||||||
background: rgb(250, 250, 250);
|
background: rgb(250, 250, 250);
|
||||||
border: 1px solid rgb(228, 231, 237);
|
border: 1px solid rgb(228, 231, 237);
|
||||||
@@ -123,11 +123,11 @@
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-descriptions-item__label.is-bordered-label {
|
.el-descriptions-item__label.is-bordered-label {
|
||||||
width: 15% !important;
|
width: 15% !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-descriptions-item__label {
|
.el-descriptions-item__label {
|
||||||
width: 15% !important;
|
width: 15% !important;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
const INFO = {
|
var INFO = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<div>
|
<div>
|
||||||
<div class="process-title">申请信息
|
<div class="process-title">申请信息
|
||||||
|
|||||||
+14
-14
@@ -19,7 +19,7 @@
|
|||||||
<el-descriptions-item label="相关数据">
|
<el-descriptions-item label="相关数据">
|
||||||
<el-button size="small" type="primary">查看申报信息</el-button>
|
<el-button size="small" type="primary">查看申报信息</el-button>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="实际活动时间" :span="2">
|
<el-descriptions-item label="实际活动时间" :span="2">
|
||||||
<el-form-item prop="activityTime">
|
<el-form-item prop="activityTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="活动预算费用" :span="2">
|
<el-descriptions-item label="活动预算费用" :span="2">
|
||||||
<el-form-item prop="budgets">
|
<el-form-item prop="budgets">
|
||||||
<el-table :data="formData.budgets" border max-height="500" size="mini" style="width: 100%">
|
<el-table :data="formData.budgets" border max-height="500" size="mini" style="width: 100%">
|
||||||
@@ -122,7 +122,7 @@
|
|||||||
</el-table>
|
</el-table>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="发票" :span="2">
|
<el-descriptions-item label="发票" :span="2">
|
||||||
<el-form-item prop="billFiles">
|
<el-form-item prop="billFiles">
|
||||||
<file-upload :value.sync="formData.billFiles"
|
<file-upload :value.sync="formData.billFiles"
|
||||||
@@ -141,7 +141,7 @@
|
|||||||
complete_result></file-upload>
|
complete_result></file-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="奖品/纪念品/服装/道具等活动人员名单" :span="2">
|
<el-descriptions-item label="奖品/纪念品/服装/道具等活动人员名单" :span="2">
|
||||||
<el-form-item prop="otherFiles">
|
<el-form-item prop="otherFiles">
|
||||||
<file-upload :value.sync="formData.otherFiles"
|
<file-upload :value.sync="formData.otherFiles"
|
||||||
@@ -151,7 +151,7 @@
|
|||||||
complete_result></file-upload>
|
complete_result></file-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="签字" :span="2">
|
<el-descriptions-item label="签字" :span="2">
|
||||||
<el-form-item prop="sign">
|
<el-form-item prop="sign">
|
||||||
<pc-signature v-model="formData.sign"></pc-signature>
|
<pc-signature v-model="formData.sign"></pc-signature>
|
||||||
@@ -159,8 +159,8 @@
|
|||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
|
|
||||||
<snaker-flow-task-form-action @task-action="handleTaskAction" @save-draft="handleSaveDraft"></snaker-flow-task-form-action>
|
<snaker-flow-task-form-action @task-action="handleTaskAction" @save-draft="handleSaveDraft"></snaker-flow-task-form-action>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -179,7 +179,7 @@
|
|||||||
formRules: {
|
formRules: {
|
||||||
id: [{required: true, message: "必填", trigger: ['change', 'blur']}]
|
id: [{required: true, message: "必填", trigger: ['change', 'blur']}]
|
||||||
},
|
},
|
||||||
|
|
||||||
activityOptions: []
|
activityOptions: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -189,15 +189,15 @@
|
|||||||
if (!this.formData.id) {
|
if (!this.formData.id) {
|
||||||
this.$message.warning("请选择活动后才能保存")
|
this.$message.warning("请选择活动后才能保存")
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$refs.formRef.validate((valid) => {
|
this.$refs.formRef.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
|
||||||
if (this.formData.activityTime && this.formData.activityTime.length > 0) {
|
if (this.formData.activityTime && this.formData.activityTime.length > 0) {
|
||||||
this.formData.startTime = this.formData.activityTime[0]
|
this.formData.startTime = this.formData.activityTime[0]
|
||||||
this.formData.endTime = this.formData.activityTime[1]
|
this.formData.endTime = this.formData.activityTime[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.instanceId) {
|
if (!this.instanceId) {
|
||||||
this.handleApply(val)
|
this.handleApply(val)
|
||||||
} else {
|
} else {
|
||||||
@@ -278,7 +278,7 @@
|
|||||||
},
|
},
|
||||||
// 取消
|
// 取消
|
||||||
handleCancel() {
|
handleCancel() {
|
||||||
|
|
||||||
},
|
},
|
||||||
async getCardNumberByPayeeId(row) {
|
async getCardNumberByPayeeId(row) {
|
||||||
const resp = await $.get('/platform/activityReimbursement/apply/getCardNumberByPayeeId', {username:row.username})
|
const resp = await $.get('/platform/activityReimbursement/apply/getCardNumberByPayeeId', {username:row.username})
|
||||||
@@ -296,14 +296,14 @@
|
|||||||
...this.formData,
|
...this.formData,
|
||||||
...data
|
...data
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.planStartTime && data.planEndTime) {
|
if (data.planStartTime && data.planEndTime) {
|
||||||
this.formData.activityTime = [
|
this.formData.activityTime = [
|
||||||
new Date(data.planStartTime),
|
new Date(data.planStartTime),
|
||||||
new Date(data.planEndTime)
|
new Date(data.planEndTime)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async getActivityReimbursementByUser() {
|
async getActivityReimbursementByUser() {
|
||||||
|
|||||||
+17
-17
@@ -2,20 +2,20 @@
|
|||||||
<el-descriptions :column="2" border>
|
<el-descriptions :column="2" border>
|
||||||
<el-descriptions-item label="活动名称">{{ viewData.activityName }}</el-descriptions-item>
|
<el-descriptions-item label="活动名称">{{ viewData.activityName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="活动类型">{{ getActivityTypeName(viewData.activityType) }}</el-descriptions-item>
|
<el-descriptions-item label="活动类型">{{ getActivityTypeName(viewData.activityType) }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}</el-descriptions-item>
|
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}</el-descriptions-item>
|
||||||
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请协会' : '申请单位'">{{ viewData.declareUnitName }}</el-descriptions-item>
|
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请协会' : '申请单位'">{{ viewData.declareUnitName }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="联系方式">{{ viewData.mobile }}</el-descriptions-item>
|
<el-descriptions-item label="联系方式">{{ viewData.mobile }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="申请时间">{{ viewData.applyTime }}</el-descriptions-item>
|
<el-descriptions-item label="申请时间">{{ viewData.applyTime }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="活动计划时间">{{ (viewData.planStartTime ? viewData.planStartTime : '未填写') + ' ~ ' + (viewData.planEndTime ? viewData.planEndTime : '未填写') }}</el-descriptions-item>
|
<el-descriptions-item label="活动计划时间">{{ (viewData.planStartTime ? viewData.planStartTime : '未填写') + ' ~ ' + (viewData.planEndTime ? viewData.planEndTime : '未填写') }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="活动人数">{{ viewData.activityNumber }}</el-descriptions-item>
|
<el-descriptions-item label="活动人数">{{ viewData.activityNumber }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="实际活动时间" :span="2">{{ (viewData.startTime ? viewData.startTime : '未填写') + ' ~ ' + (viewData.endTime ? viewData.endTime : '未填写') }}</el-descriptions-item>
|
<el-descriptions-item label="实际活动时间" :span="2">{{ (viewData.startTime ? viewData.startTime : '未填写') + ' ~ ' + (viewData.endTime ? viewData.endTime : '未填写') }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="活动地址" :span="2">{{ viewData.activityAddress }}</el-descriptions-item>
|
<el-descriptions-item label="活动地址" :span="2">{{ viewData.activityAddress }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="活动预算费用" :span="2">
|
<el-descriptions-item label="活动预算费用" :span="2">
|
||||||
<el-table :data="viewData.budgets" border max-height="500" size="mini" style="width: calc(1200px - 150px - 15%)">
|
<el-table :data="viewData.budgets" border max-height="500" size="mini" style="width: calc(1200px - 150px - 15%)">
|
||||||
<el-table-column label="序号" sortable type="index" fixed></el-table-column>
|
<el-table-column label="序号" sortable type="index" fixed></el-table-column>
|
||||||
@@ -28,31 +28,31 @@
|
|||||||
<el-table-column label="备注" prop="remark"></el-table-column>
|
<el-table-column label="备注" prop="remark"></el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="活动方案及简介" :span="2">
|
<el-descriptions-item label="活动方案及简介" :span="2">
|
||||||
<div v-html="viewData.activityContent"></div>
|
<div v-html="viewData.activityContent"></div>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="附件" :span="2">
|
<el-descriptions-item label="附件" :span="2">
|
||||||
<file-preview v-if="viewData.files && viewData.files.length > 0" :files="viewData.files" complete_result></file-preview>
|
<file-preview v-if="viewData.files && viewData.files.length > 0" :files="viewData.files" complete_result></file-preview>
|
||||||
<span v-else>暂无</span>
|
<span v-else>暂无</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="发票" :span="2">
|
<el-descriptions-item label="发票" :span="2">
|
||||||
<file-preview v-if="viewData.billFiles && viewData.billFiles.length > 0" :files="viewData.billFiles" complete_result></file-preview>
|
<file-preview v-if="viewData.billFiles && viewData.billFiles.length > 0" :files="viewData.billFiles" complete_result></file-preview>
|
||||||
<span v-else>暂无</span>
|
<span v-else>暂无</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="活动报道照片/总结/链接" :span="2">
|
<el-descriptions-item label="活动报道照片/总结/链接" :span="2">
|
||||||
<file-preview v-if="viewData.photoFiles && viewData.photoFiles.length > 0" :files="viewData.photoFiles" complete_result></file-preview>
|
<file-preview v-if="viewData.photoFiles && viewData.photoFiles.length > 0" :files="viewData.photoFiles" complete_result></file-preview>
|
||||||
<span v-else>暂无</span>
|
<span v-else>暂无</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="奖品/纪念品/服装/道具等活动人员名单" :span="2">
|
<el-descriptions-item label="奖品/纪念品/服装/道具等活动人员名单" :span="2">
|
||||||
<file-preview v-if="viewData.otherFiles && viewData.otherFiles.length > 0" :files="viewData.otherFiles" complete_result></file-preview>
|
<file-preview v-if="viewData.otherFiles && viewData.otherFiles.length > 0" :files="viewData.otherFiles" complete_result></file-preview>
|
||||||
<span v-else>暂无</span>
|
<span v-else>暂无</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="签字" :span="2">
|
<el-descriptions-item label="签字" :span="2">
|
||||||
<el-image v-if="viewData.sign"
|
<el-image v-if="viewData.sign"
|
||||||
:src="viewData.sign"
|
:src="viewData.sign"
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
<span v-else>暂无</span>
|
<span v-else>暂无</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
||||||
<template v-for="task in doneTasks">
|
<template v-for="task in doneTasks">
|
||||||
<div class="task-panel mt10">
|
<div class="task-panel mt10">
|
||||||
<div class="task-panel-header">{{ task.displayName }}</div>
|
<div class="task-panel-header">{{ task.displayName }}</div>
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE" :value="task.ext.submitType"></dict-tag>
|
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE" :value="task.ext.submitType"></dict-tag>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
||||||
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else>
|
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else>
|
||||||
<el-descriptions-item label="办理用户">{{ task.taskFormData.userName }}({{task.taskFormData.loginName}})</el-descriptions-item>
|
<el-descriptions-item label="办理用户">{{ task.taskFormData.userName }}({{task.taskFormData.loginName}})</el-descriptions-item>
|
||||||
<el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>
|
<el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.task-panel-header {
|
.task-panel-header {
|
||||||
background: rgb(250, 250, 250);
|
background: rgb(250, 250, 250);
|
||||||
border: 1px solid rgb(228, 231, 237);
|
border: 1px solid rgb(228, 231, 237);
|
||||||
@@ -141,11 +141,11 @@
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-descriptions-item__label.is-bordered-label {
|
.el-descriptions-item__label.is-bordered-label {
|
||||||
width: 15% !important;
|
width: 15% !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-descriptions-item__label {
|
.el-descriptions-item__label {
|
||||||
width: 15% !important;
|
width: 15% !important;
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-20
@@ -7,7 +7,7 @@ layout("/layouts/platform.html"){
|
|||||||
padding: 20px 80px;
|
padding: 20px 80px;
|
||||||
border-bottom: 10px solid rgb(240, 240, 240);
|
border-bottom: 10px solid rgb(240, 240, 240);
|
||||||
}
|
}
|
||||||
|
|
||||||
.top_title {
|
.top_title {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: #808492;
|
color: #808492;
|
||||||
@@ -15,11 +15,11 @@ layout("/layouts/platform.html"){
|
|||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top_num {
|
.top_num {
|
||||||
font-size: 26px;
|
font-size: 26px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cut-off-line {
|
.cut-off-line {
|
||||||
width: 1px;
|
width: 1px;
|
||||||
height: 70%;
|
height: 70%;
|
||||||
@@ -30,11 +30,11 @@ layout("/layouts/platform.html"){
|
|||||||
margin: auto;
|
margin: auto;
|
||||||
background-color: rgb(230, 230, 230);
|
background-color: rgb(230, 230, 230);
|
||||||
}
|
}
|
||||||
|
|
||||||
.year input {
|
.year input {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chartTitle {
|
.chartTitle {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: #808492;
|
color: #808492;
|
||||||
@@ -87,14 +87,14 @@ layout("/layouts/platform.html"){
|
|||||||
<el-col :span="4" style="position: relative">
|
<el-col :span="4" style="position: relative">
|
||||||
<div class="top_title">校工会活动报销费用(元)
|
<div class="top_title">校工会活动报销费用(元)
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="top_num">{{numData.schoolActivityMoney?numData.schoolActivityMoney:'0'}}</div>
|
<div class="top_num">{{numData.schoolActivityMoney?numData.schoolActivityMoney:'0'}}</div>
|
||||||
<div class="cut-off-line"></div>
|
<div class="cut-off-line"></div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4" style="position: relative">
|
<el-col :span="4" style="position: relative">
|
||||||
<div class="top_title">分工会活动报销费用(元)
|
<div class="top_title">分工会活动报销费用(元)
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="top_num">{{numData.unionActivityMoney?numData.unionActivityMoney:'0'}}</div>
|
<div class="top_num">{{numData.unionActivityMoney?numData.unionActivityMoney:'0'}}</div>
|
||||||
<div class="cut-off-line"></div>
|
<div class="cut-off-line"></div>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -105,7 +105,7 @@ layout("/layouts/platform.html"){
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-row style="padding: 30px 0;border-bottom: 10px solid rgb(240, 240, 240)">
|
<el-row style="padding: 30px 0;border-bottom: 10px solid rgb(240, 240, 240)">
|
||||||
<div style="position: absolute;top: 25px;right: 40px;z-index: 200">
|
<div style="position: absolute;top: 25px;right: 40px;z-index: 200">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@@ -141,7 +141,7 @@ layout("/layouts/platform.html"){
|
|||||||
<div id="activityTypePieChart" style="width: 100%;height: 330px;"></div>
|
<div id="activityTypePieChart" style="width: 100%;height: 330px;"></div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row style="padding: 30px 0;border-bottom: 10px solid rgb(240, 240, 240)">
|
<el-row style="padding: 30px 0;border-bottom: 10px solid rgb(240, 240, 240)">
|
||||||
<div style="position: absolute;top: 25px;right: 40px;z-index: 2000">
|
<div style="position: absolute;top: 25px;right: 40px;z-index: 2000">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@@ -177,8 +177,8 @@ layout("/layouts/platform.html"){
|
|||||||
<div id="activityJfPieChart" style="width: 100%;height: 330px;"></div>
|
<div id="activityJfPieChart" style="width: 100%;height: 330px;"></div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
|
|
||||||
<el-row style="padding: 30px 0;border-bottom: 10px solid rgb(240, 240, 240)">
|
<el-row style="padding: 30px 0;border-bottom: 10px solid rgb(240, 240, 240)">
|
||||||
<div style="position: absolute;top: 25px;right: 40px;z-index: 999">
|
<div style="position: absolute;top: 25px;right: 40px;z-index: 999">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@@ -201,8 +201,8 @@ layout("/layouts/platform.html"){
|
|||||||
<div id="allUnionChart" style="width: 100%;height: 300px;"></div>
|
<div id="allUnionChart" style="width: 100%;height: 300px;"></div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
|
|
||||||
<el-row style="padding: 30px 0;border-bottom: 10px solid rgb(240, 240, 240)">
|
<el-row style="padding: 30px 0;border-bottom: 10px solid rgb(240, 240, 240)">
|
||||||
<div style="position: absolute;top: 25px;right: 40px;z-index: 999">
|
<div style="position: absolute;top: 25px;right: 40px;z-index: 999">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@@ -225,7 +225,7 @@ layout("/layouts/platform.html"){
|
|||||||
<div id="allClubChart" style="width: 100%;height: 300px;"></div>
|
<div id="allClubChart" style="width: 100%;height: 300px;"></div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -255,12 +255,12 @@ layout("/layouts/platform.html"){
|
|||||||
startYear: new Date().getFullYear() - 2 + '',
|
startYear: new Date().getFullYear() - 2 + '',
|
||||||
endYear: new Date().getFullYear() + '',
|
endYear: new Date().getFullYear() + '',
|
||||||
},
|
},
|
||||||
|
|
||||||
all_union_loading: false,
|
all_union_loading: false,
|
||||||
unionTip:'分工会活动数',
|
unionTip:'分工会活动数',
|
||||||
allUnionYear: moment().format('YYYY'),
|
allUnionYear: moment().format('YYYY'),
|
||||||
isUnionJf:true,
|
isUnionJf:true,
|
||||||
|
|
||||||
all_club_loading: false,
|
all_club_loading: false,
|
||||||
clubTip:'协会活动数',
|
clubTip:'协会活动数',
|
||||||
allClubYear: moment().format('YYYY'),
|
allClubYear: moment().format('YYYY'),
|
||||||
@@ -295,7 +295,7 @@ layout("/layouts/platform.html"){
|
|||||||
"yField": "num",
|
"yField": "num",
|
||||||
"seriesField": "type",
|
"seriesField": "type",
|
||||||
}
|
}
|
||||||
|
|
||||||
const plot = new G2Plot.Column(document.getElementById("activityTypeChart"), {
|
const plot = new G2Plot.Column(document.getElementById("activityTypeChart"), {
|
||||||
data,
|
data,
|
||||||
...config,
|
...config,
|
||||||
@@ -341,7 +341,7 @@ layout("/layouts/platform.html"){
|
|||||||
...config,
|
...config,
|
||||||
});
|
});
|
||||||
this.activityTypePieChart.render();
|
this.activityTypePieChart.render();
|
||||||
|
|
||||||
}
|
}
|
||||||
this.activity_type_pie_loading = false
|
this.activity_type_pie_loading = false
|
||||||
},
|
},
|
||||||
@@ -364,7 +364,7 @@ layout("/layouts/platform.html"){
|
|||||||
"yField": "num",
|
"yField": "num",
|
||||||
"seriesField": "type",
|
"seriesField": "type",
|
||||||
}
|
}
|
||||||
|
|
||||||
const plot = new G2Plot.Column(document.getElementById("activityJfChart"), {
|
const plot = new G2Plot.Column(document.getElementById("activityJfChart"), {
|
||||||
data,
|
data,
|
||||||
...config,
|
...config,
|
||||||
@@ -410,7 +410,7 @@ layout("/layouts/platform.html"){
|
|||||||
...config,
|
...config,
|
||||||
});
|
});
|
||||||
this.activityJfPieChart.render();
|
this.activityJfPieChart.render();
|
||||||
|
|
||||||
}
|
}
|
||||||
this.activity_jf_pie_loading = false
|
this.activity_jf_pie_loading = false
|
||||||
},
|
},
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
const INFO = {
|
var INFO = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<div>
|
<div>
|
||||||
<div class="process-title">申请信息
|
<div class="process-title">申请信息
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const info = {
|
var info = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<div>
|
<div>
|
||||||
<el-tabs>
|
<el-tabs>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const info = {
|
var info = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<div>
|
<div>
|
||||||
<el-tabs>
|
<el-tabs>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const info = {
|
var info = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<div>
|
<div>
|
||||||
<el-tabs>
|
<el-tabs>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const info = {
|
var info = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<div>
|
<div>
|
||||||
<el-tabs>
|
<el-tabs>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ layout("/layouts/platform.html"){
|
|||||||
value-format="yyyy">
|
value-format="yyyy">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<search-item label="活动">
|
<search-item label="活动">
|
||||||
<el-cascader
|
<el-cascader
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
@@ -202,7 +202,7 @@ layout("/layouts/platform.html"){
|
|||||||
if (activityDate && activityDate.length > 0) {
|
if (activityDate && activityDate.length > 0) {
|
||||||
activityDate1 = JSON.stringify(activityDate)
|
activityDate1 = JSON.stringify(activityDate)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$downLoad(loc() + "/exportExcel", {
|
this.$downLoad(loc() + "/exportExcel", {
|
||||||
hdid: hdid,
|
hdid: hdid,
|
||||||
unionId: unionId,
|
unionId: unionId,
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ layout("/layouts/platform.html"){
|
|||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
<guava ref="guava">
|
<guava ref="guava">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
|
|
||||||
<search @search="doSearch">
|
<search @search="doSearch">
|
||||||
<search-item label="年份">
|
<search-item label="年份">
|
||||||
<el-date-picker style="width: 100%"
|
<el-date-picker style="width: 100%"
|
||||||
@@ -19,7 +19,7 @@ layout("/layouts/platform.html"){
|
|||||||
placeholder="选择年">
|
placeholder="选择年">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<search-item label="活动">
|
<search-item label="活动">
|
||||||
<el-cascader
|
<el-cascader
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
@@ -29,13 +29,13 @@ layout("/layouts/platform.html"){
|
|||||||
:props="{ checkStrictly: true,emitPath:false}"
|
:props="{ checkStrictly: true,emitPath:false}"
|
||||||
:clearable="false"></el-cascader>
|
:clearable="false"></el-cascader>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<search-item label="姓名工号">
|
<search-item label="姓名工号">
|
||||||
<el-input placeholder="请输入姓名或工号查询" clearable v-model="pageForm.searchKeyword"
|
<el-input placeholder="请输入姓名或工号查询" clearable v-model="pageForm.searchKeyword"
|
||||||
style="width: 100%" @keyup.enter.native="doSearch">
|
style="width: 100%" @keyup.enter.native="doSearch">
|
||||||
</el-input>
|
</el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')">
|
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')">
|
||||||
<search-item label="所属工会">
|
<search-item label="所属工会">
|
||||||
<el-select @change="unionChange" clearable filterable style="width: 100%"
|
<el-select @change="unionChange" clearable filterable style="width: 100%"
|
||||||
@@ -48,7 +48,7 @@ layout("/layouts/platform.html"){
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<search-item label="所属单位">
|
<search-item label="所属单位">
|
||||||
<el-select @change="doSearch" clearable filterable style="width: 100%"
|
<el-select @change="doSearch" clearable filterable style="width: 100%"
|
||||||
placeholder="请选择所属单位" v-model="pageForm.unitId">
|
placeholder="请选择所属单位" v-model="pageForm.unitId">
|
||||||
@@ -98,7 +98,7 @@ layout("/layouts/platform.html"){
|
|||||||
<el-input v-model="scope.row.awardName" placeholder="请输入奖项名称" max="50" clearable></el-input>
|
<el-input v-model="scope.row.awardName" placeholder="请输入奖项名称" max="50" clearable></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="奖项积分" align="center">
|
<el-table-column label="奖项积分" align="center">
|
||||||
<template scope="scope">
|
<template scope="scope">
|
||||||
<el-input-number v-model="scope.row.points" placeholder="请输入奖项积分" style="width: 100%"></el-input-number>
|
<el-input-number v-model="scope.row.points" placeholder="请输入奖项积分" style="width: 100%"></el-input-number>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ layout("/layouts/platform.html"){
|
|||||||
<guava ref="guava">
|
<guava ref="guava">
|
||||||
<template>
|
<template>
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
|
|
||||||
<search @search="doSearch">
|
<search @search="doSearch">
|
||||||
<search-item label="年份">
|
<search-item label="年份">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@@ -41,7 +41,7 @@ layout("/layouts/platform.html"){
|
|||||||
<search-item label="姓名工号">
|
<search-item label="姓名工号">
|
||||||
<el-input v-model="pageForm.searchKeyword" max="20" placeholder="请输入工号或者姓名查询" clearable></el-input>
|
<el-input v-model="pageForm.searchKeyword" max="20" placeholder="请输入工号或者姓名查询" clearable></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')">
|
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')">
|
||||||
<search-item label="所属工会">
|
<search-item label="所属工会">
|
||||||
<el-select @change="unionChange" clearable filterable style="width: 100%"
|
<el-select @change="unionChange" clearable filterable style="width: 100%"
|
||||||
@@ -66,7 +66,7 @@ layout("/layouts/platform.html"){
|
|||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</search>
|
</search>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card class="mt20" shadow="never">
|
<el-card class="mt20" shadow="never">
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ layout("/layouts/platform.html"){
|
|||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
<guava>
|
<guava>
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
|
|
||||||
<search @search="doSearch">
|
<search @search="doSearch">
|
||||||
<search-item label="年份">
|
<search-item label="年份">
|
||||||
<el-date-picker style="width: 100%"
|
<el-date-picker style="width: 100%"
|
||||||
@@ -33,7 +33,7 @@ layout("/layouts/platform.html"){
|
|||||||
placeholder="选择年">
|
placeholder="选择年">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<search-item label="活动">
|
<search-item label="活动">
|
||||||
<el-cascader
|
<el-cascader
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ layout("/layouts/platform.html"){
|
|||||||
<snaker-start slot="header" label="思政申报" define_key="SZBKSB"></snaker-start>
|
<snaker-start slot="header" label="思政申报" define_key="SZBKSB"></snaker-start>
|
||||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":" class="flow-task-form">
|
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":" class="flow-task-form">
|
||||||
<el-descriptions :column="3" border>
|
<el-descriptions :column="3" border>
|
||||||
|
|
||||||
<el-descriptions-item label="归属项目" :span="1.5">
|
<el-descriptions-item label="归属项目" :span="1.5">
|
||||||
<el-form-item prop="manageId">
|
<el-form-item prop="manageId">
|
||||||
<el-select v-model="formData.manageId" placeholder="请选择项目名称" clearable>
|
<el-select v-model="formData.manageId" placeholder="请选择项目名称" clearable>
|
||||||
@@ -20,7 +20,7 @@ layout("/layouts/platform.html"){
|
|||||||
<el-input placeholder="请填写项目名称" v-model="formData.projectName" maxlength="100"></el-input>
|
<el-input placeholder="请填写项目名称" v-model="formData.projectName" maxlength="100"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="申报单位">
|
<el-descriptions-item label="申报单位">
|
||||||
<el-form-item prop="applyUnitName">
|
<el-form-item prop="applyUnitName">
|
||||||
<el-input placeholder="申报单位" readonly v-model="formData.applyUnitName"></el-input>
|
<el-input placeholder="申报单位" readonly v-model="formData.applyUnitName"></el-input>
|
||||||
@@ -48,8 +48,8 @@ layout("/layouts/platform.html"){
|
|||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
|
||||||
<el-descriptions-item label="负责人">
|
<el-descriptions-item label="负责人">
|
||||||
<el-form-item prop="headName">
|
<el-form-item prop="headName">
|
||||||
<el-input placeholder="负责人" readonly v-model="formData.headName"></el-input>
|
<el-input placeholder="负责人" readonly v-model="formData.headName"></el-input>
|
||||||
@@ -65,8 +65,8 @@ layout("/layouts/platform.html"){
|
|||||||
<el-input placeholder="邮箱" v-model="formData.email" maxlength="20"></el-input>
|
<el-input placeholder="邮箱" v-model="formData.email" maxlength="20"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
|
||||||
<el-descriptions-item label="项目规模(人数)">
|
<el-descriptions-item label="项目规模(人数)">
|
||||||
<el-form-item prop="numberPeople">
|
<el-form-item prop="numberPeople">
|
||||||
<el-input-number placeholder="项目规模(人数)" v-model="formData.numberPeople"></el-input-number>
|
<el-input-number placeholder="项目规模(人数)" v-model="formData.numberPeople"></el-input-number>
|
||||||
@@ -82,8 +82,8 @@ layout("/layouts/platform.html"){
|
|||||||
<el-input-number placeholder="骨干教师参加人数" v-model="formData.numberTeacher"></el-input-number>
|
<el-input-number placeholder="骨干教师参加人数" v-model="formData.numberTeacher"></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
|
||||||
<el-descriptions-item label="单位人数占比">
|
<el-descriptions-item label="单位人数占比">
|
||||||
<el-form-item prop="unitPercentage">
|
<el-form-item prop="unitPercentage">
|
||||||
<el-input-number placeholder="占本单位人数百分比" v-model="formData.unitPercentage"></el-input-number>
|
<el-input-number placeholder="占本单位人数百分比" v-model="formData.unitPercentage"></el-input-number>
|
||||||
@@ -99,8 +99,8 @@ layout("/layouts/platform.html"){
|
|||||||
<el-input placeholder="占本骨干教师人数百分比" v-model="formData.teacherPercentage"></el-input>
|
<el-input placeholder="占本骨干教师人数百分比" v-model="formData.teacherPercentage"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
|
||||||
<el-descriptions-item label="项目类别">
|
<el-descriptions-item label="项目类别">
|
||||||
<el-form-item prop="typeId">
|
<el-form-item prop="typeId">
|
||||||
<el-select v-model="formData.typeId" placeholder="请选择项目类别" clearable>
|
<el-select v-model="formData.typeId" placeholder="请选择项目类别" clearable>
|
||||||
@@ -113,8 +113,8 @@ layout("/layouts/platform.html"){
|
|||||||
<el-input placeholder="项目主题" v-model="formData.projectTheme" maxlength="255"></el-input>
|
<el-input placeholder="项目主题" v-model="formData.projectTheme" maxlength="255"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
|
||||||
<el-descriptions-item label="项目经费预算" :span="3">
|
<el-descriptions-item label="项目经费预算" :span="3">
|
||||||
<el-form-item prop="leadThoughtFunds">
|
<el-form-item prop="leadThoughtFunds">
|
||||||
<el-table :data="formData.leadThoughtFunds" border size="small">
|
<el-table :data="formData.leadThoughtFunds" border size="small">
|
||||||
@@ -125,27 +125,27 @@ layout("/layouts/platform.html"){
|
|||||||
placeholder="请填写开支科目"></el-input>
|
placeholder="请填写开支科目"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="向校工会申请经费(元)" prop="applySchoolMoney">
|
<el-table-column label="向校工会申请经费(元)" prop="applySchoolMoney">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<el-input @input="changNum(row)" v-model="row.applySchoolMoney"
|
<el-input @input="changNum(row)" v-model="row.applySchoolMoney"
|
||||||
oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请填写向校工会申请经费"></el-input>
|
oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请填写向校工会申请经费"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="部门配套经费(元)" prop="deptMoney">
|
<el-table-column label="部门配套经费(元)" prop="deptMoney">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<el-input @input="changNum(row)" v-model="row.deptMoney"
|
<el-input @input="changNum(row)" v-model="row.deptMoney"
|
||||||
oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请填写部门配套经费"></el-input>
|
oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请填写部门配套经费"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="合计(元)" prop="amountTo">
|
<el-table-column label="合计(元)" prop="amountTo">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<el-input readonly v-model="row.amountTo" placeholder="填写前两项后自动计算"></el-input>
|
<el-input readonly v-model="row.amountTo" placeholder="填写前两项后自动计算"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column width="100px">
|
<el-table-column width="100px">
|
||||||
<template slot="header" slot-scope="scope">
|
<template slot="header" slot-scope="scope">
|
||||||
<el-button type="primary" size="mini"
|
<el-button type="primary" size="mini"
|
||||||
@@ -162,8 +162,8 @@ layout("/layouts/platform.html"){
|
|||||||
</el-table>
|
</el-table>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
|
||||||
<el-descriptions-item label="项目主要内容/进度安排">
|
<el-descriptions-item label="项目主要内容/进度安排">
|
||||||
<el-form-item prop="content">
|
<el-form-item prop="content">
|
||||||
<text-editor v-model="formData.content"></text-editor>
|
<text-editor v-model="formData.content"></text-editor>
|
||||||
@@ -171,7 +171,7 @@ layout("/layouts/platform.html"){
|
|||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<el-row type="flex" justify="end" class="mt20">
|
<el-row type="flex" justify="end" class="mt20">
|
||||||
<el-button type="primary" plain @click="onSave">保存</el-button>
|
<el-button type="primary" plain @click="onSave">保存</el-button>
|
||||||
<el-button type="primary" @click="onSubmit" v-if="!taskId">提交</el-button>
|
<el-button type="primary" @click="onSubmit" v-if="!taskId">提交</el-button>
|
||||||
@@ -287,7 +287,7 @@ layout("/layouts/platform.html"){
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
if (this.id) {
|
if (this.id) {
|
||||||
this.$axios.post("/platform/leadThought/apply/findWriteInfo", {id: this.id})
|
this.$axios.post("/platform/leadThought/apply/findWriteInfo", {id: this.id})
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ layout("/layouts/platform.html"){
|
|||||||
placeholder="选择年">
|
placeholder="选择年">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<search-item label="项目名称">
|
<search-item label="项目名称">
|
||||||
<el-input placeholder="请输入项目名称" clearable v-model="pageForm.projectName"
|
<el-input placeholder="请输入项目名称" clearable v-model="pageForm.projectName"
|
||||||
@keyup.enter.native="doSearch">
|
@keyup.enter.native="doSearch">
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ layout("/layouts/platform.html"){
|
|||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
<guava ref="guava">
|
<guava ref="guava">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
|
|
||||||
<search @search="doSearch">
|
<search @search="doSearch">
|
||||||
<search-item label="类别名称">
|
<search-item label="类别名称">
|
||||||
<el-input @keyup.enter.native="doSearch" clearable
|
<el-input @keyup.enter.native="doSearch" clearable
|
||||||
|
|||||||
+4
-4
@@ -14,7 +14,7 @@ layout("/layouts/platform.html"){
|
|||||||
<el-radio-button label="false">未审核</el-radio-button>
|
<el-radio-button label="false">未审核</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</table-tool>
|
</table-tool>
|
||||||
|
|
||||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
|
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:index="indexMethod"
|
:index="indexMethod"
|
||||||
@@ -81,13 +81,13 @@ layout("/layouts/platform.html"){
|
|||||||
</div>
|
</div>
|
||||||
</info>
|
</info>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</guava>
|
</guava>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
<!--#include("../common/info.js"){}#-->
|
<!--#include("../common/info.js"){}#-->
|
||||||
<!--#include("../common/commonQuery.js"){}#-->
|
<!--#include("../common/commonQuery.js"){}#-->
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
el: '#app',
|
el: '#app',
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
@@ -107,7 +107,7 @@ layout("/layouts/platform.html"){
|
|||||||
{ prop: "curTaskName", label: "当前节点" },
|
{ prop: "curTaskName", label: "当前节点" },
|
||||||
{ prop: "instanceState", label: "流程状态" }
|
{ prop: "instanceState", label: "流程状态" }
|
||||||
],
|
],
|
||||||
|
|
||||||
// 审核相关
|
// 审核相关
|
||||||
showApprovalForm: false,
|
showApprovalForm: false,
|
||||||
formData: {
|
formData: {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const INFO = {
|
var INFO = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<div>
|
<div>
|
||||||
<div class="process-title">
|
<div class="process-title">
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
<el-card class="mt10" shadow="never">
|
<el-card class="mt10" shadow="never">
|
||||||
<table-tool></table-tool>
|
<table-tool></table-tool>
|
||||||
|
|
||||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
|
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:index="indexMethod"
|
:index="indexMethod"
|
||||||
@@ -34,7 +34,7 @@ layout("/layouts/platform.html"){
|
|||||||
size="small"></enum-tag>
|
size="small"></enum-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="操作" width="220" fixed="right">
|
<el-table-column label="操作" width="220" fixed="right">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<!-- <el-button size="mini" @click="openView(row)">查看</el-button>-->
|
<!-- <el-button size="mini" @click="openView(row)">查看</el-button>-->
|
||||||
@@ -48,7 +48,7 @@ layout("/layouts/platform.html"){
|
|||||||
<!-- <el-button @click="doDelete(row.id)" size="mini" type="danger"-->
|
<!-- <el-button @click="doDelete(row.id)" size="mini" type="danger"-->
|
||||||
<!-- v-if="[6000,6100,6125,6200].includes(row.state)">删除-->
|
<!-- v-if="[6000,6100,6125,6200].includes(row.state)">删除-->
|
||||||
<!-- </el-button>-->
|
<!-- </el-button>-->
|
||||||
|
|
||||||
<el-button @click="openView(row)" size="mini" type="primary">
|
<el-button @click="openView(row)" size="mini" type="primary">
|
||||||
查看
|
查看
|
||||||
</el-button>
|
</el-button>
|
||||||
@@ -63,7 +63,7 @@ layout("/layouts/platform.html"){
|
|||||||
@click="onDelete(row.id)" size="mini" type="danger">
|
@click="onDelete(row.id)" size="mini" type="danger">
|
||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
@@ -79,10 +79,10 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
<!--#include("../common/info.js"){}#-->
|
<!--#include("../common/info.js"){}#-->
|
||||||
<!--#include("../common/commonQuery.js"){}#-->
|
<!--#include("../common/commonQuery.js"){}#-->
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
el: '#app',
|
el: '#app',
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
@@ -131,7 +131,7 @@ layout("/layouts/platform.html"){
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
onDelete(id) {
|
onDelete(id) {
|
||||||
this.$confirm("您确定要删除吗?", "提示", {
|
this.$confirm("您确定要删除吗?", "提示", {
|
||||||
confirmButtonText: "确定",
|
confirmButtonText: "确定",
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ layout("/layouts/platform.html"){
|
|||||||
<table-tool>
|
<table-tool>
|
||||||
<!-- <el-button size="mini" type="primary" @click="exportAllInfo">导出全部</el-button>-->
|
<!-- <el-button size="mini" type="primary" @click="exportAllInfo">导出全部</el-button>-->
|
||||||
</table-tool>
|
</table-tool>
|
||||||
|
|
||||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
|
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:index="indexMethod"
|
:index="indexMethod"
|
||||||
@@ -58,7 +58,7 @@ layout("/layouts/platform.html"){
|
|||||||
<script>
|
<script>
|
||||||
<!--#include("../common/info.js"){}#-->
|
<!--#include("../common/info.js"){}#-->
|
||||||
<!--#include("../common/commonQuery.js"){}#-->
|
<!--#include("../common/commonQuery.js"){}#-->
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
el: '#app',
|
el: '#app',
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
|
|||||||
+9
-9
@@ -6,7 +6,7 @@ layout("/layouts/platform.html"){
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<common-query ref="commonQueryRef" @search="search"></common-query>
|
<common-query ref="commonQueryRef" @search="search"></common-query>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-card class="mt10" shadow="never">
|
<el-card class="mt10" shadow="never">
|
||||||
<table-tool>
|
<table-tool>
|
||||||
<el-radio-group @change="doSearch" class="mr5" size="small" v-model="pageForm.audit">
|
<el-radio-group @change="doSearch" class="mr5" size="small" v-model="pageForm.audit">
|
||||||
@@ -14,7 +14,7 @@ layout("/layouts/platform.html"){
|
|||||||
<el-radio-button label="false">未审核</el-radio-button>
|
<el-radio-button label="false">未审核</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</table-tool>
|
</table-tool>
|
||||||
|
|
||||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
|
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:index="indexMethod"
|
:index="indexMethod"
|
||||||
@@ -39,7 +39,7 @@ layout("/layouts/platform.html"){
|
|||||||
size="small"></enum-tag>
|
size="small"></enum-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="操作" fixed="right" width="300">
|
<el-table-column label="操作" fixed="right" width="300">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
<el-button size="mini" type="primary" @click="openView(row)">
|
<el-button size="mini" type="primary" @click="openView(row)">
|
||||||
@@ -53,12 +53,12 @@ layout("/layouts/platform.html"){
|
|||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
</el-table>
|
</el-table>
|
||||||
<!--#include("/layouts/pagination.html"){}#-->
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
|
||||||
<template #edit>
|
<template #edit>
|
||||||
<info ref="infoRef">
|
<info ref="infoRef">
|
||||||
<div v-if="showApprovalForm">
|
<div v-if="showApprovalForm">
|
||||||
@@ -81,13 +81,13 @@ layout("/layouts/platform.html"){
|
|||||||
</div>
|
</div>
|
||||||
</info>
|
</info>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</guava>
|
</guava>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
<!--#include("../common/info.js"){}#-->
|
<!--#include("../common/info.js"){}#-->
|
||||||
<!--#include("../common/commonQuery.js"){}#-->
|
<!--#include("../common/commonQuery.js"){}#-->
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
el: '#app',
|
el: '#app',
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
@@ -109,7 +109,7 @@ layout("/layouts/platform.html"){
|
|||||||
{ prop: "curTaskName", label: "当前节点" },
|
{ prop: "curTaskName", label: "当前节点" },
|
||||||
{ prop: "instanceState", label: "流程状态" }
|
{ prop: "instanceState", label: "流程状态" }
|
||||||
],
|
],
|
||||||
|
|
||||||
// 审核相关
|
// 审核相关
|
||||||
showApprovalForm: false,
|
showApprovalForm: false,
|
||||||
formData: {
|
formData: {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const info = {
|
var info = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<div>
|
<div>
|
||||||
<el-descriptions :column="2" border class="table_fixed">
|
<el-descriptions :column="2" border class="table_fixed">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const info = {
|
var info = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<div>
|
<div>
|
||||||
<el-descriptions :column="2" border class="table_fixed">
|
<el-descriptions :column="2" border class="table_fixed">
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ layout("/layouts/platform.html"){
|
|||||||
.el-carousel__container {
|
.el-carousel__container {
|
||||||
height: 250px !important;
|
height: 250px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.one-line {
|
.one-line {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const info = {
|
var info = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<div>
|
<div>
|
||||||
<el-tabs>
|
<el-tabs>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const info = {
|
var info = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<div>
|
<div>
|
||||||
<el-tabs>
|
<el-tabs>
|
||||||
|
|||||||
@@ -46,14 +46,13 @@ layout("/layouts/platform.html"){
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="search-item"
|
<div class="search-item">
|
||||||
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}">
|
|
||||||
<div class="search-item-label">所属工会:</div>
|
<div class="search-item-label">所属工会:</div>
|
||||||
<div class="search-item-option">
|
<div class="search-item-option">
|
||||||
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
|
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
|
||||||
clearable="true"
|
clearable
|
||||||
@change="flushUnits" @clear="flushUnits"
|
@change="flushUnits" @clear="flushUnits"
|
||||||
filterable="true">
|
filterable>
|
||||||
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
|
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
@@ -63,8 +62,8 @@ layout("/layouts/platform.html"){
|
|||||||
<div class="search-item-label">所属单位:</div>
|
<div class="search-item-label">所属单位:</div>
|
||||||
<div class="search-item-option">
|
<div class="search-item-option">
|
||||||
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
|
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
|
||||||
clearable="true"
|
clearable
|
||||||
filterable="true">
|
filterable>
|
||||||
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
|
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
@@ -83,49 +82,41 @@ layout("/layouts/platform.html"){
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<template v-if="searchMore">
|
<div class="search-item">
|
||||||
<div class="search-item">
|
<div class="search-item-label">人员类型:</div>
|
||||||
<div class="search-item-label">人员类型:</div>
|
<div class="search-item-option">
|
||||||
<div class="search-item-option">
|
<dict-select v-model="pageForm.personType" style="width: 100%" clearable
|
||||||
<dict-select v-model="pageForm.personType" style="width: 100%" clearable
|
placeholder="人员类型"
|
||||||
placeholder="人员类型"
|
code="UserType"></dict-select>
|
||||||
code="UserType"></dict-select>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="search-item">
|
<div class="search-item">
|
||||||
<div class="search-item-label">在职状态:</div>
|
<div class="search-item-label">在职状态:</div>
|
||||||
<div class="search-item-option">
|
<div class="search-item-option">
|
||||||
<dict-select v-model="pageForm.userState" style="width: 100%" clearable
|
<dict-select v-model="pageForm.userState" style="width: 100%" clearable
|
||||||
placeholder="在职状态"
|
placeholder="在职状态"
|
||||||
code="UserState"></dict-select>
|
code="UserState"></dict-select>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="search-item">
|
<div class="search-item">
|
||||||
<div class="search-item-label">性  别:</div>
|
<div class="search-item-label">性  别:</div>
|
||||||
<div class="search-item-option">
|
<div class="search-item-option">
|
||||||
<el-select v-model="pageForm.sex" style="width: 100%" clearable
|
<el-select v-model="pageForm.sex" style="width: 100%" clearable
|
||||||
placeholder="请选择">
|
placeholder="请选择">
|
||||||
<el-option v-for="sex in sexOptions" :label="sex" :value="sex"></el-option>
|
<el-option v-for="sex in sexOptions" :label="sex" :value="sex"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</div>
|
||||||
<div class="search-query">
|
<div class="search-query">
|
||||||
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
|
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
|
||||||
|
|
||||||
<more v-model="searchMore"></more>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card shadow="never" class="mt20">
|
<el-card shadow="never" class="mt20">
|
||||||
|
|
||||||
|
|
||||||
<table-tool label="用户列表" :app="this">
|
<table-tool label="用户列表" :app="this">
|
||||||
<template #func>
|
|
||||||
|
|
||||||
</template>
|
|
||||||
</table-tool>
|
</table-tool>
|
||||||
|
|
||||||
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
|
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
|
||||||
@@ -134,7 +125,6 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号"
|
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号"
|
||||||
width="80px"></el-table-column>
|
width="80px"></el-table-column>
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
@@ -147,13 +137,9 @@ layout("/layouts/platform.html"){
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<!--#include("/layouts/pagination.html"){}#-->
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
|
|
||||||
</el-card>
|
</el-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</guava>
|
</guava>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
const vue = new Vue({
|
const vue = new Vue({
|
||||||
@@ -192,26 +178,24 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
||||||
|
|
||||||
async getActivityGroup() {
|
async getActivityGroup() {
|
||||||
const {data} = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
const {data} = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
||||||
this.activityGroupList = data
|
this.activityGroupList = data
|
||||||
},
|
},
|
||||||
async flushUnits() {
|
async flushUnits() {
|
||||||
this.$set(this.pageForm, "unitId", "")
|
this.$set(this.pageForm, "unitId", null)
|
||||||
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
|
if (this.$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')) {
|
||||||
this.units = await getUnits(this.pageForm.unionId)
|
this.units = await this.$businessTool.listUnit(this.pageForm.unionId)
|
||||||
} else {
|
} else {
|
||||||
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
|
this.units = await this.$businessTool.listUnit(this.$store.state.user.union.id)
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
await this.getActivityGroup()
|
await this.getActivityGroup()
|
||||||
this.pageData()
|
this.pageData()
|
||||||
this.unions = await getUnions()
|
this.unions = await this.$businessTool.listUnion()
|
||||||
this.flushUnits()
|
this.flushUnits()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user