..
This commit is contained in:
@@ -445,29 +445,17 @@
|
||||
}
|
||||
|
||||
:root {
|
||||
/*--color-primary: #1890ff;*/
|
||||
/*--color-primary-1: #e6f7ff;*/
|
||||
/*--color-primary-2: #bae7ff;*/
|
||||
/*--color-primary-3: #91d5ff;*/
|
||||
/*--color-primary-4: #69c0ff;*/
|
||||
/*--color-primary-5: #73d13d;*/
|
||||
/*--color-primary-6: #1890ff;*/
|
||||
/*--color-primary-7: #096dd9;*/
|
||||
/*--color-primary-8: #0050b3;*/
|
||||
/*--color-primary-9: #003a8c;*/
|
||||
/*--color-primary-10: #002766;*/
|
||||
|
||||
--color-primary: #217050;
|
||||
--color-primary-1: #e8f5eb;
|
||||
--color-primary-2: #c3e6d1;
|
||||
--color-primary-3: #9dd7b7;
|
||||
--color-primary-4: #78c89d;
|
||||
--color-primary-5: #53b983;
|
||||
--color-primary-6: #217050; /* 主色 */
|
||||
--color-primary-7: #1a5a40;
|
||||
--color-primary-8: #134330;
|
||||
--color-primary-9: #0d2d20;
|
||||
--color-primary-10: #061610;
|
||||
--color-primary: #006db9; /* 主色 */
|
||||
--color-primary-1: #e6f3ff; /* 最浅,用于浅色背景 */
|
||||
--color-primary-2: #b3d9ff; /* 较浅,用于 hover/light-bg */
|
||||
--color-primary-3: #80c0ff; /* 轻微强调 */
|
||||
--color-primary-4: #4da6ff; /* 中等强调 */
|
||||
--color-primary-5: #1a8cff; /* 较强强调 */
|
||||
--color-primary-6: #006db9; /* 主色(默认) */
|
||||
--color-primary-7: #005aa3; /* 点击/active 状态 */
|
||||
--color-primary-8: #00468c; /* 较深,用于文字/强调 */
|
||||
--color-primary-9: #003370; /* 更深,用于深色模式 */
|
||||
--color-primary-10: #002054; /* 最深,用于特殊强调 */
|
||||
|
||||
--color-success: #52c41a;
|
||||
--color-success-1: #f6ffed;
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
flex-wrap: wrap;
|
||||
column-gap: 50px;
|
||||
row-gap: 10px;
|
||||
container-type: inline-size;
|
||||
}
|
||||
|
||||
.search .search-item {
|
||||
@@ -120,6 +121,25 @@
|
||||
}
|
||||
}
|
||||
|
||||
@container (max-width: 800px) {
|
||||
.search .search-item {
|
||||
width: calc((100%) / 3);
|
||||
}
|
||||
}
|
||||
|
||||
@container (max-width: 600px) {
|
||||
.search .search-item {
|
||||
width: calc((100%) / 2);
|
||||
}
|
||||
}
|
||||
|
||||
@container (max-width: 400px) {
|
||||
.search .search-item {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Text Color Variant
|
||||
*
|
||||
|
||||
@@ -0,0 +1,211 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<el-row type="flex" :gutter="20" style="height: calc(100vh - 126px)">
|
||||
<el-col :span="12">
|
||||
<el-card shadow="never">
|
||||
<table-tool label="已授权人员"></table-tool>
|
||||
<el-table :data="hasAuthUsers" border size="small">
|
||||
<el-table-column label="序号" type="index" width="50px"></el-table-column>
|
||||
<el-table-column prop="username" label="姓名"></el-table-column>
|
||||
<el-table-column prop="loginname" label="工号"></el-table-column>
|
||||
<el-table-column prop="mobile" label="联系方式"></el-table-column>
|
||||
<el-table-column prop="roleName" label="角色"></el-table-column>
|
||||
<el-table-column label="操作" width="150px">
|
||||
<template scope="scope">
|
||||
<el-button size="mini" type="danger" @click="cancelAuthorization(scope.row)">取消授权
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="姓名">
|
||||
<el-input v-model="pageForm.searchKeyword" placeholder="请输入姓名"></el-input>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool label="申请记录">
|
||||
<el-radio-group v-model="pageForm.mode" size="small" @change="doSearch" class="mr5">
|
||||
<el-radio-button label="JOIN">新增</el-radio-button>
|
||||
<el-radio-button label="EXIT">退出</el-radio-button>
|
||||
</el-radio-group>
|
||||
<el-button size="small" type="primary" icon="el-icon-plus" @click="openAdd">新增授权</el-button>
|
||||
</table-tool>
|
||||
<el-table :data="tableData">
|
||||
<el-table-column type="index" label="序号" width="50px" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginName"></el-table-column>
|
||||
<el-table-column label="联系电话" prop="mobile"></el-table-column>
|
||||
<el-table-column label="授权角色" prop="roleName"></el-table-column>
|
||||
<el-table-column label="授权模式" prop="mode">
|
||||
<template slot-scope="scope">
|
||||
<el-tag size="mini" type="success" v-if="scope.row.mode === 'JOIN'">加入</el-tag>
|
||||
<el-tag size="mini" type="danger" v-if="scope.row.mode === 'EXIT'">退出</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程节点" prop="processInstanceNodeName"></el-table-column>
|
||||
<el-table-column label="操作" width="150px" fixed="right">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="primary"
|
||||
@click="onOpen(row.id)">
|
||||
查看
|
||||
</el-button>
|
||||
<el-button v-if="row.processInstanceStatus === 'RUNNING'" size="mini" type="danger"
|
||||
@click="cancelApply(row)">取消申请
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-dialog title="新增授权" :visible.sync="dialogFormVisible" width="600px" :close-on-click-modal="false">
|
||||
<el-form :model="formData" ref="form" size="small" label-width="80px">
|
||||
<el-form-item prop="roleCode" label="角色"
|
||||
:rules="[{required: true, message: '请选择角色', trigger: 'change'}]">
|
||||
<dict-select v-model="formData.roleCode" code="BRANCH_UNION_ROLES"></dict-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="userId" label="人员"
|
||||
:rules="[{required: true, message: '请选择人员', trigger: 'change'}]">
|
||||
<user-select
|
||||
style="width: 100%"
|
||||
v-model="formData.userId"
|
||||
api="/platform/branchUnionUser/authorization/apply/listUserSelect"
|
||||
:option_label_func="
|
||||
(item) => {
|
||||
return item.username + item.loginname + '(' + item.unitName + ')'
|
||||
}
|
||||
"
|
||||
></user-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="reason" label="申请理由"
|
||||
:rules="[{required: true, message: '请填写申请理由', trigger: 'blur'}]">
|
||||
<el-input type="textarea" v-model="formData.reason" rows="4" placeholder="请填写申请理由"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogFormVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="doSubmit">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="查看详情" :visible.sync="dialogVisible" width="800px">
|
||||
<info ref="infoRef"></info>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include('../info.js'){}#-->
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
"info": info
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableData: [],
|
||||
dialogFormVisible: false,
|
||||
formData: {
|
||||
roleCode: "",
|
||||
userId: ""
|
||||
},
|
||||
pageForm: {
|
||||
mode: "JOIN"
|
||||
},
|
||||
hasAuthUsers: [],
|
||||
dialogVisible: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openAdd() {
|
||||
this.dialogFormVisible = true
|
||||
this.formData = {
|
||||
roleCode: "",
|
||||
userId: ""
|
||||
}
|
||||
},
|
||||
// 取消授权
|
||||
cancelAuthorization(row) {
|
||||
this.$confirm("您确定要取消授权吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
$.post("/platform/branchUnionUser/authorization/apply/cancel", row).then((res) => {
|
||||
this.$message.success(res.msg)
|
||||
this.pageForm.mode = "EXIT"
|
||||
this.doSearch()
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 取消申请
|
||||
cancelApply(row) {
|
||||
this.$confirm("您确定要取消申请吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
$.post("/platform/branchUnionUser/authorization/apply/cancelApply", {
|
||||
id: row.id
|
||||
}).then((res) => {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
onOpen(id) {
|
||||
this.dialogVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.infoRef.onOpen(id)
|
||||
})
|
||||
},
|
||||
|
||||
// 提交
|
||||
doSubmit() {
|
||||
this.$refs.form.validate((valid) => {
|
||||
if (valid) {
|
||||
$.post("/platform/branchUnionUser/authorization/apply/doApply", this.formData).then((res) => {
|
||||
this.$message.success(res.msg)
|
||||
this.dialogFormVisible = false
|
||||
this.doSearch()
|
||||
})
|
||||
} else {
|
||||
this.$message.error("请填写完整信息")
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
listAuthUsers() {
|
||||
this.$axios.get("/platform/branchUnionUser/authorization/apply/branchUnionUserPageData").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.hasAuthUsers = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
created() {
|
||||
this.listAuthUsers()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+165
@@ -0,0 +1,165 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="姓名">
|
||||
<el-input v-model="pageForm.searchKeyword" placeholder="请输入姓名" clearable></el-input>
|
||||
</search-item>
|
||||
<search-item label="所属工会">
|
||||
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable
|
||||
style="width: 100%">
|
||||
<el-option v-for="item in unionOptions" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
|
||||
<el-radio-button :label="true">已审核</el-radio-button>
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<el-table :data="tableData">
|
||||
<el-table-column type="index" label="序号" width="50px" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginName"></el-table-column>
|
||||
<el-table-column label="分工会" prop="unionName"></el-table-column>
|
||||
<el-table-column label="联系电话" prop="mobile"></el-table-column>
|
||||
<el-table-column label="授权角色" prop="roleName"></el-table-column>
|
||||
<el-table-column label="授权模式" prop="mode">
|
||||
<template slot-scope="scope">
|
||||
<el-tag size="mini" type="success" v-if="scope.row.mode === 'JOIN'">加入</el-tag>
|
||||
<el-tag size="mini" type="danger" v-if="scope.row.mode === 'EXIT'">退出</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程节点" prop="processInstanceNodeName"></el-table-column>
|
||||
<el-table-column label="操作" width="200px" fixed="right">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="primary"
|
||||
@click="onOpen(row.id)">
|
||||
查看
|
||||
</el-button>
|
||||
<el-button v-if="row.processInstanceTaskStatus==='ACTIVE'" @click="openApproval(row)" size="mini"
|
||||
type="primary">
|
||||
审核
|
||||
</el-button>
|
||||
<!-- <el-button-->
|
||||
<!-- v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"-->
|
||||
<!-- @click="openRevoke(row.processInstanceTaskId)"-->
|
||||
<!-- size="mini"-->
|
||||
<!-- type="danger"-->
|
||||
<!-- >-->
|
||||
<!-- 撤回-->
|
||||
<!-- </el-button>-->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<el-dialog title="审核" :visible.sync="dialogVisible" width="800px">
|
||||
<info ref="infoRef"></info>
|
||||
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">{{formData.processInstanceNodeName}}</div>
|
||||
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
|
||||
<el-form-item label="审核意见" prop="approvalOpinion"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.approvalOpinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button plain @click="dialogVisible=false">取消</el-button>
|
||||
<el-button type="danger" @click="doApproval('REJECT')">拒绝</el-button>
|
||||
<el-button type="primary" @click="doApproval('PASS')">同意</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include('../info.js'){}#-->
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
"info": info
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
unionOptions: [],
|
||||
pageForm: {
|
||||
approval: false
|
||||
},
|
||||
dialogVisible: false,
|
||||
showApprovalForm: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOpen(id) {
|
||||
this.dialogVisible = true
|
||||
this.showApprovalForm = false
|
||||
this.$nextTick(()=>{
|
||||
this.$refs.infoRef.onOpen(id)
|
||||
})
|
||||
},
|
||||
openApproval(row) {
|
||||
this.dialogVisible = true
|
||||
this.showApprovalForm = true
|
||||
this.formData = row.approvalParam
|
||||
this.formData.approvalOpinion = '同意'
|
||||
this.$nextTick(()=>{
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
})
|
||||
},
|
||||
doApproval(approvalType) {
|
||||
this.formData.bpmTaskApprovalType = approvalType
|
||||
this.$refs.approvalFormRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post("/platform/branchUnionUser/authorization/approval/approval", {
|
||||
approval: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.dialogVisible = false
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
openRevoke(taskId) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/branchUnionUser/authorization/approval/revoke", { taskId }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
this.$businessTool.listUnion().then((res) => (this.unionOptions = res))
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,35 @@
|
||||
const info = {
|
||||
template: /*language=HTML*/ `
|
||||
<div class="">
|
||||
<div class="process-title">
|
||||
申请信息
|
||||
</div>
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="姓名">{{ viewData.userName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="工号">{{ viewData.loginName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系电话">{{ viewData.mobile }}</el-descriptions-item>
|
||||
<el-descriptions-item label="所属工会">{{ viewData.unionName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="授权模式" :span="2">
|
||||
<el-tag size="mini" type="success" v-if="viewData.mode === 'JOIN'">加入</el-tag>
|
||||
<el-tag size="mini" type="danger" v-if="viewData.mode === 'EXIT'">退出</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申请理由" :span="2">{{ viewData.reason }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
`,
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
viewData: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOpen(id) {
|
||||
this.$axios.post("/platform/branchUnionUser/authorization/common/info", { id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.viewData = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
const MSG_FORM_TEMPLATE = {
|
||||
template: `
|
||||
template: /*language=HTML*/ `
|
||||
<div>
|
||||
<el-form :model="formData" ref="addForm" :rules="formRules" label-width="120px">
|
||||
<el-form-item prop="title" label="标题">
|
||||
@@ -20,6 +20,13 @@ const MSG_FORM_TEMPLATE = {
|
||||
<el-radio border label="user">用户消息</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="cron" label="定时发送">
|
||||
<el-input placeholder="Cron表达式,为空则立即发送" v-model="formData.cron">
|
||||
<template slot="append">
|
||||
<a href="${base}/platform/sys/task/cron" style="color: #409eff" target="_blank">表达式生成器</a>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="用户列表" v-if="'user'==formData.type">
|
||||
<el-row class="mb10">
|
||||
<el-button icon="el-icon-search" @click="openSelect" size="small">选择用户</el-button>
|
||||
@@ -169,16 +176,16 @@ const MSG_FORM_TEMPLATE = {
|
||||
return false
|
||||
}
|
||||
|
||||
if(loginNames.length > 100){
|
||||
if (loginNames.length > 100) {
|
||||
this.$message.warning("单条消息最多发送100人,请分批次发送。")
|
||||
return false
|
||||
}
|
||||
|
||||
this.$confirm('您确定要发送吗, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(()=>{
|
||||
this.$confirm("您确定要发送吗, 是否继续?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios
|
||||
.post("/platform/sys/msg/addDo", {
|
||||
msg: JSON.stringify(this.formData),
|
||||
@@ -226,7 +233,7 @@ const MSG_FORM_TEMPLATE = {
|
||||
},
|
||||
clearSelect() {
|
||||
this.userTableData = []
|
||||
if(this.$refs.tableRef){
|
||||
if (this.$refs.tableRef) {
|
||||
this.$refs.tableRef.clearSelection()
|
||||
}
|
||||
},
|
||||
@@ -242,13 +249,13 @@ const MSG_FORM_TEMPLATE = {
|
||||
const self = this
|
||||
console.log(this.selectUsers)
|
||||
console.log(this.userTableData)
|
||||
const tableLoginNames = this.userTableData.map(v=>v.loginname)
|
||||
const tableLoginNames = this.userTableData.map((v) => v.loginname)
|
||||
this.selectUsers.forEach(function (o) {
|
||||
if(!tableLoginNames.includes(o.loginname)){
|
||||
if (!tableLoginNames.includes(o.loginname)) {
|
||||
self.userTableData.push(o)
|
||||
}
|
||||
})
|
||||
if(this.$refs.tableRef){
|
||||
if (this.$refs.tableRef) {
|
||||
this.$refs.tableRef.clearSelection()
|
||||
}
|
||||
this.selectDialogVisible = false
|
||||
|
||||
@@ -97,7 +97,7 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<template #view>
|
||||
<el-descriptions class="margin-top" title="" :column="3" border>
|
||||
<el-descriptions-item span="2">
|
||||
<el-descriptions-item :span="2">
|
||||
<template slot="label">协会名称</template>
|
||||
<div v-html="viewData.clubName"></div>
|
||||
</el-descriptions-item>
|
||||
@@ -125,11 +125,11 @@ layout("/layouts/platform.html"){
|
||||
<template slot="label">当前人数</template>
|
||||
{{viewData.currentPeopleNum}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<el-descriptions-item :span="3">
|
||||
<template slot="label">协会介绍</template>
|
||||
<div class="text-left" v-html="viewData.introduce"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<el-descriptions-item :span="3">
|
||||
<template slot="label">协会宗旨</template>
|
||||
<div class="text-left" v-html="viewData.purpose"></div>
|
||||
</el-descriptions-item>
|
||||
@@ -149,11 +149,11 @@ layout("/layouts/platform.html"){
|
||||
:view="true"
|
||||
></file-upload>
|
||||
</el-descriptions-item>-->
|
||||
<el-descriptions-item span="1.5">
|
||||
<el-descriptions-item :span="3">
|
||||
<template slot="label">协会章程</template>
|
||||
<file-preview :files="viewData.rulesFile" complete_result></file-preview>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="2">
|
||||
<el-descriptions-item :span="3">
|
||||
<template slot="label">年度活动计划</template>
|
||||
<file-preview :files="viewData.yearPlanFile" complete_result></file-preview>
|
||||
</el-descriptions-item>
|
||||
|
||||
@@ -1,40 +1,45 @@
|
||||
const CLUB_INFO_MANAGE_TEMPLATE = {
|
||||
template: `
|
||||
<div>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="姓名/工号:">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||
</search-item>
|
||||
<search-item label="人员类型:">
|
||||
<dict-select code="PERSON_TYPE" placeholder="请选择人员类型" clearable v-model="pageForm.personType"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="在职状态:">
|
||||
<dict-select clearable code="USER_STATE" placeholder="请选择人员状态" v-model="pageForm.userState"></dict-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="会员信息">
|
||||
<el-button size="small" type="primary" icon="el-icon-download" @click="exportRegistrationDoc">导出登记表</el-button>
|
||||
<el-button @click="openImport" size="small" type="primary">导入成员</el-button>
|
||||
<el-button size="small" type="primary" @click="openUserAdd(true)">录入成员</el-button>
|
||||
<el-button size="small" type="primary" @click="openUserAdd(false)">设置理事机构</el-button>
|
||||
<el-radio-group @change="doSearch" style="margin-left: 10px" v-model="pageForm.radioType" size="small">
|
||||
<el-radio-button label="3">全部</el-radio-button>
|
||||
<el-radio-button label="2">协会成员</el-radio-button>
|
||||
<el-radio-button label="1">理事机构</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" row-key="id" @sort-change='pageOrder'>
|
||||
<el-table-column :index="indexMethod" label="序号" type="index" width="70"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginName" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column label="姓名" prop="userName" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column label="性别" prop="sex" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column label="电话" prop="mobile" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="所属单位" prop="unitName" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="身份" prop="roleName" show-overflow-tooltip></el-table-column>
|
||||
template: /*language=HTML*/ `
|
||||
<div>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="姓名/工号:">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||
</search-item>
|
||||
<search-item label="人员类型:">
|
||||
<dict-select code="PERSON_TYPE" placeholder="请选择人员类型" clearable
|
||||
v-model="pageForm.personType"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="在职状态:">
|
||||
<dict-select clearable code="USER_STATE" placeholder="请选择人员状态"
|
||||
v-model="pageForm.userState"></dict-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="会员信息">
|
||||
<el-button size="small" type="primary" icon="el-icon-download" @click="exportRegistrationDoc">
|
||||
导出登记表
|
||||
</el-button>
|
||||
<el-button @click="openImport" size="small" type="primary">导入成员</el-button>
|
||||
<el-button size="small" type="primary" @click="openUserAdd(true)">录入成员</el-button>
|
||||
<el-button size="small" type="primary" @click="openUserAdd(false)">设置理事机构</el-button>
|
||||
<el-radio-group @change="doSearch" style="margin-left: 10px" v-model="pageForm.radioType"
|
||||
size="small">
|
||||
<el-radio-button label="3">全部</el-radio-button>
|
||||
<el-radio-button label="2">协会成员</el-radio-button>
|
||||
<el-radio-button label="1">理事机构</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" row-key="id" @sort-change='pageOrder'>
|
||||
<el-table-column :index="indexMethod" label="序号" type="index" width="70"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginName" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column label="姓名" prop="userName" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column label="性别" prop="sex" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column label="电话" prop="mobile" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="所属单位" prop="unitName" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="身份" prop="roleNames" show-overflow-tooltip></el-table-column>
|
||||
<!-- <el-table-column label="变更状态" prop="state"show-overflow-tooltip sortable>
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.state==1">待校工会审核</span>
|
||||
@@ -52,117 +57,156 @@ const CLUB_INFO_MANAGE_TEMPLATE = {
|
||||
<el-tag v-if="scope.row.status==5" size="mini" type="success">审核通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column label="操作">
|
||||
<template slot-scope="{row}">
|
||||
<el-dropdown>
|
||||
<el-button size="mini">
|
||||
<i class="ti-settings"></i>
|
||||
<span class="ti-angle-down"></span>
|
||||
</el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<!-- <el-dropdown-item @click.native="updatePayed(row)" class="text-primary">-->
|
||||
<!-- {{row.payed === true ? '设置为未缴费' : '设置为缴费'}}-->
|
||||
<el-table-column label="操作">
|
||||
<template slot-scope="{row}">
|
||||
<el-dropdown>
|
||||
<el-button size="mini">
|
||||
<i class="ti-settings"></i>
|
||||
<span class="ti-angle-down"></span>
|
||||
</el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item @click.native="openAuth(row)">授权</el-dropdown-item>
|
||||
|
||||
<!-- <el-dropdown-item @click.native="updatePayed(row)" class="text-primary">-->
|
||||
<!-- {{row.payed === true ? '设置为未缴费' : '设置为缴费'}}-->
|
||||
<!-- </el-dropdown-item>-->
|
||||
<!-- <el-dropdown-item @click.native="updateGive(row)" class="text-primary">-->
|
||||
<!-- {{row.giveMoney === true ? '设置为不拨付' : '设置为拨付'}}-->
|
||||
<!-- </el-dropdown-item>-->
|
||||
<!--v-if="row.changeRoleCode === '' || row.changeRoleCode === undefined || row.state !== 1"-->
|
||||
<!-- <template>-->
|
||||
<!-- <el-dropdown-item v-if="row.roleCode !== 'CLUB_PRESIDENT'"-->
|
||||
<!-- @click.native="updateRoleCode(row, 'CLUB_PRESIDENT', '会长')"-->
|
||||
<!-- class="text-primary">-->
|
||||
<!-- 设置会长-->
|
||||
<!-- </el-dropdown-item>-->
|
||||
<!-- <el-dropdown-item @click.native="updateGive(row)" class="text-primary">-->
|
||||
<!-- {{row.giveMoney === true ? '设置为不拨付' : '设置为拨付'}}-->
|
||||
<!-- <el-dropdown-item v-if="row.roleCode !== 'CLUB_VICE_PRESIDENT'"-->
|
||||
<!-- @click.native="updateRoleCode(row, 'CLUB_VICE_PRESIDENT', '副会长')"-->
|
||||
<!-- class="text-primary">-->
|
||||
<!-- 设置副会长-->
|
||||
<!-- </el-dropdown-item>-->
|
||||
<!--v-if="row.changeRoleCode === '' || row.changeRoleCode === undefined || row.state !== 1"-->
|
||||
<template>
|
||||
<el-dropdown-item v-if="row.roleCode !== 'CLUB_PRESIDENT'" @click.native="updateRoleCode(row, 'CLUB_PRESIDENT', '会长')" class="text-primary">
|
||||
设置会长
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item v-if="row.roleCode !== 'CLUB_VICE_PRESIDENT'" @click.native="updateRoleCode(row, 'CLUB_VICE_PRESIDENT', '副会长')" class="text-primary">
|
||||
设置副会长
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item v-if="row.roleCode !== 'CLUB_SECRETARY'" @click.native="updateRoleCode(row, 'CLUB_SECRETARY', '秘书长')" class="text-primary">
|
||||
设置秘书长
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item v-if="row.roleCode !== 'CLUB_VICE_SECRETARY'" @click.native="updateRoleCode(row, 'CLUB_VICE_SECRETARY', '副秘书长')" class="text-primary">
|
||||
设置副秘书长
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item v-if="row.roleCode !== 'CLUB_OPERATOR'" @click.native="updateRoleCode(row, 'CLUB_OPERATOR', '操作员')" class="text-primary">
|
||||
设置操作员
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item v-if="row.roleCode !== 'CLUB_MEMBER'" @click.native="updateRoleCode(row, 'CLUB_MEMBER', '会员')" class="text-primary">
|
||||
设置会员
|
||||
</el-dropdown-item>
|
||||
</template>
|
||||
<!-- <template v-else>
|
||||
<el-dropdown-item @click.native="rollbackChange(row)" class="text-primary">
|
||||
撤回变更
|
||||
</el-dropdown-item>
|
||||
</template>-->
|
||||
<!--<el-dropdown-item @click.native="viewInfo(row)">查看注册信息</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="exportInfo(row)">导出登记表</el-dropdown-item>-->
|
||||
<el-dropdown-item @click.native="userDelete(row)">删除</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="exitClub(row)">退会</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container" style="margin-top: 20px">
|
||||
<el-pagination
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-sizes="[5,10, 20, 30, 50, 200]"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next"
|
||||
:total="pageForm.totalCount"
|
||||
></el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<el-dialog :title="addMember === true ? '录入成员' : '设置理事机构'"
|
||||
<!-- <el-dropdown-item v-if="row.roleCode !== 'CLUB_SECRETARY'"-->
|
||||
<!-- @click.native="updateRoleCode(row, 'CLUB_SECRETARY', '秘书长')"-->
|
||||
<!-- class="text-primary">-->
|
||||
<!-- 设置秘书长-->
|
||||
<!-- </el-dropdown-item>-->
|
||||
<!-- <el-dropdown-item v-if="row.roleCode !== 'CLUB_VICE_SECRETARY'"-->
|
||||
<!-- @click.native="updateRoleCode(row, 'CLUB_VICE_SECRETARY', '副秘书长')"-->
|
||||
<!-- class="text-primary">-->
|
||||
<!-- 设置副秘书长-->
|
||||
<!-- </el-dropdown-item>-->
|
||||
<!-- <el-dropdown-item v-if="row.roleCode !== 'CLUB_OPERATOR'"-->
|
||||
<!-- @click.native="updateRoleCode(row, 'CLUB_OPERATOR', '操作员')"-->
|
||||
<!-- class="text-primary">-->
|
||||
<!-- 设置操作员-->
|
||||
<!-- </el-dropdown-item>-->
|
||||
<!-- <el-dropdown-item v-if="row.roleCode !== 'CLUB_MEMBER'"-->
|
||||
<!-- @click.native="updateRoleCode(row, 'CLUB_MEMBER', '会员')"-->
|
||||
<!-- class="text-primary">-->
|
||||
<!-- 设置会员-->
|
||||
<!-- </el-dropdown-item>-->
|
||||
<!-- </template>-->
|
||||
<!-- <template v-else>
|
||||
<el-dropdown-item @click.native="rollbackChange(row)" class="text-primary">
|
||||
撤回变更
|
||||
</el-dropdown-item>
|
||||
</template>-->
|
||||
<!--<el-dropdown-item @click.native="viewInfo(row)">查看注册信息</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="exportInfo(row)">导出登记表</el-dropdown-item>-->
|
||||
<el-dropdown-item @click.native="userDelete(row)">删除</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="exitClub(row)">退会</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container" style="margin-top: 20px">
|
||||
<el-pagination
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-sizes="[5,10, 20, 30, 50, 200]"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next"
|
||||
:total="pageForm.totalCount"
|
||||
></el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<el-dialog :title="addMember === true ? '录入成员' : '设置理事机构'"
|
||||
:visible.sync="addDialogVisible" :close-on-click-modal="false" width="40%">
|
||||
<el-form :model="formData" ref="userForm" :rules="userFormRules" label-width="80px">
|
||||
<el-form-item label="成员" prop="users">
|
||||
<el-select v-model="formData.users" style="width: 100%" multiple filterable
|
||||
remote reserve-keyword :remote-method="selectUser">
|
||||
<el-option
|
||||
v-for="item in userOptions"
|
||||
:key="item.id"
|
||||
:label="item.userName + item.loginName + '(' + item.unitName + ')'"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否缴费" prop="payed" size="medium">
|
||||
<el-radio :label="true" border v-model="formData.payed">已缴费</el-radio>
|
||||
<el-radio :label="false" border v-model="formData.payed">未缴费</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item label="身份" prop="roleCode">
|
||||
<el-radio-group v-model="formData.roleCode" size="medium">
|
||||
<el-radio v-if="!addMember" border label="CLUB_PRESIDENT">会长</el-radio>
|
||||
<el-radio v-if="!addMember" border label="CLUB_VICE_PRESIDENT">副会长</el-radio>
|
||||
<el-radio v-if="!addMember" border label="CLUB_SECRETARY">秘书长</el-radio>
|
||||
<el-radio v-if="!addMember" border label="CLUB_VICE_SECRETARY">副秘书长</el-radio>
|
||||
<el-radio v-if="addMember" border label="CLUB_MEMBER">会员</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-form :model="formData" ref="userForm" :rules="userFormRules" label-width="80px">
|
||||
<el-form-item label="成员" prop="users">
|
||||
<el-select v-model="formData.users" style="width: 100%" multiple filterable
|
||||
remote reserve-keyword :remote-method="selectUser">
|
||||
<el-option
|
||||
v-for="item in userOptions"
|
||||
:key="item.id"
|
||||
:label="item.userName + item.loginName + '(' + item.unitName + ')'"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否缴费" prop="payed" size="medium">
|
||||
<el-radio :label="true" border v-model="formData.payed">已缴费</el-radio>
|
||||
<el-radio :label="false" border v-model="formData.payed">未缴费</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item label="身份" prop="roleCode">
|
||||
<el-radio-group v-model="formData.roleCode" size="medium">
|
||||
<el-radio v-if="!addMember" border label="CLUB_PRESIDENT">会长</el-radio>
|
||||
<el-radio v-if="!addMember" border label="CLUB_VICE_PRESIDENT">副会长</el-radio>
|
||||
<el-radio v-if="!addMember" border label="CLUB_SECRETARY">秘书长</el-radio>
|
||||
<el-radio v-if="!addMember" border label="CLUB_VICE_SECRETARY">副秘书长</el-radio>
|
||||
<el-radio v-if="addMember" border label="CLUB_MEMBER">会员</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="addDialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="userDoAdd">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="importDialog"
|
||||
title="导入成员"
|
||||
width="50%"
|
||||
>
|
||||
<file-import ref="viewImport" temp_url="/platform/club/infoManage/manage/downloadUserImport"
|
||||
post_url="/platform/club/infoManage/manage/doImportUser" is_show_radio
|
||||
@flush="successImport" :business_id="parentNode.currentTreeData.id"
|
||||
></file-import>
|
||||
</el-dialog>
|
||||
|
||||
</el-dialog>
|
||||
</div>
|
||||
`,
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="importDialog"
|
||||
title="导入成员"
|
||||
width="50%"
|
||||
>
|
||||
<file-import ref="viewImport" temp_url="/platform/club/infoManage/manage/downloadUserImport"
|
||||
post_url="/platform/club/infoManage/manage/doImportUser" is_show_radio
|
||||
@flush="successImport" :business_id="parentNode.currentTreeData.id"
|
||||
></file-import>
|
||||
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="授权身份" :visible.sync="authDialogVisible" width="50%">
|
||||
<el-form :model="authFormData" ref="authForm" label-width="80px">
|
||||
<el-form-item label="姓名">
|
||||
<el-input v-model="authFormData.userName" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="工号">
|
||||
<el-input v-model="authFormData.loginName" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="身份" prop="roleCode"
|
||||
:rules="[{required: true, message: '请选择身份', trigger: 'blur'}]">
|
||||
<el-checkbox-group v-model="authFormData.roleCode">
|
||||
<el-checkbox label="CLUB_PRESIDENT">协会会长</el-checkbox>
|
||||
<el-checkbox label="CLUB_VICE_PRESIDENT">协会副会长</el-checkbox>
|
||||
<el-checkbox label="CLUB_SECRETARY">协会秘书长</el-checkbox>
|
||||
<el-checkbox label="CLUB_VICE_SECRETARY">协会副秘书长</el-checkbox>
|
||||
<el-checkbox label="CLUB_OPERATOR">协会操作员</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="authDialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="authConfirm">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
`,
|
||||
mixins: [initTableMixins],
|
||||
props: {
|
||||
parentNode: {
|
||||
@@ -183,7 +227,14 @@ const CLUB_INFO_MANAGE_TEMPLATE = {
|
||||
formData: {
|
||||
users: []
|
||||
},
|
||||
importDialog: false
|
||||
importDialog: false,
|
||||
|
||||
/*=======================协会授权==========================*/
|
||||
authDialogVisible: false,
|
||||
authRoleChecked: [],
|
||||
authFormData: {
|
||||
authRoleChecked: []
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
@@ -191,6 +242,46 @@ const CLUB_INFO_MANAGE_TEMPLATE = {
|
||||
"file-import": httpVueLoader("/components/plugins/sysImport/index.vue?v=" + new Date().getTime())
|
||||
},
|
||||
methods: {
|
||||
// 打开授权弹框
|
||||
openAuth(row) {
|
||||
this.authDialogVisible = true
|
||||
this.authFormData = {
|
||||
userId: row.userId,
|
||||
userName: row.userName,
|
||||
loginName: row.loginName,
|
||||
clubId: row.clubId,
|
||||
roleCode: row.roleCode ? JSON.parse(row.roleCode) : []
|
||||
}
|
||||
console.log(this.authFormData)
|
||||
},
|
||||
|
||||
// 授权确认提交
|
||||
authConfirm() {
|
||||
this.$refs.authForm.validate().then(async (valid) => {
|
||||
if (!valid) return
|
||||
|
||||
this.$confirm("是否确定授权?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then((res) => {
|
||||
this.$axios
|
||||
.post("/platform/club/infoManage/manage/doAuthRole", {
|
||||
userId: this.authFormData.userId,
|
||||
clubId: this.authFormData.clubId,
|
||||
roleCode: JSON.stringify(this.authFormData.roleCode)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("授权成功")
|
||||
this.authDialogVisible = false
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
openImport() {
|
||||
this.importData = {
|
||||
isfg: 1,
|
||||
@@ -247,7 +338,10 @@ const CLUB_INFO_MANAGE_TEMPLATE = {
|
||||
},
|
||||
async updatePayed(row) {
|
||||
const payed = !row.payed
|
||||
const resp = await this.$axios.post("/platform/club/infoManage/manage/updatePayed", { id: row.id, payed: payed })
|
||||
const resp = await this.$axios.post("/platform/club/infoManage/manage/updatePayed", {
|
||||
id: row.id,
|
||||
payed: payed
|
||||
})
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
await this.pageData()
|
||||
|
||||
@@ -46,7 +46,6 @@ layout("/layouts/platform.html"){
|
||||
</el-row>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
<!--#include("../../register/apply/clubRegisterForm.js"){}#-->
|
||||
@@ -91,7 +90,9 @@ layout("/layouts/platform.html"){
|
||||
treeNodeClick(data, node) {
|
||||
this.currentTreeData = data
|
||||
this.currentTreeNode = node
|
||||
this.$refs.clubInfo.pageData()
|
||||
if (this.$refs.clubInfo) {
|
||||
this.$refs.clubInfo.pageData()
|
||||
}
|
||||
},
|
||||
getTreeData() {
|
||||
this.$axios.post("/platform/club/infoManage/manage/getClubTreeData").then((res) => {
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,135 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="名称">
|
||||
<el-input placeholder="名称" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="数据列表">
|
||||
<el-button type="primary" size="small" icon="el-icon-plus" @click="onOpen">新增</el-button>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
|
||||
<el-table-column :index="indexMethod" align="center" header-align="center" label="序号" type="index" width="80px"></el-table-column>
|
||||
<el-table-column label="名称" prop="name" sortable></el-table-column>
|
||||
<el-table-column label="模板内容" prop="template" width="400px"></el-table-column>
|
||||
<el-table-column label="定时任务" prop="cron" width="150px"></el-table-column>
|
||||
<el-table-column label="是否启用" prop="enabled" sortable width="150px">
|
||||
<template scope="{row}">
|
||||
<el-tag :type="row.enabled ? 'success' : 'danger'" size="mini">{{row.enabled ? '是' : '否'}}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="primary" @click="onEdit(row)">修改</el-button>
|
||||
<el-button size="mini" type="danger" @click="onDelete(row.id)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</guava>
|
||||
|
||||
<el-dialog :title="formData.id ? '编辑' : '新增'" :visible.sync="dialogVisible" :close-on-click-modal="false" width="60%">
|
||||
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="formData.name" placeholder="名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="模板内容" prop="template">
|
||||
<el-input v-model="formData.template" placeholder="模板内容" type="textarea" rows="5"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="定时任务" prop="cron">
|
||||
{{formData.cron}}
|
||||
<el-select v-model="formData.cron" placeholder="请选择定时任务或者输入cron表达式" allow-create filterable>
|
||||
<el-option label="早上8点" value="0 0 8 * * ?"></el-option>
|
||||
<el-option label="早上9点" value="0 0 9 * * ?"></el-option>
|
||||
<el-option label="早上10点" value="0 0 10 * * ?"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否启用" prop="enabled">
|
||||
<el-switch v-model="formData.enabled"></el-switch>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="onSubmit">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: "#app",
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
formRules: {
|
||||
name: [{ required: true, message: "请输入名称", trigger: "blur" }],
|
||||
template: [{ required: true, message: "请输入模板内容", trigger: "blur" }],
|
||||
cron: [{ required: true, message: "请选择定时任务或者输入cron表达式", trigger: "blur" }],
|
||||
enabled: [{ required: true, message: "请选择是否启用", trigger: "blur" }]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOpen() {
|
||||
this.dialogVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.formData = {}
|
||||
this.$refs.formRef.resetFields()
|
||||
})
|
||||
},
|
||||
onEdit(row) {
|
||||
this.dialogVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.formData = { ...row }
|
||||
})
|
||||
},
|
||||
onSubmit() {
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios.post("/platform/birthdayWishes/plan/" + (this.formData.id ? "update" : "insert"), this.formData).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.dialogVisible = false
|
||||
this.doSearch()
|
||||
} else {
|
||||
this.$message.error(res.msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
onDelete(id) {
|
||||
this.$confirm("确定删除吗?", "提示", {
|
||||
type: "warning",
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/birthdayWishes/plan/delete", { id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
} else {
|
||||
this.$message.error(res.msg)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -44,7 +44,7 @@ layout("/layouts/platform.html"){
|
||||
<table-tool title="荣誉列表">
|
||||
<el-button type="primary" size="small" @click="doExport">导出</el-button>
|
||||
</table-tool>
|
||||
<el-table :data="tableData">
|
||||
<el-table :data="tableData" :key="pageForm.toString()">
|
||||
<el-table-column label="序号" type="index" header-align="center" align="center" width="50"></el-table-column>
|
||||
<template v-if="pageForm.queryTypeCode=='HONOR_SINGLE'">
|
||||
<el-table-column prop="userName" label="姓名" header-align="center" align="center" sortable></el-table-column>
|
||||
@@ -53,24 +53,24 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column prop="unitName" label="所属单位" header-align="center" align="center" sortable></el-table-column>
|
||||
</template>
|
||||
<template v-if="pageForm.queryTypeCode=='HONOR_LIST'">
|
||||
<el-table-column prop="applyUnionName" label="申报分工会" header-align="center" align="center" sortable></el-table-column>
|
||||
<el-table-column
|
||||
prop="gameName"
|
||||
label="参加比赛名称"
|
||||
header-align="center"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
<el-table-column prop="applyUnionName" label="分工会" header-align="center" align="center" sortable></el-table-column>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="gameName"-->
|
||||
<!-- label="参加比赛名称"-->
|
||||
<!-- header-align="center"-->
|
||||
<!-- align="center"-->
|
||||
<!-- show-overflow-tooltip-->
|
||||
<!-- ></el-table-column>-->
|
||||
</template>
|
||||
<el-table-column prop="prizeName" label="奖项" header-align="center" align="center" sortable></el-table-column>
|
||||
<!--<el-table-column prop="prizeDesc" label="奖项说明" header-align="center" align="center"></el-table-column>-->
|
||||
<el-table-column prop="typeName" label="荣誉类型" header-align="center" align="center"></el-table-column>
|
||||
<el-table-column prop="levelName" label="级别" header-align="center" align="center" sortable></el-table-column>
|
||||
<el-table-column prop="grantUnit" label="授予单位" header-align="center" align="center" show-overflow-tooltip></el-table-column>
|
||||
<!-- <el-table-column prop="grantUnit" label="授予单位" header-align="center" align="center" show-overflow-tooltip></el-table-column>-->
|
||||
<el-table-column prop="grantDate" label="授予时间" header-align="center" align="center" sortable></el-table-column>
|
||||
<!--<el-table-column prop="archiveStatus" label="存档情况" header-align="center"
|
||||
align="center"></el-table-column>-->
|
||||
<el-table-column prop="awardMaterialsExcel" label="获奖材料" header-align="center" align="center"></el-table-column>
|
||||
<!-- <el-table-column prop="awardMaterialsExcel" label="获奖材料" header-align="center" align="center"></el-table-column>-->
|
||||
|
||||
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="100px">
|
||||
<template scope="{row}">
|
||||
@@ -287,20 +287,17 @@ layout("/layouts/platform.html"){
|
||||
const res = await this.$axios.post("/platform/honor/basic/settings/getData", { parentId: honorType })
|
||||
return res.data
|
||||
},
|
||||
getHonorType() {
|
||||
this.$axios.post("/platform/honor/basic/settings/getHonorType").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.honorTypeList = res.data
|
||||
console.log(this.honorTypeList)
|
||||
}
|
||||
})
|
||||
async getHonorType() {
|
||||
const res = await this.$axios.post("/platform/honor/basic/settings/getHonorType")
|
||||
if (res.code === 0) {
|
||||
this.honorTypeList = res.data
|
||||
}
|
||||
},
|
||||
getHonorLevel() {
|
||||
this.$axios.post("/platform/honor/basic/settings/getHonorLevel").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.honorLevelList = res.data
|
||||
}
|
||||
})
|
||||
async getHonorLevel() {
|
||||
const res = await this.$axios.post("/platform/honor/basic/settings/getHonorLevel")
|
||||
if (res.code === 0) {
|
||||
this.honorLevelList = res.data
|
||||
}
|
||||
},
|
||||
getHonorAwardType() {
|
||||
this.$axios.post("/platform/honor/basic/settings/getHonorAwardType").then((res) => {
|
||||
@@ -310,18 +307,17 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
async initData() {
|
||||
this.getHonorType()
|
||||
this.getHonorLevel()
|
||||
this.getHonorAwardType()
|
||||
await this.getHonorType()
|
||||
await this.getHonorLevel()
|
||||
await this.getHonorAwardType()
|
||||
this.$businessTool.listUnit().then((data) => {
|
||||
this.units = data
|
||||
})
|
||||
if (this.honorTypeList && this.honorLevelList.length > 0) {
|
||||
this.formData = {
|
||||
honorType: this.honorTypeList[0].id,
|
||||
queryTypeCode: this.honorLevelList[0].queryTypeCode
|
||||
}
|
||||
if (this.honorTypeList && this.honorLevelList) {
|
||||
this.$set(this.pageForm, "honorType", this.honorTypeList[0].id)
|
||||
this.$set(this.pageForm, "queryTypeCode", this.honorTypeList[0].queryTypeCode)
|
||||
this.honorPrizeList = await this.getHonorPrize(this.formData.honorType)
|
||||
console.log(this.pageForm)
|
||||
}
|
||||
},
|
||||
async honorTypeChange(val) {
|
||||
|
||||
@@ -5,11 +5,11 @@ layout("/layouts/platform.html"){
|
||||
<div id="app" v-cloak>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度">
|
||||
<el-date-picker placeholder="选择年度" type="year" style="width: 100%" v-model="pageForm.year" value-format="yyyy"></el-date-picker>
|
||||
</search-item>
|
||||
<!-- <search-item label="年度">-->
|
||||
<!-- <el-date-picker placeholder="选择年度" type="year" style="width: 100%" v-model="pageForm.year" value-format="yyyy"></el-date-picker>-->
|
||||
<!-- </search-item>-->
|
||||
<search-item label="活动">
|
||||
<el-select v-model="pageForm.activityId" placeholder="请选择活动">
|
||||
<el-select v-model="pageForm.actId" placeholder="请选择活动">
|
||||
<el-option v-for="item in actOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
|
||||
@@ -196,11 +196,11 @@ const signForm = {
|
||||
},
|
||||
isInSignUpTimeRange() {
|
||||
if (!this.activityInfo.signUpStartTime || !this.activityInfo.signUpEndTime) return false
|
||||
|
||||
|
||||
const now = new Date().getTime()
|
||||
const signUpStartTime = new Date(this.activityInfo.signUpStartTime).getTime()
|
||||
const signUpEndTime = new Date(this.activityInfo.signUpEndTime).getTime()
|
||||
|
||||
|
||||
return now >= signUpStartTime && now <= signUpEndTime
|
||||
}
|
||||
},
|
||||
@@ -435,6 +435,8 @@ const signForm = {
|
||||
if (signedResponse.code === 0) {
|
||||
this.signedUsers = Array.isArray(signedResponse.data) ? signedResponse.data : []
|
||||
}
|
||||
this.visible = false
|
||||
this.$emit("refresh")
|
||||
} else {
|
||||
this.$message.error(msg || "报名失败")
|
||||
}
|
||||
|
||||
+188
@@ -0,0 +1,188 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<div class="">
|
||||
<el-card shadow="never" class="form-box">
|
||||
<h3 style="color: var(--color-primary)" slot="header">送温暖慰问申请</h3>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0">
|
||||
<el-descriptions border class="descriptions-form">
|
||||
<el-descriptions-item label="申请事项" :span="3">
|
||||
<el-form-item prop="noticeId" label="申请事项">
|
||||
<el-select v-model="formData.noticeId" placeholder="请选择" filterable clearable>
|
||||
<el-option v-for="item in noticeOptions" :key="item.id" :label="item.title" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="姓名">
|
||||
<el-form-item prop="userName" label="姓名">
|
||||
<el-input :value="formData.userName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="工号">
|
||||
<el-form-item prop="loginName" label="工号">
|
||||
<el-input :value="formData.loginName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">
|
||||
<el-form-item prop="sex" label="性别">
|
||||
<el-input :value="formData.sex" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="出生年月">
|
||||
<el-form-item prop="birthday" label="出生年月">
|
||||
<el-input :value="formData.birthday" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="联系电话">
|
||||
<el-form-item prop="mobile" label="联系电话">
|
||||
<el-input v-model="formData.mobile" max="11"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="职务(职称)">
|
||||
<el-form-item prop="technicalTitle" label="职务(职称)">
|
||||
<el-input v-model="formData.technicalTitle" max="100" placeholder="请填写职务(职称)"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="单位">
|
||||
<el-form-item prop="unitName" label="单位">
|
||||
<el-input :value="formData.unitName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="分工会" :span="2">
|
||||
<el-form-item prop="unionName" label="分工会">
|
||||
<el-input :value="formData.unionName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申请事由" :span="3">
|
||||
<el-form-item prop="applyReason" label="申请事由">
|
||||
<el-input
|
||||
maxlength="1000"
|
||||
v-model="formData.applyReason"
|
||||
placeholder="请填写申请事由"
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 4, maxRows: 8}"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申请附件">
|
||||
<el-form-item label="附件" prop="files">
|
||||
<file-upload
|
||||
:value.sync="formData.files"
|
||||
:upload_number="5"
|
||||
upload_result_category="array"
|
||||
complete_result
|
||||
upload_mode="drag"
|
||||
></file-upload>
|
||||
<span>说明: 涉及会员患重病、大病且自费金额较大者须提供病史诊断复印件及医疗发票复印件。</span>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end" class="mt10">
|
||||
<el-button type="primary" plain @click="doSave">保存草稿</el-button>
|
||||
<el-button type="primary" @click="doSubmit">提交申请</el-button>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
id: GetQueryString("id"),
|
||||
typeOptions: [],
|
||||
formRules: {
|
||||
noticeId: [{ required: true, message: "请选择申请事项", trigger: ["blur", "change"] }],
|
||||
userName: [{ required: true, message: "请填写姓名", trigger: ["blur", "change"] }],
|
||||
loginName: [{ required: true, message: "请填写工号", trigger: ["blur", "change"] }],
|
||||
sex: [{ required: true, message: "请填写性别", trigger: ["blur", "change"] }],
|
||||
birthday: [{ required: true, message: "请填写出生年月", trigger: ["blur", "change"] }],
|
||||
mobile: [{ required: true, message: "请填写联系电话", trigger: ["blur", "change"] }],
|
||||
technicalTitle: [{ required: true, message: "请填写职务(职称)", trigger: ["blur", "change"] }],
|
||||
unitName: [{ required: true, message: "请填写单位", trigger: ["blur", "change"] }],
|
||||
unionName: [{ required: true, message: "请填写分工会", trigger: ["blur", "change"] }],
|
||||
applyReason: [{ required: true, message: "请填写申请事由", trigger: ["blur", "change"] }]
|
||||
},
|
||||
noticeOptions: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init() {
|
||||
if (this.id) {
|
||||
this.$axios.post("/platform/warmthCondolence/apply/info", { id: this.id }).then(async (res) => {
|
||||
if (res.code === 0) {
|
||||
this.formData = res.data
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const { username, loginname, sex, mobile, birthday, technicalTitle, id, unit, union } = this.$store.state.user
|
||||
this.$set(this.formData, "userName", username)
|
||||
this.$set(this.formData, "loginName", loginname)
|
||||
this.$set(this.formData, "sex", sex)
|
||||
this.$set(this.formData, "birthday", "${@auth.getPrincipalProperty('birthday'),'yyyy-MM-dd'}")
|
||||
this.$set(this.formData, "mobile", mobile)
|
||||
this.$set(this.formData, "technicalTitle", technicalTitle)
|
||||
this.$set(this.formData, "unitName", unit?.name)
|
||||
this.$set(this.formData, "unitId", unit?.id)
|
||||
this.$set(this.formData, "unionName", union?.name)
|
||||
this.$set(this.formData, "unionId", union?.id)
|
||||
this.$set(this.formData, "applyDateTime", this.$moment().format("YYYY-MM-DD"))
|
||||
}
|
||||
},
|
||||
|
||||
doSave() {
|
||||
this.$refs.formRef.validateField("noticeId", (errors) => {
|
||||
if (!errors) {
|
||||
this.$axios
|
||||
.post(loc() + "/save", {
|
||||
warmthCondolence: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
doSubmit() {
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post(loc() + "/submit", {
|
||||
warmthCondolence: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$store.dispatch("pjaxRoute", "/platform/warmthCondolence/mine")
|
||||
this.$message.success(res.msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
listNotice() {
|
||||
this.$axios.post("/platform/warmthCondolence/common/listNotice").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.noticeOptions = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.init()
|
||||
this.listNotice()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+185
@@ -0,0 +1,185 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style></style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="事项:">
|
||||
<el-select v-model="pageForm.noticeId" placeholder="请选择" filterable clearable>
|
||||
<el-option v-for="item in noticeOptions" :key="item.id" :label="item.title" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="姓名:">
|
||||
<el-input placeholder="请输入姓名查询" clearable v-model="pageForm.userName"></el-input>
|
||||
</search-item>
|
||||
<search-item label="工号:">
|
||||
<el-input placeholder="请输入工号查询" clearable v-model="pageForm.loginName"></el-input>
|
||||
</search-item>
|
||||
<search-item label="所属工会:">
|
||||
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable style="width: 100%">
|
||||
<el-option v-for="item in unionList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位:">
|
||||
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位" filterable clearable style="width: 100%">
|
||||
<el-option v-for="item in unitList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
|
||||
<el-radio-button :label="true">已审核</el-radio-button>
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" @sort-change="pageOrder">
|
||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||
<el-table-column prop="no" label="编号"></el-table-column>
|
||||
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||
<el-table-column prop="loginName" label="工号"></el-table-column>
|
||||
<el-table-column prop="sex" label="性别"></el-table-column>
|
||||
<el-table-column prop="mobile" label="手机号"></el-table-column>
|
||||
<el-table-column prop="unitName" label="单位" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="unionName" label="分工会" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="操作" width="300px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.processInstanceTaskStatus==='ACTIVE'" @click="openApproval(row)" size="mini" type="primary">
|
||||
审核
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
|
||||
@click="openRevoke(row.processInstanceTaskId)"
|
||||
size="mini"
|
||||
type="danger"
|
||||
>
|
||||
撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</template>
|
||||
<template #public>
|
||||
<info ref="infoRef"></info>
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">{{formData.processInstanceNodeName}}</div>
|
||||
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
|
||||
<el-form-item label="审核意见" prop="approvalOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.approvalOpinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
<el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:false,message:'必填',trigger:['change','blur']}]">
|
||||
<pc-signature v-model="formData.approvalSignature"></pc-signature>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button plain @click="$refs.guava.index()">取消</el-button>
|
||||
<el-button type="danger" @click="doApproval('BACK')">退回重新申请</el-button>
|
||||
<el-button type="danger" @click="doApproval('REJECT')">拒绝申请</el-button>
|
||||
<el-button type="primary" @click="doApproval('PASS')">同意申请</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include("../common/info.js"){}#-->
|
||||
new Vue({
|
||||
el: "#app",
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
info
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
approval: false,
|
||||
unionId: "",
|
||||
unitId: "",
|
||||
year: null,
|
||||
searchKeyword: "",
|
||||
type: ""
|
||||
},
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
noticeOptions: [],
|
||||
showApprovalForm: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openView(row) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
this.showApprovalForm = false
|
||||
})
|
||||
},
|
||||
openApproval(row) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
this.formData = row.approvalParam
|
||||
this.showApprovalForm = true
|
||||
})
|
||||
},
|
||||
doApproval(approvalType) {
|
||||
this.formData.bpmTaskApprovalType = approvalType
|
||||
this.$refs.approvalFormRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post(loc() + "/approval", {
|
||||
approval: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
openRevoke(taskId) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/revoke", { taskId }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
listNotice() {
|
||||
this.$axios.post("/platform/warmthCondolence/common/listNotice").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.noticeOptions = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.unitList = await this.$businessTool.listUnit()
|
||||
this.unionList = await this.$businessTool.listUnion()
|
||||
this.listNotice()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,109 @@
|
||||
const info = {
|
||||
template: `
|
||||
<div>
|
||||
<div>
|
||||
<div class="process-title">
|
||||
申请信息
|
||||
</div>
|
||||
<el-descriptions border>
|
||||
<el-descriptions-item label="申请事项" :span="3">
|
||||
{{viewData.noticeTitle}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="姓名">
|
||||
{{viewData.userName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="工号">
|
||||
{{viewData.loginName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">
|
||||
{{viewData.sex}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="出生年月">
|
||||
{{viewData.birthday}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="联系电话">
|
||||
{{viewData.mobile}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="职务(职称)">
|
||||
{{viewData.technicalTitle}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="单位">
|
||||
{{viewData.unitName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="分工会" :span="2">
|
||||
{{viewData.unionName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申请事由" :span="3">
|
||||
{{viewData.applyReason}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申请附件">
|
||||
<file-preview :files="viewData.files" complete_result></file-preview>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div v-for="nodeTask in viewData.nodeTasks" :key="nodeTask.id">
|
||||
<div class="process-title">
|
||||
{{nodeTask.nodeName}}
|
||||
</div>
|
||||
<div v-if="nodeTask.nodeCode === 20">
|
||||
<el-descriptions :column="3" border v-for="task in nodeTask.tasks" :key="task.id">
|
||||
<el-descriptions-item label="审核人">{{ task.actualOwnerLoginName + '-' + task.actualOwnerUserName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ task.endOn }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">
|
||||
<div v-if="task.extVariable">
|
||||
<el-tag type="success" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'PASS'">同意</el-tag>
|
||||
<el-tag type="danger" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'BACK'">退回重新填写</el-tag>
|
||||
<el-tag type="danger" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'REJECT'">拒绝</el-tag>
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" :span="3">{{ task.extVariable.approvalOpinion}}</el-descriptions-item>
|
||||
<el-descriptions-item label="签字" :span="3">
|
||||
<el-image :src="task.extVariable.approvalSignature"
|
||||
v-if="task.extVariable && task.extVariable.approvalSignature"
|
||||
class="signature-image"></el-image>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
<div v-if="nodeTask.nodeCode === 50">
|
||||
<el-descriptions :column="3" border v-for="task in nodeTask.tasks" :key="task.id">
|
||||
<el-descriptions-item label="审核人">{{ task.actualOwnerLoginName + '-' + task.actualOwnerUserName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ task.endOn }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">
|
||||
<div v-if="task.extVariable">
|
||||
<el-tag type="success" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'PASS'">同意</el-tag>
|
||||
<el-tag type="danger" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'BACK'">退回重新填写</el-tag>
|
||||
<el-tag type="danger" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'REJECT'">拒绝</el-tag>
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" :span="3">{{ task.extVariable.approvalOpinion}}</el-descriptions-item>
|
||||
<el-descriptions-item label="签字" :span="3">
|
||||
<el-image :src="task.extVariable.approvalSignature"
|
||||
v-if="task.extVariable && task.extVariable.approvalSignature"
|
||||
class="signature-image"></el-image>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
`,
|
||||
data() {
|
||||
return {
|
||||
viewData: {},
|
||||
activeName: "first",
|
||||
isScrollNow: "0"
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOpen(id) {
|
||||
this.$axios.post("/platform/warmthCondolence/common/info", { id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.viewData = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
const taskRecord = {
|
||||
template: `
|
||||
<div>
|
||||
{{tasks}}
|
||||
</div>
|
||||
`,
|
||||
data() {
|
||||
return {
|
||||
tasks: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOpen(businessId) {
|
||||
this.$axios.post("/platform/bpm/common/listTask", { businessId }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.tasks = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
+139
@@ -0,0 +1,139 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="事项:">
|
||||
<el-select v-model="pageForm.noticeId" placeholder="请选择" filterable clearable>
|
||||
<el-option v-for="item in noticeOptions" :key="item.id" :label="item.title" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<el-button v-if="$auth.hasPermission('warmthCondolence.query')" @click="exportExcel" size="small" type="primary" icon="el-icon-download">导出excel</el-button>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" @sort-change="pageOrder">
|
||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||
<el-table-column prop="no" label="编号"></el-table-column>
|
||||
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||
<el-table-column prop="loginName" label="工号"></el-table-column>
|
||||
<el-table-column prop="sex" label="性别"></el-table-column>
|
||||
<el-table-column prop="mobile" label="手机号"></el-table-column>
|
||||
<el-table-column prop="unitName" label="单位" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="unionName" label="分工会" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="操作" width="300px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
|
||||
<el-button
|
||||
v-if="[10,40,70].includes(row.processInstanceNodeCode)"
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="$store.dispatch('pjaxRoute', '/platform/warmthCondolence/apply?id='+row.id)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="[20].includes(row.processInstanceNodeCode) && !row.nextTaskIsComplete"
|
||||
size="mini"
|
||||
type="danger"
|
||||
@click="openRevoke(row)"
|
||||
>
|
||||
撤销
|
||||
</el-button>
|
||||
<el-button size="mini" type="primary" @click="exportApplyDocx(row.id)">导出</el-button>
|
||||
<el-button v-if="[10].includes(row.processInstanceNodeCode)" size="mini" type="danger" @click="doDelete(row)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<info ref="infoRef"></info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include("../common/info.js"){}#-->
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
info
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {},
|
||||
noticeOptions: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openView(row) {
|
||||
this.$refs.guava.view(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
})
|
||||
},
|
||||
openEdit(row) {
|
||||
this.$store.dispatch("pjaxRoute", "/platform/condolence/apply?id=" + row.id)
|
||||
},
|
||||
openRevoke(row) {
|
||||
this.$confirm("您确定要撤销申请吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/warmthCondolence/mine/revokeApply", { id: row.id }).then((resp) => {
|
||||
this.$message.success(resp.msg)
|
||||
this.doSearch()
|
||||
})
|
||||
})
|
||||
},
|
||||
exportApplyDocx(id) {
|
||||
this.$downLoad("/platform/warmthCondolence/common/exportApplyDocx", { id })
|
||||
},
|
||||
exportExcel() {
|
||||
this.$downLoad("/platform/warmthCondolence/query/exportExcel", this.pageForm)
|
||||
},
|
||||
async doDelete(row) {
|
||||
const confirm = await this.$confirm("您确定要删除吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
})
|
||||
if (confirm === "confirm") {
|
||||
const resp = await this.$axios.post("/platform/warmthCondolence/mine/delete", { id: row.id })
|
||||
this.$message.success(resp.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
},
|
||||
listNotice() {
|
||||
this.$axios.post("/platform/warmthCondolence/common/listNotice").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.noticeOptions = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.listNotice()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+155
@@ -0,0 +1,155 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度:">
|
||||
<el-date-picker placeholder="选择年度" type="year" style="width: 100%" v-model="pageForm.year" value-format="yyyy"></el-date-picker>
|
||||
</search-item>
|
||||
<search-item label="标题:">
|
||||
<el-input placeholder="输入标题" v-model="pageForm.title" clearable></el-input>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<el-button size="mini" type="primary" icon="el-icon-plus" @click="openAdd">新增</el-button>
|
||||
</table-tool>
|
||||
<el-table :data="tableData">
|
||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||
<el-table-column prop="title" label="标题"></el-table-column>
|
||||
<el-table-column prop="startTime" label="开始时间"></el-table-column>
|
||||
<el-table-column prop="endTime" label="结束时间"></el-table-column>
|
||||
<el-table-column prop="enable" label="是否开启">
|
||||
<template slot-scope="{row}">
|
||||
<i v-if="row.enable" class="fa fa-circle text-success"></i>
|
||||
<i v-else class="fa fa-circle text-danger"></i>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="200px" fixed="right">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" type="primary" @click="openEdit(row)">编辑</el-button>
|
||||
<el-button size="mini" type="danger" @click="doDelete(row)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
|
||||
<el-dialog :title="formData.id?'编辑' : '新增'" :visible.sync="dialogVisible" width="50%">
|
||||
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="formData.title"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="内容" prop="content">
|
||||
<text-editor v-model="formData.content"></text-editor>
|
||||
</el-form-item>
|
||||
<el-form-item label="年份" prop="year">
|
||||
<el-date-picker placeholder="选择年份" type="year" style="width: 100%" v-model="formData.year" value-format="yyyy"></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="开始时间" prop="startTime">
|
||||
<el-date-picker
|
||||
placeholder="选择开始时间"
|
||||
type="datetime"
|
||||
style="width: 100%"
|
||||
v-model="formData.startTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="结束时间" prop="endTime">
|
||||
<el-date-picker
|
||||
placeholder="选择结束时间"
|
||||
type="datetime"
|
||||
style="width: 100%"
|
||||
v-model="formData.endTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否开启" prop="enable" size="small">
|
||||
<el-radio-group v-model="formData.enable">
|
||||
<el-radio border :label="true">是</el-radio>
|
||||
<el-radio border :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button plain @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="doSubmit">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
id: GetQueryString("id"),
|
||||
typeOptions: [],
|
||||
formRules: {
|
||||
title: [{ required: true, message: "请输入标题", trigger: ["blur", "change"] }],
|
||||
content: [{ required: true, message: "请输入内容", trigger: ["blur", "change"] }],
|
||||
year: [{ required: true, message: "请选择年份", trigger: ["blur", "change"] }],
|
||||
startTime: [{ required: true, message: "请选择开始时间", trigger: ["blur", "change"] }],
|
||||
endTime: [{ required: true, message: "请选择结束时间", trigger: ["blur", "change"] }],
|
||||
enable: [{ required: true, message: "请选择是否开启", trigger: ["blur", "change"] }]
|
||||
},
|
||||
dialogVisible: false,
|
||||
formData: {
|
||||
title: ""
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openAdd() {
|
||||
this.formData = {}
|
||||
this.dialogVisible = true
|
||||
},
|
||||
openEdit(row) {
|
||||
this.formData = { ...row, year: row.year.toString() }
|
||||
this.dialogVisible = true
|
||||
},
|
||||
|
||||
doSubmit() {
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post("/platform/warmthCondolenceNotice/" + (this.formData.id ? "update" : "insert"), this.formData)
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.dialogVisible = false
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
doDelete(id) {
|
||||
this.$confirm("您确定要删除吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/warmthCondolenceNotice/delete", { id: id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+240
@@ -0,0 +1,240 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style></style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="事项:">
|
||||
<el-select v-model="pageForm.noticeId" placeholder="请选择" filterable clearable>
|
||||
<el-option v-for="item in noticeOptions" :key="item.id" :label="item.title" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="姓名:">
|
||||
<el-input placeholder="请输入姓名查询" clearable v-model="pageForm.userName"></el-input>
|
||||
</search-item>
|
||||
<search-item label="工号:">
|
||||
<el-input placeholder="请输入工号查询" clearable v-model="pageForm.loginName"></el-input>
|
||||
</search-item>
|
||||
<search-item label="所属工会:">
|
||||
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable style="width: 100%">
|
||||
<el-option v-for="item in unionList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位:">
|
||||
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位" filterable clearable style="width: 100%">
|
||||
<el-option v-for="item in unitList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<el-button size="mini" type="primary" icon="" @click="openChart">查看图表分析</el-button>
|
||||
<!-- <el-button size="small" type="primary" icon="el-icon-plus" @click="openAdd">新增</el-button>-->
|
||||
</table-tool>
|
||||
<el-table :data="tableData" @sort-change="pageOrder">
|
||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||
<el-table-column prop="no" label="编号"></el-table-column>
|
||||
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||
<el-table-column prop="loginName" label="工号"></el-table-column>
|
||||
<el-table-column prop="sex" label="性别"></el-table-column>
|
||||
<el-table-column prop="mobile" label="手机号"></el-table-column>
|
||||
<el-table-column prop="unitName" label="单位" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="unionName" label="分工会" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="补助金额(元)" prop="amount"></el-table-column>
|
||||
<el-table-column label="操作" width="300px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
|
||||
<el-button v-if="$auth.hasPermission('warmthCondolence.query.delete')" size="mini" type="danger" @click="deleteDo(row)">
|
||||
删除
|
||||
</el-button>
|
||||
<!-- <el-button size="mini" type="primary" @click="exportApplyDocx(row.id)">导出</el-button>-->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</template>
|
||||
<template #view>
|
||||
<info ref="infoRef"></info>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
<el-dialog title="图表数据" :visible.sync="chartVisible" width="60%">
|
||||
<div id="combo-chart" class="chart-container"></div>
|
||||
|
||||
<el-table :data="chartData">
|
||||
<el-table-column label="年度" prop="year"></el-table-column>
|
||||
<el-table-column label="人数" prop="user_count"></el-table-column>
|
||||
<el-table-column label="总金额(元)" prop="total_amount"></el-table-column>
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include("../common/info.js"){}#-->
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
info
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {},
|
||||
noticeOptions: [],
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
typeList: [],
|
||||
chartVisible: false,
|
||||
chartData: [],
|
||||
comboChart: null
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openView(row) {
|
||||
this.$refs.guava.view(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
})
|
||||
},
|
||||
exportApplyDocx(id) {
|
||||
this.$downLoad("/platform/warmthCondolence/common/exportApplyDocx", { id })
|
||||
},
|
||||
listNotice() {
|
||||
this.$axios.post("/platform/warmthCondolence/common/listNotice").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.noticeOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
async deleteDo(row) {
|
||||
const confirm = await this.$confirm("您确定要删除吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
})
|
||||
if (confirm === "confirm") {
|
||||
const resp = await this.$axios.post("/platform/warmthCondolence/query/delete", { id: row.id })
|
||||
this.$message.success(resp.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
},
|
||||
async openChart() {
|
||||
this.chartVisible = true
|
||||
await this.$nextTick()
|
||||
const { code, data, msg } = await this.$axios.post("/platform/warmthCondolence/query/chartData")
|
||||
if (code === 0) {
|
||||
this.chartData = data
|
||||
// 处理数据
|
||||
const processedData = data.map((item) => ({
|
||||
...item,
|
||||
year: item.year.toString(),
|
||||
total_amount_display: item.total_amount || 0,
|
||||
avg_amount: item.total_amount && item.user_count > 0 ? Math.round(item.total_amount / item.user_count) : 0
|
||||
}))
|
||||
|
||||
if (this.comboChart) this.comboChart.destroy()
|
||||
|
||||
// 组合图表
|
||||
this.comboChart = new G2Plot.DualAxes("combo-chart", {
|
||||
data: [processedData, processedData],
|
||||
xField: "year",
|
||||
yField: ["user_count", "total_amount_display"],
|
||||
geometryOptions: [
|
||||
{
|
||||
geometry: "column",
|
||||
color: "#3b82f6",
|
||||
columnWidthRatio: 0.6
|
||||
},
|
||||
{
|
||||
geometry: "line",
|
||||
color: "#f59e0b",
|
||||
lineStyle: {
|
||||
lineWidth: 3
|
||||
},
|
||||
point: {
|
||||
size: 6,
|
||||
shape: "circle",
|
||||
style: {
|
||||
fill: "#f59e0b",
|
||||
stroke: "#fff",
|
||||
lineWidth: 2
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
yAxis: {
|
||||
user_count: {
|
||||
title: {
|
||||
text: "用户数量",
|
||||
style: {
|
||||
fill: "#006db9",
|
||||
fontSize: 12
|
||||
}
|
||||
},
|
||||
label: {
|
||||
style: {
|
||||
fill: "#006db9"
|
||||
}
|
||||
}
|
||||
},
|
||||
total_amount_display: {
|
||||
title: {
|
||||
text: "总金额(元)",
|
||||
style: {
|
||||
fill: "#f59e0b",
|
||||
fontSize: 12
|
||||
}
|
||||
},
|
||||
label: {
|
||||
formatter: (value) => (value / 1000).toFixed(0) + "k",
|
||||
style: {
|
||||
fill: "#f59e0b"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
itemName: {
|
||||
formatter: (text, item) => {
|
||||
return text === "user_count" ? "用户数量" : "总金额"
|
||||
}
|
||||
}
|
||||
},
|
||||
tooltip: {
|
||||
formatter: (datum) => {
|
||||
const name = datum.user_count !== undefined ? "用户数量" : "总金额"
|
||||
const value =
|
||||
datum.user_count !== undefined
|
||||
? datum.user_count + "人"
|
||||
: datum.total_amount_display === 0
|
||||
? "无数据"
|
||||
: `¥` + datum.total_amount_display.toLocaleString()
|
||||
return { name, value }
|
||||
}
|
||||
}
|
||||
})
|
||||
this.comboChart.render()
|
||||
}
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.unitList = await this.$businessTool.listUnit()
|
||||
this.unionList = await this.$businessTool.listUnion()
|
||||
this.listNotice()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+187
@@ -0,0 +1,187 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style></style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava" approval_scroll>
|
||||
<template>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="事项:">
|
||||
<el-select v-model="pageForm.noticeId" placeholder="请选择" filterable clearable>
|
||||
<el-option v-for="item in noticeOptions" :key="item.id" :label="item.title" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="姓名:">
|
||||
<el-input placeholder="请输入姓名查询" clearable v-model="pageForm.userName"></el-input>
|
||||
</search-item>
|
||||
<search-item label="工号:">
|
||||
<el-input placeholder="请输入工号查询" clearable v-model="pageForm.loginName"></el-input>
|
||||
</search-item>
|
||||
<search-item label="所属工会:">
|
||||
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable style="width: 100%">
|
||||
<el-option v-for="item in unionList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位:">
|
||||
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位" filterable clearable style="width: 100%">
|
||||
<el-option v-for="item in unitList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
|
||||
<el-radio-button :label="true">已审核</el-radio-button>
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" @sort-change="pageOrder">
|
||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||
<el-table-column prop="no" label="编号"></el-table-column>
|
||||
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||
<el-table-column prop="loginName" label="工号"></el-table-column>
|
||||
<el-table-column prop="sex" label="性别"></el-table-column>
|
||||
<el-table-column prop="mobile" label="手机号"></el-table-column>
|
||||
<el-table-column prop="unitName" label="单位" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="unionName" label="分工会" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="操作" width="300px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.processInstanceTaskStatus==='ACTIVE'" @click="openApproval(row)" size="mini" type="primary">
|
||||
审核
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
|
||||
@click="openRevoke(row.processInstanceTaskId)"
|
||||
size="mini"
|
||||
type="danger"
|
||||
>
|
||||
撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</template>
|
||||
<template #public>
|
||||
<info ref="infoRef"></info>
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">{{formData.processInstanceNodeName}}</div>
|
||||
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
|
||||
<el-form-item label="审核意见" prop="approvalOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.approvalOpinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
<el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:false,message:'必填',trigger:['change','blur']}]">
|
||||
<pc-signature v-model="formData.approvalSignature"></pc-signature>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button plain @click="$refs.guava.index()">取消</el-button>
|
||||
<el-button type="danger" @click="doApproval('BACK')">退回重新申请</el-button>
|
||||
<el-button type="danger" @click="doApproval('REJECT')">拒绝申请</el-button>
|
||||
<el-button type="primary" @click="doApproval('PASS')">同意申请</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include("../common/info.js"){}#-->
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
info
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
approval: false,
|
||||
unionId: "",
|
||||
unitId: "",
|
||||
year: null,
|
||||
searchKeyword: "",
|
||||
type: ""
|
||||
},
|
||||
showApprovalForm: false,
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
noticeOptions: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openView(row) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
this.showApprovalForm = false
|
||||
})
|
||||
},
|
||||
openApproval(row) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
this.formData = row.approvalParam
|
||||
this.showApprovalForm = true
|
||||
})
|
||||
},
|
||||
doApproval(approvalType) {
|
||||
this.formData.bpmTaskApprovalType = approvalType
|
||||
this.$refs.approvalFormRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post(loc() + "/approval", {
|
||||
approval: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
openRevoke(taskId) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/revoke", { taskId }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
listNotice() {
|
||||
this.$axios.post("/platform/warmthCondolence/common/listNotice").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.noticeOptions = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.unitList = await this.$businessTool.listUnit()
|
||||
this.unionList = await this.$businessTool.listUnion()
|
||||
this.listNotice()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -50,7 +50,7 @@ layout("/layouts/platform.html"){
|
||||
.stat-value {
|
||||
font-size: 32px;
|
||||
font-weight: bold;
|
||||
color: #217050;
|
||||
color: var(--color-primary);
|
||||
margin: 10px 0;
|
||||
line-height: 1.2;
|
||||
}
|
||||
@@ -136,7 +136,7 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
|
||||
.idx-rank {
|
||||
background: linear-gradient(135deg, #217050, #2d8a5f);
|
||||
background: var(--color-primary);
|
||||
color: white;
|
||||
}
|
||||
|
||||
@@ -243,8 +243,6 @@ layout("/layouts/platform.html"){
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.dashboard {
|
||||
grid-template-columns: 1fr; /* 单列布局 */
|
||||
@@ -284,7 +282,6 @@ layout("/layouts/platform.html"){
|
||||
min-height: 120px;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
@@ -297,10 +294,10 @@ layout("/layouts/platform.html"){
|
||||
{{memberNumberData.memberNum}}
|
||||
<span style="font-size: 14px"> 人</span>
|
||||
</div>
|
||||
<!-- <div class="stat-meta" v-loading="loading.memberNumber">-->
|
||||
<!-- 年同比 {{memberNumberData.ratio}} -->
|
||||
<!-- <i :class="memberNumberData.diff >= 0 ? 'el-icon-top trend-up' : 'el-icon-bottom trend-down'"></i>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="stat-meta" v-loading="loading.memberNumber">-->
|
||||
<!-- 年同比 {{memberNumberData.ratio}} -->
|
||||
<!-- <i :class="memberNumberData.diff >= 0 ? 'el-icon-top trend-up' : 'el-icon-bottom trend-down'"></i>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
|
||||
<div class="card stats-card">
|
||||
@@ -337,11 +334,11 @@ layout("/layouts/platform.html"){
|
||||
<div class="card content-right">
|
||||
<div class="card-title">工会会员明细</div>
|
||||
<el-table
|
||||
:data="unionMember"
|
||||
:header-cell-style="{background:'#FAFAFA'}"
|
||||
style="width: 100%; height: calc(100% - 40px)"
|
||||
row-key="id"
|
||||
v-loading="loading.unionMember"
|
||||
:data="unionMember"
|
||||
:header-cell-style="{background:'#FAFAFA'}"
|
||||
style="width: 100%; height: calc(100% - 40px)"
|
||||
row-key="id"
|
||||
v-loading="loading.unionMember"
|
||||
>
|
||||
<el-table-column label="序号" width="100px" align="center">
|
||||
<template scope="{$index}">
|
||||
@@ -353,13 +350,13 @@ layout("/layouts/platform.html"){
|
||||
<template scope="{row}">{{row.unionname}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="会员人数"
|
||||
prop="value"
|
||||
show-overflow-tooltip
|
||||
sortable
|
||||
width="120px"
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="会员人数"
|
||||
prop="value"
|
||||
show-overflow-tooltip
|
||||
sortable
|
||||
width="120px"
|
||||
></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
@@ -379,8 +376,8 @@ layout("/layouts/platform.html"){
|
||||
|
||||
const vue = new Vue({
|
||||
el: "#app",
|
||||
data(){
|
||||
return{
|
||||
data() {
|
||||
return {
|
||||
loading: {
|
||||
memberNumber: false,
|
||||
growthTrend: false,
|
||||
@@ -399,7 +396,6 @@ layout("/layouts/platform.html"){
|
||||
memberPercentage: "--",
|
||||
unionMember: []
|
||||
}
|
||||
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
@@ -446,13 +442,13 @@ layout("/layouts/platform.html"){
|
||||
smooth: true,
|
||||
|
||||
// 核心配色方案
|
||||
color: '#217050', // 主色线
|
||||
color: "#006db9", // 主色线
|
||||
areaStyle: {
|
||||
fill: 'l(270) 0:#e8f5eb 1:#217050', // 线性渐变填充
|
||||
fill: "l(270) 0:#e8f5eb 1:#006db9", // 线性渐变填充
|
||||
opacity: 0.8
|
||||
},
|
||||
line: {
|
||||
color: '#134330', // 深绿色线条
|
||||
color: "#006db9", // 深绿色线条
|
||||
size: 2
|
||||
},
|
||||
|
||||
@@ -460,8 +456,8 @@ layout("/layouts/platform.html"){
|
||||
point: {
|
||||
size: 3,
|
||||
style: {
|
||||
fill: '#fff',
|
||||
stroke: '#217050',
|
||||
fill: "#fff",
|
||||
stroke: "#006db9",
|
||||
lineWidth: 2
|
||||
}
|
||||
},
|
||||
@@ -508,12 +504,12 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
autoFit: true,
|
||||
percent: data,
|
||||
color: '#217050',
|
||||
color: "#006db9",
|
||||
statistic: {
|
||||
content: {
|
||||
style: {
|
||||
fontSize: 16,
|
||||
fill: '#fff', // 白色文字
|
||||
fill: "#fff" // 白色文字
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -545,21 +541,19 @@ layout("/layouts/platform.html"){
|
||||
colorField: "type",
|
||||
legend: false,
|
||||
label: {
|
||||
type: 'inner',
|
||||
offset: '-30%',
|
||||
type: "inner",
|
||||
offset: "-30%",
|
||||
style: {
|
||||
fontSize: 14,
|
||||
fontWeight: 'bold',
|
||||
fill: '#fff', // 白色文字
|
||||
textShadow: '0 1px 2px rgba(0,0,0,0.5)' // 增强可读性
|
||||
fontWeight: "bold",
|
||||
fill: "#fff", // 白色文字
|
||||
textShadow: "0 1px 2px rgba(0,0,0,0.5)" // 增强可读性
|
||||
},
|
||||
formatter: (datum) => (datum.percent * 100).toFixed(1)
|
||||
},
|
||||
// 交互效果
|
||||
interactions: [
|
||||
{ type: 'element-active' },
|
||||
],
|
||||
color: ['#217050', '#f0a35c']
|
||||
interactions: [{ type: "element-active" }],
|
||||
color: ["#006db9", "#f0a35c"]
|
||||
})
|
||||
chart.memberSexPercentageChart.render()
|
||||
} else {
|
||||
@@ -593,23 +587,23 @@ layout("/layouts/platform.html"){
|
||||
autoFit: true,
|
||||
xField: "unionname",
|
||||
yField: "value",
|
||||
color: '#217050', // 主色柱体
|
||||
color: "#006db9", // 主色柱体
|
||||
// 柱体样式
|
||||
columnStyle: {
|
||||
fill: '#217050',
|
||||
stroke: '#134330',
|
||||
fill: "#006db9",
|
||||
stroke: "#006db9",
|
||||
lineWidth: 1,
|
||||
shadowColor: 'rgba(33, 112, 80, 0.5)', // 主色阴影
|
||||
shadowColor: "rgba(0, 109, 185, 0.5)", // 主色阴影
|
||||
shadowBlur: 6,
|
||||
radius: [4, 4, 0, 0] // 顶部圆角
|
||||
},
|
||||
label: {
|
||||
position: "top",
|
||||
style: {
|
||||
fill: "#217050", // 白色文字
|
||||
fill: "#006db9", // 白色文字
|
||||
fontSize: 12,
|
||||
fontWeight: 'bold',
|
||||
textShadow: '0 1px 2px rgba(0,0,0,0.5)',
|
||||
fontWeight: "bold",
|
||||
textShadow: "0 1px 2px rgba(0,0,0,0.5)",
|
||||
opacity: 0.9
|
||||
},
|
||||
formatter: (datum) => datum.value // 显示原始值
|
||||
@@ -620,19 +614,19 @@ layout("/layouts/platform.html"){
|
||||
autoHide: true,
|
||||
autoRotate: false,
|
||||
style: {
|
||||
fill: '#666',
|
||||
fill: "#666",
|
||||
fontSize: 12
|
||||
}
|
||||
},
|
||||
line: {
|
||||
style: {
|
||||
stroke: '#e8f5eb' // 浅绿色轴线
|
||||
stroke: "#e8f5eb" // 浅绿色轴线
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
line: {
|
||||
style: {
|
||||
stroke: '#f0f0f0',
|
||||
stroke: "#f0f0f0",
|
||||
lineDash: [4, 2]
|
||||
}
|
||||
}
|
||||
@@ -642,14 +636,14 @@ layout("/layouts/platform.html"){
|
||||
yAxis: {
|
||||
label: {
|
||||
style: {
|
||||
fill: '#666'
|
||||
fill: "#666"
|
||||
},
|
||||
formatter: (val) => val
|
||||
},
|
||||
grid: {
|
||||
line: {
|
||||
style: {
|
||||
stroke: '#e8f5eb',
|
||||
stroke: "#e8f5eb",
|
||||
lineDash: [4, 2]
|
||||
}
|
||||
}
|
||||
@@ -693,13 +687,13 @@ layout("/layouts/platform.html"){
|
||||
xField: "label",
|
||||
yField: "value",
|
||||
// 核心配色方案
|
||||
color: '#217050', // 主色柱体
|
||||
color: "#006db9", // 主色柱体
|
||||
// 柱体样式
|
||||
columnStyle: {
|
||||
fill: '#217050',
|
||||
stroke: '#134330',
|
||||
fill: "#006db9",
|
||||
stroke: "#006db9",
|
||||
lineWidth: 1,
|
||||
shadowColor: 'rgba(33, 112, 80, 0.5)', // 主色阴影
|
||||
shadowColor: "rgba(0, 109, 185, 0.5)", // 主色阴影
|
||||
shadowBlur: 6,
|
||||
radius: [4, 4, 0, 0] // 顶部圆角
|
||||
},
|
||||
@@ -708,10 +702,10 @@ layout("/layouts/platform.html"){
|
||||
label: {
|
||||
position: "top",
|
||||
style: {
|
||||
fill: "#217050", // 白色文字
|
||||
fill: "#006db9", // 白色文字
|
||||
fontSize: 12,
|
||||
fontWeight: 'bold',
|
||||
textShadow: '0 1px 2px rgba(0,0,0,0.5)',
|
||||
fontWeight: "bold",
|
||||
textShadow: "0 1px 2px rgba(0,0,0,0.5)",
|
||||
opacity: 0.9
|
||||
},
|
||||
formatter: (datum) => datum.value // 显示原始值
|
||||
@@ -724,19 +718,19 @@ layout("/layouts/platform.html"){
|
||||
autoHide: true,
|
||||
autoRotate: false,
|
||||
style: {
|
||||
fill: '#666',
|
||||
fill: "#666",
|
||||
fontSize: 12
|
||||
}
|
||||
},
|
||||
line: {
|
||||
style: {
|
||||
stroke: '#e8f5eb' // 浅绿色轴线
|
||||
stroke: "#e8f5eb" // 浅绿色轴线
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
line: {
|
||||
style: {
|
||||
stroke: '#f0f0f0',
|
||||
stroke: "#f0f0f0",
|
||||
lineDash: [4, 2]
|
||||
}
|
||||
}
|
||||
@@ -747,14 +741,14 @@ layout("/layouts/platform.html"){
|
||||
yAxis: {
|
||||
label: {
|
||||
style: {
|
||||
fill: '#666'
|
||||
fill: "#666"
|
||||
},
|
||||
formatter: (val) => val
|
||||
},
|
||||
grid: {
|
||||
line: {
|
||||
style: {
|
||||
stroke: '#e8f5eb',
|
||||
stroke: "#e8f5eb",
|
||||
lineDash: [4, 2]
|
||||
}
|
||||
}
|
||||
@@ -798,13 +792,13 @@ layout("/layouts/platform.html"){
|
||||
xField: "label",
|
||||
yField: "value",
|
||||
// 核心配色方案
|
||||
color: '#217050', // 主色柱体
|
||||
color: "#006db9", // 主色柱体
|
||||
// 柱体样式
|
||||
columnStyle: {
|
||||
fill: '#217050',
|
||||
stroke: '#134330',
|
||||
fill: "#006db9",
|
||||
stroke: "#006db9",
|
||||
lineWidth: 1,
|
||||
shadowColor: 'rgba(33, 112, 80, 0.5)', // 主色阴影
|
||||
shadowColor: "rgba(0, 109, 185, 0.5)", // 主色阴影
|
||||
shadowBlur: 6,
|
||||
radius: [4, 4, 0, 0] // 顶部圆角
|
||||
},
|
||||
@@ -813,10 +807,10 @@ layout("/layouts/platform.html"){
|
||||
label: {
|
||||
position: "top",
|
||||
style: {
|
||||
fill: "#217050", // 白色文字
|
||||
fill: "#006db9", // 白色文字
|
||||
fontSize: 12,
|
||||
fontWeight: 'bold',
|
||||
textShadow: '0 1px 2px rgba(0,0,0,0.5)',
|
||||
fontWeight: "bold",
|
||||
textShadow: "0 1px 2px rgba(0,0,0,0.5)",
|
||||
opacity: 0.9
|
||||
},
|
||||
formatter: (datum) => datum.value // 显示原始值
|
||||
@@ -829,19 +823,19 @@ layout("/layouts/platform.html"){
|
||||
autoHide: true,
|
||||
autoRotate: false,
|
||||
style: {
|
||||
fill: '#666',
|
||||
fill: "#666",
|
||||
fontSize: 12
|
||||
}
|
||||
},
|
||||
line: {
|
||||
style: {
|
||||
stroke: '#e8f5eb' // 浅绿色轴线
|
||||
stroke: "#e8f5eb" // 浅绿色轴线
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
line: {
|
||||
style: {
|
||||
stroke: '#f0f0f0',
|
||||
stroke: "#f0f0f0",
|
||||
lineDash: [4, 2]
|
||||
}
|
||||
}
|
||||
@@ -852,14 +846,14 @@ layout("/layouts/platform.html"){
|
||||
yAxis: {
|
||||
label: {
|
||||
style: {
|
||||
fill: '#666'
|
||||
fill: "#666"
|
||||
},
|
||||
formatter: (val) => val
|
||||
},
|
||||
grid: {
|
||||
line: {
|
||||
style: {
|
||||
stroke: '#e8f5eb',
|
||||
stroke: "#e8f5eb",
|
||||
lineDash: [4, 2]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user