Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -48,6 +48,18 @@ const businessTool = {
|
||||
}
|
||||
})
|
||||
},
|
||||
listManageClubByRole() {
|
||||
return commonUtil
|
||||
.axiosService()
|
||||
.post("/platform/club/common/listManageClubByRole", {})
|
||||
.then((resp) => {
|
||||
if (resp.code === 0) {
|
||||
return resp.data
|
||||
} else {
|
||||
return []
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 获取字典数据,不包含禁用
|
||||
* @param code
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
placeholder="输入工号或者姓名查询"
|
||||
:remote-method="queryUser"
|
||||
@change="doSearch"
|
||||
@clear="doSearch"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
@@ -150,7 +151,7 @@
|
||||
<el-col class="query-content">
|
||||
<el-select
|
||||
v-model="pageForm.unionIds"
|
||||
:clearable="is_A06 || is_sysadmin"
|
||||
clearable
|
||||
collapse-tags
|
||||
filterable
|
||||
multiple
|
||||
@@ -183,6 +184,7 @@
|
||||
placeholder="请选择角色"
|
||||
style="width: 100%"
|
||||
@change="doSearch"
|
||||
@clear="doSearch"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in roleList"
|
||||
@@ -199,6 +201,7 @@
|
||||
placeholder="请选择教代会"
|
||||
style="width: 100%"
|
||||
@change="doSearch"
|
||||
@clear="doSearch"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in sessionOptions"
|
||||
@@ -213,16 +216,17 @@
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-row class="query-row" v-if="is_A06 || is_sysadmin || is_H02">
|
||||
<el-row class="query-row" v-if="is_A06 || is_sysadmin || is_H02 || is_CLUB_PRESIDENT">
|
||||
<el-col class="query-title">社团:</el-col>
|
||||
<el-col class="query-content">
|
||||
<el-select
|
||||
v-model="pageForm.clubId"
|
||||
:clearable="is_A06 || is_sysadmin || (is_H04 && is_H02)"
|
||||
clearable
|
||||
filterable
|
||||
placeholder="请选择社团"
|
||||
style="width: 100%"
|
||||
@change="doSearch"
|
||||
@clear="doSearch"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in clubOptions"
|
||||
@@ -243,6 +247,7 @@
|
||||
placeholder="请选择活动组别范围之外的人员"
|
||||
style="width: 100%"
|
||||
@change="handleActivityGroupChange"
|
||||
@clear="handleActivityGroupChange('')"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in activityGroupList2"
|
||||
@@ -485,6 +490,9 @@ module.exports = {
|
||||
is_H02() {
|
||||
return this.roleData.is_H02
|
||||
},
|
||||
is_CLUB_PRESIDENT() {
|
||||
return this.roleData.is_CLUB_PRESIDENT
|
||||
},
|
||||
is_sysadmin() {
|
||||
return this.roleData.is_sysadmin
|
||||
},
|
||||
@@ -509,7 +517,8 @@ module.exports = {
|
||||
}
|
||||
},
|
||||
getInitialUnionIds() {
|
||||
if ((this.is_sysadmin || this.is_A06 || this.is_H02) === false && this.is_H04 === true && this.unionid) {
|
||||
// 分工会和社团双身份默认不带分工会筛选,保证初始列表走后端并集逻辑。
|
||||
if ((this.is_sysadmin || this.is_A06 || this.is_H02 || this.is_CLUB_PRESIDENT) === false && this.is_H04 === true && this.unionid) {
|
||||
return [this.unionid]
|
||||
}
|
||||
return []
|
||||
@@ -711,14 +720,15 @@ module.exports = {
|
||||
async created() {
|
||||
this.listSession()
|
||||
await this.getRolesAndUnion()
|
||||
this.clubOptions = await this.$businessTool.listClubByRole()
|
||||
this.clubOptions = (this.is_sysadmin || this.is_A06)
|
||||
? await this.$businessTool.listClubByRole()
|
||||
: this.is_CLUB_PRESIDENT
|
||||
? await this.$businessTool.listManageClubByRole()
|
||||
: await this.$businessTool.listClubByRole()
|
||||
this.unions = (this.is_sysadmin || this.is_A06 || this.is_H02)
|
||||
? await this.$businessTool.listUnion()
|
||||
: this.$businessTool.listUnion(this.unionid)
|
||||
this.pageForm.unionIds = this.getInitialUnionIds()
|
||||
if (!this.is_H04 && this.is_H02 && this.clubOptions.length > 0) {
|
||||
this.$set(this.pageForm, "clubId", this.clubOptions[0].id)
|
||||
}
|
||||
await this.getActivityGroup()
|
||||
this.personTypeOptions = await this.$businessTool.getDictOptions("USER_PERSON_TYPE")
|
||||
this.userStateOptions = await this.$businessTool.getDictOptions("USER_STATE")
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "h5",
|
||||
name: "h5-signature",
|
||||
components: {
|
||||
signature: httpVueLoader("/components/plugins/sysSignature/index.vue?v=" + new Date().getTime())
|
||||
},
|
||||
|
||||
@@ -97,6 +97,7 @@ const user = {
|
||||
<el-table-column prop="sender" label="申请人" width="120">
|
||||
<template slot-scope="{row}">{{row.variable.initiatorName}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="taskName" label="当前流程节点" width="140" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="date" label="发起日期" width="120">
|
||||
<template slot-scope="{row}">
|
||||
{{$moment(row.createdAt).format('YYYY-MM-DD')}}
|
||||
|
||||
@@ -79,9 +79,19 @@ layout("/layouts/platform.html"){
|
||||
</el-card>
|
||||
</guava>
|
||||
<el-dialog :visible.sync="backDialogVisible" title="反馈附件" width="40%" top="2%">
|
||||
<div style="width: 100%; text-align: center">
|
||||
<file-preview :files="backFiles" complete_result></file-preview>
|
||||
</div>
|
||||
|
||||
<el-dialog :visible.sync="backDialogVisible" title="反馈附件" width="40%" top="2%">
|
||||
<el-form v-model="backFormData" ref="backFormRef" label-width="80px">
|
||||
<el-form-item label="反馈附件" prop="files">
|
||||
<div style="width: 100%; text-align: center">
|
||||
<file-preview :files="backFiles" complete_result></file-preview>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="反馈内容" prop="backText">
|
||||
<el-input v-model="backFormData.backText" type="textarea" :rows="4" max="500" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
@@ -108,7 +118,7 @@ layout("/layouts/platform.html"){
|
||||
readType: null
|
||||
},
|
||||
unionList: [],
|
||||
unitList: []
|
||||
unitList: [],
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
@@ -127,6 +137,9 @@ layout("/layouts/platform.html"){
|
||||
this.doSearch()
|
||||
},
|
||||
viewFiles(row) {
|
||||
this.backFormData = {
|
||||
...row
|
||||
}
|
||||
this.backFiles = row.backFiles
|
||||
this.backDialogVisible = true
|
||||
},
|
||||
|
||||
@@ -36,7 +36,7 @@ const UNIT_LEADER_MANAGE_TEMPLATE = {
|
||||
<el-dialog title="添加" :visible.sync="dialogFormVisible" width="600px" :close-on-click-modal="false">
|
||||
<el-form :model="formData" ref="form" size="small" label-width="60px">
|
||||
<el-form-item prop="roleCode" label="角色">
|
||||
<dict-select placeholder="请选择角色" v-model="formData.roleCode" code="UNIT_ROLES"></dict-select>
|
||||
<dict-select placeholder="请选择角色" v-model="formData.roleCode" code="UNIT_ROLES" @change="onRoleChange"></dict-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="userId" label="人员">
|
||||
<user-select
|
||||
@@ -44,7 +44,7 @@ const UNIT_LEADER_MANAGE_TEMPLATE = {
|
||||
style="width: 100%"
|
||||
v-model="formData.userId"
|
||||
api="/platform/sys/unit/listUserSelect"
|
||||
:api_params="{ unitId: currentData?.id }"
|
||||
:api_params="{ unitId: currentData?.id, roleCode: formData.roleCode }"
|
||||
:option_label_func="
|
||||
(item) => {
|
||||
return item.username + item.loginname + '(' + item.unitName + ')'
|
||||
@@ -86,6 +86,9 @@ const UNIT_LEADER_MANAGE_TEMPLATE = {
|
||||
},
|
||||
computed: {},
|
||||
methods: {
|
||||
onRoleChange() {
|
||||
this.$set(this.formData, "userId", "")
|
||||
},
|
||||
doDelete({ userId, roleCode }) {
|
||||
this.$confirm("您确定要删除吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
|
||||
@@ -84,7 +84,12 @@ const ACTIVITY_CULTURE_AUDIT_ACTIVITY = {
|
||||
</span>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
|
||||
|
||||
<template scope="{row}" v-else-if="column.prop=='tussueName'">
|
||||
<span v-if="row.activity_type==40002">{{row.unionname?row.unionname:'暂无'}}</span>
|
||||
<span v-if="row.activity_type==40003">{{row.clubName?row.clubName:'暂无'}}</span>
|
||||
</template>
|
||||
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="操作"
|
||||
|
||||
@@ -23,12 +23,15 @@ const ACTIVITY_CULTURE_INFO_ACTIVITY = {
|
||||
<el-descriptions-item label="活动项目类型">
|
||||
{{ viewData.projectTypeName }}({{ viewData.projectTypeCode }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="活动类型" :span="2">
|
||||
<el-descriptions-item label="活动类型" >
|
||||
{{ viewData.activity_type === 40001 ? '校工会活动' : viewData.activity_type === 40002 ?
|
||||
'分工会活动'
|
||||
:
|
||||
'社团/社团活动' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="活动地点">
|
||||
{{ viewData.address }}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="活动计划时间">-->
|
||||
<!-- {{ viewData.startPlannedDate + ' - ' + viewData.endPlannedDate }}-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
@@ -38,15 +41,13 @@ const ACTIVITY_CULTURE_INFO_ACTIVITY = {
|
||||
<el-descriptions-item label="报名时间" v-if="viewData.applyStartTime">
|
||||
{{ viewData.applyStartTime + ' - ' + viewData.applyEndTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="活动人数">
|
||||
{{ viewData.peopleNum || '暂无' }}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="活动人数">-->
|
||||
<!-- {{ viewData.peopleNum || '暂无' }}-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
<el-descriptions-item label="活动报名范围">
|
||||
{{ viewData.groupName || '暂无' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="活动地点">
|
||||
{{ viewData.address }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="报名方式">
|
||||
<span v-if="viewData.signUpMethod===1">个人报名</span>
|
||||
<span v-else-if="viewData.signUpMethod===2">组队报名</span>
|
||||
|
||||
@@ -67,6 +67,7 @@ const ACTIVITY_CULTURE_INFO_MANAGE = {
|
||||
<el-switch
|
||||
@change="(val)=>{activityStatusChange(row.id,row.isUnseal)}"
|
||||
active-color="#13ce66"
|
||||
:disabled="isUnsealDisabled(row)"
|
||||
inactive-color="#ff4949"
|
||||
v-model="row.isUnseal">
|
||||
</el-switch>
|
||||
@@ -103,8 +104,7 @@ const ACTIVITY_CULTURE_INFO_MANAGE = {
|
||||
</el-dropdown-item>
|
||||
|
||||
<el-dropdown-item :command="{type:'edit',row}"
|
||||
v-if="row.taskKey === 'startTask' || !row.instanceId"
|
||||
:disabled="row.projectTypeCode==50004">
|
||||
>
|
||||
编辑
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item u
|
||||
@@ -113,7 +113,7 @@ const ACTIVITY_CULTURE_INFO_MANAGE = {
|
||||
</el-dropdown-item>
|
||||
|
||||
<el-dropdown-item :command="{type:'delete',row}"
|
||||
v-if="row.taskKey === 'startTask' || !row.instanceId" >
|
||||
v-if="(activity_type === 40001 && (row.taskKey === 'startTask' || !row.instanceId)) || (activity_type !== 40001 && $auth.hasRole('SYSADMIN'))" >
|
||||
删除
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item :command="{type:'openCode',row}">
|
||||
@@ -195,6 +195,10 @@ const ACTIVITY_CULTURE_INFO_MANAGE = {
|
||||
this.$message.error(resp.msg)
|
||||
}
|
||||
},
|
||||
isUnsealDisabled(row) {
|
||||
// 流程类活动只有在流程结束后才允许开启或关闭,非流程类活动保持原有开关逻辑。
|
||||
return (row.activity_type === 40002 || row.activity_type === 40003) && row.instanceState !== 20
|
||||
},
|
||||
dropdownCommand(command) {
|
||||
const {type, row} = command
|
||||
if (type === "view") {
|
||||
|
||||
@@ -17,14 +17,17 @@ const singleSignUp = {
|
||||
<el-descriptions-item label="活动编号">
|
||||
{{ viewData.activityCode }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="活动编号">
|
||||
<el-descriptions-item label="活动项目类型">
|
||||
{{ viewData.projectTypeName }}({{ viewData.projectTypeCode }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="活动类型" :span="2">
|
||||
<el-descriptions-item label="活动类型">
|
||||
{{ viewData.activity_type === 40001 ? '校工会活动' : viewData.activity_type === 40002 ? '分工会活动'
|
||||
:
|
||||
'社团/社团活动' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="活动地点">
|
||||
{{ viewData.address }}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="活动计划时间">-->
|
||||
<!-- {{ viewData.startPlannedDate + ' - ' + viewData.endPlannedDate }}-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
@@ -34,12 +37,10 @@ const singleSignUp = {
|
||||
<el-descriptions-item label="报名时间" v-if="viewData.applyStartTime">
|
||||
{{ viewData.applyStartTime + ' - ' + viewData.applyEndTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="活动人数">
|
||||
{{ viewData.peopleNum || '暂无' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="活动地点">
|
||||
{{ viewData.address }}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="活动人数">-->
|
||||
<!-- {{ viewData.peopleNum || '暂无' }}-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
|
||||
<el-descriptions-item label="报名方式">
|
||||
<span v-if="viewData.signUpMethod===1">个人报名</span>
|
||||
<span v-else-if="viewData.signUpMethod===2">组队报名</span>
|
||||
@@ -50,7 +51,7 @@ const singleSignUp = {
|
||||
<span v-if="viewData.isEnrollSystem">活动报名</span>
|
||||
<span v-else>活动管理</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="报名人数限制" span="3" v-if="viewData.signUpMethod!=null">
|
||||
<el-descriptions-item label="报名人数限制" :span="2" v-if="viewData.signUpMethod!=null">
|
||||
<span v-if="viewData.userNumberLimit===1">总人数限制({{
|
||||
viewData.totalUserNumberLimit
|
||||
}}人)</span>
|
||||
@@ -261,6 +262,16 @@ const singleSignUp = {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 报名弹窗与查看弹窗统一使用同一套活动详情字段,避免展示口径不一致。
|
||||
parseJsonField(value, defaultValue) {
|
||||
if (value === null || value === undefined || value === "") {
|
||||
return defaultValue
|
||||
}
|
||||
if (typeof value === "string") {
|
||||
return JSON.parse(value)
|
||||
}
|
||||
return value
|
||||
},
|
||||
onOpen(id) {
|
||||
this.dialogVisible = true
|
||||
this.id = id
|
||||
@@ -506,12 +517,21 @@ const singleSignUp = {
|
||||
|
||||
//活动信息
|
||||
activityInfo() {
|
||||
this.$axios.post("/platform/activity/culture/infoManage/activityInfo", {id: this.id}).then((res) => {
|
||||
this.$axios.post("/platform/activity/culture/infoManage/findOne", {id: this.id}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.viewData = res.data
|
||||
const data = res.data || {}
|
||||
data.billFiles = this.parseJsonField(data.billFiles, [])
|
||||
data.photoFiles = this.parseJsonField(data.photoFiles, [])
|
||||
data.otherFiles = this.parseJsonField(data.otherFiles, [])
|
||||
data.unionUserNumberLimit = this.parseJsonField(data.unionUserNumberLimit, [])
|
||||
data.location = this.parseJsonField(data.location, [])
|
||||
data.formConfig = this.parseJsonField(data.formConfig, null)
|
||||
this.viewData = data
|
||||
if (this.viewData.signUpMethod === 3) {
|
||||
const union = this.viewData.unionUserNumberLimit.find(v => v.id === this.$store.state.user.union.id)
|
||||
this.viewData.teamNum = union.limitNum
|
||||
if (union) {
|
||||
this.viewData.teamNum = union.limitNum
|
||||
}
|
||||
this.listTeamUserUnion()
|
||||
} else {
|
||||
this.listTeamUser()
|
||||
|
||||
@@ -71,6 +71,12 @@ layout("/layouts/platform.html"){
|
||||
</el-card>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool label="分工会列表">
|
||||
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')">
|
||||
<el-button @click="openImport" size="small" type="primary">导入报名人员</el-button>
|
||||
<el-button @click="doExportByEnroll" size="small" type="primary">导出报名信息</el-button>
|
||||
</template>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" row-key="id" style="width: 100%">
|
||||
<el-table-column type="expand">
|
||||
<template slot-scope="{row}">
|
||||
@@ -295,11 +301,20 @@ layout("/layouts/platform.html"){
|
||||
prop="num"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="操作">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="doExportXlsx(row)" size="mini" type="primary">导出
|
||||
<el-button v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')" @click="doExportXlsx(row)" size="mini" type="primary">导出
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-dialog title="导入报名人员" :visible.sync="importDialog" width="50%" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<file-import
|
||||
ref="viewImport"
|
||||
temp_url="/platform/activity/reading/downloadImportTemplate"
|
||||
post_url="/platform/activity/reading/importUserActivitys"
|
||||
:business_id="pageForm.id"
|
||||
@flush="successImport"
|
||||
></file-import>
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
</template>
|
||||
</guava>
|
||||
@@ -310,6 +325,9 @@ layout("/layouts/platform.html"){
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
"file-import": httpVueLoader("/components/plugins/sysImport/index.vue?v=" + new Date().getTime())
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activityList: [],
|
||||
@@ -317,6 +335,7 @@ layout("/layouts/platform.html"){
|
||||
unions: [],
|
||||
rootData: [],
|
||||
|
||||
importDialog: false,
|
||||
noneData: false,
|
||||
tabLoading: false,
|
||||
events: [],
|
||||
@@ -342,11 +361,40 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
methods: {
|
||||
doExportXlsx(row) {
|
||||
this.$downLoad("/platform/activity/sports/info/mange/exportXlsx", {
|
||||
this.$downLoad(loc() + "/doExportByEnroll", {
|
||||
id: this.pageForm.id,
|
||||
unionId: row.id
|
||||
})
|
||||
},
|
||||
doExportByEnroll() {
|
||||
if (!this.pageForm.id) {
|
||||
this.notifyWarning("请先选择活动名称")
|
||||
return
|
||||
}
|
||||
if (!this.pageForm.unionid) {
|
||||
this.notifyWarning("请选择所属工会")
|
||||
return
|
||||
}
|
||||
this.$downLoad(loc() + "/doExportByEnroll", {
|
||||
id: this.pageForm.id,
|
||||
unionId: this.pageForm.unionid
|
||||
})
|
||||
},
|
||||
openImport() {
|
||||
if (!this.pageForm.id) {
|
||||
this.notifyWarning("请先选择活动名称")
|
||||
return
|
||||
}
|
||||
this.importDialog = true
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.viewImport) {
|
||||
this.$refs.viewImport.resetImportData()
|
||||
}
|
||||
})
|
||||
},
|
||||
successImport() {
|
||||
this.pageData()
|
||||
},
|
||||
unionIdChange() {
|
||||
const tableData = clone(this.rootData)
|
||||
setTimeout(()=>{
|
||||
|
||||
@@ -126,11 +126,11 @@ layout("/layouts/platform.html"){
|
||||
<el-col class="pt5 pb5">
|
||||
<el-row class="pb5" v-for="(worksType,worksIndex) in type.worksTypes" :key="worksType.id">
|
||||
<el-col :span="18">
|
||||
<el-col :span="4">
|
||||
<el-col :span="2">
|
||||
<span class="el-form-item__label" v-if="worksIndex === 0">作品类型</span>
|
||||
<span v-else> </span>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-col :span="22">
|
||||
<el-input placeholder="请输入名称" v-model="worksType.worksTypeName"></el-input>
|
||||
</el-col>
|
||||
</el-col>
|
||||
|
||||
@@ -113,7 +113,7 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
|
||||
listActivity() {
|
||||
this.$axios.post("/platform/activity/worksCollection/upload/listPerMissionActivity").then((res) => {
|
||||
this.$axios.post("/platform/activity/worksCollection/upload/listPerMissionActivity", {year: this.pageForm.year}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.activityOptions = res.data
|
||||
}
|
||||
|
||||
@@ -48,6 +48,11 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="申请时间" prop="applyTime" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -48,6 +48,11 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="申请时间" prop="applyTime" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -48,6 +48,11 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="申请时间" prop="applyTime" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -45,6 +45,11 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="申请时间" prop="registerDate" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -45,6 +45,11 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="申请时间" prop="registerDate" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -45,6 +45,11 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="申请时间" prop="registerDate" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -46,6 +46,11 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column label="旧身份" prop="oldRoleName" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="新身份" prop="nowRoleName" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -128,10 +128,10 @@
|
||||
</el-form-item>
|
||||
<el-form-item prop="roleCode" label="身份">
|
||||
<el-checkbox-group v-model="roleCodeFormData.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_PRESIDENT" disabled>社团会长</el-checkbox>
|
||||
<el-checkbox label="CLUB_VICE_PRESIDENT" disabled>社团副会长</el-checkbox>
|
||||
<el-checkbox label="CLUB_SECRETARY" disabled>社团秘书长</el-checkbox>
|
||||
<el-checkbox label="CLUB_VICE_SECRETARY" disabled>社团副秘书长</el-checkbox>
|
||||
<el-checkbox label="CLUB_OPERATOR">社团操作员</el-checkbox>
|
||||
<el-checkbox label="CLUB_REIMBURSEMENT_MANAGER">社团报销负责人</el-checkbox>
|
||||
<el-checkbox label="CLUB_MEMBER">社团会员</el-checkbox>
|
||||
|
||||
@@ -43,6 +43,11 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column label="申请人" prop="userName" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="申请时间" prop="creatTime" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -43,6 +43,11 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column label="申请人" prop="userName" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="申请时间" prop="creatTime" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -62,6 +62,11 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column prop="applyDate" label="申请时间" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -136,6 +136,8 @@ layout("/layouts/platform.html"){
|
||||
this.$axios.post("/platform/club/join/apply/checkApplyClub", { clubId: row.id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
commonUtil.pjaxPush('/platform/club/join/apply?clubId=' + row.id)
|
||||
} else {
|
||||
this.$message.warning(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
@@ -55,6 +55,11 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column prop="applyDate" label="申请时间" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -51,6 +51,11 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="发起人" prop="sponsorName" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -32,7 +32,7 @@ layout("/layouts/platform.html"){
|
||||
<table-tool label="社团列表">
|
||||
<!-- <el-button @click="openAdd" size="medium" type="primary">社团注册</el-button>-->
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize">
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" :default-sort="{ prop: 'clubCode', order: 'ascending' }">
|
||||
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
|
||||
<el-table-column label="社团编码" prop="clubCode" sortable></el-table-column>
|
||||
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
|
||||
|
||||
@@ -51,6 +51,11 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="发起人" prop="sponsorName" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -51,6 +51,11 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="发起人" prop="sponsorName" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -51,6 +51,11 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="发起人" prop="sponsorName" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.finishTime ? $moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss') : '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
|
||||
<template v-slot="{ row }">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
|
||||
@@ -800,18 +800,37 @@ const apply = {
|
||||
.filter(index => index > -1)
|
||||
},
|
||||
getBlockClass(block) {
|
||||
const expired = this.isExpiredAvailabilityBlock(block)
|
||||
return {
|
||||
'apply-block': true,
|
||||
'apply-block--available': block.status === 'available' && !this.selectedBlockKeys.includes(block.key),
|
||||
'apply-block--available': block.status === 'available' && !expired && !this.selectedBlockKeys.includes(block.key),
|
||||
'apply-block--reserved': block.status === 'reserved',
|
||||
'apply-block--closed': block.status === 'closed',
|
||||
'apply-block--closed': block.status === 'closed' || expired,
|
||||
'apply-block--selected': this.selectedBlockKeys.includes(block.key),
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 前端按当天当前时间再做一层兜底判断,避免预约弹窗长时间停留后,
|
||||
* 之前可选的全天候时间块在开始后仍被继续点选。
|
||||
*/
|
||||
isExpiredAvailabilityBlock(block) {
|
||||
if (!block || !block.startDateTime) {
|
||||
return false
|
||||
}
|
||||
const start = this.$moment(block.startDateTime)
|
||||
if (!start.isValid()) {
|
||||
return false
|
||||
}
|
||||
return start.isSame(this.$moment(), 'day') && !start.isAfter(this.$moment())
|
||||
},
|
||||
onAvailabilityBlockClick(block) {
|
||||
if (!block || !block.key) {
|
||||
return
|
||||
}
|
||||
if (this.isExpiredAvailabilityBlock(block) && !this.selectedBlockKeys.includes(block.key)) {
|
||||
this.$message.warning('该时段开始时间已过,请选择其他时段')
|
||||
return
|
||||
}
|
||||
if (block.status !== 'available' && !this.selectedBlockKeys.includes(block.key)) {
|
||||
this.$message.warning(block.status === 'reserved' ? '该时段已被预约,请选择其他时段' : '该时段当前不可预约')
|
||||
return
|
||||
@@ -860,7 +879,7 @@ const apply = {
|
||||
}
|
||||
for (let i = startIndex; i <= endIndex; i++) {
|
||||
const block = this.availabilityBlocks[i]
|
||||
if (!block || block.status !== 'available') {
|
||||
if (!block || block.status !== 'available' || this.isExpiredAvailabilityBlock(block)) {
|
||||
return false
|
||||
}
|
||||
if (i > startIndex) {
|
||||
|
||||
+85
-53
@@ -36,6 +36,13 @@ layout("/layouts/platform.html"){
|
||||
.invoice-file-name:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.invoice-field-title {
|
||||
color: #606266;
|
||||
font-size: 14px;
|
||||
line-height: 22px;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
@@ -319,26 +326,6 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
|
||||
<!-- <el-descriptions-item label="户名">-->
|
||||
<!-- <el-form-item prop="bankUserName" label="户名">-->
|
||||
<!-- <el-input v-model="formData.bankUserName" show-word-limit-->
|
||||
<!-- placeholder="请输入户名"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
<!-- <el-descriptions-item label="银行账号">-->
|
||||
<!-- <el-form-item prop="bankCardNumber" label="银行账号">-->
|
||||
<!-- <el-input v-model="formData.bankCardNumber" show-word-limit-->
|
||||
<!-- placeholder="请输入银行账号"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
<!-- <el-descriptions-item label="开户行">-->
|
||||
<!-- <el-form-item prop="bankOfDeposit" label="开户行">-->
|
||||
<!-- <el-input v-model="formData.bankOfDeposit" show-word-limit-->
|
||||
<!-- placeholder="请输入开户行"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
|
||||
<el-descriptions-item label="活动名称" v-if="formData.reimburseProject !== 'UNION_REIMBURSE_PROJECT_1'">
|
||||
<el-form-item label="活动名称" prop="activityName">
|
||||
<el-input type="text" v-model="formData.activityName" placeholder="请输入活动名称"
|
||||
@@ -358,11 +345,11 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="报销金额" v-if="formData.reimburseProject !== 'UNION_REIMBURSE_PROJECT_1'">
|
||||
<el-form-item label="报销金额" prop="money">
|
||||
<el-input v-model="formData.money" placeholder="自动汇总发票金额" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="报销金额" v-if="formData.reimburseProject !== 'UNION_REIMBURSE_PROJECT_1'">-->
|
||||
<!-- <el-form-item label="报销金额" prop="money">-->
|
||||
<!-- <el-input v-model="formData.money" placeholder="自动汇总发票金额" readonly></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
|
||||
<el-descriptions-item label="活动时间" v-if="formData.reimburseProject !== 'UNION_REIMBURSE_PROJECT_1'">
|
||||
<el-form-item label="活动时间" prop="activityTime">
|
||||
@@ -372,6 +359,9 @@ layout("/layouts/platform.html"){
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="" v-if="formData.reimburseProject !== 'UNION_REIMBURSE_PROJECT_1' && formData.reimburseFundSource !== 'UNION_REIMBURSE_FUND_SOURCE_3'">
|
||||
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="慰问时间" v-if="formData.reimburseProject === 'UNION_REIMBURSE_PROJECT_1'">
|
||||
<el-form-item label="慰问时间" prop="condolenceTime">
|
||||
@@ -470,8 +460,6 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item :span="2" v-if="formData.reimburseProject === 'UNION_REIMBURSE_PROJECT_1'" style="display: none;">
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="参加随行人员" :span="2"
|
||||
v-if="formData.reimburseProject === 'UNION_REIMBURSE_PROJECT_1'">
|
||||
@@ -492,8 +480,7 @@ layout("/layouts/platform.html"){
|
||||
type="textarea" :autosize="{ minRows: 4, maxRows: 8}"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :span="2" v-if="formData.reimburseProject !== 'UNION_REIMBURSE_PROJECT_1' && formData.reimburseFundSource === 'UNION_REIMBURSE_FUND_SOURCE_3'" style="display: none;">
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item :span="2">
|
||||
<template slot="label">
|
||||
附件
|
||||
@@ -529,26 +516,23 @@ layout("/layouts/platform.html"){
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报销金额" prop="money">
|
||||
<div class="invoice-field-title">报销金额</div>
|
||||
<el-input v-model="formData.money" placeholder="自动汇总发票金额" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发票张数" prop="invoiceNumber">
|
||||
<div class="invoice-field-title">发票张数</div>
|
||||
<el-input v-model="formData.invoiceNumber" placeholder="自动统计发票数量" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="paymentNotes" label="支付内容">
|
||||
<div class="invoice-field-title">支付内容</div>
|
||||
<el-input maxlength="500" v-model="formData.paymentNotes" placeholder="请填写支付内容"
|
||||
type="textarea" :autosize="{ minRows: 4, maxRows: 8}"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="notes" label="备注">
|
||||
<el-input maxlength="500" v-model="formData.notes" placeholder="补充说明"
|
||||
type="textarea" :autosize="{ minRows: 3, maxRows: 6}"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<div class="invoice-toolbar">
|
||||
<div>
|
||||
@@ -734,7 +718,6 @@ layout("/layouts/platform.html"){
|
||||
condolenceTime: [{required: true, message: "请选择慰问时间", trigger: ["change", "blur"]}],
|
||||
// invoiceNumber: [{required: true, message: "请填写发票张数", trigger: ["change", "blur"]}],
|
||||
// invoice: [{required: true, message: "请填写发票号码", trigger: ["change", "blur"]}],
|
||||
paymentNotes: [{required: true, message: "请填写支付内容", trigger: ["change", "blur"]}],
|
||||
activityName: [{required: true, message: "请填写活动名称", trigger: ["change", "blur"]}],
|
||||
money: [{required: true, message: "请填写报销金额", trigger: ["change", "blur"]}],
|
||||
mobile: [
|
||||
@@ -776,7 +759,7 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
computed: {
|
||||
showInvoiceTab() {
|
||||
return this.formData.reimburseProject !== "UNION_REIMBURSE_PROJECT_1"
|
||||
return !!this.formData.reimburseProject
|
||||
},
|
||||
bankHistoryUserNames() {
|
||||
const userNameMap = {}
|
||||
@@ -859,12 +842,46 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
selectQueryUserForPayer(keyword, options) {
|
||||
options.length = 0
|
||||
this.$axios.post("/platform/unionReimburse/apply/listUser", {keyword: keyword}).then((res) => {
|
||||
if (this.formData.reimburseFundSource === "UNION_REIMBURSE_FUND_SOURCE_3" && !this.formData.clubId) {
|
||||
this.$message.warning("请先选择协会")
|
||||
return
|
||||
}
|
||||
this.$axios.post("/platform/unionReimburse/apply/listPayerUser", {
|
||||
keyword: keyword,
|
||||
reimburseFundSource: this.formData.reimburseFundSource,
|
||||
clubId: this.formData.clubId
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
options.push(...res.data)
|
||||
}
|
||||
})
|
||||
},
|
||||
resetPayerInfo() {
|
||||
this.$set(this.formData, "payer", null)
|
||||
this.$set(this.formData, "payerName", null)
|
||||
this.$set(this.formData, "payerLoginname", null)
|
||||
this.$set(this.formData, "bankUserName", null)
|
||||
this.$set(this.formData, "bankCardNumber", null)
|
||||
this.$set(this.formData, "bankOfDeposit", null)
|
||||
this.$set(this, "historyData", [])
|
||||
this.$set(this, "payerOptions", [])
|
||||
},
|
||||
appendCurrentPayerOption() {
|
||||
if (!this.formData.payer) {
|
||||
return
|
||||
}
|
||||
const exists = this.payerOptions.some((item) => item.id === this.formData.payer)
|
||||
if (exists) {
|
||||
return
|
||||
}
|
||||
// 远程下拉编辑回显时需要先补齐当前付款人选项,否则 el-select 只能显示已保存的 id。
|
||||
this.payerOptions.push({
|
||||
id: this.formData.payer,
|
||||
userName: this.formData.payerName || "",
|
||||
loginName: this.formData.payerLoginname || "",
|
||||
unitName: this.formData.unitName || "暂无"
|
||||
})
|
||||
},
|
||||
createRemoteMethod(options) {
|
||||
return (keyword) => {
|
||||
this.selectQueryUser(keyword, options)
|
||||
@@ -933,7 +950,12 @@ layout("/layouts/platform.html"){
|
||||
if (this.formData.payer) {
|
||||
await this.getUserBankHistory();
|
||||
} else {
|
||||
this.historyData = []
|
||||
this.$set(this, "historyData", [])
|
||||
this.$set(this.formData, "payerName", null)
|
||||
this.$set(this.formData, "payerLoginname", null)
|
||||
this.$set(this.formData, "bankUserName", null)
|
||||
this.$set(this.formData, "bankCardNumber", null)
|
||||
this.$set(this.formData, "bankOfDeposit", null)
|
||||
}
|
||||
const user = this.payerOptions.find(o => o.id === this.formData.payer)
|
||||
if (user) {
|
||||
@@ -980,14 +1002,14 @@ layout("/layouts/platform.html"){
|
||||
this.$set(this.formData, "condolenceMoney", parseFloat(money).toFixed(2))
|
||||
this.$set(this.formData, "condolenceFilesNotes", uploadFileDesc)
|
||||
this.$set(this.formData, "typeName", name)
|
||||
this.rebuildInvoiceSummary()
|
||||
}
|
||||
},
|
||||
handleReimburseProjectChange(value) {
|
||||
if (value === "UNION_REIMBURSE_PROJECT_1") {
|
||||
this.$set(this, "activeTabName", "basic")
|
||||
this.$set(this.formData, "invoiceDetails", [])
|
||||
this.$set(this.formData, "invoiceNumber", "")
|
||||
this.$set(this.formData, "money", null)
|
||||
this.rebuildInvoiceSummary()
|
||||
} else {
|
||||
this.rebuildInvoiceSummary()
|
||||
this.normalizeFundBalance()
|
||||
@@ -1104,7 +1126,7 @@ layout("/layouts/platform.html"){
|
||||
this.$set(this.detailForm, "invoiceCheckCode", data.invoiceCheckCode)
|
||||
}
|
||||
if (this.detailForm.invoiceNo) {
|
||||
return this.validateInvoiceDuplicateBeforeSave()
|
||||
return this.validateInvoiceDuplicateBeforeSave(true)
|
||||
}
|
||||
return true
|
||||
}).catch((error) => {
|
||||
@@ -1117,7 +1139,7 @@ layout("/layouts/platform.html"){
|
||||
this.recognizingInvoice = false
|
||||
})
|
||||
},
|
||||
async validateInvoiceDuplicateBeforeSave() {
|
||||
async validateInvoiceDuplicateBeforeSave(checkHistory) {
|
||||
const invoiceNo = this.detailForm.invoiceNo ? String(this.detailForm.invoiceNo).trim() : ""
|
||||
if (!invoiceNo) {
|
||||
return false
|
||||
@@ -1137,6 +1159,9 @@ layout("/layouts/platform.html"){
|
||||
this.$message.warning("发票号码【" + invoiceNo + "】与本次提交的第" + duplicateRows.join("、") + "条发票重复,不能保存")
|
||||
return false
|
||||
}
|
||||
if (!checkHistory) {
|
||||
return true
|
||||
}
|
||||
const resp = await this.$axios.get("/platform/unionReimburse/apply/checkInvoiceDuplicate", {
|
||||
params: {
|
||||
invoiceNo: invoiceNo,
|
||||
@@ -1154,7 +1179,7 @@ layout("/layouts/platform.html"){
|
||||
if (!valid) {
|
||||
return
|
||||
}
|
||||
const duplicateValid = await this.validateInvoiceDuplicateBeforeSave()
|
||||
const duplicateValid = await this.validateInvoiceDuplicateBeforeSave(false)
|
||||
if (!duplicateValid) {
|
||||
return
|
||||
}
|
||||
@@ -1179,9 +1204,6 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
rebuildInvoiceSummary() {
|
||||
if (this.formData.reimburseProject === "UNION_REIMBURSE_PROJECT_1") {
|
||||
return
|
||||
}
|
||||
let totalMoney = 0
|
||||
let fileCount = 0
|
||||
const invoiceDetails = this.formData.invoiceDetails || []
|
||||
@@ -1193,15 +1215,19 @@ layout("/layouts/platform.html"){
|
||||
fileCount = fileCount + 1
|
||||
}
|
||||
}
|
||||
this.$set(this.formData, "money", totalMoney ? totalMoney.toFixed(2) : "0.00")
|
||||
// 慰问类发票为可选附件;有发票按发票汇总金额,没有发票按慰问金额。
|
||||
if (this.formData.reimburseProject === "UNION_REIMBURSE_PROJECT_1") {
|
||||
const condolenceMoney = this.formData.condolenceMoney
|
||||
this.$set(this.formData, "money", fileCount > 0 ? (totalMoney ? totalMoney.toFixed(2) : "0.00") : condolenceMoney)
|
||||
} else {
|
||||
this.$set(this.formData, "money", totalMoney ? totalMoney.toFixed(2) : "0.00")
|
||||
}
|
||||
this.$set(this.formData, "invoiceNumber", String(fileCount))
|
||||
},
|
||||
validateInvoiceDetailsBeforeSubmit() {
|
||||
if (this.formData.reimburseProject === "UNION_REIMBURSE_PROJECT_1") {
|
||||
return true
|
||||
}
|
||||
const invoiceDetails = this.formData.invoiceDetails || []
|
||||
if (!invoiceDetails.length) {
|
||||
// 慰问类允许不填发票;如果填写了发票明细,则每条明细仍需完整。
|
||||
if (!invoiceDetails.length && this.formData.reimburseProject !== "UNION_REIMBURSE_PROJECT_1") {
|
||||
this.$message.warning("请至少维护一条发票明细")
|
||||
return false
|
||||
}
|
||||
@@ -1262,6 +1288,7 @@ layout("/layouts/platform.html"){
|
||||
// 提交验证
|
||||
validateBeforeSubmit() {
|
||||
return new Promise((resolve) => {
|
||||
this.rebuildInvoiceSummary()
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
if (this.formData.reimburseFundSource === "UNION_REIMBURSE_FUND_SOURCE_3" && !this.formData.clubId) {
|
||||
@@ -1275,7 +1302,6 @@ layout("/layouts/platform.html"){
|
||||
return
|
||||
}
|
||||
this.normalizeFundBalance()
|
||||
this.rebuildInvoiceSummary()
|
||||
resolve(true)
|
||||
} else {
|
||||
this.$message.warning("请完善必填信息")
|
||||
@@ -1356,6 +1382,7 @@ layout("/layouts/platform.html"){
|
||||
this.$set(this.formData, "clubId", this.clubOptions[0].id)
|
||||
this.$set(this.formData, "clubName", this.clubOptions[0].clubName)
|
||||
}
|
||||
this.resetPayerInfo()
|
||||
this.reimburseFundSourceChange()
|
||||
},
|
||||
clubChange() {
|
||||
@@ -1364,11 +1391,13 @@ layout("/layouts/platform.html"){
|
||||
if (selectedClub) {
|
||||
this.$set(this.formData, "clubName", selectedClub.clubName)
|
||||
}
|
||||
this.resetPayerInfo()
|
||||
this.reimburseFundSourceChange()
|
||||
return
|
||||
}
|
||||
this.$set(this.formData, "clubName", null)
|
||||
this.$set(this.formData, "fundBalance", null)
|
||||
this.resetPayerInfo()
|
||||
this.fundBalanceText = "请选择协会"
|
||||
},
|
||||
// 经费来源查询
|
||||
@@ -1457,6 +1486,9 @@ layout("/layouts/platform.html"){
|
||||
this.$axios.post("/platform/unionReimburse/apply/info", {id: this.bizId}).then(async (res) => {
|
||||
if (res.code === 0) {
|
||||
this.formData = this.ensureFormData(res.data)
|
||||
this.appendCurrentPayerOption()
|
||||
this.getUserBankHistory()
|
||||
this.reimburseFundSourceChange()
|
||||
await this.selectQueryUser(this.formData.certifierLoginName, this.userOptions)
|
||||
this.rebuildInvoiceSummary()
|
||||
// this.chooseType = this.typeOptions.find(o => o.id === this.formData.type)
|
||||
|
||||
+8
-1
@@ -77,7 +77,11 @@ layout("/layouts/platform.html"){
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="money" label="金额"></el-table-column>
|
||||
<el-table-column prop="createTime" label="申请时间" sortable="custom"></el-table-column>
|
||||
<el-table-column prop="createTime" label="申请时间" sortable="custom">
|
||||
<template slot-scope="{row}">
|
||||
{{ formatCreateTime(row.createTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
<template slot-scope="{row}">
|
||||
@@ -157,6 +161,9 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
formatCreateTime(value) {
|
||||
return value && this.$moment(value).isValid() ? this.$moment(value).format("YYYY-MM-DD HH:mm:ss") : ""
|
||||
},
|
||||
onView(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
|
||||
+8
-1
@@ -55,7 +55,11 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||
<el-table-column prop="unionName" label="所属工会" sortable="custom"></el-table-column>
|
||||
<el-table-column prop="unitName" label="所属单位" sortable="custom"></el-table-column>
|
||||
<el-table-column prop="createTime" label="申请时间" sortable="custom"></el-table-column>
|
||||
<el-table-column prop="createTime" label="申请时间" sortable="custom">
|
||||
<template slot-scope="{row}">
|
||||
{{ formatCreateTime(row.createTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="reimburseProject" label="报销项目" sortable="custom">
|
||||
<template slot-scope="{row}">
|
||||
<span v-if="row.reimburseProject === 'UNION_REIMBURSE_PROJECT_1'">慰问</span>
|
||||
@@ -150,6 +154,9 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
formatCreateTime(value) {
|
||||
return value && this.$moment(value).isValid() ? this.$moment(value).format("YYYY-MM-DD HH:mm:ss") : ""
|
||||
},
|
||||
onView(row) {
|
||||
this.$refs.guava.edit(()=>{
|
||||
this.showApprovalForm = false
|
||||
|
||||
@@ -293,7 +293,7 @@ const unionReimburseInfo = {
|
||||
},
|
||||
computed: {
|
||||
showInvoiceTab() {
|
||||
return this.viewData.reimburseProject !== "UNION_REIMBURSE_PROJECT_1"
|
||||
return !!this.viewData.reimburseProject
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
@@ -52,7 +52,11 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||
<el-table-column prop="unionName" label="所属工会" sortable="custom"></el-table-column>
|
||||
<el-table-column prop="unitName" label="所属单位" sortable="custom"></el-table-column>
|
||||
<el-table-column prop="createTime" label="申请时间" sortable="custom"></el-table-column>
|
||||
<el-table-column prop="createTime" label="申请时间" sortable="custom">
|
||||
<template slot-scope="{row}">
|
||||
{{ formatCreateTime(row.createTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="reimburseProject" label="报销项目" sortable="custom">
|
||||
<template slot-scope="{row}">
|
||||
<span v-if="row.reimburseProject === 'UNION_REIMBURSE_PROJECT_1'">慰问</span>
|
||||
@@ -125,6 +129,9 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
formatCreateTime(value) {
|
||||
return value && this.$moment(value).isValid() ? this.$moment(value).format("YYYY-MM-DD HH:mm:ss") : ""
|
||||
},
|
||||
onView(row) {
|
||||
this.$refs.guava.view(() => {
|
||||
this.$refs.unionReimburseInfoRef.onOpen(row)
|
||||
|
||||
+48
-18
@@ -46,19 +46,27 @@ layout("/layouts/platform.html"){
|
||||
</el-card>
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<el-button @click="AllReview" size="small" type="primary">一键审核</el-button>
|
||||
<el-button @click="AllReview" size="small" type="primary" :loading="formLoading"
|
||||
:disabled="pageForm.approval">一键审核</el-button>
|
||||
<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" style="width: 100%">
|
||||
<el-table ref="tableRef" :data="tableData" row-key="id" v-loading="tableLoading"
|
||||
@selection-change="handleSelectionChange" @sort-change="pageOrder" style="width: 100%">
|
||||
<el-table-column v-if="!pageForm.approval" type="selection" width="55"
|
||||
:reserve-selection="true" :selectable="(row) => row.stateId == 2"></el-table-column>
|
||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||
<el-table-column prop="loginName" label="经办人工号" sortable="custom"></el-table-column>
|
||||
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||
<el-table-column prop="unionName" label="所属工会" sortable="custom"></el-table-column>
|
||||
<el-table-column prop="unitName" label="所属单位" sortable="custom"></el-table-column>
|
||||
<el-table-column prop="createTime" label="申请时间" sortable="custom"></el-table-column>
|
||||
<el-table-column prop="createTime" label="申请时间" sortable="custom">
|
||||
<template slot-scope="{row}">
|
||||
{{ formatCreateTime(row.createTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="reimburseProject" label="报销项目" sortable="custom">
|
||||
<template slot-scope="{row}">
|
||||
<span v-if="row.reimburseProject === 'UNION_REIMBURSE_PROJECT_1'">慰问</span>
|
||||
@@ -115,9 +123,9 @@ layout("/layouts/platform.html"){
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
<el-button @click="handleTaskAction(5)" size="small" type="info">退回到发起人</el-button>
|
||||
<el-button @click="handleTaskAction(4)" size="small" type="danger">拒绝申请</el-button>
|
||||
<el-button @click="handleTaskAction(3)" size="small" type="primary">同意申请</el-button>
|
||||
<el-button @click="handleTaskAction(5)" size="small" type="info" :loading="formLoading">退回到发起人</el-button>
|
||||
<el-button @click="handleTaskAction(4)" size="small" type="danger" :loading="formLoading">拒绝申请</el-button>
|
||||
<el-button @click="handleTaskAction(3)" size="small" type="primary" :loading="formLoading">同意申请</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</union-reimburse-info>
|
||||
@@ -144,6 +152,7 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
formData: {},
|
||||
showApprovalForm: false,
|
||||
multipleSelection: [],
|
||||
unionOptions: [],
|
||||
unitOptions: []
|
||||
}
|
||||
@@ -154,6 +163,9 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
formatCreateTime(value) {
|
||||
return value && this.$moment(value).isValid() ? this.$moment(value).format("YYYY-MM-DD HH:mm:ss") : ""
|
||||
},
|
||||
onView(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
@@ -161,23 +173,38 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
},
|
||||
|
||||
AllReview() {
|
||||
this.$confirm('确定所选申请都已通过线下审核了吗?', '提示', {
|
||||
if (!this.multipleSelection || this.multipleSelection.length === 0) {
|
||||
this.$message.warning('请至少选择一条记录进行审核')
|
||||
return
|
||||
}
|
||||
const ids = this.multipleSelection.map((item) => item.id)
|
||||
this.$confirm('确定所选的 ' + ids.length + ' 条申请都已通过线下审核了吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
const resp = await $.post("/platform/unionReimburse/review/allReview");
|
||||
if (resp && resp.code === 0) {
|
||||
this.pageForm.approval = true
|
||||
this.pageData();
|
||||
this.$message.success(resp.msg || '一键审核成功')
|
||||
} else {
|
||||
this.$message.error(resp.msg || '一键审核失败')
|
||||
}
|
||||
}).then(() => {
|
||||
this.formLoading = true
|
||||
this.$axios.post("/platform/unionReimburse/review/allReview", {
|
||||
ids: ids
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.multipleSelection = []
|
||||
this.pageData()
|
||||
this.$message.success(res.msg || '一键审核成功')
|
||||
} else {
|
||||
this.$message.error(res.msg || '一键审核失败')
|
||||
}
|
||||
}).finally(() => {
|
||||
this.formLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
// 用户取消操作
|
||||
});
|
||||
})
|
||||
},
|
||||
|
||||
openAudit(row) {
|
||||
@@ -199,8 +226,9 @@ layout("/layouts/platform.html"){
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.formLoading = true
|
||||
this.$axios.post("/platform/unionReimburse/review/reviewTask", {
|
||||
data: JSON.stringify({...this.formData}),
|
||||
data: JSON.stringify(Object.assign({}, this.formData)),
|
||||
submitType: val
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
@@ -208,6 +236,8 @@ layout("/layouts/platform.html"){
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
}).finally(() => {
|
||||
this.formLoading = false
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ layout("/layouts/platform.html"){
|
||||
<div id="app" v-cloak>
|
||||
<template>
|
||||
<el-card shadow="never">
|
||||
<snaker-start slot="header" label="撰写提案" define_key="JDHTA">
|
||||
<snaker-start slot="header" label="撰写提案" define_key="JDHTA_NC">
|
||||
<template slot="header-right-label">
|
||||
<el-link type="primary" @click="openImport" v-if="!formData.id" style="margin-right: 15px">导入提案</el-link>
|
||||
</template>
|
||||
|
||||
+5
@@ -108,6 +108,11 @@ layout("/layouts/platform.html"){
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column label="代表类型" prop="representativeType"></el-table-column>
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" width="160">
|
||||
<template slot-scope="{row}">
|
||||
<span v-if="row.finishTime">{{$moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss')}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
<template slot-scope="{row}">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
|
||||
+5
@@ -105,6 +105,11 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="代表类型" prop="representativeType"></el-table-column>
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column label="审核时间" prop="finishTime" width="160">
|
||||
<template slot-scope="{row}">
|
||||
<span v-if="row.finishTime">{{$moment(row.finishTime).format('YYYY-MM-DD HH:mm:ss')}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
<template slot-scope="{row}">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
|
||||
@@ -290,7 +290,13 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
search(pageForm) {
|
||||
if (pageForm) {
|
||||
// 当前页的在职状态、人员类型使用标签数组筛选,公共查询组件回传的是字符串,
|
||||
// 这里保留当前页数组,避免选择人员属性后把标签筛选状态覆盖掉。
|
||||
const currentUserStates = this.pageForm.userStates
|
||||
const currentPersonTypes = this.pageForm.personTypes
|
||||
this.pageForm = {...this.pageForm, ...pageForm}
|
||||
this.$set(this.pageForm, "userStates", currentUserStates)
|
||||
this.$set(this.pageForm, "personTypes", currentPersonTypes)
|
||||
}
|
||||
this.doSearch()
|
||||
},
|
||||
|
||||
@@ -179,7 +179,7 @@ const optionSelect = {
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-col :span="24" v-if="projectInfo.signMode === 2">
|
||||
<el-form-item prop="sign" label="签字">
|
||||
<pc-signature v-model="contactForm.userSign"></pc-signature>
|
||||
</el-form-item>
|
||||
|
||||
+1279
-136
File diff suppressed because it is too large
Load Diff
+76
-16
@@ -2,6 +2,19 @@
|
||||
layout("/layouts/platform_h5.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.state-primary {
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
.state-success {
|
||||
color: #67c23a;
|
||||
}
|
||||
|
||||
.state-danger {
|
||||
color: #f56c6c;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<van-nav-bar @click-left="historyBack" left-arrow left-text="返回" title="报销统计" placeholder fixed></van-nav-bar>
|
||||
<van-sticky offset-top="46px">
|
||||
@@ -22,31 +35,26 @@ layout("/layouts/platform_h5.html"){
|
||||
<table-list api="/platform/unionReimburse/collect/pageData" :page_form.sync="pageForm" ref="tableListRef"
|
||||
@ready="doSearch" >
|
||||
<template v-slot="{index,row}">
|
||||
<table-column label="经办人">{{row.userName}}</table-column>
|
||||
<table-column label="经办人工号">{{row.loginName}}</table-column>
|
||||
<table-column label="姓名">{{row.userName}}</table-column>
|
||||
<table-column label="所属工会">{{row.unionName}}</table-column>
|
||||
<table-column label="所属单位">{{row.unitName}}</table-column>
|
||||
<table-column label="报销类别">
|
||||
<dict-tag :options="dict.type.UNION_REIMBURSE_TYPE"
|
||||
:value="row.reimburseType">
|
||||
</dict-tag>
|
||||
<table-column label="申请时间">{{formatCreateTime(row.createTime)}}</table-column>
|
||||
<table-column label="报销项目">{{getReimburseProjectName(row.reimburseProject)}}</table-column>
|
||||
<table-column label="备注">{{getRemarkText(row)}}</table-column>
|
||||
<table-column label="申请状态">
|
||||
<span :class="getStateClass(row.stateId)">{{getStateName(row.stateId)}}</span>
|
||||
</table-column>
|
||||
<table-column label="报销项目">
|
||||
<dict-tag :options="dict.type.UNION_REIMBURSE_PROJECT"
|
||||
:value="row.reimburseProject">
|
||||
</dict-tag>
|
||||
</table-column>
|
||||
<table-column label="金额">{{row.money}}</table-column>
|
||||
|
||||
</template>
|
||||
<template #actions="{index,row}">
|
||||
<div class="action-btn" @click="onView(row)">
|
||||
<i class="fa fa-eye"></i>
|
||||
<span>查看</span>
|
||||
</div>
|
||||
<div class="action-btn" @click="onEdit(row)" v-if="row.taskKey === 'startTask' || !row.instanceId">
|
||||
<i class="fa fa-edit"></i>
|
||||
<span>编辑</span>
|
||||
</div>
|
||||
<!-- <div class="action-btn" @click="onEdit(row)" v-if="row.taskKey === 'startTask' || !row.instanceId">-->
|
||||
<!-- <i class="fa fa-edit"></i>-->
|
||||
<!-- <span>编辑</span>-->
|
||||
<!-- </div>-->
|
||||
<div class="action-btn delete" v-if="row.canRevoke" @click="onRevoke(item)">
|
||||
<i class="fa fa-undo"></i>
|
||||
<span>撤回</span>
|
||||
@@ -85,6 +93,58 @@ layout("/layouts/platform_h5.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 手机端统计列表字段展示与我的报销列表保持一致。
|
||||
getReimburseProjectName(reimburseProject) {
|
||||
if (reimburseProject === "UNION_REIMBURSE_PROJECT_1") {
|
||||
return "慰问"
|
||||
}
|
||||
if (reimburseProject === "UNION_REIMBURSE_PROJECT_2") {
|
||||
return "文体活动"
|
||||
}
|
||||
if (reimburseProject === "UNION_REIMBURSE_PROJECT_3") {
|
||||
return "日常活动"
|
||||
}
|
||||
if (reimburseProject === "UNION_REIMBURSE_PROJECT_4") {
|
||||
return "专项活动"
|
||||
}
|
||||
return reimburseProject || ""
|
||||
},
|
||||
getRemarkText(row) {
|
||||
if (row.reimburseProject === "UNION_REIMBURSE_PROJECT_1") {
|
||||
return "被慰问人:" + (row.condolenceUserName || "")
|
||||
}
|
||||
return "活动名称:" + (row.activityName || "")
|
||||
},
|
||||
getStateName(stateId) {
|
||||
if (stateId == 1) {
|
||||
return "待提交"
|
||||
}
|
||||
if (stateId == 2) {
|
||||
return "待审核确认"
|
||||
}
|
||||
if (stateId == 3) {
|
||||
return "报销成功"
|
||||
}
|
||||
if (stateId == 4) {
|
||||
return "拒绝"
|
||||
}
|
||||
if (stateId == 5) {
|
||||
return "退回"
|
||||
}
|
||||
return stateId || ""
|
||||
},
|
||||
getStateClass(stateId) {
|
||||
if (stateId == 3) {
|
||||
return "state-success"
|
||||
}
|
||||
if (stateId == 4) {
|
||||
return "state-danger"
|
||||
}
|
||||
return "state-primary"
|
||||
},
|
||||
formatCreateTime(value) {
|
||||
return value && this.$moment(value).isValid() ? this.$moment(value).format("YYYY-MM-DD HH:mm:ss") : ""
|
||||
},
|
||||
onView(row) {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.unionReimburseInfoRef.onOpen(row)
|
||||
|
||||
@@ -5,18 +5,12 @@ const UNION_REIMBURSE_INFO = {
|
||||
<van-action-sheet v-model="visible" title="查看详情">
|
||||
<div class="detail-container">
|
||||
<van-cell-group title="报销申请">
|
||||
<van-cell title="经办人">{{ viewData.userName }}</van-cell>
|
||||
<van-cell title="工号">{{ viewData.loginName }}</van-cell>
|
||||
<van-cell title="单位">{{ viewData.unitName }}</van-cell>
|
||||
<van-cell title="工会">{{ viewData.unionName }}</van-cell>
|
||||
<van-cell title="报销类别">
|
||||
<dict-tag :options="dict.type.UNION_REIMBURSE_TYPE"
|
||||
:value="viewData.reimburseType">
|
||||
</dict-tag>
|
||||
</van-cell>
|
||||
<van-cell title="支付方式">
|
||||
<dict-tag :options="dict.type.UNION_REIMBURSE_PAYMENT_WAY"
|
||||
:value="viewData.paymentWay">
|
||||
<van-cell title="经办人">{{ viewData.userName }}</van-cell>
|
||||
<van-cell title="联系方式">{{ viewData.mobile }}</van-cell>
|
||||
<van-cell title="经费来源">
|
||||
<dict-tag :options="dict.type.UNION_REIMBURSE_FUND_SOURCE"
|
||||
:value="viewData.reimburseFundSource">
|
||||
</dict-tag>
|
||||
</van-cell>
|
||||
<van-cell title="报销项目">
|
||||
@@ -24,34 +18,114 @@ const UNION_REIMBURSE_INFO = {
|
||||
:value="viewData.reimburseProject">
|
||||
</dict-tag>
|
||||
</van-cell>
|
||||
<van-cell title="联系方式">{{ viewData.mobile }}</van-cell>
|
||||
<van-cell title="证明人">{{viewData.certifierUserName}}({{viewData.certifierLoginName}})
|
||||
<van-cell title="支付方式">
|
||||
<dict-tag :options="dict.type.UNION_REIMBURSE_PAYMENT_WAY"
|
||||
:value="viewData.paymentWay">
|
||||
</dict-tag>
|
||||
</van-cell>
|
||||
<van-cell title="户名">{{ viewData.bankUserName }}</van-cell>
|
||||
<van-cell title="银行账号">{{ viewData.bankCardNumber }}</van-cell>
|
||||
<van-cell title="开户行">{{ viewData.bankOfDeposit }}</van-cell>
|
||||
<van-cell title="活动名称">{{ viewData.activityName }}</van-cell>
|
||||
<van-cell title="活动地点">{{ viewData.activityPlace || '暂无'}}</van-cell>
|
||||
<van-cell title="报销金额(元)">{{ viewData.money }}</van-cell>
|
||||
<van-cell title="活动时间">{{$moment(viewData.activityTime).format('YYYY-MM-DD')}}</van-cell>
|
||||
<!-- <van-cell title="发票张数">{{ viewData.invoiceNumber }}</van-cell>-->
|
||||
<van-cell title="支付内容">
|
||||
<div style="white-space: pre-line">
|
||||
{{ viewData.paymentNotes }}
|
||||
</div>
|
||||
<van-cell title="所属协会" v-if="viewData.reimburseFundSource === 'UNION_REIMBURSE_FUND_SOURCE_3'">
|
||||
{{ viewData.clubName }}
|
||||
</van-cell>
|
||||
<van-cell title="签字">
|
||||
<template #label>
|
||||
<van-image :src="viewData.userSign"
|
||||
style="width: 100%;height: 150px;"></van-image>
|
||||
<van-cell title="余额" v-if="viewData.reimburseFundSource">{{ formatMoney(viewData.fundBalance) }}</van-cell>
|
||||
|
||||
<template v-if="viewData.paymentWay === 'UNION_REIMBURSE_PAYMENT_WAY_2'">
|
||||
<van-cell title="付款人">{{ viewData.payerName }}</van-cell>
|
||||
<van-cell title="户名">{{ viewData.bankUserName }}</van-cell>
|
||||
<van-cell title="开户行">{{ viewData.bankOfDeposit }}</van-cell>
|
||||
<van-cell title="银行卡号">{{ viewData.bankCardNumber }}</van-cell>
|
||||
</template>
|
||||
|
||||
<template v-if="viewData.reimburseProject === 'UNION_REIMBURSE_PROJECT_1'">
|
||||
<van-cell title="慰问对象">{{ viewData.condolenceUserName }}</van-cell>
|
||||
<van-cell title="性别">{{ viewData.condolenceSex }}</van-cell>
|
||||
<van-cell title="生日">{{ formatDateText(viewData.condolenceBirthday) }}</van-cell>
|
||||
<van-cell title="身份证号">{{ viewData.condolenceIdCard }}</van-cell>
|
||||
<van-cell title="联系方式">{{ viewData.condolenceMobile }}</van-cell>
|
||||
<van-cell title="慰问类型">{{ viewData.typeName || viewData.condolenceTypeName }}</van-cell>
|
||||
<van-cell title="慰问方式">{{ viewData.way }}</van-cell>
|
||||
<van-cell title="慰问金额">{{ formatMoney(viewData.condolenceMoney) }}</van-cell>
|
||||
<van-cell title="慰问时间">{{ formatDateText(viewData.condolenceTime) }}</van-cell>
|
||||
<van-cell title="结婚时间" v-if="isCondolenceType('cf4ce7af322d464f8f86d818fcc00203')">
|
||||
{{ formatDateText(viewData.marryTime) }}
|
||||
</van-cell>
|
||||
<van-cell title="生育时间" v-if="isCondolenceType('c90cb10dce6542e99ae271bee6fe8cc0')">
|
||||
{{ formatDateText(viewData.fertilityTime) }}
|
||||
</van-cell>
|
||||
<template v-if="isCondolenceType('4e316737e71047e0b01aea78524c1416')">
|
||||
<van-cell title="住院病由">{{ viewData.hospitalCausation }}</van-cell>
|
||||
<van-cell title="住院开始时间">{{ formatDateText(viewData.hospitalizationStartTime) }}</van-cell>
|
||||
<van-cell title="住院结束时间">{{ formatDateText(viewData.hospitalizationEndTime) }}</van-cell>
|
||||
<van-cell title="入住医院">{{ viewData.hospital }}</van-cell>
|
||||
<van-cell title="当年次数">{{ viewData.hospitalCount }}</van-cell>
|
||||
</template>
|
||||
</van-cell>
|
||||
<template v-if="isCondolenceType('60f03a87b62b4823855814afdbf5672a')">
|
||||
<van-cell title="去逝时间">{{ formatDateText(viewData.deathTime) }}</van-cell>
|
||||
<van-cell title="与被慰问人关系">{{ viewData.condolenceRelationship }}</van-cell>
|
||||
</template>
|
||||
<van-cell title="参加随行人员">
|
||||
<div style="white-space: pre-line">{{ viewData.participants }}</div>
|
||||
</van-cell>
|
||||
<van-cell title="报销事由">
|
||||
<div style="white-space: pre-line">{{ viewData.paymentNotes }}</div>
|
||||
</van-cell>
|
||||
<van-cell title="备注">
|
||||
<div style="white-space: pre-line">{{ viewData.notes }}</div>
|
||||
</van-cell>
|
||||
</template>
|
||||
|
||||
<template v-if="viewData.reimburseProject && viewData.reimburseProject !== 'UNION_REIMBURSE_PROJECT_1'">
|
||||
<van-cell title="活动名称">{{ viewData.activityName }}</van-cell>
|
||||
<van-cell title="活动人数">{{ viewData.activityNumber }}</van-cell>
|
||||
<van-cell title="活动地点">{{ viewData.activityPlace }}</van-cell>
|
||||
<van-cell title="活动时间">{{ formatDateText(viewData.activityTime) }}</van-cell>
|
||||
<van-cell title="支付内容">
|
||||
<div style="white-space: pre-line">{{ viewData.paymentNotes }}</div>
|
||||
</van-cell>
|
||||
</template>
|
||||
|
||||
<van-cell title="附件">
|
||||
<template #label>
|
||||
<file-preview :files="viewData.files" complete_result></file-preview>
|
||||
<file-preview :files="viewData.files" complete_result
|
||||
v-if="viewData.files && viewData.files.length > 0"></file-preview>
|
||||
<span v-else>暂无附件</span>
|
||||
</template>
|
||||
</van-cell>
|
||||
</van-cell-group>
|
||||
|
||||
<van-cell-group title="电子发票" v-if="viewData.reimburseProject">
|
||||
<van-cell title="报销金额">{{ formatMoney(viewData.money) }}</van-cell>
|
||||
<van-cell title="发票张数">{{ viewData.invoiceNumber }}</van-cell>
|
||||
<van-cell title="发票明细列表">
|
||||
<template #label>
|
||||
<template v-if="viewData.invoiceDetails && viewData.invoiceDetails.length > 0">
|
||||
<div style="margin-top: 8px; padding: 10px 12px; border: 1px solid #ebedf0; border-radius: 6px; background: #fafafa;" v-for="(item, index) in viewData.invoiceDetails" :key="index">
|
||||
<div style="margin-top: 4px; color: #323233;">第{{ index + 1 }}张发票</div>
|
||||
<div style="margin-top: 4px;">发票号码:{{ item.invoiceNo || '未填写' }}</div>
|
||||
<div style="margin-top: 4px;">发票金额:{{ formatMoney(item.invoiceAmount) }}</div>
|
||||
<div style="margin-top: 4px;">销售方信息名称:{{ item.sellerName || '未填写' }}</div>
|
||||
<div style="margin-top: 4px;">项目名称:{{ item.itemName || '未填写' }}</div>
|
||||
<div style="margin-top: 4px;" v-if="item.remark">备注:{{ item.remark }}</div>
|
||||
<file-preview :files="item.invoiceFiles" complete_result
|
||||
v-if="item.invoiceFiles && item.invoiceFiles.length > 0"></file-preview>
|
||||
<div style="margin-top: 4px;" v-else>文件:未上传</div>
|
||||
</div>
|
||||
</template>
|
||||
<van-empty description="暂无发票明细" v-else></van-empty>
|
||||
</template>
|
||||
</van-cell>
|
||||
</van-cell-group>
|
||||
|
||||
<!-- <van-cell-group title="电子签名">-->
|
||||
<!-- <van-cell title="签字">-->
|
||||
<!-- <template #label>-->
|
||||
<!-- <van-image :src="viewData.userSign"-->
|
||||
<!-- style="width: 100%;height: 150px;"-->
|
||||
<!-- v-if="viewData.userSign"></van-image>-->
|
||||
<!-- <span v-else>暂无签名</span>-->
|
||||
<!-- </template>-->
|
||||
<!-- </van-cell>-->
|
||||
<!-- </van-cell-group>-->
|
||||
|
||||
<template v-for="(task,index) in doneTasks">
|
||||
<div class="process-title">
|
||||
{{ task.displayName }}
|
||||
@@ -61,7 +135,7 @@ const UNION_REIMBURSE_INFO = {
|
||||
{{ task.ext.initiatorName}}({{task.ext.initiatorAccount}})
|
||||
</van-cell>
|
||||
<van-cell title="申请时间">
|
||||
{{ task.finishTime}}
|
||||
{{ formatCreateTime(task.finishTime) }}
|
||||
</van-cell>
|
||||
<van-cell title="办理结果">
|
||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
|
||||
@@ -73,7 +147,7 @@ const UNION_REIMBURSE_INFO = {
|
||||
{{ task.taskFormData.userName}}({{task.taskFormData.loginName}})
|
||||
</van-cell>
|
||||
<van-cell title="办理时间">
|
||||
{{ task.finishTime}}
|
||||
{{ formatCreateTime(task.finishTime) }}
|
||||
</van-cell>
|
||||
<van-cell title="办理结果">
|
||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
|
||||
@@ -118,6 +192,22 @@ const UNION_REIMBURSE_INFO = {
|
||||
onClose() {
|
||||
this.visible = false
|
||||
},
|
||||
formatCreateTime(value) {
|
||||
return value && this.$moment(value).isValid() ? this.$moment(value).format("YYYY-MM-DD HH:mm:ss") : ""
|
||||
},
|
||||
formatDateText(value) {
|
||||
return value && this.$moment(value).isValid() ? this.$moment(value).format("YYYY-MM-DD") : ""
|
||||
},
|
||||
formatMoney(value) {
|
||||
if (value === null || value === undefined || value === "") {
|
||||
return ""
|
||||
}
|
||||
const numberValue = Number(value)
|
||||
return isNaN(numberValue) ? value : numberValue.toFixed(2)
|
||||
},
|
||||
isCondolenceType(typeId) {
|
||||
return this.viewData.condolenceTypeId === typeId || this.viewData.condolenceType === typeId
|
||||
},
|
||||
// 获取申请信息
|
||||
getInfo() {
|
||||
this.$axios.post("/platform/unionReimburse/apply/info", { id: this.row.id }).then((res) => {
|
||||
|
||||
+77
-18
@@ -2,6 +2,19 @@
|
||||
layout("/layouts/platform_h5.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.state-primary {
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
.state-success {
|
||||
color: #67c23a;
|
||||
}
|
||||
|
||||
.state-danger {
|
||||
color: #f56c6c;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<van-nav-bar @click-left="historyBack" left-arrow left-text="返回" title="我的报销" placeholder fixed></van-nav-bar>
|
||||
<van-sticky offset-top="46px">
|
||||
@@ -14,37 +27,31 @@ layout("/layouts/platform_h5.html"){
|
||||
<table-list api="/platform/unionReimburse/mine/pageData" :page_form.sync="pageForm" ref="tableListRef"
|
||||
@ready="doSearch" >
|
||||
<template v-slot="{index,row}">
|
||||
<table-column label="经办人">{{row.userName}}</table-column>
|
||||
<table-column label="经办人工号">{{row.loginName}}</table-column>
|
||||
<table-column label="姓名">{{row.userName}}</table-column>
|
||||
<table-column label="所属工会">{{row.unionName}}</table-column>
|
||||
<table-column label="所属单位">{{row.unitName}}</table-column>
|
||||
<table-column label="证明人">{{row.certifierUserName}}({{row.certifierLoginName}})</table-column>
|
||||
<table-column label="报销类别">
|
||||
<dict-tag :options="dict.type.UNION_REIMBURSE_TYPE"
|
||||
:value="row.reimburseType">
|
||||
</dict-tag>
|
||||
<table-column label="申请时间">{{formatCreateTime(row.createTime)}}</table-column>
|
||||
<table-column label="报销项目">{{getReimburseProjectName(row.reimburseProject)}}</table-column>
|
||||
<table-column label="备注">{{getRemarkText(row)}}</table-column>
|
||||
<table-column label="申请状态">
|
||||
<span :class="getStateClass(row.stateId)">{{getStateName(row.stateId)}}</span>
|
||||
</table-column>
|
||||
<table-column label="报销项目">
|
||||
<dict-tag :options="dict.type.UNION_REIMBURSE_PROJECT"
|
||||
:value="row.reimburseProject">
|
||||
</dict-tag>
|
||||
</table-column>
|
||||
<table-column label="金额(元)">{{row.money}}</table-column>
|
||||
<table-column label="当前节点">{{row.taskName}}</table-column>
|
||||
</template>
|
||||
<template #actions="{index,row}">
|
||||
<div class="action-btn" @click="onView(row)">
|
||||
<i class="fa fa-eye"></i>
|
||||
<span>查看</span>
|
||||
</div>
|
||||
<div class="action-btn" @click="onEdit(row)" v-if="row.taskKey === 'startTask' || !row.instanceId">
|
||||
<div class="action-btn" @click="onEdit(row)" v-if="row.stateId == 1 || row.stateId == 5">
|
||||
<i class="fa fa-edit"></i>
|
||||
<span>编辑</span>
|
||||
</div>
|
||||
<div class="action-btn delete" v-if="row.canRevoke" @click="onRevoke(row)">
|
||||
<div class="action-btn delete" v-if="row.stateId == 2" @click="onRevoke(row)">
|
||||
<i class="fa fa-undo"></i>
|
||||
<span>撤回</span>
|
||||
</div>
|
||||
<div class="action-btn delete" @click="onDelete(row)" v-if="row.taskKey === 'startTask' || !row.instanceId">
|
||||
<div class="action-btn delete" @click="onDelete(row)" v-if="row.stateId == 1">
|
||||
<i class="fa fa-trash"></i>
|
||||
<span>删除</span>
|
||||
</div>
|
||||
@@ -59,7 +66,7 @@ layout("/layouts/platform_h5.html"){
|
||||
const vue = new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
dicts: ["UNION_REIMBURSE_TYPE","UNION_REIMBURSE_PROJECT"],
|
||||
dicts: ["UNION_REIMBURSE_PROJECT"],
|
||||
components: {
|
||||
"union-reimburse-info":UNION_REIMBURSE_INFO
|
||||
},
|
||||
@@ -78,6 +85,58 @@ layout("/layouts/platform_h5.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 手机端列表的报销项目、备注、状态文案与 PC 端 mine 列表保持一致。
|
||||
getReimburseProjectName(reimburseProject) {
|
||||
if (reimburseProject === "UNION_REIMBURSE_PROJECT_1") {
|
||||
return "慰问"
|
||||
}
|
||||
if (reimburseProject === "UNION_REIMBURSE_PROJECT_2") {
|
||||
return "文体活动"
|
||||
}
|
||||
if (reimburseProject === "UNION_REIMBURSE_PROJECT_3") {
|
||||
return "日常活动"
|
||||
}
|
||||
if (reimburseProject === "UNION_REIMBURSE_PROJECT_4") {
|
||||
return "专项活动"
|
||||
}
|
||||
return reimburseProject || ""
|
||||
},
|
||||
getRemarkText(row) {
|
||||
if (row.reimburseProject === "UNION_REIMBURSE_PROJECT_1") {
|
||||
return "被慰问人:" + (row.condolenceUserName || "")
|
||||
}
|
||||
return "活动名称:" + (row.activityName || "")
|
||||
},
|
||||
getStateName(stateId) {
|
||||
if (stateId == 1) {
|
||||
return "待提交"
|
||||
}
|
||||
if (stateId == 2) {
|
||||
return "待审核确认"
|
||||
}
|
||||
if (stateId == 3) {
|
||||
return "报销成功"
|
||||
}
|
||||
if (stateId == 4) {
|
||||
return "拒绝"
|
||||
}
|
||||
if (stateId == 5) {
|
||||
return "退回"
|
||||
}
|
||||
return stateId || ""
|
||||
},
|
||||
getStateClass(stateId) {
|
||||
if (stateId == 3) {
|
||||
return "state-success"
|
||||
}
|
||||
if (stateId == 4) {
|
||||
return "state-danger"
|
||||
}
|
||||
return "state-primary"
|
||||
},
|
||||
formatCreateTime(value) {
|
||||
return value && this.$moment(value).isValid() ? this.$moment(value).format("YYYY-MM-DD HH:mm:ss") : ""
|
||||
},
|
||||
onView(row) {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.unionReimburseInfoRef.onOpen(row)
|
||||
@@ -93,7 +152,7 @@ layout("/layouts/platform_h5.html"){
|
||||
message: "您确定要撤销申请吗?"
|
||||
})
|
||||
.then(() => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.startTaskId}).then((resp) => {
|
||||
this.$axios.post("/platform/unionReimburse/mine/revokeTask", {id: row.id}).then((resp) => {
|
||||
this.$toast.success(resp.msg)
|
||||
this.doSearch()
|
||||
})
|
||||
|
||||
+81
-33
@@ -2,6 +2,19 @@
|
||||
layout("/layouts/platform_h5.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.state-primary {
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
.state-success {
|
||||
color: #67c23a;
|
||||
}
|
||||
|
||||
.state-danger {
|
||||
color: #f56c6c;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<van-nav-bar @click-left="historyBack" left-arrow left-text="返回" title="报销审核" placeholder fixed></van-nav-bar>
|
||||
<van-sticky offset-top="46px">
|
||||
@@ -24,28 +37,15 @@ layout("/layouts/platform_h5.html"){
|
||||
<table-list api="/platform/unionReimburse/review/pageData" :page_form.sync="pageForm" ref="tableListRef"
|
||||
@ready="doSearch">
|
||||
<template v-slot="{index,row}">
|
||||
<table-column label="经办人">{{row.userName}}</table-column>
|
||||
<table-column label="经办人工号">{{row.loginName}}</table-column>
|
||||
<table-column label="姓名">{{row.userName}}</table-column>
|
||||
<table-column label="所属工会">{{row.unionName}}</table-column>
|
||||
<table-column label="所属单位">{{row.unitName}}</table-column>
|
||||
<table-column label="证明人">{{row.certifierUserName}}({{row.certifierLoginName}})</table-column>
|
||||
<table-column label="报销类别">
|
||||
<dict-tag :options="dict.type.UNION_REIMBURSE_TYPE"
|
||||
:value="row.reimburseType">
|
||||
</dict-tag>
|
||||
</table-column>
|
||||
<table-column label="报销项目">
|
||||
<dict-tag :options="dict.type.UNION_REIMBURSE_PROJECT"
|
||||
:value="row.reimburseProject">
|
||||
</dict-tag>
|
||||
</table-column>
|
||||
<table-column label="金额(元)">{{row.money}}</table-column>
|
||||
<table-column label="申请时间">{{formatCreateTime(row.createTime)}}</table-column>
|
||||
<table-column label="报销项目">{{getReimburseProjectName(row.reimburseProject)}}</table-column>
|
||||
<table-column label="备注">{{getRemarkText(row)}}</table-column>
|
||||
<table-column label="申请状态">
|
||||
<span v-if="row.stateId == 1" style="color: #409eff;">待提交</span>
|
||||
<span v-else-if="row.stateId == 2" style="color: #409eff;">待审核确认</span>
|
||||
<span v-else-if="row.stateId == 3" style="color: #67c23a;">报销成功</span>
|
||||
<span v-else-if="row.stateId == 4" style="color: #f56c6c;">拒绝</span>
|
||||
<span v-else-if="row.stateId == 5" style="color: #409eff;">退回</span>
|
||||
<span v-else>{{row.stateId}}</span>
|
||||
<span :class="getStateClass(row.stateId)">{{getStateName(row.stateId)}}</span>
|
||||
</table-column>
|
||||
</template>
|
||||
<template #actions="{index,row}">
|
||||
@@ -79,14 +79,14 @@ layout("/layouts/platform_h5.html"){
|
||||
class="more-text"
|
||||
placeholder="请填审批意见"></van-field>
|
||||
</van-cell-group>
|
||||
<van-cell-group title="电子签名" class="form-section">
|
||||
<van-field class="more-text" name="tf_userSign" label="" required
|
||||
v-model="formData.reviewOpinion" :rules="[{ required: true,message:'请签名' }]">
|
||||
<template #input>
|
||||
<h5-signature v-model="formData.tf_userSign" slot="input"></h5-signature>
|
||||
</template>
|
||||
</van-field>
|
||||
</van-cell-group>
|
||||
<!-- <van-cell-group title="电子签名" class="form-section">-->
|
||||
<!-- <van-field class="more-text" name="tf_userSign" label="" required-->
|
||||
<!-- v-model="formData.reviewOpinion" :rules="[{ required: true,message:'请签名' }]">-->
|
||||
<!-- <template #input>-->
|
||||
<!-- <h5-signature v-model="formData.tf_userSign" slot="input"></h5-signature>-->
|
||||
<!-- </template>-->
|
||||
<!-- </van-field>-->
|
||||
<!-- </van-cell-group>-->
|
||||
<div class="form-actions">
|
||||
<van-button type="danger" @click="handleTaskAction(5)">退回到发起人</van-button>
|
||||
<van-button type="danger" @click="handleTaskAction(4)">拒绝申请</van-button>
|
||||
@@ -124,6 +124,58 @@ layout("/layouts/platform_h5.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 手机端审核列表字段展示与我的报销列表保持一致。
|
||||
getReimburseProjectName(reimburseProject) {
|
||||
if (reimburseProject === "UNION_REIMBURSE_PROJECT_1") {
|
||||
return "慰问"
|
||||
}
|
||||
if (reimburseProject === "UNION_REIMBURSE_PROJECT_2") {
|
||||
return "文体活动"
|
||||
}
|
||||
if (reimburseProject === "UNION_REIMBURSE_PROJECT_3") {
|
||||
return "日常活动"
|
||||
}
|
||||
if (reimburseProject === "UNION_REIMBURSE_PROJECT_4") {
|
||||
return "专项活动"
|
||||
}
|
||||
return reimburseProject || ""
|
||||
},
|
||||
getRemarkText(row) {
|
||||
if (row.reimburseProject === "UNION_REIMBURSE_PROJECT_1") {
|
||||
return "被慰问人:" + (row.condolenceUserName || "")
|
||||
}
|
||||
return "活动名称:" + (row.activityName || "")
|
||||
},
|
||||
getStateName(stateId) {
|
||||
if (stateId == 1) {
|
||||
return "待提交"
|
||||
}
|
||||
if (stateId == 2) {
|
||||
return "待审核确认"
|
||||
}
|
||||
if (stateId == 3) {
|
||||
return "报销成功"
|
||||
}
|
||||
if (stateId == 4) {
|
||||
return "拒绝"
|
||||
}
|
||||
if (stateId == 5) {
|
||||
return "退回"
|
||||
}
|
||||
return stateId || ""
|
||||
},
|
||||
getStateClass(stateId) {
|
||||
if (stateId == 3) {
|
||||
return "state-success"
|
||||
}
|
||||
if (stateId == 4) {
|
||||
return "state-danger"
|
||||
}
|
||||
return "state-primary"
|
||||
},
|
||||
formatCreateTime(value) {
|
||||
return value && this.$moment(value).isValid() ? this.$moment(value).format("YYYY-MM-DD HH:mm:ss") : ""
|
||||
},
|
||||
handleTaskAction(val) {
|
||||
this.$refs.formRef.validate().then(() => {
|
||||
this.$dialog.confirm({
|
||||
@@ -131,10 +183,7 @@ layout("/layouts/platform_h5.html"){
|
||||
message: "您确定要提交吗?"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/unionReimburse/review/reviewTask", {
|
||||
data: JSON.stringify({
|
||||
id: this.formData.id,
|
||||
reviewOpinion: this.formData.reviewOpinion
|
||||
}),
|
||||
data: JSON.stringify(Object.assign({}, this.formData)),
|
||||
submitType: val
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
@@ -155,8 +204,7 @@ layout("/layouts/platform_h5.html"){
|
||||
this.showApprovalForm = true
|
||||
this.formData = {
|
||||
id: row.id,
|
||||
reviewOpinion: null,
|
||||
tf_userSign: null
|
||||
reviewOpinion: "通过"
|
||||
}
|
||||
this.$refs.unionReimburseInfoRef.onOpen(row)
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user