This commit is contained in:
2026-03-19 15:24:30 +08:00
parent 2b0a2a9926
commit 0766026f2c
10 changed files with 385 additions and 351 deletions
@@ -54,7 +54,7 @@ public class SmsWhcpServiceImpl implements SmsService {
json.put("password", SecureUtil.md5(SecureUtil.md5("Whszyxy123") + tKey)); json.put("password", SecureUtil.md5(SecureUtil.md5("Whszyxy123") + tKey));
json.put("tKey", tKey + ""); json.put("tKey", tKey + "");
json.put("mobile", mobile); json.put("mobile", mobile);
json.put("content", "智慧工会" + content); json.put("content", "智慧工会" + content);
log.info("【log】调用短信消息接口,请求参数:{}", Json.toJson(json)); log.info("【log】调用短信消息接口,请求参数:{}", Json.toJson(json));
String result = HttpRequest.post(urls) String result = HttpRequest.post(urls)
@@ -37,7 +37,7 @@ public class SmsMessageSendStrategy implements GlobalMessageSendStrategy {
@Override @Override
public boolean isEnabled() { public boolean isEnabled() {
return true; return false;
} }
@Override @Override
@@ -78,6 +78,7 @@ public class MemberApplyBranchUnionApprovalController {
info.personType, info.personType,
info.applyDateTime, info.applyDateTime,
info.sign, info.sign,
info.nativePlace,
ins.id AS instanceId, ins.id AS instanceId,
ins.businessNo, ins.businessNo,
ins.state instanceState, ins.state instanceState,
@@ -125,7 +126,7 @@ public class MemberApplyBranchUnionApprovalController {
} else { } else {
cnd.orderBy("info." + pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); cnd.orderBy("info." + pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
} }
cnd.groupBy("t.id"); cnd.groupBy("info.id");
sql.setCondition(cnd); sql.setCondition(cnd);
Pagination<NutMap> pagination = memberApplyRecordService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); Pagination<NutMap> pagination = memberApplyRecordService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination); return Result.success(pagination);
@@ -93,6 +93,7 @@ public class MemberApplySchoolUnionApprovalController {
info.origin, info.origin,
info.applyDateTime, info.applyDateTime,
info.sign, info.sign,
info.nativePlace,
ins.id AS instanceId, ins.id AS instanceId,
ins.businessNo, ins.businessNo,
ins.state instanceState, ins.state instanceState,
@@ -138,7 +139,7 @@ public class MemberApplySchoolUnionApprovalController {
} else { } else {
cnd.orderBy("info." + pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); cnd.orderBy("info." + pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
} }
cnd.groupBy("t.id"); cnd.groupBy("info.id");
sql.setCondition(cnd); sql.setCondition(cnd);
Pagination<NutMap> pagination = memberApplyRecordService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); Pagination<NutMap> pagination = memberApplyRecordService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination); return Result.success(pagination);
@@ -2,93 +2,98 @@
layout("/layouts/platform.html"){ 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">
<common-query ref="commonQueryRef" @search="search"></common-query> <common-query ref="commonQueryRef" @search="search"></common-query>
</el-card> </el-card>
<el-card shadow="never" class="mt10"> <el-card shadow="never" class="mt10">
<table-tool label="申请列表"> <table-tool label="申请列表">
<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">
<el-radio-button label="true">已审核</el-radio-button> <el-radio-button label="true">已审核</el-radio-button>
<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"
<el-table-column style="width: 100%">
:index="indexMethod" <el-table-column
align="center" :index="indexMethod"
header-align="center" align="center"
label="序号" header-align="center"
type="index" label="序号"
width="80px" type="index"
></el-table-column> width="80px"
<el-table-column ></el-table-column>
:label="column.label" <el-table-column
:prop="column.prop" :label="column.label"
:sortable="column.sortable" :prop="column.prop"
:width="column.width" :sortable="column.sortable"
header-align="center" :width="column.width"
min-width="100px" header-align="center"
show-overflow-tooltip min-width="100px"
v-for="column in tableColumns" show-overflow-tooltip
> v-for="column in tableColumns"
<template scope="{row}" v-if="column.prop=='loginname'"> >
<el-link @click="openView(row)" type="primary">{{row.loginname}}</el-link> <template scope="{row}" v-if="column.prop=='loginname'">
</template> <el-link @click="openView(row)" type="primary">{{row.loginname}}</el-link>
<template scope="{row}" v-else-if="column.prop=='sign'"> </template>
<el-image v-if="row.sign" :src="row.sign" style="height: 60px"></el-image> <template scope="{row}" v-else-if="column.prop=='sign'">
<el-tag type="warning" v-else>暂无</el-tag> <el-image v-if="row.sign" :src="row.sign" style="height: 60px"></el-image>
</template> <el-tag type="warning" v-else>暂无</el-tag>
<template scope="{row}" v-else-if="column.prop=='instanceState'"> </template>
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" <template scope="{row}" v-else-if="column.prop=='instanceState'">
size="small"></enum-tag> <enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
</template> size="small"></enum-tag>
</el-table-column> </template>
<el-table-column label="操作" fixed="right" width="200px"> </el-table-column>
<template scope="{row}"> <el-table-column label="操作" fixed="right" width="200px">
<el-button size="mini" type="primary" @click="openView(row)"> <template scope="{row}">
查看 <el-button size="mini" type="primary" @click="openView(row)">
</el-button> 查看
<el-button v-if="row.taskState === 10" @click="openApproval(row)" size="mini" type="primary"> </el-button>
审核 <el-button v-if="row.taskState === 10" @click="openApproval(row)" size="mini" type="primary">
</el-button> 审核
<el-button v-if="row.canRevoke" @click="openRevoke(row)" size="mini" type="danger"> </el-button>
撤回 <el-button v-if="row.canRevoke" @click="openRevoke(row)" size="mini" type="danger">
</el-button> 撤回
</template> </el-button>
</el-table-column> </template>
</el-table> </el-table-column>
<!--#include("/layouts/pagination.html"){}#--> </el-table>
</el-card> <!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #edit> <template #edit>
<info ref="infoRef"> <info ref="infoRef">
<div v-if="showApprovalForm"> <div v-if="showApprovalForm">
<div class="process-title"> <div class="process-title">
{{formData.taskName}} {{formData.taskName}}
</div> </div>
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix="" <el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=""
class="flow-task-form"> class="flow-task-form">
<el-form-item label="审批意见" prop="tf_opinion" <el-form-item label="审批意见" prop="tf_opinion"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]"> :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea> <user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item> </el-form-item>
</el-form> <el-form-item prop="tf_sign"
<el-row type="flex" justify="end"> :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-button @click="$refs.guava.index()" size="small">取消</el-button> <pc-signature v-model="formData.tf_sign"></pc-signature>
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button> </el-form-item>
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button> </el-form>
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button> <el-row type="flex" justify="end">
</el-row> <el-button @click="$refs.guava.index()" size="small">取消</el-button>
</div> <el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
</info> <el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
</template> <el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
</el-row>
</div>
</info>
</template>
</guava> </guava>
</div> </div>
<script nonce="${cspNonce!}"> <script nonce="${cspNonce!}">
<!--#include("../common/info.js"){}#--> <!--#include("../common/info.js"){}#-->
<!--#include("../common/commonQuery.js"){}#--> <!--#include("../common/commonQuery.js"){}#-->
new Vue({ new Vue({
el: "#app", el: "#app",
store, store,
@@ -103,88 +108,93 @@ layout("/layouts/platform.html"){
{ prop: "userName", label: "姓名", sortable: true }, { prop: "userName", label: "姓名", sortable: true },
{ prop: "userState", label: "在职状态", sortable: true }, { prop: "userState", label: "在职状态", sortable: true },
// { prop: "personType", label: "教职工类别", sortable: true }, // { prop: "personType", label: "教职工类别", sortable: true },
{ prop: "preparedBy", label: "编制类别", sortable: true }, { prop: "nativePlace", label: "籍贯", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true }, // { prop: "preparedBy", label: "编制类别", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true }, { prop: "unitName", label: "所属单位", sortable: true },
// { prop: "sign", label: "签字" }, // { prop: "sign", label: "签字" },
{ prop: "curTaskName", label: "当前节点" }, { prop: "curTaskName", label: "当前节点" },
{ prop: "instanceState", label: "流程状态" } { prop: "instanceState", label: "流程状态" }
], ],
// 审核相关 // 审核相关
showApprovalForm: false, showApprovalForm: false,
formData: { formData: {
tf_opinion: "" tf_opinion: ""
}, }
} }
}, },
components: { components: {
'info': INFO, "info": INFO,
'common-query': COMMON_QUERY, "common-query": COMMON_QUERY
}, },
methods: { methods: {
openView(row) { openView(row) {
this.$refs.guava.edit(()=>{ this.$refs.guava.edit(() => {
this.showApprovalForm = false this.showApprovalForm = false
this.$refs.infoRef.onOpen(row) this.$refs.infoRef.onOpen(row)
}) })
}, },
openApproval(row) { openApproval(row) {
this.$refs.guava.edit(()=>{ this.$refs.guava.edit(() => {
this.showApprovalForm = true this.showApprovalForm = true
this.formData = { this.formData = {
processTaskId: row.taskId, processTaskId: row.taskId,
taskName: row.curTaskName taskName: row.curTaskName
} }
this.$refs.infoRef.onOpen(row) this.$refs.infoRef.onOpen(row)
}) })
},
handleTaskAction(val) {
this.$refs.formRef.validate((valid) => {
if (valid) {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
const loading = createLoading()
this.$axios.post("/flow/common/executeTask", {
data: JSON.stringify({
...this.formData,
submitType: val
})
}).then((res) => {
if (res.code === 0) {
this.$refs.guava.index()
this.$message.success(res.msg)
this.doSearch()
}
}).finally(() => {
loading.close()
})
})
}
})
}, },
handleTaskAction(val) {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
const loading = createLoading()
this.$axios.post("/flow/common/executeTask", {
data: JSON.stringify({
...this.formData,
submitType: val
})
}).then((res) => {
if (res.code === 0) {
this.$refs.guava.index()
this.$message.success(res.msg)
this.doSearch()
}
}).finally(() => {
loading.close()
})
})
},
openRevoke(row) { openRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", { this.$confirm("您确定要撤回吗?", "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "info" type: "info"
}).then(() => { }).then(() => {
const loading = createLoading() const loading = createLoading()
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => { this.$axios.post("/flow/common/revokeTask", { taskId: row.taskId }).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
this.doSearch() this.doSearch()
} }
}).finally(()=>{ }).finally(() => {
loading.close() loading.close()
}) })
}) })
}, },
search(pageForm){ search(pageForm) {
if (pageForm) { if (pageForm) {
this.pageForm = {...this.pageForm, ...pageForm} this.pageForm = { ...this.pageForm, ...pageForm }
} }
this.doSearch() this.doSearch()
}, }
}, },
created() { created() {
this.pageData() this.pageData()
@@ -16,22 +16,22 @@ const INFO = {
<el-descriptions-item label="学历">{{ viewData.education }}</el-descriptions-item> <el-descriptions-item label="学历">{{ viewData.education }}</el-descriptions-item>
<el-descriptions-item label="学位">{{ viewData.academicDegree }}</el-descriptions-item> <el-descriptions-item label="学位">{{ viewData.academicDegree }}</el-descriptions-item>
<el-descriptions-item label="党政职务">{{ viewData.position }}</el-descriptions-item> <el-descriptions-item label="籍贯">{{ viewData.nativePlace }}</el-descriptions-item>
<el-descriptions-item label="工作单位">{{ viewData.unitName }}</el-descriptions-item> <el-descriptions-item label="工作单位">{{ viewData.unitName }}</el-descriptions-item>
<el-descriptions-item label="所属工会">{{ viewData.unionName }}</el-descriptions-item> <el-descriptions-item label="所属工会">{{ viewData.unionName }}</el-descriptions-item>
<el-descriptions-item label="岗位名称">{{ viewData.jobCategory }}</el-descriptions-item>
<!-- <el-descriptions-item label="所属校区">{{ viewData.campus }}</el-descriptions-item>--> <!-- <el-descriptions-item label="所属校区">{{ viewData.campus }}</el-descriptions-item>-->
<el-descriptions-item label="身份证号码">{{ viewData.idCard }}</el-descriptions-item> <el-descriptions-item label="身份证号码">{{ viewData.idCard }}</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.email }}</el-descriptions-item>--> <!-- <el-descriptions-item label="电子邮箱">{{ viewData.email }}</el-descriptions-item>-->
<el-descriptions-item label="在职状态">{{ viewData.userState }}</el-descriptions-item> <!-- <el-descriptions-item label="在职状态">{{ viewData.userState }}</el-descriptions-item>-->
<!-- <el-descriptions-item label="教职工类别">{{ viewData.personType }}</el-descriptions-item>--> <!-- <el-descriptions-item label="教职工类别">{{ viewData.personType }}</el-descriptions-item>-->
<el-descriptions-item label="编制类别">{{ viewData.preparedBy }}</el-descriptions-item> <!-- <el-descriptions-item label="编制类别">{{ viewData.preparedBy }}</el-descriptions-item>-->
<el-descriptions-item label="婚姻状况">{{ viewData.marriage }}</el-descriptions-item> <el-descriptions-item label="婚姻状况">{{ viewData.marriage }}</el-descriptions-item>
<el-descriptions-item label="入职时间">{{ viewData.arrivalAtSchoolDate }}</el-descriptions-item> <el-descriptions-item label="入职时间">{{ viewData.arrivalAtSchoolDate }}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="家庭住址" :span="3">{{ viewData.homeAddress }}</el-descriptions-item> <el-descriptions-item label="家庭住址" :span="3">{{ viewData.homeAddress }}</el-descriptions-item>
@@ -101,8 +101,12 @@ const INFO = {
</template> </template>
<el-descriptions-item label="办理意见" :span="3" v-if="!task.ext.isFirstTaskNode">{{ <el-descriptions-item label="办理意见" :span="3" v-if="!task.ext.isFirstTaskNode">{{
task.taskFormData.opinion }} task.taskFormData.tf_opinion }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="签字信息" :span="3" v-if="!task.ext.isFirstTaskNode">
<el-image :src="task.taskFormData.tf_sign"
class="signature-image"></el-image>
</el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
</template> </template>
@@ -86,7 +86,7 @@ layout("/layouts/platform.html"){
{ prop: "userName", label: "姓名", sortable: true }, { prop: "userName", label: "姓名", sortable: true },
{ prop: "userState", label: "在职状态", sortable: true }, { prop: "userState", label: "在职状态", sortable: true },
// { prop: "personType", label: "教职工类别", sortable: true }, // { prop: "personType", label: "教职工类别", sortable: true },
{ prop: "preparedBy", label: "编制类别", sortable: true }, { prop: "nativePlace", label: "籍贯", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true }, { prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true }, { prop: "unitName", label: "所属单位", sortable: true },
// { prop: "sign", label: "签字" }, // { prop: "sign", label: "签字" },
@@ -2,111 +2,116 @@
layout("/layouts/platform.html"){ 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">
<common-query ref="commonQueryRef" @search="search"></common-query> <common-query ref="commonQueryRef" @search="search"></common-query>
</el-card> </el-card>
<el-card shadow="never" class="mt10"> <el-card shadow="never" class="mt10">
<table-tool label="申请列表"> <table-tool label="申请列表">
<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">
<el-radio-button label="true">已审核</el-radio-button> <el-radio-button label="true">已审核</el-radio-button>
<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"
<el-table-column style="width: 100%">
:index="indexMethod" <el-table-column
align="center" :index="indexMethod"
header-align="center" align="center"
label="序号" header-align="center"
type="index" label="序号"
width="80px" type="index"
></el-table-column> width="80px"
<el-table-column ></el-table-column>
:label="column.label" <el-table-column
:prop="column.prop" :label="column.label"
:sortable="column.sortable" :prop="column.prop"
:width="column.width" :sortable="column.sortable"
header-align="center" :width="column.width"
min-width="100px" header-align="center"
show-overflow-tooltip min-width="100px"
v-for="column in tableColumns" show-overflow-tooltip
> v-for="column in tableColumns"
<template scope="{row}" v-if="column.prop=='loginname'"> >
<el-link @click="openView(row)" type="primary">{{row.loginname}}</el-link> <template scope="{row}" v-if="column.prop=='loginname'">
</template> <el-link @click="openView(row)" type="primary">{{row.loginname}}</el-link>
<template scope="{row}" v-else-if="column.prop=='sign'"> </template>
<el-image v-if="row.sign" :src="row.sign" style="height: 60px"></el-image> <template scope="{row}" v-else-if="column.prop=='sign'">
<el-tag type="warning" v-else>暂无</el-tag> <el-image v-if="row.sign" :src="row.sign" style="height: 60px"></el-image>
</template> <el-tag type="warning" v-else>暂无</el-tag>
<template scope="{row}" v-else-if="column.prop=='instanceState'"> </template>
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" <template scope="{row}" v-else-if="column.prop=='instanceState'">
size="small"></enum-tag> <enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
</template> size="small"></enum-tag>
</el-table-column> </template>
<el-table-column label="操作" fixed="right" width="200px"> </el-table-column>
<template scope="{row}"> <el-table-column label="操作" fixed="right" width="200px">
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button> <template scope="{row}">
<el-button v-if="row.taskState === 10" @click="openApproval(row)" size="mini" type="primary"> <el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
审核 <el-button v-if="row.taskState === 10" @click="openApproval(row)" size="mini" type="primary">
</el-button> 审核
<el-button v-if="row.canRevoke" @click="openRevoke(row.taskId)" size="mini" type="danger"> </el-button>
撤回 <el-button v-if="row.canRevoke" @click="openRevoke(row.taskId)" size="mini" type="danger">
</el-button> 撤回
</template> </el-button>
</el-table-column> </template>
</el-table> </el-table-column>
<!--#include("/layouts/pagination.html"){}#--> </el-table>
</el-card> <!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #edit> <template #edit>
<info ref="infoRef"> <info ref="infoRef">
<div v-if="showApprovalForm"> <div v-if="showApprovalForm">
<div class="process-title"> <div class="process-title">
{{formData.taskName}} {{formData.taskName}}
</div> </div>
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="130px" label-suffix=""> <el-form :model="formData" ref="formRef" :rules="formRules" label-width="130px" label-suffix="">
<el-row :gutter="20" v-if="formData.origin === 'HMC'"> <el-row :gutter="20" v-if="formData.origin === 'HMC'">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="分配工会关系" prop="tf_allocation_unionId" <el-form-item label="分配工会关系" prop="tf_allocation_unionId"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]"> :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-select clearable filterable placeholder="请选择工会" style="width: 100%;" <el-select clearable filterable placeholder="请选择工会" style="width: 100%;"
@change="assignmentUnionName" @change="assignmentUnionName"
v-model="formData.tf_allocation_unionId"> v-model="formData.tf_allocation_unionId">
<el-option :key="item.id" :label="item.name" :value="item.id" <el-option :key="item.id" :label="item.name" :value="item.id"
v-for="item in unions"></el-option> v-for="item in unions"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="当前所在工会" prop="tf_self_unionName"> <el-form-item label="当前所在工会" prop="tf_self_unionName">
<el-input v-model="formData.tf_self_unionName" readonly></el-input> <el-input v-model="formData.tf_self_unionName" readonly></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-form-item label="审批意见" prop="tf_opinion" <el-form-item label="审批意见" prop="tf_opinion"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]"> :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea> <user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item> </el-form-item>
</el-form> <el-form-item prop="tf_sign" label="签字"
<el-row type="flex" justify="end"> :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-button @click="$refs.guava.index()" size="small">取消</el-button> <pc-signature v-model="formData.tf_sign"></pc-signature>
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button> </el-form-item>
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button> </el-form>
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button> <el-row type="flex" justify="end">
</el-row> <el-button @click="$refs.guava.index()" size="small">取消</el-button>
</div> <el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
</info> <el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
</template> <el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
</el-row>
</div>
</info>
</template>
</guava> </guava>
</div> </div>
<script nonce="${cspNonce!}"> <script nonce="${cspNonce!}">
<!--#include("../common/info.js"){}#--> <!--#include("../common/info.js"){}#-->
<!--#include("../common/commonQuery.js"){}#--> <!--#include("../common/commonQuery.js"){}#-->
new Vue({ new Vue({
el: "#app", el: "#app",
store, store,
@@ -120,78 +125,83 @@ layout("/layouts/platform.html"){
{ prop: "loginName", label: "工号", sortable: true }, { prop: "loginName", label: "工号", sortable: true },
{ prop: "userName", label: "姓名", sortable: true }, { prop: "userName", label: "姓名", sortable: true },
{ prop: "userState", label: "在职状态", sortable: true }, { prop: "userState", label: "在职状态", sortable: true },
{ prop: "personType", label: "教职工类别", sortable: true }, { prop: "nativePlace", label: "籍贯", sortable: true },
{ prop: "preparedBy", label: "编制类别", sortable: true }, // { prop: "personType", label: "教职工类别", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true }, // { prop: "preparedBy", label: "编制类别", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true }, { prop: "unitName", label: "所属单位", sortable: true },
{ prop: "sign", label: "签字" }, // { prop: "sign", label: "签字" },
{ prop: "curTaskName", label: "当前节点" }, { prop: "curTaskName", label: "当前节点" },
{ prop: "instanceState", label: "流程状态" } { prop: "instanceState", label: "流程状态" }
], ],
// 审核相关 // 审核相关
showApprovalForm: false, showApprovalForm: false,
formData: { formData: {
tf_opinion: "" tf_opinion: ""
}, },
unions: [], unions: []
} }
}, },
components: { components: {
'info': INFO, "info": INFO,
'common-query': COMMON_QUERY, "common-query": COMMON_QUERY
}, },
methods: { methods: {
openView(row) { openView(row) {
this.$refs.guava.edit(()=>{ this.$refs.guava.edit(() => {
this.showApprovalForm = false this.showApprovalForm = false
this.$refs.infoRef.onOpen(row) this.$refs.infoRef.onOpen(row)
}) })
}, },
openApproval(row) { openApproval(row) {
this.$refs.guava.edit(()=>{ this.$refs.guava.edit(() => {
this.showApprovalForm = true this.showApprovalForm = true
this.formData = { this.formData = {
origin: row.origin, origin: row.origin,
processTaskId: row.taskId, processTaskId: row.taskId,
taskName: row.curTaskName taskName: row.curTaskName
} }
if (row.origin === "HMC") { if (row.origin === "HMC") {
this.$set(this.formData, "tf_self_unionName", this.$store.state.user.union.name) this.$set(this.formData, "tf_self_unionName", this.$store.state.user.union.name)
} }
this.$refs.infoRef.onOpen(row) this.$refs.infoRef.onOpen(row)
}) })
}, },
handleTaskAction(val) { handleTaskAction(val) {
this.$confirm("您确定要提交吗?", "提示", { this.$refs.formRef.validate((valid) => {
confirmButtonText: "确定", if (valid) {
cancelButtonText: "取消", this.$confirm("您确定要提交吗?", "提示", {
type: "warning" confirmButtonText: "确定",
}).then(() => { cancelButtonText: "取消",
const loading = createLoading() type: "warning"
this.$axios.post("/flow/common/executeTask", { }).then(() => {
data: JSON.stringify({ const loading = createLoading()
...this.formData, this.$axios.post("/flow/common/executeTask", {
submitType: val data: JSON.stringify({
}) ...this.formData,
}).then((res) => { submitType: val
if (res.code === 0) { })
this.$refs.guava.index() }).then((res) => {
this.$message.success(res.msg) if (res.code === 0) {
this.doSearch() this.$refs.guava.index()
} this.$message.success(res.msg)
}).finally(() => { this.doSearch()
loading.close() }
}) }).finally(() => {
}) loading.close()
}, })
})
}
})
},
openRevoke(taskId) { openRevoke(taskId) {
this.$confirm("您确定要撤回吗?", "提示", { this.$confirm("您确定要撤回吗?", "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "info" type: "info"
}).then(() => { }).then(() => {
const loading = createLoading() const loading = createLoading()
this.$axios.post("/flow/common/revokeTask", { taskId }).then((res) => { this.$axios.post("/flow/common/revokeTask", { taskId }).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
@@ -202,23 +212,23 @@ layout("/layouts/platform.html"){
}) })
}) })
}, },
search(pageForm){ search(pageForm) {
if (pageForm) { if (pageForm) {
this.pageForm = {...this.pageForm, ...pageForm} this.pageForm = { ...this.pageForm, ...pageForm }
} }
this.doSearch() this.doSearch()
}, },
// 分配工会名称 // 分配工会名称
assignmentUnionName(val) { assignmentUnionName(val) {
const union = this.unions.find(item => item.id === val) const union = this.unions.find(item => item.id === val)
this.$set(this.formData, "tf_allocation_unionName", union.name) this.$set(this.formData, "tf_allocation_unionName", union.name)
}, }
}, },
created() { created() {
this.pageData() this.pageData()
this.$businessTool.listUnion().then(data => { this.$businessTool.listUnion().then(data => {
this.unions = data this.unions = data
}) })
} }
}) })
</script> </script>
@@ -60,9 +60,9 @@ layout("/layouts/platform.html"){
code="USER_ACADEMIC_DEGREE"></dict-select> code="USER_ACADEMIC_DEGREE"></dict-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="党政职务"> <el-descriptions-item label="籍贯">
<el-form-item prop="position"> <el-form-item prop="nativePlace">
<el-input v-model="formData.position" placeholder="请输入党政职务" <el-input v-model="formData.nativePlace" placeholder="请输入籍贯"
maxlength="50"></el-input> maxlength="50"></el-input>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
@@ -90,24 +90,31 @@ layout("/layouts/platform.html"){
</el-descriptions-item>--> </el-descriptions-item>-->
<el-descriptions-item label="在职状态"> <el-descriptions-item label="岗位名称">
<el-form-item prop="jobCategory">
<el-input v-model="formData.jobCategory" placeholder="请输入岗位名称"
maxlength="50"></el-input>
</el-form-item>
</el-descriptions-item>
<!-- <el-descriptions-item label="在职状态">
<el-form-item prop="userState"> <el-form-item prop="userState">
<dict-select v-model="formData.userState" code="USER_STATE" <dict-select v-model="formData.userState" code="USER_STATE"
disabled style="width: 100%"></dict-select> disabled style="width: 100%"></dict-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>-->
<!--<el-descriptions-item label="教职工类别"> <!--<el-descriptions-item label="教职工类别">
<el-form-item prop="personType"> <el-form-item prop="personType">
<dict-select v-model="formData.personType" code="USER_PERSON_TYPE" <dict-select v-model="formData.personType" code="USER_PERSON_TYPE"
style="width: 100%"></dict-select> style="width: 100%"></dict-select>
</el-form-item> </el-form-item>
</el-descriptions-item>--> </el-descriptions-item>-->
<el-descriptions-item label="编制类别"> <!--<el-descriptions-item label="编制类别">
<el-form-item prop="preparedBy"> <el-form-item prop="preparedBy">
<dict-select v-model="formData.preparedBy" code="USER_PREPARED_BY_TYPE" <dict-select v-model="formData.preparedBy" code="USER_PREPARED_BY_TYPE"
disabled style="width: 100%"></dict-select> disabled style="width: 100%"></dict-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>-->
<el-descriptions-item label="婚姻状况"> <el-descriptions-item label="婚姻状况">
<el-form-item prop="marriage" label="婚姻状况"> <el-form-item prop="marriage" label="婚姻状况">
<dict-select v-model="formData.marriage" code="USER_MARRIAGE" <dict-select v-model="formData.marriage" code="USER_MARRIAGE"
@@ -133,7 +140,6 @@ layout("/layouts/platform.html"){
disabled maxlength="50"></el-input> disabled maxlength="50"></el-input>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="家庭住址" :span="3"> <el-descriptions-item label="家庭住址" :span="3">
<el-form-item prop="homeAddress" label="家庭住址"> <el-form-item prop="homeAddress" label="家庭住址">
<el-input v-model="formData.homeAddress" placeholder="请输入家庭住址" maxlength="90"></el-input> <el-input v-model="formData.homeAddress" placeholder="请输入家庭住址" maxlength="90"></el-input>
@@ -219,11 +225,11 @@ layout("/layouts/platform.html"){
</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="sign">--> <el-form-item prop="sign">
<!-- <pc-signature v-model="formData.sign"></pc-signature>--> <pc-signature v-model="formData.sign"></pc-signature>
<!-- </el-form-item>--> </el-form-item>
<!-- </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">
@@ -256,7 +262,9 @@ layout("/layouts/platform.html"){
personalData: [{ required: true, message: "必填", trigger: ["change", "blur"] }], personalData: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
specialty: [{ required: true, message: "必填", trigger: ["change", "blur"] }], specialty: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
marriage: [{ required: true, message: "必填", trigger: ["change", "blur"] }], marriage: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
arrivalAtSchoolDate: [{ required: true, message: "必填", trigger: ["change", "blur"] }] arrivalAtSchoolDate: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
nativePlace: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
jobCategory: [{ required: true, message: "必填", trigger: ["change", "blur"] }]
/*email: [ /*email: [
{ {
validator: (rule, value, callback) => { validator: (rule, value, callback) => {
@@ -89,7 +89,7 @@ layout("/layouts/platform.html"){
.content-left { .content-left {
grid-column: 1 / 4; grid-column: 1 / 4;
display: grid; display: grid;
grid-template-rows: 1fr 1fr; /*grid-template-rows: 1fr 1fr;*/
gap: 20px; gap: 20px;
min-height: 0; min-height: 0;
} }
@@ -332,10 +332,10 @@ layout("/layouts/platform.html"){
<div class="chart-container" id="personTypeMemberChart" v-loading="loading.personTypeMember"></div> <div class="chart-container" id="personTypeMemberChart" v-loading="loading.personTypeMember"></div>
</div>--> </div>-->
<!-- 在职类型图表 --> <!-- 在职类型图表 -->
<div class="card"> <!-- <div class="card">
<div class="card-title">人员类型统计</div> <div class="card-title">人员类型统计</div>
<div class="chart-container" id="userStateMemberChart" v-loading="loading.userStateMember"></div> <div class="chart-container" id="userStateMemberChart" v-loading="loading.userStateMember"></div>
</div> </div>-->
</div> </div>
<!-- 右侧表格区域 --> <!-- 右侧表格区域 -->
@@ -622,8 +622,8 @@ layout("/layouts/platform.html"){
// X轴配置 // X轴配置
xAxis: { xAxis: {
label: { label: {
autoHide: true, autoHide: false,
autoRotate: false, autoRotate: true,
style: { style: {
fill: '#666', fill: '#666',
fontSize: 12 fontSize: 12