first commit
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,218 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<el-button icon="el-icon-close" type="primary" size="small" :loading="submitLoading" plain
|
||||
@click="joinMemberFamily">批量删除
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<el-table :data="tableData" style="width: 100%;" row-key="id"
|
||||
@sort-change="pageOrder" v-loading="tableLoading" :size="tableSize" class="vi-table"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column :reserve-selection="true"
|
||||
type="selection"
|
||||
width="55">
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" type="index" :index="indexMethod"
|
||||
label="序号"
|
||||
width="80px"></el-table-column>
|
||||
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in tableColumns"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
show-overflow-tooltip>
|
||||
|
||||
<template scope="{row}" v-if="column.prop=='name'">
|
||||
<span v-if="row.name">{{ row.name }}</span>
|
||||
<span v-if="!row.name">暂无</span>
|
||||
</template>
|
||||
|
||||
<template scope="{row}" v-else-if="column.prop=='identity'">
|
||||
<el-tag v-if="row.identity.includes(1)" effect="light">运动员</el-tag>
|
||||
<el-tag v-if="row.identity.includes(2)" type="success" effect="light">教练
|
||||
</el-tag>
|
||||
<el-tag v-if="row.identity.includes(3)" type="warning" effect="light">领队
|
||||
</el-tag>
|
||||
<el-tag v-if="row.identity.includes(4)" type="warning"
|
||||
effect="light">处级领导
|
||||
</el-tag>
|
||||
<el-tag v-if="row.identity.includes(5)" type="warning" effect="light">替补
|
||||
</el-tag>
|
||||
|
||||
</template>
|
||||
|
||||
<template scope="{row}" v-else-if="column.prop=='divisionLevelLeadership'">
|
||||
<span v-if="row.divisionLevelLeadership==true">是</span>
|
||||
<span v-else>否</span>
|
||||
</template>
|
||||
|
||||
<template scope="{row}" v-else-if="column.prop=='status'">
|
||||
<span v-if="row.status==1">待审核</span>
|
||||
<span v-if="row.status==2" style="color: #66BD3D">报名成功</span>
|
||||
<span v-if="row.status==3" style="color: red">审核不通过</span>
|
||||
</template>
|
||||
<template scope="{row}" v-else-if="column.prop=='awardsMode'">
|
||||
<span v-if="row.awardsMode==1">团体</span>
|
||||
<span v-if="row.awardsMode==2">单项</span>
|
||||
</template>
|
||||
|
||||
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
|
||||
width="150px">
|
||||
<template scope="{row}">
|
||||
<el-button type="danger" icon="el-icon-delete" circle plain
|
||||
@click="doDelete(row)"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-row class="el-pagination-container" style="margin-bottom: 0px">
|
||||
<el-pagination
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next"
|
||||
:total="pageForm.totalCount">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
event_list: {
|
||||
type: Object,
|
||||
default: {},
|
||||
},
|
||||
},
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
searchName: "",
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "",
|
||||
pageOrderBy: ""
|
||||
},
|
||||
selection: [],
|
||||
tableColumns: [
|
||||
{prop: 'name', label: '所属小队'},
|
||||
{prop: 'username', label: '姓名'},
|
||||
{prop: 'loginname', label: '工号'},
|
||||
{prop: 'mobile', label: '电话'},
|
||||
{prop: 'sex', label: '性别'},
|
||||
{prop: 'identity', label: '身份', sortable: true},
|
||||
// {prop: 'divisionLevelLeadership', label: '是否处级领导', sortable: true},
|
||||
{prop: 'status', label: '状态', sortable: true},
|
||||
{prop: 'awardsMode', label: '项目类型'},
|
||||
{prop: 'allName', label: '报名项目'},
|
||||
],
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
event_list(val) {
|
||||
this.pageForm.activityId = val.activityId
|
||||
this.pageForm.eventId = val.eventId
|
||||
this.applyPageData(val)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
pageOrder(column) {
|
||||
this.pageForm.pageOrderName = column.prop;
|
||||
this.pageForm.pageOrderBy = column.order;
|
||||
this.applyPageData();
|
||||
},
|
||||
pageNumberChange(val) {
|
||||
this.pageForm.pageNumber = val;
|
||||
this.applyPageData();
|
||||
},
|
||||
pageSizeChange(val) {
|
||||
this.pageForm.pageSize = val;
|
||||
this.applyPageData();
|
||||
},
|
||||
doDelete(row) {
|
||||
const {id} = row
|
||||
this.$confirm('确定要删除该报名人员吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: async (a, b) => {
|
||||
if ("confirm" === a) {
|
||||
this.$set(row, "loading", true)
|
||||
const resp = await $.post(loc() + "/doDelete", {id: id});
|
||||
if (resp.code === 0) {
|
||||
this.applyPageData()
|
||||
this.$emit('flush')
|
||||
this.notifySuccess(resp.msg)
|
||||
}else{
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
this.$set(row, "loading", false)
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
this.selection = val;
|
||||
},
|
||||
applyPageData() {
|
||||
sublime.showLoadingbar();
|
||||
this.tableLoading = true
|
||||
$.post(loc() + "/applyPageData", this.pageForm, (data) => {
|
||||
sublime.closeLoadingbar();
|
||||
this.tableLoading = false
|
||||
if (data.code == 0) {
|
||||
this.tableData = data.data.list;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
this.$message.error(data.msg);
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
joinMemberFamily() {
|
||||
if (!this.selection.length) {
|
||||
this.$notify({
|
||||
title: '警告',
|
||||
message: '请先勾选需要删除的用户!',
|
||||
type: 'warning'
|
||||
});
|
||||
return
|
||||
}
|
||||
this.$confirm('是否将已勾选的人员删除?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
this.submitLoading = true
|
||||
const resp = await $.post(loc() + "/joinMemberFamily", {applysId: JSON.stringify(this.selection.map(v => v.id))})
|
||||
if (resp.code === 0) {
|
||||
this.applyPageData()
|
||||
this.$emit('flush')
|
||||
this.notifySuccess(resp.msg)
|
||||
}else{
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
this.submitLoading = false
|
||||
|
||||
})
|
||||
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,519 @@
|
||||
<template>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading" class="activity_view">
|
||||
<el-tab-pane label="活动信息" name="1">
|
||||
<el-form label-suffix=":" label-position="left" style="padding: 20px 0">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<vi-title title="基本信息"></vi-title>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="活动计划">
|
||||
{{ viewData.plan | str }}
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="活动名称">
|
||||
{{ viewData.name | str }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="活动地址">
|
||||
{{ viewData.address | str }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="活动级别">
|
||||
{{ activity.school.gameStyle[viewData.activityLevel] | str }}
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="报名日期">
|
||||
{{ viewData.applyStartTime }} - {{ viewData.applyEndTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="主办单位">
|
||||
{{ viewData.unitSponsorName | str }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="协办单位">
|
||||
{{ viewData.unitJointlyName | str }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="活动时间">
|
||||
{{ viewData.startTime }} - {{ viewData.endTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="竞赛方式">
|
||||
<span v-if="viewData.gameStyle===1">竞赛类</span>
|
||||
<span v-if="viewData.gameStyle===2">非竞赛类</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="经费预算">
|
||||
{{ viewData.funding | money }} 元
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="报名方式">
|
||||
<span>{{ viewData.applyWay.map(v => activity.school.applyWay[v]).join('、') }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="报名人员类型">
|
||||
<span v-if="viewData.personType===1">会员</span>
|
||||
<span v-if="viewData.personType===2">普通教职工</span>
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
|
||||
<el-col :span="24">
|
||||
<vi-title title="活动说明"></vi-title>
|
||||
</el-col>
|
||||
|
||||
<template v-if="viewData.gameStyle===1&&!viewData.applyWay.includes(3)">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="运动员资格 ">
|
||||
<div v-html="viewData.athleteQualification"></div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="报名方法 ">
|
||||
<div v-html="viewData.registrationMethod"></div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="竞赛方法 ">
|
||||
<div v-html="viewData.competitionMethod"></div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="奖励方法 ">
|
||||
<div v-html="viewData.rewardMethod"></div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="注意事项 ">
|
||||
<div v-html="viewData.precautions"></div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
|
||||
<template v-if="viewData.applyWay.includes(3)">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动通知 ">
|
||||
<div v-html="viewData.eventNotification"></div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="项目信息" name="2" v-if="!viewData.applyWay.includes(3)">
|
||||
<el-form style="margin-top: 20px">
|
||||
<el-card class="box-card mb10" v-for="app in viewData.events" shadow="hover">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>{{ app.allName }}</span>
|
||||
<el-button style="float: right; padding: 3px 5px" @click="$set(app,'show',!app.show)"
|
||||
type="text">{{ app.show ? '折叠' : '展开' }}
|
||||
</el-button>
|
||||
</div>
|
||||
<transition name="el-fade-in-linear">
|
||||
<div v-show="app.show" class="text item transition-box" style="padding: 20px 20px">
|
||||
<el-form label-suffix=":" label-position="left" style="padding: 20px 0">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="比赛模式">
|
||||
<span v-if="app.projectType==1">单项</span>
|
||||
<span v-else-if="app.projectType==2">团体</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
|
||||
<el-col :span="24" v-if="app.projectType==2">
|
||||
<vi-title title="团体报名人数"></vi-title>
|
||||
</el-col>
|
||||
|
||||
<!-- <el-col :span="8" v-if="app.projectType==2">
|
||||
<el-form-item label="每队最少人数">
|
||||
{{ app.restrictMinNum | money }} 人
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
|
||||
<el-col :span="8" v-if="app.projectType==2&&app.applyType==1">
|
||||
<el-form-item label="每队最多人数">
|
||||
{{
|
||||
app.athletesMaxNum + app.leanderNum + app.coachNum + app.substituteNum | money
|
||||
}} 人
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8" v-if="app.projectType==2">
|
||||
<el-form-item label="最多创建几队 ">
|
||||
{{ app.restrictTotalTeam | money }} 队
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8" v-if="app.projectType==2&&app.applyType==1">
|
||||
<el-form-item label="运动员最多人数 ">
|
||||
{{ app.athletesMaxNum | money }} 人
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<!-- <el-col :span="8" v-if="app.projectType==2">
|
||||
<el-form-item label="运动员最少人数 ">
|
||||
{{ app.athletesMinNum | money }} 人
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
|
||||
<el-col :span="8" v-if="app.projectType==2&&app.applyType==1">
|
||||
<el-form-item label="领队人数 ">
|
||||
{{ app.leanderNum | money }} 人
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8" v-if="app.projectType==2&&app.applyType==1">
|
||||
<el-form-item label="教练人数">
|
||||
{{ app.coachNum | money }} 人
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8" v-if="app.projectType==2&&app.applyType==1">
|
||||
<el-form-item label="副处长(级)以上最少人数">
|
||||
{{ app.deputyDirectorNum | money }} 人
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8" v-if="app.projectType==2">
|
||||
<el-form-item label="男队人数 ">
|
||||
{{ app.restrictBoyNum | money }} 人
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8" v-if="app.projectType==2">
|
||||
<el-form-item label="女队人数 ">
|
||||
{{ app.restrictGirlNum | money }} 人
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8" v-if="app.projectType==2&&app.applyType==1">
|
||||
<el-form-item label="替补人员最少人数 ">
|
||||
{{ app.substituteNum | money }} 人
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</transition>
|
||||
</el-card>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="报名信息" name="3" v-if="viewData.applyWay.includes(2)">
|
||||
|
||||
<el-form style="margin-top: 20px">
|
||||
<el-form-item label="分工会报名信息 " label-width="150px" class="view-header"
|
||||
v-if="union_filter">
|
||||
<el-select v-model="unionid" placeholder="分工会筛选" filterable clearable
|
||||
style="width: 200px;float: right" size="small" @change="changeUnion"
|
||||
@clear="changeUnion">
|
||||
<el-option
|
||||
v-for="item in unions"
|
||||
:key="item.id"
|
||||
:label="item.unionname"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-card class="box-card mb10" v-for="app in viewData.apply" shadow="hover">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>{{ isDisPlayCode ? '(' + app.unioncode + ')' : null }}{{
|
||||
app.unionname
|
||||
}}({{ app.num |money }} 人)</span>
|
||||
<el-button style="float: right; padding: 3px 5px" @click="$set(app,'show',!app.show)"
|
||||
type="text">{{ app.show ? '折叠' : '展开' }}
|
||||
</el-button>
|
||||
</div>
|
||||
<transition name="el-fade-in-linear">
|
||||
<div v-show="app.show" class="text item transition-box" style="padding: 20px 20px">
|
||||
<el-timeline>
|
||||
<el-timeline-item timestamp="领队信息" placement="top">
|
||||
<el-card shadow="never">
|
||||
<el-form label-suffix=":" label-position="right" label-width="80px"
|
||||
style="margin-top: 30px">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="姓名">
|
||||
{{ app.leader.username | str }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="性别">
|
||||
{{ app.leader.sex | str }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="工号">
|
||||
{{ app.leader.loginname | str }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="电话">
|
||||
{{ app.leader.mobile | str }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="单位">
|
||||
{{ app.leader.unitname | str }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</el-timeline-item>
|
||||
<el-timeline-item timestamp="运动员信息" placement="top">
|
||||
|
||||
<el-table border stripe :data="app.apply" size="mini" :key="tableKey">
|
||||
<el-table-column
|
||||
type="index" label="序号" header-align="center" align="center" sortable
|
||||
width="100">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="team" header-align="center" align="center" sortable
|
||||
label="所属队">
|
||||
<template scope="{row}">
|
||||
<span v-if="row.team">{{ row.team }}</span>
|
||||
<span v-if="!row.team">单项比赛暂无小队</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="username" header-align="center" align="center"
|
||||
label="姓名">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="loginname" header-align="center" align="center"
|
||||
label="教工号">
|
||||
</el-table-column>
|
||||
|
||||
<!-- <el-table-column
|
||||
prop="division_level_leadership" header-align="center" align="center" sortable
|
||||
label="是否处级领导">
|
||||
<template scope="{row:{division_level_leadership}}">
|
||||
<span v-if="division_level_leadership" class="text-primary">是</span>
|
||||
<span v-else class="text-danger">否</span>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
|
||||
<el-table-column
|
||||
prop="unitname" header-align="center" align="center" sortable
|
||||
label="单位">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="mobile" header-align="center" align="center"
|
||||
label="电话">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="sex" header-align="center" align="center" sortable
|
||||
label="性别">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="identity" header-align="center" align="center"
|
||||
label="身份">
|
||||
<template scope="{row}">
|
||||
<el-tag v-if="row.identity.includes('4')" type="info"
|
||||
effect="light">处级领导
|
||||
</el-tag>
|
||||
<el-tag v-if="row.identity.includes('3')" type="warning"
|
||||
effect="light">领队
|
||||
</el-tag>
|
||||
<el-tag v-if="row.identity.includes('2')" type="success"
|
||||
effect="light">教练
|
||||
</el-tag>
|
||||
<el-tag v-if="row.identity.includes('1')" effect="light">运动员
|
||||
</el-tag>
|
||||
<el-tag v-if="row.identity.includes('5')" type="danger"
|
||||
effect="light">替补
|
||||
</el-tag>
|
||||
<el-tag v-if="row.identity.includes('6')" effect="info">团长
|
||||
</el-tag>
|
||||
<el-tag v-if="row.identity.includes('7')" type="warning"
|
||||
effect="light">工作人员
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
</el-card>
|
||||
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
union_filter: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
filters: {
|
||||
money(val) {
|
||||
return val ? val : 0
|
||||
},
|
||||
str(val) {
|
||||
return val ? val : '暂无'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: "1",
|
||||
viewData: {awardsMode: [], applyWay: [], combinationMethod: []},
|
||||
rootData: {},
|
||||
loading: true,
|
||||
units: [],
|
||||
unions: [],
|
||||
unionid: '',
|
||||
tableKey: '',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
changeUnion() {
|
||||
if (this.unionid) {
|
||||
this.viewData.apply = this.rootData.apply.filter(v => {
|
||||
return v.id === this.unionid
|
||||
})
|
||||
} else {
|
||||
this.viewData.apply = JSON.parse(JSON.stringify(this.rootData.apply))
|
||||
}
|
||||
this.tableKey = new Date().getTime()
|
||||
},
|
||||
hasPane(name) {
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getUnitName(arr) {
|
||||
const clubs = await getClubs()
|
||||
const unitClubs = this.units.concat(clubs)
|
||||
let brr = []
|
||||
arr.forEach(a => {
|
||||
const unit = unitClubs.find(v => {
|
||||
return v.id === a
|
||||
})
|
||||
if (unit) {
|
||||
brr.push(unit.name)
|
||||
}
|
||||
})
|
||||
return brr.join(",")
|
||||
},
|
||||
async getInfo(id) {
|
||||
this.loading = true
|
||||
const {data} = await $.get("/platform/activity/common/findOne", {id})
|
||||
this.loading = false
|
||||
|
||||
if (data) {
|
||||
data.unitSponsorName = await this.getUnitName(JSON.parse(data.unitSponsor))
|
||||
data.unitJointly = JSON.parse(data.unitJointly)
|
||||
data.unitJointlyName = await this.getUnitName(data.unitJointly)
|
||||
data.applyWay = JSON.parse(data.applyWay)
|
||||
|
||||
if (!data.applyWay.includes(3) && data.events.length > 0) {
|
||||
data.events.forEach(v => {
|
||||
v.awardsMode = v.awardsMode
|
||||
v.combinationMethod = v.combinationMethod
|
||||
})
|
||||
}
|
||||
|
||||
if (data.applyWay.includes(2)) {
|
||||
data.apply.forEach(v => {
|
||||
const leaders = v.apply.filter(x => {
|
||||
return x.identity === 3
|
||||
})
|
||||
v.leader = {}
|
||||
if (leaders.length) {
|
||||
v.leader = leaders[0]
|
||||
}
|
||||
v.apply = v.apply.filter(x => {
|
||||
return x.identity !== 3
|
||||
})
|
||||
})
|
||||
|
||||
data.apply.sort((a, b) => {
|
||||
return b.num - a.num
|
||||
})
|
||||
|
||||
if (data.apply.length === 1) {
|
||||
data.apply[0].show = true
|
||||
}
|
||||
|
||||
this.unions = data.apply.map(v => {
|
||||
return {id: v.id, unionname: v.unionname}
|
||||
})
|
||||
}
|
||||
|
||||
this.rootData = clone(data)
|
||||
this.viewData = data
|
||||
this.tableKey = new Date().getTime()
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$message({message: "获取信息失败", type: 'error'});
|
||||
}
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.units = await getUnits(null)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.mb10 {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.activity_view .el-card__header {
|
||||
padding: 10px 20px;
|
||||
}
|
||||
|
||||
.activity_view .el-card__body {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.activity_view .el-timeline {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,98 @@
|
||||
<template>
|
||||
<!-- <div>
|
||||
<el-form label-suffix=":" label-position="left" style="padding: 20px 0">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<vi-title title="计划详情"></vi-title>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划名称">
|
||||
{{ viewData.name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="预计时间">
|
||||
{{ viewData.time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动项目">
|
||||
{{ viewData.allName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划类型">
|
||||
{{ viewData.type == 1 ? '校活动计划' : viewData.type == 2 ? '分工会活动计划' : '协会(社团)计划' }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="计划内容 ">
|
||||
<div v-html="viewData.content"></div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>-->
|
||||
<div style="width: 80%; margin: 0 auto">
|
||||
<vi-title title="计划详情"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
<el-descriptions-item label="计划名称">
|
||||
{{ viewData.name }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="预计时间">
|
||||
{{ viewData.time }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="预算费用">
|
||||
{{ viewData.money }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="计划类型">
|
||||
{{ viewData.type == 40001 ? '校活动计划' : viewData.type == 40002 ? '分工会活动计划' : '协会(社团)计划' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="计划内容" :span="2">
|
||||
<div v-html="viewData.content"></div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
viewData: {},
|
||||
loading: true,
|
||||
tableKey: '',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getInfo(id) {
|
||||
this.loading = true
|
||||
const {data} = await $.get("/platform/activity/common/findOnePlan", {id})
|
||||
this.loading = false
|
||||
|
||||
if (data) {
|
||||
this.viewData = data
|
||||
this.tableKey = new Date().getTime()
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$message({message: "获取信息失败", type: 'error'});
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
@@ -0,0 +1,387 @@
|
||||
<template>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading">
|
||||
<el-tab-pane label="活动基础信息" name="1">
|
||||
<el-form label-suffix=":" style="padding: 20px 0" label-width="120px">
|
||||
<el-form-item class="item-center">{{ viewData.name }}</el-form-item>
|
||||
|
||||
<el-row gutter="60">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系人">
|
||||
<span v-if="viewData.username">
|
||||
{{ viewData.username }}
|
||||
({{ viewData.loginname }})</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系方式">
|
||||
{{ viewData.mobile }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动编号">
|
||||
{{ viewData.activityCode }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动项目类型">
|
||||
{{ viewData.projectTypeName }}({{ viewData.projectTypeCode }})
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动类型">
|
||||
{{ viewData.type === 1 ? '分工会活动' : viewData.type === 2 ? '协会社团活动' : '校工会活动' }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动计划时间">
|
||||
{{ viewData.startPlannedDate + ' - ' + viewData.endPlannedDate }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动时间">{{ viewData.startTime }} - {{
|
||||
viewData.endTime
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-if="viewData.applyStartTime">
|
||||
<el-form-item label="报名时间">{{ viewData.applyStartTime }} - {{
|
||||
viewData.applyEndTime
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动人数">{{ viewData.peopleNum || '暂无' }}</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动内容">{{ viewData.activityContent }}</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动地点">{{ viewData.address }}</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报名方式">
|
||||
<span v-if="viewData.signUpMethod===1">个人报名</span>
|
||||
<span v-else-if="viewData.signUpMethod===2">分工会报名</span>
|
||||
<span v-else-if="viewData.signUpMethod===3">组队报名</span>
|
||||
<span v-else-if="!viewData.signUpMethod">无需报名</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动提醒">
|
||||
{{ viewData.xlFlag ? '提醒' : '不提醒' }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否用于报名">
|
||||
<span v-if="viewData.isEnrollSystem">活动报名</span>
|
||||
<span v-else>活动管理</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" v-if="viewData.signUpMethod!=null">
|
||||
<el-form-item label="报名人数限制">
|
||||
<span v-if="viewData.userNumberLimit===1">总人数限制({{
|
||||
viewData.totalUserNumberLimit
|
||||
}}人)</span>
|
||||
<span v-else-if="viewData.userNumberLimit===2">分工会人数限制</span>
|
||||
<span v-else-if="!viewData.userNumberLimit">不限制</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24" v-if="viewData.userNumberLimit===2">
|
||||
<el-form-item label="分工会限制名额">
|
||||
<el-table border stripe :data="viewData.unionUserNumberLimit" size="small"
|
||||
height="500">
|
||||
<el-table-column type="index" label="序号" header-align="center" align="center"
|
||||
width="100">
|
||||
</el-table-column>
|
||||
<el-table-column label="分工会名称" prop="unionName"></el-table-column>
|
||||
<el-table-column label="分工会人数" prop="unionNum"></el-table-column>
|
||||
<el-table-column label="限制人数" prop="limitNum"></el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item v-if="viewData.type===1" label="所属工会">
|
||||
{{ !viewData.unionname ? '暂无' : viewData.unionname }}
|
||||
</el-form-item>
|
||||
<el-form-item v-if="viewData.type===2" label="所属社团">
|
||||
{{ !viewData.clubName ? '暂无' : viewData.clubName }}
|
||||
</el-form-item>
|
||||
<el-form-item v-if="viewData.type===3" label="所属组织">
|
||||
校工会
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" v-if="[1,2].includes(viewData.signUpMethod)">
|
||||
<el-form-item label="是否需要签到">
|
||||
{{ viewData.needSign ? '需要' : '不需要' }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" v-if="viewData.signUpMethod!=null">
|
||||
<el-form-item label="签到半径(m)" v-if="viewData.needSign">
|
||||
{{ viewData.rangeMeter + '米' }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="封面图" prop="cover">
|
||||
<img v-if="viewData.cover"
|
||||
:src="FILE_DOMAIN + '/fileStreamPreview?id=' + viewData.cover"
|
||||
class="avatar" style="height: 200px;width: auto">
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24" v-if="viewData.needSign">
|
||||
<el-form-item prop="" label="活动签到点位">
|
||||
<el-card shadow="never">
|
||||
<div style="width: 100%;height: 500px" id="signMap"></div>
|
||||
</el-card>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="活动费用" name="3" v-if="!viewData.isEnrollSystem">
|
||||
<el-form label-suffix=":" label-position="left" style="padding: 20px 0" label-width="80px">
|
||||
|
||||
<el-table border stripe :data="viewData.goods">
|
||||
|
||||
<el-table-column
|
||||
type="index" label="序号" header-align="center" align="center" width="100">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="物品名称" header-align="center" align="center" prop="name">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="物品价格" header-align="center" align="center" prop="actualPrice">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-form-item label="发  票">
|
||||
<file-upload v-if="viewData.billFiles&&viewData.billFiles.length"
|
||||
:files="viewData.billFiles" :view="true">
|
||||
</file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="照  片">
|
||||
<file-upload v-if="viewData.photoFiles&&viewData.photoFiles.length"
|
||||
:files="viewData.photoFiles" :view="true">
|
||||
</file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="其  他">
|
||||
<file-upload v-if="viewData.otherFiles&&viewData.otherFiles.length"
|
||||
:files="viewData.otherFiles" :view="true">
|
||||
</file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="新闻稿件" name="4" v-if="!viewData.isEnrollSystem">
|
||||
<el-descriptions class="margin-top" :column="3" border>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">新闻稿件说明</template>
|
||||
{{ viewData.newsRemark }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">图片</template>
|
||||
<file-upload v-if="viewData.picFiles && viewData.picFiles.length > 0"
|
||||
:files="viewData.picFiles"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">附件</template>
|
||||
<file-upload v-if="viewData.newsFiles && viewData.newsFiles.length > 0"
|
||||
:files="viewData.newsFiles"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<el-tab-pane label="活动总结" name="5" v-if="!viewData.isEnrollSystem">
|
||||
<el-form ref="form" label-width="120px">
|
||||
<el-form-item prop="activitySummary" label="活动总结">
|
||||
{{ viewData.activitySummary }}
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="审核信息" name="5" v-if="viewData.auditId">
|
||||
<el-form ref="form" label-width="120px">
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.audit.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.audit.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见:">
|
||||
{{ viewData.audit.auditOpinion }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
userData: [],
|
||||
viewData: {},
|
||||
loading: true,
|
||||
search: '',
|
||||
tableKey: '',
|
||||
activeName: '1',
|
||||
userColumns: [],
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async doExport() {
|
||||
window.open("/platform/activity/info/mange/doExportUser?id=" + this.viewData.id)
|
||||
},
|
||||
async userChange() {
|
||||
if (this.search) {
|
||||
const {data} = await $.get("/platform/activity/info/mange/searchTissueUser", {
|
||||
id: this.viewData.id,
|
||||
search: this.search
|
||||
})
|
||||
this.userData = data
|
||||
}
|
||||
},
|
||||
async getInfo(id) {
|
||||
this.userColumns = [{prop: 'userName', label: '姓名'},
|
||||
{prop: 'loginName', label: '工号'},
|
||||
{prop: 'sex', label: '性别'},
|
||||
{prop: 'mobile', label: '联系方式'},
|
||||
{prop: 'unitName', label: '所属单位'},
|
||||
{prop: 'unionName', label: '所属工会'}]
|
||||
this.loading = true
|
||||
const {data} = await $.get("/platform/activity/info/mange/findOne", {id})
|
||||
this.loading = false
|
||||
if (data) {
|
||||
if (data.needSign) {
|
||||
this.userColumns.push({prop: 'isSign', label: '是否签到'})
|
||||
this.userColumns.push({prop: 'signTime', label: '签到时间'})
|
||||
}
|
||||
data.billFiles = JSON.parse(data.billFiles)
|
||||
data.photoFiles = JSON.parse(data.photoFiles)
|
||||
data.otherFiles = JSON.parse(data.otherFiles)
|
||||
data.picFiles = JSON.parse(data.picFiles)
|
||||
data.newsFiles = JSON.parse(data.newsFiles)
|
||||
this.userData = clone(data.tissuePersonList)
|
||||
data.unionUserNumberLimit = JSON.parse(data.unionUserNumberLimit)
|
||||
data.location = JSON.parse(data.location)
|
||||
this.viewData = data
|
||||
this.tableKey = new Date().getTime()
|
||||
this.initMap()
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$notify.error({title: '错误', message: '获取信息失败'});
|
||||
}
|
||||
},
|
||||
initMap() {
|
||||
let marker = null
|
||||
this.$nextTick(() => {
|
||||
let map = new AMap.Map("signMap", {
|
||||
resizeEnable: true,
|
||||
center: [118.640081, 32.082496],
|
||||
zoom: 16
|
||||
});
|
||||
|
||||
if (this.viewData.location && Array.isArray(this.viewData.location)) {
|
||||
const lng = parseFloat(this.viewData.location[0])
|
||||
const lat = parseFloat(this.viewData.location[1])
|
||||
marker = new AMap.Marker({
|
||||
position: [lng, lat],
|
||||
offset: new AMap.Pixel(-13, -30)
|
||||
});
|
||||
marker.setMap(map);
|
||||
map.setZoomAndCenter(18, [lng, lat])
|
||||
}
|
||||
map.on('click', (e) => {
|
||||
console.log(e)
|
||||
if (marker) {
|
||||
marker.setMap(null)
|
||||
marker = null
|
||||
}
|
||||
marker = new AMap.Marker({
|
||||
position: [e.lnglat.getLng(), e.lnglat.getLat()],
|
||||
offset: new AMap.Pixel(-13, -30)
|
||||
})
|
||||
marker.setMap(map)
|
||||
this.formData.location = []
|
||||
this.formData.location.push(e.lnglat.getLng())
|
||||
this.formData.location.push(e.lnglat.getLat())
|
||||
});
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.item-center {
|
||||
text-align: center;
|
||||
font-weight: 700;
|
||||
margin-right: 110px;
|
||||
}
|
||||
|
||||
.item-center .el-form-item__content {
|
||||
font-size: 18px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,152 @@
|
||||
<template>
|
||||
<el-table :data="tableData" style="width: 100%;height: 100%" stripe border
|
||||
ref="MaleFemaleTab"
|
||||
:header-cell-style="{background:'#FAFAFA'}" row-key="id" @sort-change="pageOrder"
|
||||
v-loading="tableLoading" size="mini" fixed>
|
||||
|
||||
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号"
|
||||
width="80px" fixed></el-table-column>
|
||||
<el-table-column label="分工会" prop="unionname" header-align="center"
|
||||
align="center" fixed show-overflow-tooltip width="250px"></el-table-column>
|
||||
<el-table-column label="甲组" header-align="center" v-if="tableColumns.length>0">
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in tableColumns"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="乙组" header-align="center" v-if="tableColumns2.length>0">
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in tableColumns2"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="丙组" header-align="center" v-if="tableColumns3.length>0">
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in tableColumns3"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="丁组" header-align="center" v-if="tableColumns4.length>0">
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in tableColumns4"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="团体" header-align="center" v-if="tableColumns5.length>0">
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in tableColumns5"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="总分" prop="totalScore" header-align="center"
|
||||
align="center" show-overflow-tooltip fixed="right"></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" type="index" show-overflow-tooltip label="名次"
|
||||
width="80px" fixed="right"></el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
Form: {
|
||||
type: Object,
|
||||
default: {},
|
||||
}
|
||||
},
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
tableData: [],
|
||||
maxHeight: 0,
|
||||
tableColumns2: [],
|
||||
tableColumns3: [],
|
||||
tableColumns4: [],
|
||||
tableColumns5: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
/* const tabHeight = document.getElementById("app").clientHeight - (this.$refs.MaleFemaleTab.$el.offsetTop + 60)
|
||||
this.$nextTick(()=>{
|
||||
this.maxHeight = tabHeight
|
||||
})*/
|
||||
},
|
||||
methods: {
|
||||
async isMaleFemale() {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据正在查询中,请稍后...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: COVER_LAYER_COLOR
|
||||
});
|
||||
this.tableColumns = []
|
||||
this.tableColumns2 = []
|
||||
this.tableColumns3 = []
|
||||
this.tableColumns4 = []
|
||||
this.tableColumns5 = []
|
||||
this.tableData = []
|
||||
const {data} = await $.get(loc() + "/isMaleFemale", this.Form)
|
||||
data.eventList.forEach(v => {
|
||||
if (v.baname == "甲组" || v.baname == "乙组" || v.baname == "丙组" || v.baname == "丁组") {
|
||||
this.tableColumns.push({label: v.isMenWomen ? v.label.substr(4) : v.label.substr(2), prop: v.label})
|
||||
} else {
|
||||
|
||||
this.tableColumns5.push({label: v.label, prop: v.label})
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
this.tableData = data.score.sort(this.compare("totalScore"))
|
||||
if (this.Form.unionname) {
|
||||
this.tableData = this.tableData.filter(v => v.unionname == this.Form.unionname)
|
||||
}
|
||||
|
||||
loading.close();
|
||||
|
||||
|
||||
},
|
||||
|
||||
compare(prop) {
|
||||
return function (obj1, obj2) {
|
||||
const val1 = obj1[prop];
|
||||
const val2 = obj2[prop];
|
||||
if (val1 > val2) {
|
||||
return -1;
|
||||
} else if (val1 < val2) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<el-table :data="tableData" style="width: 100%;height: 100%" stripe border
|
||||
ref="MaleFemaleTab"
|
||||
:header-cell-style="{background:'#FAFAFA'}" row-key="id" @sort-change="pageOrder"
|
||||
v-loading="tableLoading" size="mini" fixed >
|
||||
<!--:max-height="maxHeight"-->
|
||||
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号"
|
||||
width="80px" fixed></el-table-column>
|
||||
<el-table-column label="分工会" prop="unionname" header-align="center"
|
||||
align="center" fixed show-overflow-tooltip></el-table-column>
|
||||
|
||||
<el-table-column label="总分" prop="totalScore" header-align="center"
|
||||
align="center" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="名次"
|
||||
width="80px" ></el-table-column>
|
||||
|
||||
</el-table>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
Form: {
|
||||
type: Object,
|
||||
default: {},
|
||||
}
|
||||
},
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
tableData: [],
|
||||
maxHeight: 0
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
/*const tabHeight = document.getElementById("app").clientHeight - (this.$refs.MaleFemaleTab.$el.offsetTop + 60)
|
||||
this.$nextTick(() => {
|
||||
this.maxHeight = tabHeight
|
||||
})*/
|
||||
},
|
||||
methods: {
|
||||
async isScoreTopEight() {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据正在查询中,请稍后...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: COVER_LAYER_COLOR
|
||||
});
|
||||
this.tableColumns = []
|
||||
this.tableData = []
|
||||
const {data} = await $.get(loc() + "/isScoreTopEight", this.Form)
|
||||
const table = data.score.sort(this.compare("totalScore"))
|
||||
this.tableData = table.slice(0, 8)
|
||||
|
||||
loading.close();
|
||||
|
||||
|
||||
},
|
||||
|
||||
compare(prop) {
|
||||
return function (obj1, obj2) {
|
||||
const val1 = obj1[prop];
|
||||
const val2 = obj2[prop];
|
||||
if (val1 > val2) {
|
||||
return -1;
|
||||
} else if (val1 < val2) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,93 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- <el-table :data="tableData" style="width: 100%" stripe border
|
||||
:header-cell-style="{background:'#FAFAFA'}" row-key="id" @sort-change="pageOrder"
|
||||
v-loading="tableLoading" size="mini">
|
||||
|
||||
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="名次"
|
||||
width="100px"></el-table-column>
|
||||
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in tableColumns"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>-->
|
||||
<table class="table table-bordered" style="table-layout: fixed;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: center!important;">项目</th>
|
||||
<th style="text-align: center!important;" v-for="i in 8">第{{ i }}名</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="i in tableData">
|
||||
<td align="center" width="20%">{{ i.label }}</td>
|
||||
<td v-for="x in 8" align="center" width="10%">
|
||||
{{ getTableTdContent(i.sss, x) }}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
Form: {
|
||||
type: Object,
|
||||
default: {},
|
||||
}
|
||||
},
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
tableData: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getTableTdContent(d, i) {
|
||||
return d.filter(v => {
|
||||
if (v.ranking == i) {
|
||||
return v.username
|
||||
}
|
||||
}).map(v => {
|
||||
return v.username
|
||||
}).toString()
|
||||
},
|
||||
async isTopEight() {
|
||||
var loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据正在查询中,请稍后...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
});
|
||||
this.tableColumns = []
|
||||
this.tableData = []
|
||||
const {data} = await $.get(loc() + "/isTopEight", this.Form)
|
||||
data.eventList.map(v => {
|
||||
v.sss = []
|
||||
data.userList.map(x => {
|
||||
if (v.label === x.allname) {
|
||||
console.log(x)
|
||||
v.sss.push(x)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
this.tableData = data.eventList
|
||||
loading.close();
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,246 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-tabs tab-position="top" v-model="activeName" style="padding: 20px">
|
||||
<!-- <el-tab-pane v-if="$.parseJSON(role) === true" label="当前场地使用情况" name="1">-->
|
||||
<!-- <el-calendar v-model="reserve_time">-->
|
||||
<!-- <template slot="dateCell" slot-scope="{date, data}">-->
|
||||
<!-- <div class="div-Calendar">-->
|
||||
<!-- <p :class="data.isSelected ? 'is-selected' : ''">-->
|
||||
<!-- {{ data.day.split('-').slice(1).join('-') }} {{ data.isSelected ? '√' : '' }}-->
|
||||
<!-- </p>-->
|
||||
<!-- <div v-if="$.parseJSON(role) === true" v-for="item in viewData.site_info">-->
|
||||
<!-- <div v-if="data.day.toString()==item.reserve_day"-->
|
||||
<!-- :style="{backgroundColor:([0].includes(item.stateaudittype)?'#FAECD9':'#E0F4D9')}">-->
|
||||
<!-- <el-row :gutter="20" style="line-height: 30px;margin-bottom: 10px;">-->
|
||||
<!-- <el-col :span="4">-->
|
||||
<!-- <el-button v-if="[0].includes(item.stateaudittype)" type="warning"-->
|
||||
<!-- size="mini" circle>待-->
|
||||
<!-- </el-button>-->
|
||||
<!-- <el-button v-if="item.stateaudittype==3" type="success" size="mini" circle>通-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col :span="20" style="font-size: 10px">-->
|
||||
<!-- <b>{{ item.reserve_person }}</b>:{{ item.start_time }}-{{ item.end_time }}-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-calendar>-->
|
||||
<!-- </el-tab-pane>-->
|
||||
|
||||
<el-tab-pane label="预约基本信息" name="2">
|
||||
<border-table>
|
||||
<table style="margin-top: 20px">
|
||||
<tr>
|
||||
<th>联系人</th>
|
||||
<td>
|
||||
{{ viewData.reserve_person_username }}
|
||||
</td>
|
||||
<th>联系人工号</th>
|
||||
<td>
|
||||
{{ viewData.loginname }}
|
||||
</td>
|
||||
<th>预约人性别</th>
|
||||
<td>
|
||||
{{ viewData.reserve_person_sex }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>联系方式</th>
|
||||
<td>
|
||||
{{ viewData.reserve_person_phone }}
|
||||
</td>
|
||||
<th>联系人工会</th>
|
||||
<td>
|
||||
{{ viewData.unionname }}
|
||||
</td>
|
||||
<th>联系人部门</th>
|
||||
<td>
|
||||
{{ viewData.reserve_person_unitname }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>预约场地</th>
|
||||
<td>
|
||||
{{ viewData.site_name }}
|
||||
</td>
|
||||
<th>活动人数</th>
|
||||
<td>
|
||||
{{ viewData.reserve_join_user_num }}
|
||||
</td>
|
||||
<th>预约事由</th>
|
||||
<td>
|
||||
{{ viewData.reserve_cause }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>使用时间</th>
|
||||
<td colspan="5">
|
||||
{{ viewData.reservationTimeStr }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- <tr>
|
||||
<th>是否有横幅标语(内容)</th>
|
||||
<td :colspan="5">
|
||||
{{ viewData.banner_slogans ? viewData.banner_slogans : '暂无' }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>是否有校外人员参加(注明)</th>
|
||||
<td :colspan="5">
|
||||
{{ viewData.off_campus_personnel ? viewData.off_campus_personnel : '暂无' }}
|
||||
</td>
|
||||
</tr>-->
|
||||
|
||||
<tr>
|
||||
<th>预约状态</th>
|
||||
<td :colspan="5">
|
||||
<span v-if="[0].includes(viewData.stateAuditType)"
|
||||
style="color: #e6a23c">{{ viewData.state_name }}</span>
|
||||
<span v-if="viewData.stateAuditType==3" style="color: #67c23a">{{ viewData.state_name }}</span>
|
||||
<span v-if="viewData.stateAuditType==1" style="color: #f56c6c">{{ viewData.state_name }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="分工会审核信息" name="3" v-if="viewData.unionProcess">
|
||||
<border-table>
|
||||
<table style="margin-top: 20px">
|
||||
<tr>
|
||||
<th>审核人</th>
|
||||
<td>
|
||||
{{ viewData.unionProcess.username }}
|
||||
</td>
|
||||
<th>审核结果</th>
|
||||
<td>
|
||||
{{ viewData.unionProcess.auditPass ? '通过' : '驳回' }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>审核时间</th>
|
||||
<td>
|
||||
{{ viewData.unionProcess.auditTime }}
|
||||
</td>
|
||||
<th>审核意见</th>
|
||||
<td>
|
||||
{{ viewData.unionProcess.auditOpinion }}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="离退休工作处审核信息" name="4" v-if="viewData.retireProcess">
|
||||
<border-table>
|
||||
<table style="margin-top: 20px">
|
||||
<tr>
|
||||
<th>审核人</th>
|
||||
<td>
|
||||
{{ viewData.retireProcess.username }}
|
||||
</td>
|
||||
<th>审核结果</th>
|
||||
<td>
|
||||
{{ viewData.retireProcess.auditPass ? '通过' : '驳回' }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>审核时间</th>
|
||||
<td>
|
||||
{{ viewData.retireProcess.auditTime }}
|
||||
</td>
|
||||
<th>审核意见</th>
|
||||
<td>
|
||||
{{ viewData.retireProcess.auditOpinion }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>签字</th>
|
||||
<td colspan="3">
|
||||
<el-image v-if="viewData.retireProcess.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.retireProcess.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</border-table>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<el-tab-pane label="校工会审核信息" name="5" v-if="viewData.schoolProcess">
|
||||
<border-table>
|
||||
<table style="margin-top: 20px">
|
||||
<tr>
|
||||
<th>审核人</th>
|
||||
<td>
|
||||
{{ viewData.schoolProcess.username }}
|
||||
</td>
|
||||
<th>审核结果</th>
|
||||
<td>
|
||||
{{ viewData.schoolProcess.auditPass ? '通过' : '驳回' }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>审核时间</th>
|
||||
<td>
|
||||
{{ viewData.schoolProcess.auditTime }}
|
||||
</td>
|
||||
<th>审核意见</th>
|
||||
<td>
|
||||
{{ viewData.schoolProcess.auditOpinion }}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>
|
||||
</el-tab-pane>
|
||||
|
||||
<slot name="handle"></slot>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
id: String,
|
||||
activeName: {
|
||||
type: String,
|
||||
default: '1'
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: '2',
|
||||
viewData: {},
|
||||
reserve_time: '',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getSiteReserveInfo(id) {
|
||||
const {data} = await $.get(base + "/platform/activity/site/reserve/findOne", {id})
|
||||
return data
|
||||
},
|
||||
async openView(id, activeName = '2') {
|
||||
this.viewData = await this.getSiteReserveInfo(id)
|
||||
this.activeName = activeName
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-descriptions-item__cell {
|
||||
text-align: center !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,154 @@
|
||||
/**
|
||||
*Desc:
|
||||
*Create by: jug
|
||||
*Create time:2023/12/15/11:37
|
||||
*/
|
||||
<template>
|
||||
<div style="padding-bottom: 20px;">
|
||||
<van-form>
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
申请信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-cell readonly :value="formData.reserve_person_username" title="联系人"></van-cell>
|
||||
<van-cell readonly :value="formData.reserve_person_loginname" title="联系人工号"></van-cell>
|
||||
<van-cell readonly :value="formData.reserve_person_sex" title="预约人性别"></van-cell>
|
||||
<van-cell readonly :value="formData.reserve_person_phone" title="联系方式"></van-cell>
|
||||
<van-cell readonly :value="formData.reserve_person_unionname" title="联系人工会"></van-cell>
|
||||
<van-cell readonly :value="formData.reserve_person_unitname" title="联系人部门"></van-cell>
|
||||
<van-cell readonly :value="formData.site_name" title="预约场地"></van-cell>
|
||||
<van-cell readonly :value="formData.reserve_cause" title="预约事由"></van-cell>
|
||||
<van-cell readonly :value="formData.reserve_join_user_num" title="活动人数"></van-cell>
|
||||
<!-- <van-cell readonly v-if="formData.equipment_ids" :value="formData.equipmentNames" title="使用设备"></van-cell>-->
|
||||
<!-- <van-cell readonly v-else value="暂无" title="使用设备"></van-cell>-->
|
||||
<van-cell readonly title="使用时间" :value="formData.reservationTimeStr"></van-cell>
|
||||
<!-- <van-cell readonly title="预约开始时间" :value="formData.reserve_start_time"></van-cell>-->
|
||||
<!-- <van-cell readonly title="预约结束时间" :value="formData.reserve_end_time"></van-cell>-->
|
||||
<!-- <van-cell readonly title="是否有横幅标语" type="textarea" rows="2" :value="formData.banner_slogans"></van-cell>-->
|
||||
<!-- <van-cell readonly title="是否有校外人员参加" type="textarea" rows="3" :value="formData.off_campus_personnel"></van-cell>-->
|
||||
<!-- <van-cell readonly :value="formData.reserve_activity" title="预约活动项目"></van-cell>-->
|
||||
<!-- <van-cell :value="formData.reserve_cause"-->
|
||||
<!-- rows="1"-->
|
||||
<!-- autosize-->
|
||||
<!-- type="textarea"-->
|
||||
<!-- title="预约事由"></van-cell>-->
|
||||
<!-- <van-cell :value="formData.reserve_join_user_num"-->
|
||||
<!-- title="参加人数"></van-cell>-->
|
||||
<!-- <van-cell :value="formData.reserve_demand"-->
|
||||
<!-- rows="1"-->
|
||||
<!-- autosize-->
|
||||
<!-- type="textarea"-->
|
||||
<!-- title="场地需求"></van-cell>-->
|
||||
</van-cell-group>
|
||||
</van-form>
|
||||
|
||||
<template v-if="formData && formData.unionProcess">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
分工会审核信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-cell title="审 核 人" :value="formData.unionProcess.username"></van-cell>
|
||||
<van-cell title="审核时间" :value="formData.unionProcess.auditTime"></van-cell>
|
||||
<van-cell title="审核意见" :value="formData.unionProcess.auditOpinion"></van-cell>
|
||||
<!-- <van-field name="sign" label="签  字">-->
|
||||
<!-- <template #input>-->
|
||||
<!-- <van-image width="200" height="100" :src="formData.unionProcess.auditSign"-->
|
||||
<!-- v-if="formData.unionProcess.auditSign"/>-->
|
||||
<!-- <span v-else>暂无</span>-->
|
||||
<!-- </template>-->
|
||||
<!-- </van-field>-->
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
|
||||
<template v-if="formData && formData.retireProcess">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
离退休工作处审核信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-cell title="审 核 人" :value="formData.retireProcess.username"></van-cell>
|
||||
<van-cell title="审核时间" :value="formData.retireProcess.auditTime"></van-cell>
|
||||
<van-cell title="审核意见" :value="formData.retireProcess.auditOpinion"></van-cell>
|
||||
<!-- <van-field name="sign" label="签  字">-->
|
||||
<!-- <template #input>-->
|
||||
<!-- <van-image width="200" height="100" :src="formData.retireProcess.auditSign"-->
|
||||
<!-- v-if="formData.retireProcess.auditSign"/>-->
|
||||
<!-- <span v-else>暂无</span>-->
|
||||
<!-- </template>-->
|
||||
<!-- </van-field>-->
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
|
||||
<template v-if="formData && formData.schoolProcess">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
校工会审核信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-cell title="审 核 人" :value="formData.schoolProcess.username"></van-cell>
|
||||
<van-cell title="审核时间" :value="formData.schoolProcess.auditTime"></van-cell>
|
||||
<van-cell title="审核意见" :value="formData.schoolProcess.auditOpinion"></van-cell>
|
||||
<!-- <van-field name="sign" label="签  字">-->
|
||||
<!-- <template #input>-->
|
||||
<!-- <van-image width="200" height="100" :src="formData.schoolProcess.auditSign"-->
|
||||
<!-- v-if="formData.schoolProcess.auditSign"/>-->
|
||||
<!-- <span v-else>暂无</span>-->
|
||||
<!-- </template>-->
|
||||
<!-- </van-field>-->
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
<slot name="audit"></slot>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "SiteH5Info",
|
||||
props: {
|
||||
id: String
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
formData: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getInfo(id) {
|
||||
const {data, code, msg} = await $.get("/platform/activity/site/reserve/findOne", {id})
|
||||
if (code === 0) {
|
||||
this.formData = data
|
||||
} else {
|
||||
this.$toast.fail('获取信息失败');
|
||||
}
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.getInfo(this.id)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.van-cell-group__title {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item {
|
||||
font-size: 16px !important;
|
||||
text-indent: 4px !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item--select::before {
|
||||
left: 5px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,548 @@
|
||||
<template>
|
||||
<div class="activity-bx-info">
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading">
|
||||
<el-tab-pane label="申请信息" name="1">
|
||||
<border-table>
|
||||
<table>
|
||||
<tr>
|
||||
<th>申请人</th>
|
||||
<td>{{ viewData.user_name }}( {{ viewData.mobile }})</td>
|
||||
<th>申请时间</th>
|
||||
<td>{{ viewData.apply_time }}</td>
|
||||
<th>申请类型</th>
|
||||
<td>{{ viewData.apply_type == 1 ? "经费申报" : "报销申请" }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>活动时间</th>
|
||||
<td>
|
||||
<span v-if="viewData.startTime">{{ viewData.startTime }}——{{ viewData.endTime }}</span>
|
||||
<span v-else>暂无</span>
|
||||
</td>
|
||||
<th>活动计划时间</th>
|
||||
<td>{{ viewData.startPlannedDate }}——{{ viewData.endPlannedDate }}</td>
|
||||
<th>项目编号</th>
|
||||
<td>{{ viewData.projectCode }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>活动经费类型</th>
|
||||
<td>{{ viewData.projectJfName }}</td>
|
||||
<th>申报(承办)单位</th>
|
||||
<td>{{ viewData.fundsUnitName }}</td>
|
||||
<th>活动人数</th>
|
||||
<td>{{ viewData.activity_number || "暂无" }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>预算费用</th>
|
||||
<td>{{ viewData.funds_money || "暂无" }}</td>
|
||||
<th>实际费用</th>
|
||||
<td>{{ viewData.activity_money || "暂无" }}</td>
|
||||
<th>活动地点</th>
|
||||
<td>{{ viewData.address }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>收款人</th>
|
||||
<td>{{ viewData.payee_username || "暂无" }}({{ viewData.payee_loginname }})</td>
|
||||
<th>支行名称</th>
|
||||
<td>{{ viewData.activity_card_name || "暂无" }}</td>
|
||||
<th>报销卡号</th>
|
||||
<td>{{ viewData.activity_card_number || "暂无" }}</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>{{ viewData.apply_type == 1 ? '活动方案及简介' : '活动内容' }}</th>
|
||||
<td colspan="5">
|
||||
<div style="word-break: break-all" v-html="viewData.activity_content"></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>附件</th>
|
||||
<td colspan="5">
|
||||
<file-upload v-if="viewData.files&&viewData.files.length" :files="viewData.files"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>签字</th>
|
||||
<td colspan="5">
|
||||
<el-image v-if="viewData.us_s"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.us_s"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="费用信息" name="2">
|
||||
<el-divider content-position="left" style="margin-top: 0 !important;"><span style="color: #3ea1ec;">购置物品及价格</span></el-divider>
|
||||
<el-table :data="viewData.goods" border size="mini" style="width: 100%">
|
||||
<el-table-column sortable type="index" width="100" label="序号"
|
||||
align="center" header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="物品名称" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input maxlength="50" placeholder="物品名称" readonly v-model="row.name"
|
||||
type="text"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="price" label="预算费用" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input maxlength="50" placeholder="预算费用" readonly v-model="row.price"
|
||||
type="text"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="actualPrice" label="实际费用" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input maxlength="50" readonly v-model="row.actualprice"
|
||||
type="text"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="notes" label="说明" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input maxlength="50" placeholder="说明" readonly v-model="row.notes"
|
||||
type="text"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div v-if="viewData.reimbursement_state_id != null && viewData.reimbursement_state_id !== ''">
|
||||
<el-divider content-position="left" class="dia"><span
|
||||
style="color: #3ea1ec;margin-top: 20px">其他报销附件</span></el-divider>
|
||||
<border-table>
|
||||
<table>
|
||||
<tr>
|
||||
<th>发票:</th>
|
||||
<td colspan="5">
|
||||
<file-upload v-if="viewData.billFiles&&viewData.billFiles.length" :files="viewData.billFiles"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>活动报道照片/总结/链接:</th>
|
||||
<td colspan="5">
|
||||
<file-upload v-if="viewData.photoFiles&&viewData.photoFiles.length" :files="viewData.photoFiles"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>奖品/纪念品/服装/道具等活动人员名单:</th>
|
||||
<td colspan="5">
|
||||
<file-upload v-if="viewData.otherFiles&&viewData.otherFiles.length" :files="viewData.otherFiles"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>
|
||||
|
||||
<!-- <el-divider content-position="left" class="dia"><span style="color: #3ea1ec;margin-top: 20px">新闻信息</span></el-divider>
|
||||
<border-table>
|
||||
<table>
|
||||
<tr>
|
||||
<th>新闻稿件说明:</th>
|
||||
<td colspan="5">
|
||||
{{ viewData.newsRemark }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>新闻图片:</th>
|
||||
<td colspan="5">
|
||||
<file-upload v-if="viewData.picFiles&&viewData.picFiles.length" :files="viewData.picFiles"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>新闻附件:</th>
|
||||
<td colspan="5">
|
||||
<file-upload v-if="viewData.newsFiles&&viewData.newsFiles.length" :files="viewData.newsFiles"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>-->
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="基层工会审核信息(申报)" name="3" v-if="viewData.division_chairman_name">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.dc_username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.division_chairman_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{
|
||||
viewData.division_chairman_idea ? viewData.division_chairman_idea : '暂无'
|
||||
}}
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.dc_s"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.dc_s"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="校工会负责人审核信息(申报)" name="4" v-if="viewData.accounting_name">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
|
||||
<!--<el-form-item label="核批信息 " label-width="135px" class="view-header">
|
||||
</el-form-item>-->
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.a_username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.accounting_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{ viewData.accounting_idea ? viewData.accounting_idea : '暂无' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.a_s"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.a_s"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="校工会副主席审核信息" name="5" v-if="viewData.confirm_trade_name">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
|
||||
<!-- <el-form-item label="核批信息 " label-width="135px" class="view-header">
|
||||
</el-form-item>-->
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.ct_username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.confirm_trade_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{ viewData.confirm_trade_idea ? viewData.confirm_trade_idea : '暂无' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.ct_s"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.ct_s"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="校工会主席审核信息(申报)" name="6" v-if="viewData.union_chairman_name">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.ucc_username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.union_chairman_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{ viewData.union_chairman_idea ? viewData.union_chairman_idea : '暂无' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.ucc_s"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.ucc_s"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="校工会出纳审核信息(申报)" name="6" v-if="viewData.union_cashier_name">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
|
||||
<!-- <el-form-item label="核批信息 " label-width="135px" class="view-header">
|
||||
</el-form-item>-->
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.uc_username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.union_cashier_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{ viewData.union_cashier_idea ? viewData.union_cashier_idea : '暂无' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.uc_s"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.uc_s"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<el-tab-pane label="协会负责人审核信息(报销)" name="7"
|
||||
v-if="viewData.reimbursement_club_audit">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.reimbursement_club_audit.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.reimbursement_club_audit.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{
|
||||
viewData.reimbursement_club_audit.auditOpinion ? viewData.reimbursement_club_audit.auditOpinion : '暂无'
|
||||
}}
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.reimbursement_club_audit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.reimbursement_club_audit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="基层工会主席审核信息(报销)" name="8"
|
||||
v-if="viewData.reimbursement_union_audit">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.reimbursement_union_audit.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.reimbursement_union_audit.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{
|
||||
viewData.reimbursement_union_audit.auditOpinion ? viewData.reimbursement_union_audit.auditOpinion : '暂无'
|
||||
}}
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.reimbursement_union_audit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.reimbursement_union_audit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<el-tab-pane label="校工会负责人审核信息(报销)" name="9"
|
||||
v-if="viewData.reimbursement_school_director">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.reimbursement_school_director.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.reimbursement_school_director.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{
|
||||
viewData.reimbursement_school_director.auditOpinion ? viewData.reimbursement_school_director.auditOpinion : '暂无'
|
||||
}}
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.reimbursement_school_director.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.reimbursement_school_director.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会主席审核信息(报销)" name="10"
|
||||
v-if="viewData.reimbursement_school_chairman">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.reimbursement_school_chairman.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.reimbursement_school_chairman.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{
|
||||
viewData.reimbursement_school_chairman.auditOpinion ? viewData.reimbursement_school_chairman.auditOpinion : '暂无'
|
||||
}}
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.reimbursement_school_chairman.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.reimbursement_school_chairman.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: "1",
|
||||
viewData: {
|
||||
goods: []
|
||||
},
|
||||
loading: true,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getActInfo(id) {
|
||||
this.loading = true
|
||||
const {data, code, msg} = await $.get("/platform/jf/activity_bx/reimbursement/findOne", {id})
|
||||
this.loading = false
|
||||
if (data) {
|
||||
this.viewData.billFiles = []
|
||||
this.viewData.photoFiles = []
|
||||
this.viewData.otherFiles = []
|
||||
this.viewData.picFiles = []
|
||||
this.viewData.newsFiles = []
|
||||
this.viewData.files = []
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
this.viewData = data
|
||||
if (data.files && data.files.length > 0) this.viewData.files = JSON.parse(data.files)
|
||||
if (data.billFiles && data.billFiles.length > 0) this.viewData.billFiles = JSON.parse(data.billFiles)
|
||||
if (data.photoFiles && data.photoFiles.length > 0) this.viewData.photoFiles = JSON.parse(data.photoFiles)
|
||||
if (data.otherFiles && data.otherFiles.length > 0) this.viewData.otherFiles = JSON.parse(data.otherFiles)
|
||||
if (data.picFiles && data.picFiles.length > 0) this.viewData.picFiles = JSON.parse(data.picFiles)
|
||||
if (data.newsFiles && data.newsFiles.length > 0) this.viewData.newsFiles = JSON.parse(data.newsFiles)
|
||||
this.viewData.goods = data.Goods
|
||||
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$message({
|
||||
message: "获取信息失败",
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.activity-bx-info .el-timeline {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.sign_img {
|
||||
max-width: 300px;
|
||||
max-height: 100px;
|
||||
}
|
||||
|
||||
.el-divider--horizontal {
|
||||
margin-top: 30px !important;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,73 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-date-picker
|
||||
v-model="page_form.year"
|
||||
type="year"
|
||||
value-format="yyyy" style="width: 150px"
|
||||
placeholder="选择年" @change="$emit('search')">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-input placeholder="请输入内容" clearable v-model="page_form.searchKeyword"
|
||||
@keyup.enter.native="$emit('search')">
|
||||
<el-select v-model="page_form.searchName" slot="prepend" placeholder="查询类型"
|
||||
style="width: 120px;">
|
||||
<el-option label="姓名" value="username"></el-option>
|
||||
<el-option label="工号" value="loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
|
||||
<slot name="column"></slot>
|
||||
|
||||
|
||||
<div class="btn-group tool-button">
|
||||
<el-button type="primary" icon="el-icon-search" @click="$emit('search')"></el-button>
|
||||
</div>
|
||||
|
||||
<!-- <div class="pull-right offscreen-right mt5" v-if="has_add">
|
||||
<el-button icon="el-icon-edit" @click="$emit('openAdd')">申请活动报销</el-button>
|
||||
</div>-->
|
||||
|
||||
<div class="pull-right offscreen-right mt5" v-if="has_sh">
|
||||
<el-radio-group v-model="page_form.isAudit" @change="$emit('search')">
|
||||
<el-radio-button :label="1">全部</el-radio-button>
|
||||
<el-radio-button :label="2">已审核</el-radio-button>
|
||||
<el-radio-button :label="3">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
module.exports = {
|
||||
props: {
|
||||
page_form: '',
|
||||
has_add: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
has_sh: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
has_type: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
watch: {},
|
||||
methods: {},
|
||||
async created() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,151 @@
|
||||
<template>
|
||||
|
||||
<el-tabs tab-position="top" v-model="clubInfo" v-loading="loading">
|
||||
<el-tab-pane label="基础信息" name="1">
|
||||
|
||||
<vi-title title="基础信息"></vi-title>
|
||||
|
||||
<el-descriptions :column="3" border class="table_fixed">
|
||||
<el-descriptions-item :span="3" label="社团名称">
|
||||
{{viewData.name}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="社团编码">
|
||||
{{viewData.code}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="社团类型">
|
||||
{{viewData.typeName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="成立时间">
|
||||
{{viewData.foundTime}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申报年份">
|
||||
{{moment(viewData.applyTime).format('YYYY')}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申报时间">
|
||||
{{viewData.applyTime}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="状态">
|
||||
{{viewData.stateName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">附件</template>
|
||||
<file-upload v-if="viewData.files && viewData.files.length > 0"
|
||||
:files="JSON.parse(viewData.files)"
|
||||
:view="true"></file-upload>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">两年获得的集体荣誉称号</template>
|
||||
<div class="text-left" v-html="viewData.evaluateName"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">年度组织活动及完成情况</template>
|
||||
<div class="text-left" v-html="viewData.yearActivity"></div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="秘书长审核信息" name="2" v-if="hasPane(2) && viewData.mszAuditId">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
<el-descriptions-item label="审核人员">
|
||||
{{ viewData.mszAudit.username }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.mszAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :span="2" label="审核意见">
|
||||
{{ viewData.mszAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="会长审核信息" name="3" v-if="hasPane(3) && viewData.hzAuditId">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
<el-descriptions-item label="审核人员">
|
||||
{{ viewData.hzAudit.username }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.hzAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :span="2" label="审核意见">
|
||||
{{ viewData.hzAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会审核信息" name="4" v-if="hasPane(5) && viewData.xghAuditId">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
<el-descriptions-item label="审核人员">
|
||||
{{ viewData.xghAudit.username }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.xghAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :span="2" label="审核意见">
|
||||
{{ viewData.xghAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
|
||||
</el-tabs>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: 'clubEvaluateInfo',
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: () => {return []}
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
clubInfo: "1",
|
||||
viewData: {},
|
||||
loading: true,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
this.loading = true
|
||||
const {data, code, msg} = await $.get('/platform/sys/club/clubEvaluateMine/findOne', {id})
|
||||
this.loading = false
|
||||
if (data) {
|
||||
this.clubInfo = this.handle ? "999" : "1"
|
||||
this.viewData = data
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.el-descriptions-item__cell {
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,232 @@
|
||||
<template>
|
||||
|
||||
<el-tabs tab-position="top" v-model="clubInfo" v-loading="loading">
|
||||
<el-tab-pane label="基础信息" name="1">
|
||||
|
||||
<vi-title title="社团信息"></vi-title>
|
||||
|
||||
<el-descriptions :column="4" border class="table_fixed">
|
||||
<el-descriptions-item label="社团名称">
|
||||
{{viewData.name}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申请时间">
|
||||
{{viewData.create_time}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="社团编码">
|
||||
{{viewData.code}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="发起人">
|
||||
{{ viewData.sponsorName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="社团类型">
|
||||
{{ viewData.typeName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="报名联系人">
|
||||
{{ viewData.fzrName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="所属单位">
|
||||
{{ viewData.concatPersonUnitName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="联系人电话">
|
||||
{{ viewData.concatPersonMobile }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="联系人邮箱">
|
||||
{{ viewData.concatPersonEmail }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="成立时间">
|
||||
{{ viewData.foundTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="会费标准">
|
||||
{{viewData.dues_standard}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="状态">
|
||||
{{viewData.stateName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="4">
|
||||
<template slot="label">社团介绍</template>
|
||||
<div class="text-left" v-html="viewData.stjs"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="4">
|
||||
<template slot="label">社团宗旨</template>
|
||||
<div class="text-left" v-html="viewData.stzz"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="2">
|
||||
<template slot="label">QQ群二维码</template>
|
||||
<file-upload v-if="viewData.QQGroupCode && viewData.QQGroupCode.length > 0"
|
||||
:files="JSON.parse(viewData.QQGroupCode)"
|
||||
:view="true"></file-upload>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="2">
|
||||
<template slot="label">微信群二维码</template>
|
||||
<file-upload v-if="viewData.wechatGroupCode && viewData.wechatGroupCode.length > 0"
|
||||
:files="JSON.parse(viewData.wechatGroupCode)"
|
||||
:view="true"></file-upload>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="2">
|
||||
<template slot="label">申请成立报告</template>
|
||||
<file-upload v-if="viewData.establishReport && viewData.establishReport.length > 0"
|
||||
:files="JSON.parse(viewData.establishReport)"
|
||||
:view="true"></file-upload>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="2">
|
||||
<template slot="label">章程草案</template>
|
||||
<file-upload v-if="viewData.rulesFile && viewData.rulesFile.length > 0"
|
||||
:files="JSON.parse(viewData.rulesFile)"
|
||||
:view="true"></file-upload>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="2">
|
||||
<template slot="label">经费来源及管理办法</template>
|
||||
<file-upload v-if="viewData.manageFile && viewData.manageFile.length > 0"
|
||||
:files="JSON.parse(viewData.manageFile)"
|
||||
:view="true"></file-upload>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="2">
|
||||
<template slot="label">年度活动计划</template>
|
||||
<file-upload v-if="viewData.yearPlanFile && viewData.yearPlanFile.length > 0"
|
||||
:files="JSON.parse(viewData.yearPlanFile)"
|
||||
:view="true"></file-upload>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="4">
|
||||
<template slot="label">其他附件</template>
|
||||
<file-upload v-if="viewData.files && viewData.files.length > 0"
|
||||
:files="JSON.parse(viewData.files)"
|
||||
:view="true"></file-upload>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<vi-title title="成员列表" style="margin-top: 20px"></vi-title>
|
||||
<el-table :data="viewData.clubuser" size="small" border
|
||||
:header-cell-style="{background:'#F5F5F5',color:'#606266'}">
|
||||
<el-table-column label="人员身份" width="150px" prop="sf" header-align="center"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-lable v-if="scope.row.sf === 1">会长</el-lable>
|
||||
<el-lable v-if="scope.row.sf === 2">成员</el-lable>
|
||||
<el-lable v-if="scope.row.sf === 3">副会长</el-lable>
|
||||
<el-lable v-if="scope.row.sf === 4">秘书长</el-lable>
|
||||
<el-lable v-if="scope.row.sf === 5">副秘书长</el-lable>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="工号" width="150px" prop="loginname" header-align="center"
|
||||
align="center"></el-table-column>
|
||||
<el-table-column label="姓名" width="150px" prop="username" header-align="center"
|
||||
align="center"></el-table-column>
|
||||
<el-table-column label="性别" width="150px" prop="sex" header-align="center"
|
||||
align="center"></el-table-column>
|
||||
<el-table-column label="电话" width="150px" prop="mobile" header-align="center"
|
||||
align="center"></el-table-column>
|
||||
<el-table-column label="所属单位" prop="unitname" header-align="center" show-overflow-tooltip="true"
|
||||
align="center"></el-table-column>
|
||||
</el-table>
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="宣传与文体办公室审核信息" name="2" v-if="hasPane(2) && viewData.xtAuditId">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
<el-descriptions-item label="审核人员">
|
||||
{{ viewData.xtAudit.username }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.xtAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :span="2" label="审核意见">
|
||||
{{ viewData.xtAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="分管副主席审核信息" name="3" v-if="hasPane(3) && viewData.xldAuditId">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
<el-descriptions-item label="审核人员">
|
||||
{{ viewData.xldAudit.username }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.xldAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :span="2" label="审核意见">
|
||||
{{ viewData.xldAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会批复信息" name="4" v-if="hasPane(3) && viewData.xghAuditId">
|
||||
<vi-title title="批复信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
<el-descriptions-item label="批复人员">
|
||||
{{ viewData.xghAudit.username }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="批复时间">
|
||||
{{ viewData.xghAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :span="2" label="成立时间">
|
||||
{{ viewData.foundTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="批复附件">
|
||||
<file-upload v-if="viewData.schoolReplyFile && viewData.schoolReplyFile.length > 0"
|
||||
:files="JSON.parse(viewData.schoolReplyFile)"
|
||||
:view="true"></file-upload>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
|
||||
</el-tabs>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: 'clubRegistInfo',
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: () => {return []}
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
clubInfo: "1",
|
||||
viewData: {},
|
||||
loading: true,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
this.loading = true
|
||||
const {data, code, msg} = await $.get('/platform/sys/club/clubMyApply/findOne', {id})
|
||||
this.loading = false
|
||||
if (data) {
|
||||
this.clubInfo = this.handle ? "999" : "1"
|
||||
this.viewData = data
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.el-descriptions-item__cell {
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,216 @@
|
||||
<template>
|
||||
|
||||
<el-tabs tab-position="top" v-model="clubInfo" v-loading="loading">
|
||||
<el-tab-pane label="基础信息" name="1">
|
||||
|
||||
<vi-title title="基础信息"></vi-title>
|
||||
<el-descriptions :column="3" border class="table_fixed">
|
||||
<el-descriptions-item label="社团名称">
|
||||
{{ viewData.register.clubName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="成立时间">
|
||||
{{ viewData.register.foundTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="会费标准">
|
||||
{{ viewData.register.dues_standard }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :span="3">
|
||||
<template slot="label">年度活动情况</template>
|
||||
<file-upload v-if="viewData.register.yearActivity && viewData.register.yearActivity.length > 0"
|
||||
:files="viewData.register.yearActivity"
|
||||
:view="true"></file-upload>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">工作计划</template>
|
||||
<file-upload v-if="viewData.register.planFiles && viewData.register.planFiles.length > 0"
|
||||
:files="viewData.register.planFiles"
|
||||
:view="true"></file-upload>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">工作总结</template>
|
||||
<file-upload
|
||||
v-if="viewData.register.summaryFiles && viewData.register.summaryFiles.length > 0"
|
||||
:files="viewData.register.summaryFiles"
|
||||
:view="true"></file-upload>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<vi-title title="社团成员变化情况" class="mt20"></vi-title>
|
||||
<el-table :data="viewData.changeUserNum" max-height="300">
|
||||
<el-table-column label="序号" type="index"
|
||||
width="50"></el-table-column>
|
||||
<el-table-column label="人员类型" prop="userState"></el-table-column>
|
||||
<el-table-column label="年初人员" prop="yearFirstNum"></el-table-column>
|
||||
<el-table-column label="年度增加" prop="yearAddNum"></el-table-column>
|
||||
<el-table-column label="年度减少" prop="yearEditNum"></el-table-column>
|
||||
<el-table-column label="年末人数" prop="thisYearNum"></el-table-column>
|
||||
</el-table>
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="财务收支情况" name="2">
|
||||
<vi-title title="明细" class="mt20"></vi-title>
|
||||
|
||||
<el-table :data="viewData.detaileds" max-height="300">
|
||||
<el-table-column label="序号" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="日期" prop="date"></el-table-column>
|
||||
<el-table-column label="项目内容" prop="nr"></el-table-column>
|
||||
<el-table-column label="收入类型" prop="incomeType"></el-table-column>
|
||||
<el-table-column label="年初余额" prop="qcMoney"></el-table-column>
|
||||
<el-table-column label="收入" prop="income"></el-table-column>
|
||||
<el-table-column label="支出" prop="expend"></el-table-column>
|
||||
<el-table-column label="年度结余" prop="qmMoney"></el-table-column>
|
||||
<el-table-column label="备注" prop="notes"></el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div class="mt20">
|
||||
<vi-title title="统计"></vi-title>
|
||||
<el-table :data="viewData.register.incomeCensus" max-height="300">
|
||||
<el-table-column label="去年年度结余" prop="lasYearSurplus"></el-table-column>
|
||||
<el-table-column label="会费收入" prop="income"></el-table-column>
|
||||
<el-table-column label="校工会拨款" prop="allocate"></el-table-column>
|
||||
<el-table-column label="社会赞助" prop="support"></el-table-column>
|
||||
<el-table-column label="年度总支出" prop="totalExpend"></el-table-column>
|
||||
<el-table-column label="年度结余" prop="surplus">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="年末理事机构人员" name="3">
|
||||
<vi-title title="年末理事机构人员"></vi-title>
|
||||
<el-table :data="viewData.jgUser" max-height="300">
|
||||
<el-table-column label="序号" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="职务" prop="roleName"></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="unitname"></el-table-column>
|
||||
<el-table-column label="联系电话" prop="mobile"></el-table-column>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="秘书长审核信息" name="4" v-if="viewData.stAudit">
|
||||
<vi-title title="秘书长审核信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
<el-descriptions-item label="审核人员">
|
||||
{{ viewData.stAudit.username }}({{ viewData.stAudit.loginname }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.stAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" :span="2">
|
||||
{{ viewData.stAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="签  字" :span="2">
|
||||
<el-image v-if="viewData.stAudit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.stAudit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="会长审核信息" name="5" v-if="viewData.hzAudit">
|
||||
<vi-title title="会长审核信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
<el-descriptions-item label="审核人员">
|
||||
{{ viewData.hzAudit.username }}({{ viewData.hzAudit.loginname }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.hzAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" :span="2">
|
||||
{{ viewData.hzAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="签  字" :span="2">
|
||||
<el-image v-if="viewData.hzAudit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.hzAudit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="校工会审核信息" name="6" v-if="viewData.xghAudit">
|
||||
<vi-title title="校工会审核信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
<el-descriptions-item label="审核人员">
|
||||
{{ viewData.xghAudit.username }}({{ viewData.xghAudit.loginname }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.xghAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" :span="2">
|
||||
{{ viewData.xghAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="签  字" :span="2">
|
||||
<el-image v-if="viewData.xghAudit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.xghAudit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
clubInfo: "1",
|
||||
viewData: {register: {}},
|
||||
loading: true,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
this.loading = true
|
||||
const {data} = await $.post("/platform/sys/club/examine/register/findOne", {id: id})
|
||||
this.loading = false
|
||||
if (data) {
|
||||
this.viewData = data
|
||||
const resp = await $.post("/platform/sys/club/examine/register/getClubUserNum", {
|
||||
clubId: data.register.clubId
|
||||
})
|
||||
this.$set(this.viewData, "changeUserNum", resp.data)
|
||||
const respUser = await $.post("/platform/sys/club/examine/register/getJgUser", {
|
||||
clubId: data.register.clubId
|
||||
})
|
||||
this.$set(this.viewData, "jgUser", respUser.data)
|
||||
this.clubInfo = this.handle ? "999" : "1"
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,165 @@
|
||||
<template>
|
||||
|
||||
<el-tabs tab-position="top" v-model="clubUserInfo" v-loading="loading">
|
||||
<el-tab-pane label="基础信息" name="1">
|
||||
|
||||
<vi-title title="基础信息"></vi-title>
|
||||
|
||||
<el-descriptions :column="3" border class="table_fixed">
|
||||
<el-descriptions-item label="姓名">
|
||||
{{viewData.username}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">
|
||||
{{viewData.sex}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="出生年月">
|
||||
{{moment(viewData.birthday).format('YYYY-MM-DD')}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="出生地">
|
||||
{{viewData.birthPlace}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="文化程度">
|
||||
{{viewData.education}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="爱好">
|
||||
{{viewData.hobby}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="工作部门">
|
||||
{{viewData.unitName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="职务">
|
||||
{{viewData.position}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="电话">
|
||||
{{viewData.mobile}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="电子邮箱">
|
||||
{{viewData.email}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="家庭住址">
|
||||
{{viewData.homeAddress}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="QQ">
|
||||
{{viewData.QQNumber}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="身高">
|
||||
{{viewData.bodyHeight}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="体重">
|
||||
{{viewData.bodyWeight}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="身体状况">
|
||||
{{viewData.health}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="经常从事的运动">
|
||||
{{viewData.sport}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="是否有过特殊病史">
|
||||
{{viewData.medicalHistory === true ? '是' : '否'}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="是否愿意参加本协会的活动">
|
||||
{{viewData.joinActivity === true ? '是' : '否'}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3" label="特别需要说明的问题(身体或心理)">
|
||||
<div class="text-left" v-html="viewData.otherThing"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3" label="备注">
|
||||
<div class="text-left" v-html="viewData.remark"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">两寸登记照</template>
|
||||
<div class="text-left">
|
||||
<el-image
|
||||
style="width: 100px; height: 120px"
|
||||
:src="FILE_STREAM_PREVIEW_ADDRESS + '?id=' + viewData.photo"></el-image>
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="社团审核信息" name="2" v-if="hasPane(2) && viewData.clubAuditId">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
<el-descriptions-item label="审核人员">
|
||||
{{ viewData.clubAudit.username }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.clubAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :span="2" label="审核意见">
|
||||
{{ viewData.clubAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="签字" :span="3">
|
||||
<el-image v-if="viewData.clubAudit.auditSign"
|
||||
:src="viewData.clubAudit.auditSign"
|
||||
fit="contain"
|
||||
style="width: 300px; height: 100px"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
|
||||
</el-tabs>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: 'clubUserApplyInfo',
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: () => {return []}
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
clubUserInfo: "1",
|
||||
viewData: {},
|
||||
loading: true,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
this.loading = true
|
||||
const {data, code, msg} = await $.get('/platform/sys/club/sq/findOne', {id})
|
||||
this.loading = false
|
||||
if (data) {
|
||||
this.clubUserInfo = this.handle ? "999" : "1"
|
||||
this.viewData = data
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.el-descriptions-item__cell {
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
.table_fixed table{
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,261 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-tabs tab-position="top" style="padding: 10px" v-model="activeName" v-loading="loading">
|
||||
<el-tab-pane label="申请信息" name="1">
|
||||
<div style="padding: 10px">
|
||||
<border-table>
|
||||
<table>
|
||||
<tr>
|
||||
<th>经办人</th>
|
||||
<td>{{ viewData.manager_name }}</td>
|
||||
<th>被慰问人</th>
|
||||
<td>{{ viewData.be_username }}</td>
|
||||
<th>被慰问方式</th>
|
||||
<td>{{ viewData.way }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>慰问类型</th>
|
||||
<td>{{ viewData.typename }}</td>
|
||||
<th>{{ labelName }}</th>
|
||||
<td>{{ viewData.condolencetime }}</td>
|
||||
<th>慰问金额</th>
|
||||
<td>{{ viewData.money }}元</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>收款人</th>
|
||||
<td>{{ viewData.payee_username }}</td>
|
||||
<th>收款人卡号</th>
|
||||
<td>{{ viewData.payee_bank_number }}</td>
|
||||
<th>支行名称</th>
|
||||
<td>{{ viewData.payee_bank_name ? viewData.payee_bank_name : '暂未填写' }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>申请时间</th>
|
||||
<td>{{ viewData.apply_time }}</td>
|
||||
<th>备注</th>
|
||||
<td colspan="3">{{ viewData.remark }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>证明材料(出院小结、结婚证明、生育证明、退休文件或通知单等)</th>
|
||||
<td colspan="5">
|
||||
<file-upload view :files.sync="viewData.files"
|
||||
v-if="viewData.files&&viewData.files.length>0"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>
|
||||
<template v-if="viewData.way == '慰问品 (C)'">
|
||||
<el-divider content-position="left" style="margin-top: 0 !important;"><span style="color: #3ea1ec;">购置物品及价格</span></el-divider>
|
||||
<el-table :data="viewData.goods" border size="mini" style="width: 100%">
|
||||
<el-table-column sortable type="index" width="100" label="序号"
|
||||
align="center" header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="物品名称" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input maxlength="50" placeholder="物品名称" v-model="row.name"
|
||||
type="text"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="price" label="物品价格" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input maxlength="50" placeholder="物品价格" v-model="row.price"
|
||||
type="text"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="工会小组长审核信息" name="2" v-if="hasPane(2)&&viewData.ulr">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
|
||||
<el-form-item label="审核信息 " label-width="135px" class="view-header">
|
||||
</el-form-item>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.ulr.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.ulr.time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{ viewData.ulr.opinion ? viewData.ulr.opinion : '暂无' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.ulr.sign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.ulr.sign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="基层工会审核信息" name="3" v-if="hasPane(3)&&viewData.ucr">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
|
||||
<el-form-item label="审核信息 " label-width="135px" class="view-header">
|
||||
</el-form-item>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.ucr.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.ucr.time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{ viewData.ucr.opinion ? viewData.ucr.opinion : '暂无' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.ucr.sign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.ucr.sign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会主席审核信息" name="4" v-if="hasPane(4)&&viewData.vcr">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
|
||||
<el-form-item label="审核信息 " label-width="135px" class="view-header">
|
||||
</el-form-item>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.vcr.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.vcr.time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{ viewData.vcr.opinion ? viewData.vcr.opinion : '暂无' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.vcr.sign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.vcr.sign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
filters: {
|
||||
money(val) {
|
||||
return val ? val : 0
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: "1",
|
||||
viewData: {},
|
||||
loading: true,
|
||||
labelName:''
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
watch: {},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
this.loading = true
|
||||
const {data, code, msg} = await $.get("/platform/fw/condolence/findOne", {id})
|
||||
this.loading = false
|
||||
if (data) {
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
condolence.toFormData(data)
|
||||
this.viewData = data
|
||||
|
||||
if (['c7175af55693441e8233be4552cef9d5','c138149575564b159b5919a97e856642'].includes(data.type)){
|
||||
this.labelName = '住院时间'
|
||||
} else if (data.type === '7420d077e768480795538e1396cb4945') {
|
||||
this.labelName = '结婚时间'
|
||||
} else if (data.type === '29cf78eea88d40128f639b9ae7b6aaaa') {
|
||||
this.labelName = '生育时间'
|
||||
} else if (data.type === 'c0465e50ff1e45f49fad8938e5dad537') {
|
||||
this.labelName = '退休时间'
|
||||
}
|
||||
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$message({
|
||||
message: "获取信息失败",
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
created() {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
.sign_img {
|
||||
max-width: 300px;
|
||||
max-height: 100px;
|
||||
}
|
||||
|
||||
.el-divider--horizontal {
|
||||
margin-top: 40px !important;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,83 @@
|
||||
<template>
|
||||
<div>
|
||||
<van-cell class="cell-card">
|
||||
<van-field readonly :value="viewData.manager_name" label="经办人" input-align="right"></van-field>
|
||||
|
||||
<van-field readonly :value="viewData.apply_time" label="申请时间" input-align="right"></van-field>
|
||||
|
||||
<van-field readonly :value="viewData.be_username" label="被慰问人"
|
||||
input-align="right"></van-field>
|
||||
|
||||
<van-field readonly :value="viewData.payee_username" label="收款人"
|
||||
input-align="right"></van-field>
|
||||
|
||||
<van-field readonly :value="viewData.bank_card" label="收款人银行卡号" input-align="right"></van-field>
|
||||
|
||||
<van-field readonly name="type" :value="condolence.type[viewData.type]" label="慰问类型"
|
||||
input-align="right"></van-field>
|
||||
|
||||
<van-field readonly name="way" :value="condolence.way[viewData.way]" label="慰问方式" input-align="right"></van-field>
|
||||
|
||||
<van-field readonly :value="viewData.money" type="number" label="慰问金额" input-align="right"></van-field>
|
||||
|
||||
<div v-if="['3', '5'].includes(viewData.type)">
|
||||
<van-cell title="住院开始时间">
|
||||
{{ viewData.starting_time }}
|
||||
</van-cell>
|
||||
<van-cell title="住院结束时间">
|
||||
{{ viewData.end_time }}
|
||||
</van-cell>
|
||||
<van-cell title="住院结束时间">
|
||||
{{ viewData.the_hospital }}
|
||||
</van-cell>
|
||||
</div>
|
||||
<van-field readonly :value="viewData.remark" label="备  注" input-align="right"
|
||||
rows="2" maxlength="200" type="textarea" show-word-limit autosize></van-field>
|
||||
|
||||
<!-- <van-field label="附  件">-->
|
||||
<!-- <template #input>-->
|
||||
<!-- <van-uploader disabled v-model="viewData.files"></van-uploader>-->
|
||||
<!-- </template>-->
|
||||
<!-- </van-field>-->
|
||||
|
||||
<van-field name="sign" label="签字">
|
||||
<template #input>
|
||||
<van-image width="200" height="100" :src="viewData.manager_sign"/>
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
</van-cell>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
id: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
viewData: {},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getInfo(id) {
|
||||
const {data, code, msg} = await $.get("/platform/fw/condolence/findOne", {id})
|
||||
if (data) {
|
||||
condolence.toFormData(data)
|
||||
this.viewData = data
|
||||
console.log(this.viewData.end_time)
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$toast.fail('获取信息失败');
|
||||
}
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
await this.getInfo(this.id)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,438 @@
|
||||
<template>
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span style="color: #409EFF;font-size: 18px">填写申请信息</span>
|
||||
</div>
|
||||
<el-form :model="form" ref="addform" :rules="formRules" label-width="120px">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="user_name" label="申请人姓名">
|
||||
<el-input disabled v-model="form.sqrname == null ? form.sqr : form.sqrname" type="text">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="apply_mode" label="申请模式">
|
||||
<el-radio-group :disabled="form.id" v-model="form.apply_mode" @change="$emit('radio')" style="width: 100%"
|
||||
>
|
||||
<el-radio-button label="1" border>本人申请</el-radio-button>
|
||||
<el-radio-button label="2" border>替他人申请</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="user_name" label="申请人工号">
|
||||
<el-input disabled v-model="form.sqrloginname"
|
||||
type="text"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="bbzrusername" label="受补助人">
|
||||
<el-select v-if="form.id==null" clearable
|
||||
v-model="form.bbzrusername" filterable remote
|
||||
placeholder="输入工号或者姓名查找" :remote-method="querySqr" @change="userChange" style="width: 100%">
|
||||
<el-option v-for="o in subsidizedList"
|
||||
:label="o.username+'('+o.loginname+')-'+o.unit_name" :value="o.id"
|
||||
:key="o.id"></el-option>
|
||||
</el-select>
|
||||
<el-input maxlength="100" disabled v-else v-model="form.bbname"
|
||||
type="text"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="idcard" label="身份证号">
|
||||
<el-input maxlength="50" placeholder="请输入身份证号" clearable
|
||||
v-model="form.idcard"
|
||||
type="text"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="sex" label="性  别">
|
||||
<el-select v-model="form.sex" placeholder="请选择性别" clearable
|
||||
:disabled="form.apply_mode==1" style="width: 100%">
|
||||
<el-option v-for="item in ['男','女']" :key="item" :label="item" :value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="mz" label="民  族">
|
||||
<el-select v-model="form.mz" placeholder="请选择民族" filterable clearable style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in mzOptions"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="zc" label="职  称">
|
||||
<el-select v-model="form.zc" placeholder="请选择或输入职称" filterable clearable
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in zcOptions"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="zw" label="职  务">
|
||||
<el-input maxlength="50" clearable placeholder="请填写职务" v-model="form.zw"
|
||||
type="text"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="brnzsr" label="本人年收入" class="int_input">
|
||||
<el-input-number clearable style="width: 100%" v-model="form.brnzsr" :min="0"
|
||||
:max="9999999"
|
||||
controls-position="right" placeholder="请填写年收入(元)">
|
||||
</el-input-number>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="birthday" label="生  日">
|
||||
<el-date-picker
|
||||
clearable
|
||||
style="width: 100%"
|
||||
v-model="form.birthday"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="选择生日">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="lxfs" label="手机号码">
|
||||
<el-input maxlength="100" clearable placeholder="请填写手机号码" v-model="form.lxfs"
|
||||
type="text"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item prop="rsbz" label="人事编制">
|
||||
<el-select v-model="form.rsbz" placeholder="请选择人事编制" clearable
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in bzOptions"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
</el-row>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="unitname" label="所在单位">
|
||||
<el-input maxlength="50" clearable placeholder="所在单位" v-model="form.unitname"
|
||||
type="text"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="sq_ksbz" label="科室班组">
|
||||
<el-input maxlength="50" clearable placeholder="科室班组" v-model="form.sq_ksbz"
|
||||
type="text"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item prop="ybzk" label="医保状况">
|
||||
<el-select v-model="form.ybzk" placeholder="请选择医保状况" clearable style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in ybOptions"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="补助类型" prop="sq_bzlx">
|
||||
<el-select v-model="form.sq_bzlx" @change="$set(form,'sq_knlx','')"
|
||||
@clear="$set(form,'sq_knlx','')" style="width: 100%">
|
||||
<el-option v-for="(v,k) in difficulty.subsidy" :label="v" :value="k"
|
||||
:key="k"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="困难类型" prop="sq_knlx">
|
||||
<el-select v-model="form.sq_knlx" clearable style="width: 100%">
|
||||
<el-option v-for="(v,k) in difficulty.getHard(form.sq_bzlx)" :key="k" :value="k"
|
||||
:label="v"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row v-if="form.sq_knlx==1" gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所在医院" prop="hospital">
|
||||
<el-input placeholder="请填写所在所在医院" v-model="form.hospital"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="住院时间" prop="hospitalized_time">
|
||||
<el-date-picker
|
||||
clearable
|
||||
style="width: 100%"
|
||||
v-model="form.hospitalized_time"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="选择住院时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="yhmc" label="发放补助银行支行名称">
|
||||
<el-input maxlength="100" placeholder="请输入发放补助银行支行名称" clearable v-model="form.yhmc"
|
||||
type="text" style="width: 100%"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="yhkh" label="银行卡号">
|
||||
<el-input maxlength="30" placeholder="请输入银行卡号" clearable v-model="form.yhkh"
|
||||
type="text" style="width: 100%"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item prop="apply_reason" label="申请理由">
|
||||
<el-input maxlength="500" :autosize="{ minRows: 5, maxRows: 10}" placeholder="请简述申请理由" clearable
|
||||
v-model="form.apply_reason"
|
||||
type="textarea"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="zyzkyybz" label="备  注">
|
||||
<el-input maxlength="500" placeholder="请简述原因" clearable v-model="form.zyzkyybz"
|
||||
type="textarea"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-divider content-position="left" class="dia"><span style="color: #3ea1ec;">主要家庭成员</span></el-divider>
|
||||
<el-form-item label-width="0">
|
||||
<el-button style="float: right;margin-bottom: 10px" icon="el-icon-plus" size="mini"
|
||||
@click="form.jtcys.push({})">
|
||||
添加
|
||||
</el-button>
|
||||
<el-table
|
||||
:data="form.jtcys"
|
||||
border
|
||||
size="mini"
|
||||
style="width: 100%">
|
||||
<el-table-column prop="xm" label="姓名" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-input placeholder="请输入姓名" maxlength="100" v-model="scope.row.xm" clearable></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="gx" label="与本人关系" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-input placeholder="请输入与本人关系" maxlength="30" v-model="scope.row.gx" clearable></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="nl" label="年龄" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-input-number clearable style="width: 100%" v-model="scope.row.nl" :min="0" :max="99"
|
||||
controls-position="right" placeholder="请填写年龄">
|
||||
</el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="gzdw" label="工作单位" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-input placeholder="请输入工作单位" maxlength="100" v-model="scope.row.gzdw"
|
||||
clearable></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="nsr" label="年收入(元)" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-input-number clearable style="width: 100%" v-model="scope.row.nsr" :min="0"
|
||||
:max="9999999"
|
||||
controls-position="right" placeholder="请填写年收入">
|
||||
</el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100px" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="danger" size="mini" icon="el-icon-delete" circle
|
||||
:disabled="form.jtcys.length==0"
|
||||
@click="form.jtcys.splice(scope.$index,1)"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left" class="dia"><span style="color: #3ea1ec;">附  件</span></el-divider>
|
||||
<el-form-item prop="files" label-width="auto">
|
||||
<file-upload :files.sync="form.files" card></file-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left" class="dia"><span
|
||||
style="color: #3ea1ec;">签  字</span></el-divider>
|
||||
<el-form-item prop="sign" label-width="auto">
|
||||
<sign :qz.sync="form.sqsign"></sign>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
|
||||
|
||||
</el-card>
|
||||
</template>
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
form: {
|
||||
type: Object,
|
||||
default: {}
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
formRules: {
|
||||
bbzrusername: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
apply_reason: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
brnzsr: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
sq_bzlx: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
sq_knlx: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
yhmc: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
yhkh: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
},
|
||||
subsidizedList: [],
|
||||
mzOptions: [
|
||||
'汉族',
|
||||
'蒙古族',
|
||||
'回族',
|
||||
'藏族',
|
||||
'维吾尔族',
|
||||
'苗族',
|
||||
'彝族',
|
||||
'壮族',
|
||||
'布依族',
|
||||
'朝鲜族',
|
||||
'满族',
|
||||
'侗族',
|
||||
'瑶族',
|
||||
'白族',
|
||||
'土家族',
|
||||
'哈尼族',
|
||||
'哈萨克族',
|
||||
'傣族',
|
||||
'黎族',
|
||||
'傈僳族',
|
||||
'佤族',
|
||||
'畲族',
|
||||
'高山族',
|
||||
'拉祜族',
|
||||
'水族',
|
||||
'东乡族',
|
||||
'纳西族',
|
||||
'景颇族',
|
||||
'柯尔克孜族',
|
||||
'土族',
|
||||
'达翰尔族',
|
||||
'么佬族',
|
||||
'羌族',
|
||||
'布朗族',
|
||||
'撒拉族',
|
||||
'毛南族',
|
||||
'仡佬族',
|
||||
'锡伯族',
|
||||
'阿昌族',
|
||||
'普米族',
|
||||
'塔吉克族',
|
||||
'怒族',
|
||||
'乌孜别克族',
|
||||
'俄罗斯族',
|
||||
'鄂温克族',
|
||||
'德昂族',
|
||||
'保安族',
|
||||
'裕固族',
|
||||
'京族',
|
||||
'塔塔尔族',
|
||||
'独龙族',
|
||||
'鄂伦春族',
|
||||
'赫哲族',
|
||||
'门巴族',
|
||||
'珞巴族',
|
||||
'基诺族',
|
||||
],
|
||||
ybOptions: ['统筹', '社保'],
|
||||
zcOptions: ['教授', '副教授', '讲师', '助教', '其他'],
|
||||
bzOptions: ['事业编制职工(正式职工)', '合同制职工', '人事代理职工', '集体职工', '流动编制职工', '非事业编制职工', '博士后进站人员', '劳务派遣人员', '聘用工(各二级单位聘用)'],
|
||||
subsidy: {
|
||||
1: "日常补助慰问",
|
||||
2: "“元旦、春节”困难补助慰问"
|
||||
},
|
||||
sq_knlx: {
|
||||
1: "会员因病住院",
|
||||
2: "家庭重大意外事故",
|
||||
3: "会员去世",
|
||||
4: "重大疾病(癌症)",
|
||||
5: "困难家庭",
|
||||
6: "精神疾病",
|
||||
7: "长期病休",
|
||||
8: "其它"
|
||||
},
|
||||
fclxOptions: ['商品房', '福利房', '经济适用房', '限价房', '自建房'],
|
||||
hyzkOptions: ['未婚', '已婚', '离异', '丧偶', '再婚'],
|
||||
fclyOptions: ['购买', '接收赠与', '继承', '其他来源'],
|
||||
zzyyOptions: ['本人大病', '供养直系亲属大病', '本人残疾', '家属残疾', '本人下岗失业', '家属下岗失业', '收入低', '自然灾害', '重大事故', '子女上学', '其他'],
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
async getUserData(userId) {
|
||||
const {data} = await $.get("/platform/fw/condolence/apply/getUserData", {userId})
|
||||
return data
|
||||
},
|
||||
async userChange() {
|
||||
const userData = await this.getUserData(this.form.bbzrusername);
|
||||
this.$set(this.form, 'sex', userData.sex)
|
||||
this.$set(this.form, 'idcard', userData.idcard)
|
||||
this.$set(this.form, 'yhkh', userData.bank_number)
|
||||
this.$set(this.form, 'zzmm', userData.political)
|
||||
this.$set(this.form, 'rsbz', userData.personType)
|
||||
this.$set(this.form, 'mz', userData.nation)
|
||||
this.$set(this.form, 'zw', userData.zw)
|
||||
this.$set(this.form, 'birthday', userData.birthday)
|
||||
this.$set(this.form, 'lxfs', userData.mobile)
|
||||
this.$set(this.form, 'unitname', userData.name)
|
||||
},
|
||||
querySqr(key) {
|
||||
$.post(base + '/platform/fw/difficulty/apply/querySqr', {key: key}).then(res => {
|
||||
this.subsidizedList = res.data;
|
||||
});
|
||||
},
|
||||
|
||||
},
|
||||
async created() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,393 @@
|
||||
<template>
|
||||
<div class="difficulty-info">
|
||||
<el-tabs tab-position="top" v-model="difficulty" v-loading="loading">
|
||||
<el-tab-pane label="申请信息" name="1">
|
||||
<el-form label-suffix=":" label-position="left" style="padding: 20px 0">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="user_name" label="申请人姓名">
|
||||
{{ viewData.sqrname }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="sex" label="申请人工号">
|
||||
{{ viewData.sqrloginname }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="user_name" label="补助人身份证号码">
|
||||
{{ viewData.idcard }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="user_name" label="受补助人">
|
||||
{{ viewData.bbname }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="sex" label="性  别">
|
||||
{{ viewData.sex }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="user_age" label="出生日期">
|
||||
{{ viewData.birthday }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="民  族">
|
||||
{{ viewData.mz }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="职  称">
|
||||
{{ viewData.zc }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="职  务">
|
||||
{{ viewData.zw }}
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="政治面貌">
|
||||
{{ viewData.zzmm }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="人事编制">
|
||||
{{ viewData.rsbz }}
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="参加工作时间">
|
||||
{{ viewData.cjgzsj }}
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="医保情况">
|
||||
{{ viewData.ybzk }}
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="所在单位">
|
||||
{{ viewData.bbunit }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="在职状态">
|
||||
{{ viewData.on_job ? '在职' : '退休' }}
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="联系电话">
|
||||
{{ viewData.lxfs }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="补助类型">
|
||||
{{ this.subsidy[viewData.sq_bzlx] }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="困难类型">
|
||||
{{ this.sq_knlx[viewData.sq_knlx] }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="科室班组">
|
||||
{{ viewData.sq_ksbz }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="主要致困原因">
|
||||
{{ viewData.zyzkyy }}
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="本人年收入">
|
||||
{{ viewData.brnzsr > 0 ? viewData.brnzsr : 0 }}元
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="家庭年收入">
|
||||
{{ viewData.jtnzsr > 0 ? viewData.jtnzsr : 0 }}元
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="家庭人数">
|
||||
{{ viewData.jtrs > 0 ? viewData.jtrs : 0 }}人
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="现住房类型">
|
||||
{{ viewData.xzflx }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="建筑面积">
|
||||
{{ viewData.jzmj > 0 ? viewData.jzmj : 0 }}平方
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="婚姻状况">
|
||||
{{ viewData.hyzt }}
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="发放补助银行">
|
||||
{{ viewData.yhmc }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="发放补助银行卡号">
|
||||
{{ viewData.yhkh }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="级别">
|
||||
{{ viewData.jb }}
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="所在医院">
|
||||
{{ viewData.hospital }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="住院时间">
|
||||
{{ viewData.hospitalized_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="申请理由">
|
||||
{{ viewData.apply_reason }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注">
|
||||
{{ viewData.zyzkyybz }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="附  件">
|
||||
<file-upload v-if="viewData.files&&viewData.files.length"
|
||||
:files="viewData.files"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.sqsign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.sqsign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="主要家庭成员" name="4">
|
||||
|
||||
<el-table :data="viewData.jtcys" border size="mini" style="width: 100%">
|
||||
|
||||
<el-table-column sortable type="index" width="100" label="序号"
|
||||
align="center" header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="xm" label="姓名" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input maxlength="50" v-model="row.xm"
|
||||
type="text"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="gx" label="与本人关系" placeholder="暂无" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input maxlength="50" placeholder="暂无" v-model="row.gx"
|
||||
type="text"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="nl" label="年龄" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input maxlength="50" placeholder="暂无" v-model="row.nl"
|
||||
type="text"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="gzdw" label="工作单位" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input maxlength="50" placeholder="暂无" v-model="row.gzdw"
|
||||
type="text"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="nsr" label="年收入(元)" placeholder="暂无" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input maxlength="50" placeholder="暂无" v-model="row.nsr"
|
||||
type="text"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="基层工会主席审核信息" name="5" v-if="hasPane(5)&&viewData.upa">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
|
||||
<el-form-item label="审核信息 " label-width="135px" class="view-header">
|
||||
</el-form-item>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.upa.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ moment(viewData.upa.auditTime).format("YYYY-MM-DD") }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{ viewData.upa.auditOpinion ? viewData.upa.auditOpinion : '暂无' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.upa.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.upa.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="校工会主席审核信息" name="9" v-if="hasPane(9)&&viewData.sua">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
|
||||
<el-form-item label="审核信息 " label-width="135px" class="view-header">
|
||||
</el-form-item>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="审核人员:">
|
||||
{{ viewData.sua.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ moment(viewData.sua.auditTime).format("YYYY-MM-DD") }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="补助金额">
|
||||
{{ viewData.xghbzje }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{ viewData.sua.auditOpinion ? viewData.sua.auditOpinion : '暂无' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.sua.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.sua.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
difficulty: "1",
|
||||
viewData: {},
|
||||
loading: true,
|
||||
subsidy: {
|
||||
1: "日常补助慰问",
|
||||
2: "“元旦、春节”困难补助慰问"
|
||||
},
|
||||
sq_knlx: {
|
||||
1: "会员因病住院",
|
||||
2: "家庭重大意外事故",
|
||||
3: "会员去世",
|
||||
4: "重大疾病(癌症)",
|
||||
5: "困难家庭",
|
||||
6: "精神疾病",
|
||||
7: "长期病休",
|
||||
8: "其它"
|
||||
},
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
this.loading = true
|
||||
const {data, code, msg} = await $.get("/platform/fw/difficulty/applylist/findOne", {id})
|
||||
this.loading = false
|
||||
if (data) {
|
||||
this.viewData.files = []
|
||||
this.difficulty = this.handle ? "999" : "1"
|
||||
console.log(data)
|
||||
this.viewData = data
|
||||
if (this.viewData.files.length > 0) {
|
||||
this.viewData.files = JSON.parse(data.files)
|
||||
}
|
||||
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$message({
|
||||
message: "获取信息失败",
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.difficulty-info .el-timeline {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.sign_img {
|
||||
max-width: 300px;
|
||||
max-height: 100px;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,227 @@
|
||||
<style>
|
||||
pre {
|
||||
background-color: white;
|
||||
border: none;
|
||||
}
|
||||
</style>
|
||||
<template>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading" class="activity_view">
|
||||
<el-tab-pane label="申请信息" name="1">
|
||||
|
||||
<vi-title title="基础信息"></vi-title>
|
||||
|
||||
<el-descriptions :column="3" border class="table_fixed">
|
||||
|
||||
<template v-if="viewData.honorTypeId === HonorApi.honor_single_id">
|
||||
<el-descriptions-item label="申请人">
|
||||
{{ viewData.username }}({{ viewData.loginname }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申请时间">
|
||||
{{ viewData.applyTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">
|
||||
{{ viewData.userSex }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="在职状态">
|
||||
{{ viewData.userState }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="所属单位">
|
||||
{{ viewData.unitName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="所属工会">
|
||||
{{ viewData.unionName }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="担任工会职务">
|
||||
{{ viewData.position }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="职称">
|
||||
{{ viewData.jobTitle }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="生日">
|
||||
{{ viewData.birthday }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="政治面貌">
|
||||
{{ viewData.political }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="加入工会时间">
|
||||
{{ viewData.joinTime }}
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
|
||||
<el-descriptions-item label="荣誉类型">
|
||||
{{ viewData.honorTypeId == HonorApi.honor_single_id ? '个人荣誉' : '集体荣誉' }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<template v-if="viewData.honorTypeId==HonorApi.honor_list_id">
|
||||
<el-descriptions-item label="申报院级工会">
|
||||
{{ viewData.applyUnionName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="工会主席">
|
||||
{{ viewData.unionLeader }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="会员人数">
|
||||
{{ viewData.memberNumber }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="工会小组数">
|
||||
{{ viewData.unionGroupNumber }}
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
|
||||
<el-descriptions-item :span="3" label="审核状态">
|
||||
{{ viewData.stateName }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item :span="3" label="曾受何种奖励">
|
||||
<pre>{{ viewData.award }}</pre>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item :span="3" label="主要事迹">
|
||||
<pre>{{ viewData.deeds }}</pre>
|
||||
</el-descriptions-item>
|
||||
|
||||
<vi-title title="获奖信息"></vi-title>
|
||||
|
||||
<el-descriptions-item :span="3" label="附件">
|
||||
<file-upload v-if="viewData.files&&viewData.files.length"
|
||||
:files="viewData.files"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="单位审核信息" name="2" v-if="hasPane(2)&&viewData.unitAuditId">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
|
||||
<el-descriptions-item label="审核人员">
|
||||
{{ viewData.unitAudit.username }}({{ viewData.unitAudit.loginname }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.unitAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见">
|
||||
{{ viewData.unitAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="院级工会审核信息" name="3" v-if="hasPane(3)&&viewData.unionAuditId">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
|
||||
<el-descriptions-item label="审核人员">
|
||||
{{ viewData.unionAudit.username }}({{ viewData.unionAudit.loginname }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.unionAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见">
|
||||
{{ viewData.unionAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="院级党组织审核信息" name="4" v-if="hasPane(4)&&viewData.partyAuditId">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
|
||||
<el-descriptions-item label="审核人员">
|
||||
{{ viewData.partyAudit.username }}({{ viewData.partyAudit.loginname }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.partyAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见">
|
||||
{{ viewData.partyAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会审核信息" name="5" v-if="hasPane(5)&&viewData.schoolAuditId">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
<el-descriptions :column="2" border class="table_fixed">
|
||||
|
||||
<el-descriptions-item label="审核人员">
|
||||
{{ viewData.schoolAudit.username }}({{ viewData.schoolAudit.loginname }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.schoolAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见">
|
||||
{{ viewData.schoolAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
</el-tabs>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: "1",
|
||||
viewData: {},
|
||||
loading: true,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
this.loading = true
|
||||
const {data, code, msg} = await $.get("/platform/evaluate/apply/findOne", {id})
|
||||
this.loading = false
|
||||
if (data) {
|
||||
this.viewData.files = []
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
this.viewData = data
|
||||
this.viewData.files = JSON.parse(data.files)
|
||||
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$message({
|
||||
message: "获取信息失败",
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,547 @@
|
||||
<template>
|
||||
|
||||
<el-tabs v-model="activityName">
|
||||
<el-tab-pane label="成才主题文化活动" name="1">
|
||||
|
||||
<el-form label-suffix=":" label-width="140px" label-position="right"
|
||||
v-if="viewData.activityCultureId">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动名称">
|
||||
{{ viewData.activityCulture.activityName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请人">
|
||||
{{ viewData.activityApplyUserName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系方式">
|
||||
{{ viewData.activityApplyUserMobile }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属工会">
|
||||
{{ viewData.activityApplyUserUnionName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="时间">
|
||||
{{ viewData.activityCulture.activityDate }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" v-if="viewData.assessGrade">
|
||||
<el-form-item label="评审等级">
|
||||
{{ viewData.assessGrade }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="地点">
|
||||
{{ viewData.activityCulture.activityPlace }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="参加人员">
|
||||
{{ viewData.activityCulture.activityParticipants }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动目的及内容">
|
||||
<span v-html="viewData.activityCulture.activityContent"></span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目组成员">
|
||||
<el-table :data="viewData.activityCulture.activityTeamMembers" max-height="300">
|
||||
<el-table-column label="序号" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="姓名" prop="username">
|
||||
</el-table-column>
|
||||
<el-table-column label="职称" prop="zc">
|
||||
</el-table-column>
|
||||
<el-table-column label="联系方式" prop="mobile">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="活动总结">
|
||||
<file-upload
|
||||
v-if="viewData.activityCulture.activitySummary&&viewData.activityCulture.activitySummary.length"
|
||||
:files="viewData.activityCulture.activitySummary"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="新闻稿">
|
||||
<file-upload
|
||||
v-if="viewData.activityCulture.activityPressRelease&&viewData.activityCulture.activityPressRelease.length"
|
||||
:files="viewData.activityCulture.activityPressRelease"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="活动照片">
|
||||
<file-upload
|
||||
v-if="viewData.activityCulture.activityPhotos&&viewData.activityCulture.activityPhotos.length"
|
||||
:files="viewData.activityCulture.activityPhotos"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-form>
|
||||
<span v-else>暂未上报</span>
|
||||
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="教职工沙龙或研讨会" name="2">
|
||||
<el-form label-suffix=":" label-width="140px" label-position="right"
|
||||
v-if="viewData.activityDiscussId">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动名称">
|
||||
{{ viewData.activityDiscuss.activityName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请人">
|
||||
{{ viewData.activityApplyUserName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系方式">
|
||||
{{ viewData.activityApplyUserMobile }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属工会">
|
||||
{{ viewData.activityApplyUserUnionName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="时间">
|
||||
{{ viewData.activityDiscuss.activityDate }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" v-if="viewData.assessGrade">
|
||||
<el-form-item label="评审等级">
|
||||
{{ viewData.assessGrade }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="地点">
|
||||
{{ viewData.activityDiscuss.activityPlace }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="参加人员">
|
||||
{{ viewData.activityDiscuss.activityParticipants }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动目的及内容">
|
||||
<span v-html="viewData.activityDiscuss.activityContent"></span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目组成员">
|
||||
<el-table :data="viewData.activityDiscuss.activityTeamMembers" max-height="300">
|
||||
<el-table-column label="序号" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="姓名" prop="username">
|
||||
</el-table-column>
|
||||
<el-table-column label="职称" prop="zc">
|
||||
</el-table-column>
|
||||
<el-table-column label="联系方式" prop="mobile">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="活动总结">
|
||||
<file-upload
|
||||
v-if="viewData.activityDiscuss.activitySummary&&viewData.activityDiscuss.activitySummary.length"
|
||||
:files="viewData.activityDiscuss.activitySummary"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="新闻稿">
|
||||
<file-upload
|
||||
v-if="viewData.activityDiscuss.activityPressRelease&&viewData.activityDiscuss.activityPressRelease.length"
|
||||
:files="viewData.activityDiscuss.activityPressRelease"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="活动照片">
|
||||
<file-upload
|
||||
v-if="viewData.activityDiscuss.activityPhotos&&viewData.activityDiscuss.activityPhotos.length"
|
||||
:files="viewData.activityDiscuss.activityPhotos"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-form>
|
||||
<span v-else>暂未上报</span>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="青年教职工成长成才讲座或报告会" name="3">
|
||||
<el-form label-suffix=":" label-width="140px" label-position="right"
|
||||
v-if="viewData.activityReportId">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动名称">
|
||||
{{ viewData.activityReport.activityName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请人">
|
||||
{{ viewData.activityApplyUserName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系方式">
|
||||
{{ viewData.activityApplyUserMobile }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属工会">
|
||||
{{ viewData.activityApplyUserUnionName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="时间">
|
||||
{{ viewData.activityReport.activityDate }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" v-if="viewData.assessGrade">
|
||||
<el-form-item label="评审等级">
|
||||
{{ viewData.assessGrade }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="地点">
|
||||
{{ viewData.activityReport.activityPlace }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="参加人员">
|
||||
{{ viewData.activityReport.activityParticipants }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动目的及内容">
|
||||
<span v-html="viewData.activityReport.activityContent"></span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目组成员">
|
||||
<el-table :data="viewData.activityReport.activityTeamMembers" max-height="300">
|
||||
<el-table-column label="序号" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="姓名" prop="username">
|
||||
</el-table-column>
|
||||
<el-table-column label="职称" prop="zc">
|
||||
</el-table-column>
|
||||
<el-table-column label="联系方式" prop="mobile">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="活动总结">
|
||||
<file-upload
|
||||
v-if="viewData.activityReport.activitySummary&&viewData.activityReport.activitySummary.length"
|
||||
:files="viewData.activityReport.activitySummary"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="新闻稿">
|
||||
<file-upload
|
||||
v-if="viewData.activityReport.activityPressRelease&&viewData.activityReport.activityPressRelease.length"
|
||||
:files="viewData.activityReport.activityPressRelease"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="活动照片">
|
||||
<file-upload
|
||||
v-if="viewData.activityReport.activityPhotos&&viewData.activityReport.activityPhotos.length"
|
||||
:files="viewData.activityReport.activityPhotos"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-form>
|
||||
<span v-else>暂未上报</span>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="技能竞赛或观摩活动" name="4">
|
||||
<el-form label-suffix=":" label-width="140px" label-position="right"
|
||||
v-if="viewData.activitySkillId">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动名称">
|
||||
{{ viewData.activitySkill.activityName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请人">
|
||||
{{ viewData.activityApplyUserName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系方式">
|
||||
{{ viewData.activityApplyUserMobile }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属工会">
|
||||
{{ viewData.activityApplyUserUnionName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="时间">
|
||||
{{ viewData.activitySkill.activityDate }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" v-if="viewData.assessGrade">
|
||||
<el-form-item label="评审等级">
|
||||
{{ viewData.assessGrade }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="地点">
|
||||
{{ viewData.activitySkill.activityPlace }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="参加人员">
|
||||
{{ viewData.activitySkill.activityParticipants }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动目的及内容">
|
||||
<span v-html="viewData.activitySkill.activityContent"></span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目组成员">
|
||||
<el-table :data="viewData.activitySkill.activityTeamMembers" max-height="300">
|
||||
<el-table-column label="序号" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="姓名" prop="username">
|
||||
</el-table-column>
|
||||
<el-table-column label="职称" prop="zc">
|
||||
</el-table-column>
|
||||
<el-table-column label="联系方式" prop="mobile">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="活动总结">
|
||||
<file-upload
|
||||
v-if="viewData.activitySkill.activitySummary&&viewData.activitySkill.activitySummary.length"
|
||||
:files="viewData.activitySkill.activitySummary"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="新闻稿">
|
||||
<file-upload
|
||||
v-if="viewData.activitySkill.activityPressRelease&&viewData.activitySkill.activityPressRelease.length"
|
||||
:files="viewData.activitySkill.activityPressRelease"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="活动照片">
|
||||
<file-upload
|
||||
v-if="viewData.activitySkill.activityPhotos&&viewData.activitySkill.activityPhotos.length"
|
||||
:files="viewData.activitySkill.activityPhotos"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-form>
|
||||
<span v-else>暂未上报</span>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="分工会审核信息" name="5" v-if="viewData.unionAuditId">
|
||||
<el-form label-suffix=":" label-width="140px" label-position="right">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
{{ viewData.unionAudit.username }}({{ viewData.unionAudit.loginname }})
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.unionAudit.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ viewData.unionAudit.auditOpinion }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="签  字">
|
||||
<el-image v-if="viewData.unionAudit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.unionAudit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="分党委审核信息" name="6" v-if="viewData.unionPartyAuditId">
|
||||
<el-form label-suffix=":" label-width="140px" label-position="right">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
{{ viewData.unionPartyAudit.username }}({{ viewData.unionPartyAudit.loginname }})
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.unionPartyAudit.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ viewData.unionPartyAudit.auditOpinion }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="签  字">
|
||||
<el-image v-if="viewData.unionPartyAudit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.unionPartyAudit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="校工会审核信息" name="7" v-if="viewData.schoolAuditId">
|
||||
<el-form label-suffix=":" label-width="140px" label-position="right">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
{{ viewData.schoolAudit.username }}({{ viewData.schoolAudit.loginname }})
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.schoolAudit.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ viewData.schoolAudit.auditOpinion }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="签  字">
|
||||
<el-image v-if="viewData.schoolAudit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.schoolAudit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
|
||||
</el-tabs>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activityName: "",
|
||||
viewData: {},
|
||||
loading: true,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
const {data} = await $.post("/platform/fourOne/activity/applyList/findOne", {id: id})
|
||||
this.activityName = this.handle ? "999" : "1"
|
||||
this.viewData = data
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,477 @@
|
||||
<template>
|
||||
|
||||
|
||||
<div>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading">
|
||||
<el-tab-pane label="申请信息" name="1">
|
||||
<table style="width: 100%">
|
||||
|
||||
<tr style="border: 1px solid rgb(220,220,220);">
|
||||
<td class="tpa">姓名</td>
|
||||
<td class="tpb">{{ viewData.username }}</td>
|
||||
<td class="tpa">工资号</td>
|
||||
<td class="tpb">{{ viewData.loginname }}</td>
|
||||
</tr>
|
||||
<tr style="border: 1px solid rgb(220,220,220);">
|
||||
<td class="tpa">单位</td>
|
||||
<td class="tpb">{{ viewData.dwname }}</td>
|
||||
<td class="tpa">工会</td>
|
||||
<td class="tpb">{{ viewData.ghname }}</td>
|
||||
</tr>
|
||||
<tr style="border: 1px solid rgb(220,220,220);">
|
||||
<td class="tpa">活动类别</td>
|
||||
<td class="tpb">
|
||||
<span>{{ viewData.hdlbname }}</span>
|
||||
</td>
|
||||
<template v-if="viewData.zplbname">
|
||||
<td class="tpa">类别</td>
|
||||
<td class="tpb">
|
||||
<span>{{ viewData.zplbname }}</span>
|
||||
</td>
|
||||
</template>
|
||||
<template v-else>
|
||||
<td class="tpa">健步走步数</td>
|
||||
<td class="tpb">
|
||||
<span>{{ viewData.step_count }}</span>
|
||||
</td>
|
||||
</template>
|
||||
</tr>
|
||||
<!-- <tr style="border: 1px solid rgb(220,220,220);">
|
||||
<td class="tpa">作品主题</td>
|
||||
<td class="tpb" colspan="3">{{viewData.hdsbzpzt}}</td>
|
||||
</tr>-->
|
||||
<tr style="border: 1px solid rgb(220,220,220);">
|
||||
<td class="tpa">标题</td>
|
||||
<td class="tpb" colspan="3">{{ viewData.zpmc }}</td>
|
||||
</tr>
|
||||
<tr style="border: 1px solid rgb(220,220,220);">
|
||||
<td class="tpa">作品描述</td>
|
||||
<td class="tpb" colspan="3">{{ viewData.hdsbzpms }}</td>
|
||||
</tr>
|
||||
<tr style="border: 1px solid rgb(220,220,220);" v-if="viewData.isUploadPhoto||viewData.isUploadOther">
|
||||
<td class="tpa">作品信息</td>
|
||||
<td class="tpb" colspan="3">
|
||||
<el-row v-if="viewData.isUploadPhoto">
|
||||
<el-divider>照片 <i class="el-icon-picture-outline"></i></el-divider>
|
||||
<file-upload view :files="img2List"></file-upload>
|
||||
</el-row>
|
||||
<div v-if="viewData.isUploadOther">
|
||||
<el-row>
|
||||
<el-divider>视频 <i class="el-icon-video-camera"></i></el-divider>
|
||||
<div style="text-align: left;" v-if="videoList.length>0">
|
||||
<div v-for="item in videoList">
|
||||
<el-tooltip class="item" effect="dark" placement="right-start">
|
||||
<div slot="content">{{ item.fjname }}</div>
|
||||
<div class="view-myvideo-tab">
|
||||
<div class="video-toggle-i"
|
||||
@click="playVideo1(APP_DOMAIN + '/file_server/fileStreamPreview?id=' + item.id)">
|
||||
<i class="el-icon-video-camera-solid"></i>
|
||||
<i class="el-icon-video-play"></i>
|
||||
</div>
|
||||
|
||||
<span class="file-down-span"
|
||||
style="bottom: 0;height: 20px;display: inline-block;"
|
||||
@click="APP_DOMAIN+'/file_server/download?filepath=' + item.filepath + '&filename=' + item.filename">
|
||||
<i class="el-icon-download"></i>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div v-else style="text-align: center;color: #c2bbbb;font-size: 10px;">
|
||||
没有视频。
|
||||
</div>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-divider>音频 <i class="el-icon-video-camera"></i></el-divider>
|
||||
<div style="text-align: left;" v-if="audioList.length>0">
|
||||
<div v-for="item in audioList">
|
||||
<audio id="amusic" preload="auto" controls style="width: 100%;outline: none;">
|
||||
<!-- <source :src="'${AppFileDomain!}'+item.filepath"/>-->
|
||||
<source :src="APP_DOMAIN + '/file_server/fileStreamPreview?id=' + item.id"/>
|
||||
</audio>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else style="text-align: center;color: #c2bbbb;font-size: 10px;">
|
||||
没有音频。
|
||||
</div>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-divider>文档 <i class="el-icon-document-copy"></i></el-divider>
|
||||
<div style="text-align: left;" v-if="docList.length>0">
|
||||
<div v-for="item in docList">
|
||||
<el-tooltip class="item" effect="dark" placement="right-start">
|
||||
<div slot="content">{{ item.fjname }}</div>
|
||||
<div class="view-myvideo-tab" style="background-color: #f6f6f6">
|
||||
<div class="video-toggle-i" @click="dd3s.preview(item.filepath,item.id)">
|
||||
<i class="el-icon-document"></i>
|
||||
</div>
|
||||
|
||||
<span class="file-down-span"
|
||||
style="bottom: 0;height: 20px;display: inline-block;"
|
||||
@click="APP_DOMAIN+'/file_server/download?filepath=' + item.filepath + '&filename=' + item.filename">
|
||||
<i class="el-icon-download"></i>
|
||||
</span>
|
||||
</div>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else style="text-align: center;color: #c2bbbb;font-size: 10px;">
|
||||
没有文档。
|
||||
</div>
|
||||
</el-row>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="分工会审核信息" name="2" v-if="viewData.union">
|
||||
<el-form label-width="130px" label-suffix=":" style="padding: 20px 0">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
{{ viewData.union.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.union.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见">
|
||||
<div class="textarea-div">{{ viewData.union.auditOpinion ? viewData.union.auditOpinion : '暂无' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字">
|
||||
<el-image v-if="viewData.union.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.union.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会审核信息" name="3" v-if="viewData.school">
|
||||
<el-form label-width="130px" label-suffix=":" style="padding: 20px 0">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
{{ viewData.school.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.school.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见">
|
||||
<div class="textarea-div">{{ viewData.school.auditOpinion ? viewData.school.auditOpinion : '暂无' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字">
|
||||
<el-image v-if="viewData.school.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.school.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: "1",
|
||||
viewData: {},
|
||||
loading: true,
|
||||
imgtype: ['gif', 'jpg', 'png', 'jpeg'],
|
||||
videotype: ['flv', 'swf', 'mkv', 'avi', 'rm', 'rmvb', 'wmv', 'mp4', 'mov', 'mpg', 'mpeg'],
|
||||
doctype: ['doc', 'docx', 'xlsx', 'xls', 'txt'],
|
||||
audiotype: ['mp3', 'wma', 'flac', 'wav', 'm4a', 'amr', 'au'],
|
||||
prevImgList: [],
|
||||
img2List: [],
|
||||
videoList: [],
|
||||
docList: [],
|
||||
audioList: [],
|
||||
imgShow: false,
|
||||
fileDialogVisible: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
|
||||
this.img2List = [];
|
||||
this.prevImgList = [];
|
||||
this.videoList = [];
|
||||
this.audioList = [];
|
||||
this.docList = [];
|
||||
$.post(base + '/platform/hd/wmhd/findOneById', {id: id}).then(data => {
|
||||
if (data.code == 0) {
|
||||
data.data.forEach(val => {
|
||||
val.fjname = val.filename
|
||||
val.fjurl = val.filepath
|
||||
val.url = '${AppFileDomain!}' + val.filepath
|
||||
let filetype = val.fjname.substring(val.fjname.lastIndexOf('.') + 1, val.fjname.length).toLowerCase();
|
||||
if (this.videotype.indexOf(filetype) > -1) {
|
||||
this.videoList.push(val);
|
||||
} else if (this.imgtype.indexOf(filetype) > -1) {
|
||||
this.prevImgList.push('${AppFileDomain!}' + val.filepath)
|
||||
this.img2List.push(val);
|
||||
} else if (this.doctype.indexOf(filetype) > -1) {
|
||||
this.docList.push(val);
|
||||
} else if (this.audiotype.indexOf(filetype) > -1) {
|
||||
this.audioList.push(val);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
const {data} = await $.post("/platform/hd/wmhd/findxxById", {id: id})
|
||||
this.viewData = data
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
this.loading = false
|
||||
},
|
||||
playVideo1(fjurl) {
|
||||
this.$emit("playvideo", fjurl)
|
||||
},
|
||||
filedialogClose() {
|
||||
//关闭的时候需要销毁video 但是随之dom元素也会被删除!!!!
|
||||
this.imgShow = false;
|
||||
this.videoShow = false;
|
||||
videojs('my-video').dispose();
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<style>
|
||||
|
||||
.tpa {
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
width: 12%;
|
||||
color: #a0a9b4;
|
||||
background-color: rgb(250, 250, 250);
|
||||
border: 1px solid rgb(220, 220, 220);
|
||||
}
|
||||
|
||||
.tpb {
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: #4f576b;
|
||||
width: 15%;
|
||||
border: 1px solid rgb(220, 220, 220);
|
||||
}
|
||||
|
||||
input[type=file] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.filedialog .el-dialog__header i {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.filedialog .el-dialog__body {
|
||||
padding: 20px 0 0 0;
|
||||
}
|
||||
|
||||
/*video{
|
||||
width: 100%!important;
|
||||
height: 500px!important;
|
||||
outline:none;
|
||||
}*/
|
||||
.video-js {
|
||||
width: 100%;
|
||||
height: 450px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.vjs-tech, .video-js button {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#app .el-table th.gutter {
|
||||
display: table-cell !important
|
||||
}
|
||||
|
||||
.filedialog .el-dialog {
|
||||
min-height: 500px;
|
||||
}
|
||||
|
||||
|
||||
.video-js .vjs-big-play-button { /* 中间大的播放按钮 */
|
||||
font-size: 2.5em;
|
||||
line-height: 2.3em;
|
||||
height: 2.5em;
|
||||
width: 2.5em;
|
||||
-webkit-border-radius: 2.5em;
|
||||
-moz-border-radius: 2.5em;
|
||||
border-radius: 2.5em;
|
||||
background-color: rgba(115, 133, 159, .5);
|
||||
border-width: 0.12em;
|
||||
margin-top: -1.25em;
|
||||
margin-left: -1.75em;
|
||||
}
|
||||
|
||||
.video-js.vjs-paused .vjs-big-play-button { /* 视频暂停时显示播放按钮 */
|
||||
display: block;
|
||||
}
|
||||
|
||||
.video-js.vjs-error .vjs-big-play-button { /* 视频加载出错时隐藏播放按钮 */
|
||||
display: none;
|
||||
}
|
||||
|
||||
.vjs-loading-spinner { /* 加载圆圈 */
|
||||
font-size: 2.5em;
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
border-radius: 1em;
|
||||
margin-top: -1em;
|
||||
margin-left: -1.5em;
|
||||
}
|
||||
|
||||
.el-image {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.el-divider__text {
|
||||
color: #abc5df;
|
||||
}
|
||||
|
||||
.el-divider {
|
||||
background-color: #e5edf6;
|
||||
}
|
||||
|
||||
.view-myvideo-tab {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: #C0C4CC;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.video-toggle-i:hover .el-icon-video-camera-solid {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.video-toggle-i:hover .el-icon-video-play {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
|
||||
.view-myvideo-tab .el-icon-video-camera-solid, .view-myvideo-tab .el-icon-video-play, .view-myvideo-tab .el-icon-document {
|
||||
color: #000000;
|
||||
line-height: 80px;
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
|
||||
.view-myvideo-tab .el-icon-download {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.el-icon-video-play {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ckdialogclass .el-dialog__body {
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.el-icon-download {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.file-down-span {
|
||||
background: black;
|
||||
opacity: 0.5;
|
||||
z-index: 1000;
|
||||
width: 100px;
|
||||
text-align: center;
|
||||
/*position: absolute;*/
|
||||
position: relative;
|
||||
bottom: -100px;
|
||||
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.file-down-span:hover {
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.ckdialogclass .el-icon-circle-close {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.form-item-container {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.form-item-container .el-form-item {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.el-upload--picture-card {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
line-height: 98px;
|
||||
}
|
||||
|
||||
.el-upload-list--picture-card .el-upload-list__item {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.el-loading-mask.is-fullscreen .el-loading-spinner {
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,91 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card shadow="never" class="mt20">
|
||||
<slot name="vi-title"></slot>
|
||||
<el-table :data="data" style="width: 100%" :row-key="()=>{new Date().getTime()}"
|
||||
@sort-change="(c)=>{$emit('order',c)}">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (page.pageNumber - 1) * page.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in tableColumns"
|
||||
:label="column.label"
|
||||
:prop="column.prop" :sortable="column.sortable"
|
||||
:sortable="column.sortable" show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
<el-table-column label="申请时间" prop="applyTime" sortable header-align="center" align="center"></el-table-column>
|
||||
<el-table-column label="审核状态" prop="stateId" sortable header-align="center" align="center" width="200px">
|
||||
<template scope="{row}">
|
||||
<vi-table-state :state="row"></vi-table-state>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<slot name="column"></slot>
|
||||
|
||||
</el-table>
|
||||
<slot name="pagination"></slot>
|
||||
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
page: {
|
||||
type: Object,
|
||||
default: {}
|
||||
},
|
||||
data: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableColumns: [{prop: 'userName', label: '申请人姓名', sortable: true},
|
||||
{prop: 'loginname', label: '工号', sortable: true},
|
||||
{prop: 'userSex', label: '性别', sortable: true},
|
||||
{prop: 'birthday', label: '出生年月', sortable: true},
|
||||
{prop: 'political', label: '政治面貌', sortable: true},
|
||||
{prop: 'title', label: '职称', sortable: true},
|
||||
{prop: 'unitName', label: '单位', sortable: true},
|
||||
{prop: 'unionName', label: '工会', sortable: true},]
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
"page.honorType"() {
|
||||
if (this.page.honorType == HonorApi.honor_single_id) {
|
||||
this.tableColumns = [
|
||||
{prop: 'userName', label: '申请人姓名', sortable: true},
|
||||
{prop: 'loginname', label: '工号', sortable: true},
|
||||
{prop: 'userSex', label: '性别', sortable: true},
|
||||
{prop: 'birthday', label: '出生年月', sortable: true},
|
||||
{prop: 'political', label: '政治面貌', sortable: true},
|
||||
{prop: 'title', label: '职称', sortable: true},
|
||||
{prop: 'unitName', label: '单位', sortable: true},
|
||||
{prop: 'unionName', label: '工会', sortable: true},
|
||||
]
|
||||
} else {
|
||||
this.tableColumns = [
|
||||
{prop: 'unionName', label: '申报院级工会', sortable: true},
|
||||
{prop: 'unionLeader', label: '工会主席', sortable: true},
|
||||
{prop: 'memberNumber', label: '会员人数', sortable: true},
|
||||
{prop: 'unionGroupNumber', label: '工会小组数', sortable: true},
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,297 @@
|
||||
<template>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading" class="activity_view" style="margin: 50px">
|
||||
<el-tab-pane label="申请信息" name="1">
|
||||
|
||||
<el-form label-suffix=":" label-position="left" style="margin: 50px">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<vi-title title="基础信息"></vi-title>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row gutter="20" v-if="viewData.honorType==HonorApi.honor_single_id">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="申请人">
|
||||
{{ viewData.userName }}({{ viewData.loginname }})
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="性别">
|
||||
{{ viewData.userSex }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="民族">
|
||||
{{ viewData.nation }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="职称">
|
||||
{{ viewData.title }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="担任工会职务">
|
||||
{{ viewData.post }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="在职状态">
|
||||
{{ viewData.jobStatus }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="政治面貌">
|
||||
{{ viewData.political }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="加入工会时间">
|
||||
{{ viewData.joinTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="所属单位">
|
||||
{{ viewData.unitName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="所属工会">
|
||||
{{ viewData.unionName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="荣誉类型">
|
||||
{{ viewData.typeName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row gutter="20" v-if="viewData.honorType==HonorApi.honor_list_id">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="申报院级工会">
|
||||
{{ viewData.unionName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="工会主席">
|
||||
{{ viewData.unionLeader }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="会员人数">
|
||||
{{ viewData.memberNumber }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="工会小组数">
|
||||
{{ viewData.unionGroupNumber }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="曾受何种奖励">
|
||||
{{ viewData.award }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="主要事迹">
|
||||
{{ viewData.Deeds }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<vi-title title="获奖信息"></vi-title>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="附  件">
|
||||
<file-upload v-if="viewData.files&&viewData.files.length"
|
||||
:files="viewData.files"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="单位审核信息" name="2" v-if="hasPane(2)&&viewData.unitAuditId">
|
||||
<el-form label-suffix=":" label-position="left" style="margin: 50px">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
{{ viewData.unitAudit.username }}({{ viewData.unitAudit.loginname }})
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.unitAudit.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ viewData.unitAudit.auditOpinion }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="院级工会审核信息" name="3" v-if="hasPane(3)&&viewData.unionAuditId">
|
||||
<el-form label-suffix=":" label-position="left" style="margin: 50px">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
{{ viewData.unionAudit.username }}({{ viewData.unionAudit.loginname }})
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.unionAudit.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ viewData.unionAudit.auditOpinion }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="院级党组织审核信息" name="4" v-if="hasPane(4)&&viewData.partyAuditId">
|
||||
<el-form label-suffix=":" label-position="left" style="margin: 50px">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
{{ viewData.partyAudit.username }}({{ viewData.partyAudit.loginname }})
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.partyAudit.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ viewData.partyAudit.auditOpinion }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会审核信息" name="5" v-if="hasPane(5)&&viewData.schoolAuditId">
|
||||
<el-form label-suffix=":" label-position="left" style="margin: 50px">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
{{ viewData.schoolAudit.username }}({{ viewData.schoolAudit.loginname }})
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.schoolAudit.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ viewData.schoolAudit.auditOpinion }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
</el-tabs>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: "1",
|
||||
viewData: {},
|
||||
loading: true,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
this.loading = true
|
||||
const {data, code, msg} = await $.get("/platform/honor/apply/findOne", {id})
|
||||
this.loading = false
|
||||
if (data) {
|
||||
this.viewData.files = []
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
this.viewData = data
|
||||
this.viewData.files = JSON.parse(data.files)
|
||||
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$message({
|
||||
message: "获取信息失败",
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,169 @@
|
||||
<style>
|
||||
.el-descriptions__table {
|
||||
table-layout: fixed !important;
|
||||
}
|
||||
|
||||
.el-descriptions-item__cell {
|
||||
text-align: center !important;
|
||||
}
|
||||
</style>
|
||||
<template>
|
||||
<div>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading">
|
||||
<el-tab-pane label="会议信息" name="1">
|
||||
|
||||
<el-descriptions class="margin-top" title="" :column="3" border>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">会议名称</template>
|
||||
<div v-html="viewData.meeting_name"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">申请人</template>
|
||||
<div v-html="viewData.username"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">申请时间</template>
|
||||
<div v-html="viewData.create_time"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">所在单位</template>
|
||||
<div v-html="viewData.unit_name"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">届次</template>
|
||||
<div v-html="viewData.jdhallname"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="2">
|
||||
<template slot="label">审核状态</template>
|
||||
<div :style="'color:'+viewData.color">{{ viewData.state_name }}</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">会议议题</template>
|
||||
<div class="text-left" v-html="viewData.meeting_topic"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">备注</template>
|
||||
<div class="text-left" v-html="viewData.remark"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">附件</template>
|
||||
<div class="text-left">
|
||||
<file-upload v-if="viewData.files&&viewData.files.length"
|
||||
:files="viewData.files"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="院级党委意见" name="2" v-if="viewData.party_committee_id">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
|
||||
<el-form-item label="审核信息 " label-width="135px" class="view-header"></el-form-item>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人:">
|
||||
{{ viewData.party_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间:">
|
||||
{{ viewData.party_committee_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
{{ viewData.party_committee_opinion }}
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会意见" name="3" v-if="viewData.school_union_id">
|
||||
<el-descriptions class="margin-top" title="" :column="2" border>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">批复人</template>
|
||||
<div v-html="viewData.school_name"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">批复时间</template>
|
||||
<div v-html="viewData.school_union_time"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="2">
|
||||
<template slot="label">批复意见</template>
|
||||
<div v-html="viewData.school_union_opinion"></div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
module.exports = {
|
||||
props: {
|
||||
id: String,
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '批复'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: '1',
|
||||
loading: true,
|
||||
viewData: {},
|
||||
replyFiles: []
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getMeetingInfo(id) {
|
||||
const {data} = await $.get(base + "/platform/jdh/level2/info/getMeetingInfo", {id})
|
||||
return data
|
||||
},
|
||||
async openView(id) {
|
||||
this.loading = true
|
||||
this.viewData = await this.getMeetingInfo(id)
|
||||
|
||||
if (this.viewData) {
|
||||
if (this.viewData.files) {
|
||||
this.viewData.files = JSON.parse(this.viewData.files)
|
||||
}
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$message.error("获取会议信息失败");
|
||||
}
|
||||
this.loading = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,92 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button">
|
||||
<el-input placeholder="请输入会议名称" clearable v-model="page.searchKeyword"
|
||||
@keyup.enter.native="$emit('doSearch')">
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button">
|
||||
<el-select clearable v-model="page.unionId" filterable placeholder="请选择工会" @change="unionChange">
|
||||
<el-option
|
||||
v-for="item in unionOptions"
|
||||
:key="item.id"
|
||||
:label="item.unionname"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="btn-group tool-button">
|
||||
<el-select clearable v-model="page.unitId" filterable placeholder="请选择单位">
|
||||
<el-option
|
||||
v-for="item in unitOptions"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="btn-group tool-button">
|
||||
<el-button type="primary" icon="el-icon-search" @click="$emit('search')"></el-button>
|
||||
</div>
|
||||
<div class="pull-right offscreen-right" v-if="audit">
|
||||
<el-radio-group v-model="page.isAudit" @change="auditChange">
|
||||
<el-radio-button :label="null">全部</el-radio-button>
|
||||
<el-radio-button :label="true">已批复</el-radio-button>
|
||||
<el-radio-button :label="false">未批复</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
page: {
|
||||
type: Object,
|
||||
default: {}
|
||||
},
|
||||
audit: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
isadmin: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
unionid: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
unionOptions: [],
|
||||
unitOptions: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async unionChange(val) {
|
||||
this.unitOptions = await getUnits(val)
|
||||
},
|
||||
async auditChange(val) {
|
||||
if(val === null) {
|
||||
delete this.page.isAudit
|
||||
}
|
||||
this.$emit('search')
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.unionOptions = await getUnions()
|
||||
if (!this.isadmin) {
|
||||
this.unionOptions = [this.unionOptions.find(x => x.id === this.unionid)]
|
||||
}
|
||||
//this.unitOptions = await getUnits(null)
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,71 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card shadow="never" class="mt20">
|
||||
<el-table :data="table" style="width: 100%" row-key="id" @sort-change="(c)=>{$emit('page_order',c)}"
|
||||
v-loading="loading">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (page.pageNumber - 1) * page.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="会议名称" prop="meeting_name" header-align="center" align="center" sortable show-overflow-tooltip
|
||||
width="300px"></el-table-column>
|
||||
<el-table-column label="会议时间" prop="meeting_time" header-align="center" align="center" sortable>
|
||||
<template scope="{row:{meeting_time}}">
|
||||
{{moment(meeting_time).format('YYYY-MM-DD')}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="届次" prop="jdhallname" header-align="center" align="center"></el-table-column>
|
||||
<el-table-column label="申请人" prop="username" header-align="center" align="center"></el-table-column>
|
||||
<el-table-column label="所在单位" prop="unit_name" header-align="center" align="center" sortable></el-table-column>
|
||||
<el-table-column label="所在工会" prop="union_name" header-align="center" align="center" sortable></el-table-column>
|
||||
<!-- <el-table-column label="正式代表人数" prop="official_delegate" header-align="center" align="center"></el-table-column>-->
|
||||
<!-- <el-table-column label="教师代表人数" prop="teacher_delegate" header-align="center" align="center"></el-table-column>-->
|
||||
<!-- <el-table-column label="列席代表人数" prop="attend_delegate" header-align="center" align="center"></el-table-column>-->
|
||||
<!-- <el-table-column label="特邀代表人数" prop="special_delegate" header-align="center" align="center"></el-table-column>-->
|
||||
<!-- <el-table-column label="有无选举事项" prop="have_elect" header-align="center" align="center">
|
||||
<template scope="scope">
|
||||
<i v-if="scope.row.have_elect" class="fa fa-circle text-success ml5"> 有</i>
|
||||
<i v-if="!scope.row.have_elect" class="fa fa-circle text-danger ml5"> 无</i>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column label="会议类型" prop="type" header-align="center" align="center" sortable></el-table-column>
|
||||
<el-table-column label="申请时间" prop="create_time" header-align="center" align="center" sortable></el-table-column>
|
||||
<el-table-column label="审核状态" prop="state_id" sortable header-align="center" align="center">
|
||||
<template scope="scope">
|
||||
<span :style="'color:'+scope.row.color">{{ scope.row.state_name }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<slot name="column"></slot>
|
||||
|
||||
</el-table>
|
||||
|
||||
<slot name="pagination"></slot>
|
||||
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
page: {
|
||||
type: Object,
|
||||
default: {}
|
||||
},
|
||||
table: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
loading: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,146 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-tabs tab-position="top" v-model="active">
|
||||
<el-tab-pane label="基本信息" name="1">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
<vi-title title="基本信息"></vi-title>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名:">
|
||||
{{ dbData.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="性别:">
|
||||
{{ dbData.sex }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="年龄:">
|
||||
{{ age }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="民族:">
|
||||
{{ dbData.mz }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="文化程度:">
|
||||
{{ dbData.xl }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="政治面貌:">
|
||||
{{ dbData.zzmm }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="所在部门:">
|
||||
{{ dbData.dwname }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="职称:">
|
||||
{{ dbData.zc }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="职务:">
|
||||
{{ dbData.zw }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<vi-title title="个人简历"></vi-title>
|
||||
<div v-html="dbData.grjl"></div>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="预选信息" name="2" v-if="dbData.rewards">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
<vi-title title="近几年奖惩情况"></vi-title>
|
||||
<div v-html="dbData.rewards"></div>
|
||||
|
||||
|
||||
<el-form-item label="附  件" label-width="125px" class="view-header"></el-form-item>
|
||||
<file-upload v-if="dbData.files&&dbData.files.length"
|
||||
:files="dbData.files"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
data() {
|
||||
return {
|
||||
active: "1",
|
||||
dbData: {}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
async openView(id) {
|
||||
const {data, code, msg} = await $.get("/platform/jdh/Common/findDbxx", {id})
|
||||
if (code === 0) {
|
||||
this.dbData = data
|
||||
if (this.dbData.files) {
|
||||
this.dbData.files = JSON.parse(data.files)
|
||||
}
|
||||
this.active = this.handle ? "999" : "1"
|
||||
|
||||
} else {
|
||||
this.dbData = {}
|
||||
this.$message.error("获取会议信息失败");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
props: {
|
||||
id: String,
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
age() {
|
||||
if (this.dbData.birthday) {
|
||||
let y1 = parseInt(this.dbData.birthday.split('-')[0])
|
||||
let y2 = parseInt(moment().format('YYYY'))
|
||||
return (y2 - y1) + '岁'
|
||||
}
|
||||
return ''
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
td {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,67 @@
|
||||
<template>
|
||||
<table class="tabInfo">
|
||||
<tr>
|
||||
<td class="title">会议名称</td>
|
||||
<td class="content" colspan="3">{{data.hyname}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title">所属院级工会</td>
|
||||
<td class="content">{{data.unionname}}</td>
|
||||
<td class="title">申请状态</td>
|
||||
<td class="content">
|
||||
<span class="text-primary" v-if="data.shzt===1">待校工会审核</span>
|
||||
<span class="text-danger" v-if="data.shzt===2">拒绝</span>
|
||||
<span class="text-success" v-if="data.shzt===3">通过</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title">填表人</td>
|
||||
<td class="content">{{data.tbrname}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title">会议时间</td>
|
||||
<td class="content">{{data.hysj}}</td>
|
||||
<td class="title">会议地点</td>
|
||||
<td class="content">{{data.hydd}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title" colspan="4">指导思想</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="content" colspan="4" style="text-align: left">
|
||||
<div v-html="data.zdsx"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title" colspan="4">会议议题</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="content" colspan="4" style="text-align: left">
|
||||
<div v-html="data.hyyt"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title" colspan="4">会议进程</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="content" colspan="4" style="text-align: left">
|
||||
<div v-html="data.hyjc"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props:{
|
||||
data:{
|
||||
type:Object,
|
||||
required:true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,74 @@
|
||||
<template>
|
||||
<el-row>
|
||||
<el-table :data="data">
|
||||
<el-table-column label="序号" type="index" header-align="center" align="center">
|
||||
<template scope="scope"><span>{{scope.$index+(pf.pageNumber - 1) * pf.pageSize + 1}} </span></template>
|
||||
</el-table-column>
|
||||
<el-table-column label="工号" prop="loginname"></el-table-column>
|
||||
<el-table-column label="姓名" prop="username"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex"></el-table-column>
|
||||
<el-table-column label="手机" prop="mobile"></el-table-column>
|
||||
<el-table-column label="单位" >
|
||||
<tempalate slot-scope="scope">
|
||||
<span v-if="name==8">{{scope.row.dbunitname}}</span>
|
||||
<span v-else>{{scope.row.dwname}}</span>
|
||||
</tempalate>
|
||||
</el-table-column>
|
||||
<el-table-column label="身份">
|
||||
<tempalate slot-scope="scope">
|
||||
<span v-if="name==8">{{scope.row.rolename}}</span>
|
||||
<span v-else>{{getSf(scope.row.sf)}}</span>
|
||||
</tempalate>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
data(){
|
||||
return{
|
||||
tabname:this.name
|
||||
}
|
||||
},
|
||||
props:{
|
||||
data:{
|
||||
type:Array,
|
||||
default:()=>[]
|
||||
},
|
||||
name:{
|
||||
type:Number
|
||||
},
|
||||
pf:{
|
||||
type:Object,
|
||||
default(){
|
||||
return{
|
||||
pageNumber:1,
|
||||
pageSize:10,
|
||||
totalCount:0,
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
computed:{
|
||||
getSf(){
|
||||
return (sf)=>{
|
||||
if(this.name==2){
|
||||
return sf==1?'组员':'负责人'
|
||||
}else if(this.name==3){
|
||||
return sf==1?'组员':sf==2?'副组长':sf==3?'组长':''
|
||||
}else if(this.name==4){
|
||||
return sf==1?'成员':sf==2?'副秘书长':sf==3?'秘书长':''
|
||||
}else if(this.name==5){
|
||||
return sf==1?'成员':sf==2?'副主任':sf==3?'主任':''
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,150 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dialog title="自动计算得分" :visible.sync="show_modal" :close-on-click-modal="false">
|
||||
<el-table :data="tableData" v-loading="loading" element-loading-text="智能查分中"
|
||||
element-loading-spinner="el-icon-loading text-primary"
|
||||
element-loading-background="rgba(0, 0, 0, 0.8)">
|
||||
<el-table-column type="index"></el-table-column>
|
||||
<el-table-column v-for="column in tableColumn"
|
||||
:key="column.prop"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
show-overflow-tooltip
|
||||
header-align="center"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<template #footer>
|
||||
<el-button @click="closeCalcTable">取 消</el-button>
|
||||
<el-button type="primary" @click="autoFillTab" :disabled="loading">自动计算填入</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
relation_year: {
|
||||
type: Object,
|
||||
default: {}
|
||||
},
|
||||
show_modal: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
tableData: [],
|
||||
tableColumn: [],
|
||||
proposalTableColumn: [
|
||||
{label: '提案编号', prop: 'proposalCode'},
|
||||
{label: '提案名称', prop: 'proposalName'},
|
||||
{label: '提案人', prop: 'username'},
|
||||
{label: '提案时间', prop: 'createTime'},
|
||||
{label: '教代会届次', prop: 'jdhallname'}
|
||||
],
|
||||
secTeaMeetTableColumn: [
|
||||
{label: '会议名称', prop: 'meeting_name'},
|
||||
{label: '会议时间', prop: 'meeting_time'},
|
||||
{label: '届次', prop: 'jdhallname'},
|
||||
{label: '申请人', prop: 'username'},
|
||||
],
|
||||
ConTableColumn: [
|
||||
{label: '被慰问/补助人', prop: 'be_username'},
|
||||
{label: '被慰问/补助人', prop: 'be_loginname'},
|
||||
{label: '申请时间', prop: 'apply_time'},
|
||||
{label: '慰问/补助类型', prop: 'typename'},
|
||||
{label: '类型', prop: 'querytype'},
|
||||
],
|
||||
PerformanceTableColumn: [
|
||||
{label: '获奖活动', prop: 'activityName'},
|
||||
{label: '获奖项目', prop: 'eventName'},
|
||||
{label: '获奖名次', prop: 'ranking'},
|
||||
{label: '获奖积分', prop: 'integral'},
|
||||
{label: '参加人数', prop: 'numberOfPeople'},
|
||||
]
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
relation_year: {
|
||||
async handler(v) {
|
||||
switch (v.bz_relation_id) {
|
||||
case 'proposal':
|
||||
this.tableColumn = this.proposalTableColumn
|
||||
break
|
||||
case 'secteameet':
|
||||
this.tableColumn = this.secTeaMeetTableColumn
|
||||
break
|
||||
case 'ConandDif':
|
||||
this.tableColumn = this.ConTableColumn
|
||||
break
|
||||
case 'Performance':
|
||||
this.tableColumn = this.PerformanceTableColumn
|
||||
break
|
||||
default:
|
||||
this.tableColumn = []
|
||||
}
|
||||
|
||||
this.tableData = []
|
||||
this.loading = true
|
||||
const res = await $.get('/platform/TradeUnionAssessmentCalcScore/CalcScore', v)
|
||||
if (res.code === 0) {
|
||||
setTimeout(() => {
|
||||
this.loading = false
|
||||
this.tableData = res.data == null ? [] : res.data
|
||||
}, 1000)
|
||||
}
|
||||
},
|
||||
immediate: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
autoFillTab() {
|
||||
// this.$emit('get_score_item_num', this.tableData.length)
|
||||
this.$emit('get_table_data', this.tableData)
|
||||
this.$emit('update:show_modal', false)
|
||||
},
|
||||
closeCalcTable() {
|
||||
this.$emit('update:show_modal', false)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
/**
|
||||
修改el-dialog样式
|
||||
*/
|
||||
.el-dialog__wrapper {
|
||||
overflow: unset;
|
||||
}
|
||||
|
||||
.el-dialog {
|
||||
margin-top: 5vh !important;
|
||||
/*height: 90vh;*/
|
||||
max-height: 90vh;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.el-dialog .el-dialog__header {
|
||||
height: 54px;
|
||||
max-height: 54px;
|
||||
}
|
||||
|
||||
/**
|
||||
header + footer
|
||||
(54 + 70) = 124px
|
||||
*/
|
||||
.el-dialog .el-dialog__body {
|
||||
overflow-y: auto !important;
|
||||
max-height: calc(90vh - 124px) !important;
|
||||
}
|
||||
|
||||
.el-dialog .el-dialog__footer {
|
||||
height: 70px;
|
||||
max-height: 70px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,326 @@
|
||||
<template>
|
||||
<el-form class="el_form" :model="data" ref="addForm" :rules="formRules" label-width="100px">
|
||||
<vi-title title="指标信息"></vi-title>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-form-item prop="annual" label="年  度">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
v-if="!is_view"
|
||||
:picker-options="pickerOptions"
|
||||
v-model="data.annual"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="选择年度">
|
||||
</el-date-picker>
|
||||
<el-input v-else style="color: #F6F7FA;" disabled v-model="data.annual"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item prop="assessment" label="考核名称">
|
||||
<el-input maxlength="30" v-if="!is_view" v-model="data.assessment" placeholder="请填写考核名称"
|
||||
type="text">
|
||||
</el-input>
|
||||
<el-input v-else style="color: #F6F7FA;" disabled v-model="data.assessment"></el-input>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item prop="assessment" label="">
|
||||
<el-checkbox v-model="data.isEvaluationIndex">是否采用往年考核指标</el-checkbox>
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="6">
|
||||
|
||||
<el-form-item prop="zbId" label="" v-if="data.isEvaluationIndex">
|
||||
<el-select v-model="data.zbId" placeholder="请选择指标" filterable clearable
|
||||
style="width: 100%" @change="getByZbData">
|
||||
<el-option
|
||||
v-for="item in zbList"
|
||||
:key="item.id"
|
||||
:label="item.annual+item.assessment"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<vi-title2 title="考核内容">
|
||||
<template #func>
|
||||
<el-button v-if="!is_view" size="small" style="float: right" icon="el-icon-plus" type="primary"
|
||||
@click="data.nrs.push({bzs:[{}]})">
|
||||
添加内容
|
||||
</el-button>
|
||||
</template>
|
||||
</vi-title2>
|
||||
|
||||
<el-form-item label="" label-width="0" v-for="nr,idx in data.nrs">
|
||||
|
||||
<el-row type="flex" align="middle" justify="space-between">
|
||||
<el-input v-model="nr.content" v-if="!is_view" maxlength="30" style="width: 50%" placeholder="请填写考核内容">
|
||||
<template slot="prepend"><span v-model="nr.contentNumber">{{ nr.contentNumber = idx + 1 }}</span></template>
|
||||
</el-input>
|
||||
<span style="background-color: #F6F7FA;" v-else>{{ idx + 1 }} {{ nr.content }}</span>
|
||||
<el-button v-if="!is_view" size="medium" :disabled="data.nrs.length<=1" type="danger"
|
||||
@click="data.nrs.splice(idx,1)"
|
||||
icon="el-icon-delete"></el-button>
|
||||
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row style="margin-top: 20px">
|
||||
<el-table :data="nr.bzs" style="width: 100%" border show-summary :summary-method="getSummaries" size="small">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="100px">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="考核标准" prop="inspection" header-align="center" align="center">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" v-model="row.inspection" placeholder="请填写考核标准"></el-input>
|
||||
<span v-else>{{ row.inspection }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="单项分" prop="single_score" header-align="center" align="center" width="100px">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" v-model="row.single_score" placeholder="请填写单项分"></el-input>
|
||||
<span v-else>{{ row.single_score }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="标准分" prop="score" header-align="center" align="center" width="100px">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" v-model.number="row.score" maxlength="4" placeholder="请填写标准分"></el-input>
|
||||
<span v-else>{{ row.score }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="能否超过标准分" prop="beyond_highestscore" header-align="center" align="center" width="120px">
|
||||
<template scope="{row}">
|
||||
<el-switch
|
||||
v-if="!is_view"
|
||||
v-model="row.beyond_highestscore"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949">
|
||||
</el-switch>
|
||||
<el-switch
|
||||
v-else
|
||||
disabled
|
||||
v-model="row.beyond_highestscore">
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column label="是否提供佐证材料" prop="isEvidence" header-align="center" align="center" width="120px">
|
||||
<template scope="{row}">
|
||||
<el-switch
|
||||
v-if="!is_view"
|
||||
v-model="row.isEvidence"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949">
|
||||
</el-switch>
|
||||
<el-switch
|
||||
v-else
|
||||
disabled
|
||||
v-model="row.isEvidence">
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="关联模块" prop="associatedmodule" header-align="center" align="center" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" v-model="row.associatedmodule" maxlength="10" placeholder="请填写关联模块"></el-input>
|
||||
<span v-else>{{ row.associatedmodule }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="关联标识" prop="bz_relation_id" header-align="center" align="center" width="100px">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" v-model="row.bz_relation_id" maxlength="20" placeholder="请填写关联标识,该标识唯一"></el-input>
|
||||
<span v-else>{{ row.bz_relation_id }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- <el-table-column label="能否删除" prop="canDelete" header-align="center" align="center" width="100px">-->
|
||||
<!-- <template scope="{row}">-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-if="!is_view"-->
|
||||
<!-- :disabled="row.canDelete==false"-->
|
||||
<!-- v-model="row.canDelete"-->
|
||||
<!-- active-color="#13ce66"-->
|
||||
<!-- inactive-color="#ff4949">-->
|
||||
<!-- </el-switch>-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-else-->
|
||||
<!-- :disabled="!row.canDelete && row.id"-->
|
||||
<!-- v-model="row.canDelete">-->
|
||||
<!-- </el-switch>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
|
||||
<el-table-column v-if="!is_view" label="操作" header-align="center" align="center" width="100px">
|
||||
<template scope="{row,$index}">
|
||||
<el-button size="mini" :disabled="nr.bzs.length<=1 || (!row.canDelete && row.id)" type="danger" icon="el-icon-delete"
|
||||
@click="nr.bzs.splice($index,1)"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
|
||||
<el-button v-if="!is_view" type="primary" plain style="width: 100%" size="mini" icon="el-icon-plus"
|
||||
@click="nr.bzs.push({})">
|
||||
添加考核标准
|
||||
</el-button>
|
||||
|
||||
<el-divider></el-divider>
|
||||
</el-row>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
const METHOD_NAME = "change"
|
||||
|
||||
module.exports = {
|
||||
props: {
|
||||
is_view: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
data: {
|
||||
type: Object,
|
||||
default: {
|
||||
nrs: [{
|
||||
bzs: [{}]
|
||||
}],
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
data: {
|
||||
deep: true,
|
||||
handler(val) {
|
||||
this.$emit(METHOD_NAME, val)
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isEvaluationIndex: false,
|
||||
zbList: [],
|
||||
formRules: {
|
||||
xxx: [{required: true, message: '请填写年度', trigger: ['blur', 'change']}],
|
||||
},
|
||||
pickerOptions: {
|
||||
disabledDate(time) {
|
||||
return (
|
||||
time.getFullYear() > new Date().getFullYear()
|
||||
);
|
||||
}
|
||||
},
|
||||
relationData:[
|
||||
{moduleName:'提案系统模块',id:'proposal'},
|
||||
{moduleName:'二级教代会',id:'secteameet'},
|
||||
{moduleName:'慰问/补助',id:'ConandDif'},
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getByZbData() {
|
||||
const {code, data, msg} = await $.get('/platform/ghkh/khzb/edit', {id: this.data.zbId})
|
||||
this.$set(this.data, "nrs", data.nrs)
|
||||
},
|
||||
async getZbList() {
|
||||
await $.get("/platform/ghkh/Xjkhzb/getZbList").then(res => {
|
||||
this.zbList = res.data
|
||||
})
|
||||
},
|
||||
async getKh() {
|
||||
await $.get("/platform/ghkh/khph/getKh", {"annual": this.data.annual}).then(res => {
|
||||
if (res.data.length != 0) {
|
||||
this.kh = res.data
|
||||
this.data.khid = this.kh[0].id
|
||||
} else {
|
||||
this.kh = []
|
||||
this.pageForm.khid = ""
|
||||
}
|
||||
})
|
||||
},
|
||||
async khSearch() {
|
||||
await this.getKh()
|
||||
},
|
||||
getSummaries(param) {
|
||||
const {columns, data} = param;
|
||||
const sums = [];
|
||||
columns.forEach((column, index) => {
|
||||
if (index === 0) {
|
||||
sums[index] = '小计';
|
||||
return;
|
||||
} else if ([1,4,5,6,7].includes(index)) {
|
||||
sums[index] = '';
|
||||
return;
|
||||
}
|
||||
const values = data.map(item => Number(item[column.property]));
|
||||
if (!values.every(value => isNaN(value))) {
|
||||
sums[index] = values.reduce((prev, curr) => {
|
||||
const value = Number(curr);
|
||||
if (!isNaN(value)) {
|
||||
return prev + curr;
|
||||
} else {
|
||||
return prev;
|
||||
}
|
||||
}, 0);
|
||||
sums[index] += ' 分';
|
||||
} else {
|
||||
sums[index] = '';
|
||||
}
|
||||
});
|
||||
return sums;
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getZbList()
|
||||
if (!this.data || !Object.keys(this.data).length) {
|
||||
this.data = {
|
||||
nrs: [{
|
||||
bzs: [{}]
|
||||
}],
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.fixedBox {
|
||||
position: fixed;
|
||||
top: 200px;
|
||||
right: 10px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.el-divider {
|
||||
background-color: #409EFF;
|
||||
}
|
||||
|
||||
.el_form {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.el-input-group__prepend {
|
||||
background-color: #419BF8;
|
||||
color: white;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,66 @@
|
||||
<template>
|
||||
<el-form :model="data" ref="form" :rules="formRules" label-width="100px">
|
||||
<el-form-item label=" " label-width="110px" class="view-header"></el-form-item>
|
||||
|
||||
<el-form-item prop="nr" label="考核内容">
|
||||
<el-input disabled v-model="data.nr" type="text"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="bz" label="考核标准">
|
||||
<el-input disabled v-model="data.bz" type="text"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item prop="clnr" label="材料内容">
|
||||
<el-input v-model="data.clnr" type="textarea" :autosize="{ minRows: 2, maxRows: 10}"
|
||||
placeholder="暂无" :disabled="is_view"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label=" " label-width="110px" class="view-header"></el-form-item>
|
||||
<el-form-item label="佐证材料">
|
||||
<span v-if="is_view&&!data.files">暂无</span>
|
||||
<file-upload :files.sync="data.files" :view="is_view" card v-else></file-upload>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
const METHOD_NAME = "change"
|
||||
|
||||
module.exports = {
|
||||
props: {
|
||||
is_view: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
width: "200px",
|
||||
data: {
|
||||
type: Object,
|
||||
default: {
|
||||
files: () => [],
|
||||
}
|
||||
},
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue')
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
formRules: {
|
||||
xxx: [{required: true, message: '', trigger: ['blur', 'change']}]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {},
|
||||
watch: {},
|
||||
created() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,282 @@
|
||||
<template>
|
||||
<el-form class="el_form" :model="data" ref="addForm" :rules="formRules" label-width="100px">
|
||||
<vi-title title="指标信息"></vi-title>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="annual" label="年  度">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
v-if="!is_view"
|
||||
:picker-options="pickerOptions"
|
||||
v-model="data.annual"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="选择年度">
|
||||
</el-date-picker>
|
||||
<el-input v-else style="color: #F6F7FA;" disabled v-model="data.annual"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="assessment" label="考核名称">
|
||||
<el-input maxlength="30" v-if="!is_view" v-model="data.assessment" placeholder="请填写考核名称"
|
||||
type="text">
|
||||
</el-input>
|
||||
<el-input v-else style="color: #F6F7FA;" disabled v-model="data.assessment"></el-input>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="assessment" label="" v-if="!is_view">
|
||||
<el-checkbox v-model="data.isEvaluationIndex">是否采用往年考核指标</el-checkbox>
|
||||
</el-form-item>
|
||||
<el-form-item prop="zbId" label="往年指标" v-show="data.isEvaluationIndex">
|
||||
<el-select v-model="data.zbId" placeholder="请选择指标" filterable clearable
|
||||
style="width: 100%" @change="getByZbData">
|
||||
<el-option
|
||||
v-for="item in zbList"
|
||||
:key="item.id"
|
||||
:label="item.annual+item.assessment"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<vi-title2 title="考核项目">
|
||||
<template #func>
|
||||
<el-button v-if="!is_view" size="small" style="float: right" icon="el-icon-plus" type="primary"
|
||||
@click="data.nrs.push({bzs:[{}]})">
|
||||
添加内容
|
||||
</el-button>
|
||||
</template>
|
||||
</vi-title2>
|
||||
|
||||
<el-form-item label="" label-width="0" v-for="nr,idx in data.nrs">
|
||||
|
||||
<el-row type="flex" align="middle" justify="space-between">
|
||||
<el-input v-model="nr.content" v-if="!is_view" maxlength="30" style="width: 50%" placeholder="请填写考核项目">
|
||||
<template slot="prepend"><span v-model="nr.contentNumber">{{ nr.contentNumber = idx + 1 }}</span></template>
|
||||
</el-input>
|
||||
<span style="background-color: #F6F7FA;" v-else>{{ idx + 1 }} {{ nr.content }}</span>
|
||||
<el-button v-if="!is_view" size="medium" :disabled="data.nrs.length<=1" type="danger"
|
||||
@click="data.nrs.splice(idx,1)"
|
||||
icon="el-icon-delete"></el-button>
|
||||
</el-row>
|
||||
|
||||
<el-row style="margin-top: 20px">
|
||||
<el-table :data="nr.bzs" style="width: 100%" border show-summary :summary-method="getSummaries" size="small">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="70px">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="考评内容" prop="inspection" header-align="center" align="center">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" v-model="row.inspection" placeholder="请填写考核标准"
|
||||
maxlength="500" type="textarea" autosize></el-input>
|
||||
<span v-else>{{ row.inspection }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="评分标准" prop="scoringCriteria" header-align="center" align="center" width="300px"
|
||||
min-width="200">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" v-model="row.scoringCriteria" placeholder="请填写评分标准"
|
||||
maxlength="250" type="textarea" autosize></el-input>
|
||||
<span v-else>{{ row.scoringCriteria }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="项目自评(分数)" prop="score" header-align="center" align="center" width="120px">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" type="number" v-model.number="row.score" maxlength="4"
|
||||
placeholder="请填写项目自评"></el-input>
|
||||
<span v-else>{{ row.score }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="考核办法" prop="assessmentMethod" header-align="center" align="center" width="300px">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" v-model="row.assessmentMethod" maxlength="50"
|
||||
placeholder="请填写考核办法"></el-input>
|
||||
<span v-else>{{ row.assessmentMethod }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- <el-table-column label="是否提供佐证材料" prop="isEvidence" header-align="center" align="center"-->
|
||||
<!-- width="120px">-->
|
||||
<!-- <template scope="{row}">-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-if="!is_view"-->
|
||||
<!-- v-model="row.isEvidence"-->
|
||||
<!-- active-color="#13ce66"-->
|
||||
<!-- inactive-color="#ff4949">-->
|
||||
<!-- </el-switch>-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-else-->
|
||||
<!-- disabled-->
|
||||
<!-- v-model="row.isEvidence">-->
|
||||
<!-- </el-switch>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
|
||||
|
||||
<el-table-column v-if="!is_view" label="操作" header-align="center" align="center" width="100px">
|
||||
<template slot="header" scope="{row,$index}">
|
||||
<el-button size="mini" icon="el-icon-plus" type="primary" @click="nr.bzs.push({})" title="添加考评内容"></el-button>
|
||||
</template>
|
||||
<template scope="{row,$index}">
|
||||
<el-button size="mini" :disabled="nr.bzs.length<=1 || (!row.canDelete && row.id)" type="danger"
|
||||
icon="el-icon-delete"
|
||||
@click="nr.bzs.splice($index,1)"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
|
||||
<!-- <el-button v-if="!is_view" type="primary" plain style="width: 100%" size="mini" icon="el-icon-plus"-->
|
||||
<!-- @click="nr.bzs.push({})">-->
|
||||
<!-- 添加考核标准-->
|
||||
<!-- </el-button>-->
|
||||
|
||||
<!-- <el-divider></el-divider>-->
|
||||
</el-row>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
const METHOD_NAME = "change"
|
||||
|
||||
module.exports = {
|
||||
props: {
|
||||
is_view: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
data: {
|
||||
type: Object,
|
||||
default: {
|
||||
nrs: [{
|
||||
bzs: [{}]
|
||||
}],
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
data: {
|
||||
deep: true,
|
||||
handler(val) {
|
||||
this.$emit(METHOD_NAME, val)
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isEvaluationIndex: false,
|
||||
zbList: [],
|
||||
formRules: {
|
||||
xxx: [{required: true, message: '请填写年度', trigger: ['blur', 'change']}],
|
||||
},
|
||||
pickerOptions: {
|
||||
disabledDate(time) {
|
||||
return (
|
||||
time.getFullYear() > new Date().getFullYear()
|
||||
);
|
||||
}
|
||||
},
|
||||
relationData: [
|
||||
{moduleName: '提案系统模块', id: 'proposal'},
|
||||
{moduleName: '二级教代会', id: 'secteameet'},
|
||||
{moduleName: '慰问/补助', id: 'ConandDif'},
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getByZbData() {
|
||||
const {code, data, msg} = await $.get('/platform/xhkh/khzb/edit', {id: this.data.zbId})
|
||||
this.$set(this.data, "nrs", data.nrs)
|
||||
},
|
||||
async getZbList() {
|
||||
await $.get("/platform/xhkh/Xjkhzb/getZbList").then(res => {
|
||||
this.zbList = res.data
|
||||
})
|
||||
},
|
||||
async getKh() {
|
||||
await $.get("/platform/xhkh/khph/getKh", {"annual": this.data.annual}).then(res => {
|
||||
if (res.data.length != 0) {
|
||||
this.kh = res.data
|
||||
this.data.khid = this.kh[0].id
|
||||
} else {
|
||||
this.kh = []
|
||||
this.pageForm.khid = ""
|
||||
}
|
||||
})
|
||||
},
|
||||
async khSearch() {
|
||||
await this.getKh()
|
||||
},
|
||||
getSummaries(param) {
|
||||
const {columns, data} = param;
|
||||
const sums = [];
|
||||
columns.forEach((column, index) => {
|
||||
if (index === 0) {
|
||||
sums[index] = '小计';
|
||||
return;
|
||||
} else if ([1, 4, 5, 6, 7].includes(index)) {
|
||||
sums[index] = '';
|
||||
return;
|
||||
}
|
||||
const values = data.map(item => Number(item[column.property]));
|
||||
if (!values.every(value => isNaN(value))) {
|
||||
sums[index] = values.reduce((prev, curr) => {
|
||||
const value = Number(curr);
|
||||
if (!isNaN(value)) {
|
||||
return prev + curr;
|
||||
} else {
|
||||
return prev;
|
||||
}
|
||||
}, 0);
|
||||
sums[index] += ' 分';
|
||||
} else {
|
||||
sums[index] = '';
|
||||
}
|
||||
});
|
||||
return sums;
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getZbList()
|
||||
if (!this.data || !Object.keys(this.data).length) {
|
||||
this.data = {
|
||||
nrs: [{
|
||||
bzs: [{}]
|
||||
}],
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.fixedBox {
|
||||
position: fixed;
|
||||
top: 200px;
|
||||
right: 10px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.el-divider {
|
||||
background-color: #409EFF;
|
||||
}
|
||||
|
||||
.el_form {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,131 @@
|
||||
<template>
|
||||
<el-tabs v-model="activeName">
|
||||
<el-tab-pane label="申报信息" name="1">
|
||||
<el-form ref="AddForm"
|
||||
class="applyForm"
|
||||
label-width="0">
|
||||
<el-descriptions border class="descriptions-form">
|
||||
<el-descriptions-item label="立项类别" :span="3">
|
||||
{{projectList.find(v=>v.id===formData.manageId)?.manageName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="项目名称" :span="3">
|
||||
{{formData.projectName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申报单位">
|
||||
{{formData.applyUnitName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="联合单位" :span="2">
|
||||
{{ formData.jointUnit }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="项目负责人">
|
||||
{{formData.headName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="联系电话">
|
||||
{{formData.mobile}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label=""></el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="参与人数">
|
||||
{{formData.numberPeople}}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="活动开始时间">
|
||||
{{moment(formData.startDate).format('YYYY-MM-DD')}}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="活动结束时间">
|
||||
{{moment(formData.endDate).format('YYYY-MM-DD')}}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="活动项目" :span="3"
|
||||
v-if="formData.manageId==='8afa276f6580476db61c2cdc03be62ef'">
|
||||
{{typeList.find(v=>v.id === formData.typeId)?.typeName}}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="活动方案" :span="3">
|
||||
<div v-html="formData.programme"></div>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="经费预算" :span="3">
|
||||
<div v-html="formData.budget"></div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="分工会审核信息" name="2" v-if="formData.fghFzr">
|
||||
<el-descriptions border class="descriptions-form" :column="2">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{formData.fghFzr}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{formData.fghTime}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间" :span="2">
|
||||
{{formData.fghOption}}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="校工会审核信息" name="3" v-if="formData.xghFzr">
|
||||
<el-descriptions border class="descriptions-form" :column="2">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{formData.xghFzr}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{formData.xghTime}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间" :span="2">
|
||||
{{formData.xghOption}}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
<slot></slot>
|
||||
</el-tabs>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
data() {
|
||||
return {
|
||||
activeName: '1',
|
||||
formData: [],
|
||||
projectList: [],
|
||||
typeList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init() {
|
||||
this.getProjectList().then(res => {
|
||||
this.projectList = res
|
||||
})
|
||||
this.getAllType().then(res => {
|
||||
this.typeList = res
|
||||
})
|
||||
},
|
||||
|
||||
async openView(id) {
|
||||
const {data} = await $.post("/platform/leadThought/apply/findOne", {id: id})
|
||||
this.formData = data
|
||||
// this.activeName = '1'
|
||||
},
|
||||
async openAudit(id, activeName) {
|
||||
const {data} = await $.post("/platform/leadThought/apply/findOne", {id: id})
|
||||
this.formData = data
|
||||
this.activeName = activeName
|
||||
},
|
||||
async getProjectList() {
|
||||
const resp = await $.get('/platform/leadThought/manage/getProjectList')
|
||||
return resp.data
|
||||
},
|
||||
async getAllType() {
|
||||
const resp = await $.get('/platform/leadThought/type/findAllType')
|
||||
return resp.data
|
||||
},
|
||||
|
||||
},
|
||||
created() {
|
||||
this.init()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,191 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-tabs v-model="tabActive">
|
||||
<el-tab-pane label="申请信息" name="1">
|
||||
<el-descriptions border class="descriptions-form">
|
||||
<el-descriptions-item label="姓名">
|
||||
{{ applyData.userName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="工号">
|
||||
{{ applyData.loginName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">
|
||||
{{ applyData.sex }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="单位">
|
||||
{{ applyData.unitName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="分工会">
|
||||
{{ applyData.unionName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="联系电话">
|
||||
{{ applyData.mobile }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="出生年月">
|
||||
{{ moment(applyData.birthday).format('YYYY-MM-DD') }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="家庭住址">
|
||||
{{ applyData.homeAddress }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="本人月收入(元)">
|
||||
{{ applyData.monthIncome }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="家庭成员经济收入" :span="3">
|
||||
<el-table :data="applyData.familyIncome" border>
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="年龄" prop="age"></el-table-column>
|
||||
<el-table-column label="关系" prop="relation"></el-table-column>
|
||||
<el-table-column label="工作单位" prop="workUnit"></el-table-column>
|
||||
<el-table-column label="收入" prop="monthIncome"></el-table-column>
|
||||
</el-table>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="申请原因" :span="3">
|
||||
{{ applyData.applyReason }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="备注" :span="3">
|
||||
{{ applyData.notes }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="附件" :span="3">
|
||||
<file-upload v-if="applyData.files&&applyData.files.length"
|
||||
:files="applyData.files"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="签字" :span="3">
|
||||
<el-image v-if="applyData.applySign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="applyData.applySign.data"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
|
||||
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="分工会审核信息" name="2" v-if="applyData.unionAudit">
|
||||
<el-descriptions border class="descriptions-form" :column="2">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ applyData.unionAudit.username }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ applyData.unionAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="审核意见" :span="2">
|
||||
{{ applyData.unionAudit.auditOpinion ? applyData.unionAudit.auditOpinion : '暂无' }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="签字" :span="2">
|
||||
<el-image v-if="applyData.unionAudit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="applyData.unionAudit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会财务审核信息" name="3" v-if="applyData.schoolManagerAudit">
|
||||
<el-descriptions border class="descriptions-form" :column="2">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ applyData.schoolManagerAudit.username }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ applyData.schoolManagerAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="补助金额">
|
||||
{{ applyData.subsidyMoney ? applyData.subsidyMoney : '暂无' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="审核意见" :span="2">
|
||||
{{
|
||||
applyData.schoolManagerAudit.auditOpinion ? applyData.schoolManagerAudit.auditOpinion : '暂无'
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="签字" :span="2">
|
||||
<el-image v-if="applyData.schoolManagerAudit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="applyData.schoolManagerAudit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会主席审核信息" name="4" v-if="applyData.schoolAudit">
|
||||
<el-descriptions border class="descriptions-form" :column="2">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ applyData.schoolAudit.username }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ applyData.schoolAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="审核意见" :span="2">
|
||||
{{
|
||||
applyData.schoolAudit.auditOpinion ? applyData.schoolAudit.auditOpinion : '暂无'
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="签字" :span="2">
|
||||
<el-image v-if="applyData.schoolAudit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="applyData.schoolAudit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<slot></slot>
|
||||
|
||||
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "loveSubsidy",
|
||||
dicts: ['auditType'],
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
tabActive: '1',
|
||||
applyData: {},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getApplyInfo(id) {
|
||||
if (id) {
|
||||
const resp = await $.post('/platform/loveSubsidy/userApply/findOne', {id})
|
||||
this.applyData = resp.data
|
||||
}
|
||||
},
|
||||
},
|
||||
created() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.disabled-group .el-checkbox {
|
||||
pointer-events: none;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,133 @@
|
||||
<template>
|
||||
|
||||
<div>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading">
|
||||
<el-tab-pane label="投稿信息" name="1">
|
||||
<el-descriptions class="margin-top" :column="3" size="medium " border>
|
||||
<el-descriptions-item label="投稿人">
|
||||
{{ viewData.username }}({{ viewData.loginname }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="投稿人单位">
|
||||
{{ viewData.unitname }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="投稿人工会">
|
||||
{{ viewData.unionname }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="稿件名称">
|
||||
{{ viewData.manuscriptName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="稿件类型">
|
||||
{{ viewData.manuscriptTypeName }}( {{ viewData.manuscriptCode }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="投稿类型">
|
||||
{{ viewData.type == 1 ? '协会投稿' : viewData.type == 2 ? '分工会投稿' : '校工会投稿' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="说明">
|
||||
{{ viewData.remark }}
|
||||
</el-descriptions-item>
|
||||
|
||||
|
||||
</el-descriptions>
|
||||
<el-descriptions class="margin-top" size="medium " border>
|
||||
<el-descriptions-item label="新闻稿件">
|
||||
<file-upload v-if="viewData.files&&viewData.files.length"
|
||||
:files="viewData.files"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="分工会审核信息" name="2" v-if="viewData.union_audit&&viewData.union_audit.length>0">
|
||||
|
||||
<el-descriptions border :column="2">
|
||||
<template v-for="(o,i) in viewData.unionAudit">
|
||||
<el-descriptions-item label="审核人">{{ o.username + '-' + o.loginname }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" span="4">{{ o.auditOpinion }}</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会审核信息" name="3" v-if="viewData.school_union_audit&&viewData.school_union_audit.length>0">
|
||||
|
||||
<el-descriptions border :column="2">
|
||||
<template v-for="(o,i) in viewData.schoolAudit">
|
||||
<el-descriptions-item label="审核人">{{ o.username + '-' + o.loginname }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" span="4">{{ o.auditOpinion }}</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
size: '',
|
||||
activeName: "1",
|
||||
viewData: {},
|
||||
loading: true,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
this.loading = true
|
||||
const {data, code, msg} = await $.get("/platform/manuscript/apply/findOne", {id})
|
||||
this.loading = false
|
||||
if (data) {
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
this.viewData = data
|
||||
console.log(data)
|
||||
if (this.viewData.files && this.viewData.files.length > 0) {
|
||||
this.viewData.files = JSON.parse(data.files)
|
||||
}
|
||||
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$message({
|
||||
message: "获取信息失败",
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.el-descriptions .is-bordered {
|
||||
table-layout: fixed;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,139 @@
|
||||
/**
|
||||
*Desc:
|
||||
*Create by: jug
|
||||
*Create time:2024/1/17/17:19
|
||||
*/
|
||||
<template>
|
||||
<div>
|
||||
<el-tabs v-model="tabActive">
|
||||
<el-tab-pane label="申请信息" name="1">
|
||||
<el-descriptions border class="descriptions-form">
|
||||
<el-descriptions-item label="姓名">
|
||||
{{ applyData.userName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="工号">
|
||||
{{ applyData.loginName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">
|
||||
{{ applyData.sex }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="单位">
|
||||
{{ applyData.unitName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="分工会">
|
||||
{{ applyData.unionName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="联系电话">
|
||||
{{ applyData.mobile }}
|
||||
</el-descriptions-item>
|
||||
|
||||
|
||||
<el-descriptions-item label="出生年月">
|
||||
{{ applyData.birthday }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="家庭住址">
|
||||
{{ applyData.homeAddress }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="疾病类别">
|
||||
{{ applyData.diseaseCategory }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="医疗总金额">
|
||||
{{ applyData.totalMedicalAmount }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="个人现金支付金额">
|
||||
{{ applyData.selfPaymentAmount }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="单据(张)">
|
||||
{{ applyData.documentNum }}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="处方(张)">-->
|
||||
<!-- {{ applyData.prescriptionNum }}-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
<!-- <el-descriptions-item label="病历(本)">-->
|
||||
<!-- {{ applyData.medicalRecordNum }}-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
|
||||
<el-descriptions-item label="家庭收入" :span="3">
|
||||
<el-table :data="applyData.familyIncome" border>
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="年龄" prop="age"></el-table-column>
|
||||
<el-table-column label="关系" prop="relation"></el-table-column>
|
||||
<el-table-column label="工作单位" prop="workUnit"></el-table-column>
|
||||
<el-table-column label="年收入" prop="annualIncome"></el-table-column>
|
||||
</el-table>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="申请补助原因" :span="3">
|
||||
{{ applyData.applyReason }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="分工会审核信息" name="2" v-if="applyData.branchUnionAudit">
|
||||
<el-descriptions border class="descriptions-form" :column="2">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ applyData.branchUnionAudit.username }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ applyData.branchUnionAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<!-- <el-descriptions-item label="审核结果">-->
|
||||
<!-- <dict-tag :options="dict.type.auditType" :value="applyData.branchUnionAudit.auditType"></dict-tag>-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
|
||||
<el-descriptions-item label="审核意见">
|
||||
{{ applyData.branchUnionAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校医院审核信息" name="3" v-if="applyData.confirmSelfPaymentAmount && applyData.diseaseType">
|
||||
<el-descriptions border class="descriptions-form" :column="2">
|
||||
<el-descriptions-item label="核定个人现金支付金额">
|
||||
{{ applyData.confirmSelfPaymentAmount }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="核定病种">
|
||||
{{ applyData.diseaseType }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
<slot></slot>
|
||||
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "medicalMutualAidFund",
|
||||
dicts: ['auditType'],
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
tabActive: '1',
|
||||
applyData: {},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getApplyInfo(id) {
|
||||
if (id) {
|
||||
const resp = await $.post('/platform/medicalMutualAidFund/apply/findOne', {id})
|
||||
this.applyData = resp.data
|
||||
}
|
||||
},
|
||||
},
|
||||
created() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.disabled-group .el-checkbox {
|
||||
pointer-events: none;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,369 @@
|
||||
<template>
|
||||
<div style="display: flex;align-items: center;justify-content: center">
|
||||
<el-form :model="formData" ref="form" :rules="formRules" v-loading="loading" label-width="170px"
|
||||
style="width: 1000px">
|
||||
|
||||
<vi-title title="申请变更"></vi-title>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工  号">
|
||||
<el-input :value="formData.loginname" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓  名">
|
||||
<el-input :value="formData.username" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所在单位">
|
||||
<el-input :value="formData.unitname" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所在工会">
|
||||
<el-input :value="formData.unionname"
|
||||
disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="变更时间">
|
||||
<el-input :value="formData.auditTime" disabled></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="type" label="变更类型">
|
||||
<!-- <dict-select v-model="formData.type" style="width: 100%" clearable placeholder="变更类型"-->
|
||||
<!-- code="MemberChangeType" @change="typeChange"></dict-select>-->
|
||||
<el-select v-model="formData.type" style="width: 100%" clearable placeholder="变更类型" @change="typeChange">
|
||||
<el-option v-for="item in userChangeTypeList" :label="item.name" :value="item.code" :key="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<!--异动-->
|
||||
<div v-if="formData.type==='1'">
|
||||
<el-form-item prop="type" label="新 单 位">
|
||||
<el-select v-model="formData.currentUnitId" style="width: 100%" filterable clearable
|
||||
@change="unitChange"
|
||||
placeholder="请选择单位">
|
||||
<el-option
|
||||
v-for="item in unitOptions"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="type" label="新 工 会">
|
||||
<el-input :value="formData.currentUnionName" disabled placeholder=""></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-row :gutter="20" v-if="isThreeUnit">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="新科室" prop="currentThreeUnitId">
|
||||
<el-select v-model="formData.currentThreeUnitId" clearable filterable
|
||||
placeholder="请选择新科室"
|
||||
@change="threeUnitChange"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in threeUnits"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工会小组">
|
||||
<el-input :value="formData.currentUnionGroupName" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
|
||||
<div v-else-if="welfare_member&&['2'].includes(formData.type)">
|
||||
<el-form-item prop="updateWelfareMember" label="福利会员">
|
||||
<el-radio-group v-model="formData.updateWelfareMember" size="small">
|
||||
<el-radio :label="true" border>享受福利</el-radio>
|
||||
<el-radio :label="false" border>不享受福利</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item prop="insertMember" label="工会会员">
|
||||
<el-radio-group v-model="formData.insertMember" size="small">
|
||||
<el-radio :label="true" border>成为会员</el-radio>
|
||||
<el-radio :label="false" border>不成为会员</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div v-else-if="welfare_member&&['7'].includes(formData.type)">
|
||||
<el-form-item prop="updateWelfareMember" label="福利会员">
|
||||
<el-radio-group v-model="formData.updateWelfareMember" size="small">
|
||||
<el-radio :label="true" border>享受福利</el-radio>
|
||||
<el-radio :label="false" border>不享受福利</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div v-else-if="welfare_member&&['3','4','5','6','8'].includes(formData.type)">
|
||||
<el-form-item prop="updateWelfare" label="福利会员">
|
||||
<el-radio-group v-model="formData.updateWelfare" size="small">
|
||||
<el-radio :label="true" border>取消享受福利</el-radio>
|
||||
<el-radio :label="false" border>保留享受福利</el-radio>
|
||||
</el-radio-group>
|
||||
<!-- <span style="color: red">   温馨提醒:此操作将取消该教工正式会员资格</span>-->
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="updateMember" label="工会会员">
|
||||
<el-radio-group v-model="formData.updateMember" size="small">
|
||||
<el-radio :label="true" border>取消会员资格</el-radio>
|
||||
<el-radio :label="false" border>保留会员资格</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="updateUserState" label="是否改变在职状态" style="width: 100%"
|
||||
v-if="welfare_member&&['3','4','5','6','8'].includes(formData.type)">
|
||||
<dict-select v-model="formData.userState" style="width: 100%" clearable placeholder="变更类型"
|
||||
code="userState"></dict-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="updateUserState" label="是否改变人员类型" style="width: 100%"
|
||||
v-if="welfare_member&&['3','4','5','6','8'].includes(formData.type)">
|
||||
<dict-select v-model="formData.personType" style="width: 100%" clearable
|
||||
placeholder="人员类型"
|
||||
code="UserType"></dict-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
|
||||
<div v-else-if="formData.type==='10'">
|
||||
<el-form-item prop="oldIdCard" label="原身份证号" style="width: 100%">
|
||||
<el-input v-model="formData.oldIdCard" readonly type="text"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="idCard" label="新的身份证号" style="width: 100%">
|
||||
<el-input v-model="formData.idCard" placeholder="请输入新的身份证号" type="text"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div v-else-if="formData.type==='11'">
|
||||
<el-form-item prop="oldMobile" label="原手机号码" style="width: 100%">
|
||||
<el-input v-model="formData.oldMobile" readonly type="text"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="mobile" label="新的手机号码" style="width: 100%">
|
||||
<el-input v-model="formData.mobile" placeholder="请输入新的手机号码" type="text"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div v-else-if="formData.type==='12'">
|
||||
<el-form-item prop="oldEducation" label="原学历" style="width: 100%">
|
||||
<el-input v-model="formData.oldEducation" readonly type="text"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="education" label="新的学历" style="width: 100%">
|
||||
<dict-select v-model="formData.education" style="width: 100%" clearable placeholder="请选择新的学历"
|
||||
code="Education"></dict-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<!-- <div v-else-if="welfare_member&&['2','7'].includes(formData.type)">
|
||||
<el-form-item prop="updateWelfareMember" label="是否享受福利">
|
||||
<el-switch
|
||||
v-model="formData.updateWelfareMember"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949">
|
||||
</el-switch>
|
||||
<span style="color: red">   温馨提醒:此操作将该教工设为正式会员</span>
|
||||
</el-form-item>
|
||||
</div>-->
|
||||
|
||||
<el-form-item prop="remark" label="变化原因">
|
||||
<el-input v-model="formData.remark" placeholder="变化原因" type="textarea" :rows="4"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-row style="display: flex;justify-content:flex-end;">
|
||||
<el-button @click="doSubmit" :loading="submitLoading" :disabled="disabled" type="primary">
|
||||
提交
|
||||
</el-button>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
components: {
|
||||
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
|
||||
},
|
||||
props: {
|
||||
userid: {type: String},
|
||||
welfare_member: {type: Boolean, default: true},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: true,
|
||||
disabled: false,
|
||||
submitLoading: false,
|
||||
|
||||
formData: {},
|
||||
formRules: {
|
||||
type: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
updateWelfareMember: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
updateMember: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
updateWelfare: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
currentUnitId: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
currentThreeUnitId: [{required: true, message: '请选择新三级单位', trigger: 'change'}],
|
||||
idCard: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
mobile: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
education: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
insertMember: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
},
|
||||
|
||||
unitOptions: [],
|
||||
threeUnits: [],
|
||||
isThreeUnit: false,
|
||||
|
||||
userChangeTypeList:[],
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
userid(val) {
|
||||
this.flush()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
typeChange() {
|
||||
this.$set(this.formData, "updateWelfareMember", ['2','7'].includes(this.formData.type))
|
||||
this.$set(this.formData, "updateWelfare", ['2', '3', '4', '5', '6', '8'].includes(this.formData.type))
|
||||
this.$set(this.formData, "updateMember", ['2', '3', '4', '5', '6', '8'].includes(this.formData.type))
|
||||
this.$set(this.formData, "insertMember", ['2'].includes(this.formData.type))
|
||||
},
|
||||
async doSubmit() {
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
this.submitLoading = true
|
||||
this.$emit("submit", this.formData)
|
||||
}
|
||||
})
|
||||
},
|
||||
closeLoading() {
|
||||
this.submitLoading = false
|
||||
},
|
||||
|
||||
unitChange(v) {
|
||||
// const unit = this.unitOptions.find(x => x.id === v)
|
||||
// if (unit) {
|
||||
// this.formData.currentUnionId = unit.unionid
|
||||
// this.formData.currentUnionName = unit.unionname
|
||||
// } else {
|
||||
// this.formData.currentUnionId = ''
|
||||
// this.formData.currentUnionName = ''
|
||||
// }
|
||||
|
||||
this.$set(this.formData, 'currentThreeUnitId', null)
|
||||
this.$set(this.formData, 'currentUnionGroupName', null)
|
||||
this.threeUnits = []
|
||||
if (v) {
|
||||
this.getThreeUnits(v)
|
||||
}
|
||||
const unit = this.unitOptions.find(x => x.id === v)
|
||||
if (unit) {
|
||||
this.$set(this.formData, 'currentUnionId', unit.unionid)
|
||||
this.$set(this.formData, 'currentUnionName', unit.unionname)
|
||||
} else {
|
||||
this.$set(this.formData, 'currentUnionId', null)
|
||||
this.$set(this.formData, 'currentUnionName', null)
|
||||
}
|
||||
},
|
||||
|
||||
async getThreeUnits(val) {
|
||||
this.threeUnits = await threeUnitsByUnionGroupOrUnitId(val, null)
|
||||
},
|
||||
async threeUnitChange(val) {
|
||||
if (val) {
|
||||
const threeUnit = this.threeUnits.find(v => v.id === val)
|
||||
const groupName = threeUnit.groupname
|
||||
this.$set(this.formData, 'currentUnionGroupName', groupName)
|
||||
} else {
|
||||
this.$set(this.formData, 'currentUnionGroupName', null)
|
||||
}
|
||||
},
|
||||
|
||||
async flush() {
|
||||
this.loading = true
|
||||
this.disabled = false
|
||||
|
||||
if (!this.userid) {
|
||||
this.formData = {}
|
||||
this.loading = false
|
||||
this.disabled = true
|
||||
return
|
||||
}
|
||||
const resp = await $.get("/platform/member/common/userInfo", {userId: this.userid})
|
||||
if (resp.code === 0) {
|
||||
if (this.$refs["form"])
|
||||
this.$refs["form"].resetFields();
|
||||
|
||||
this.formData = {
|
||||
userId: resp.data.id,
|
||||
loginname: resp.data.loginname,
|
||||
username: resp.data.username,
|
||||
unitname: resp.data.unitname,
|
||||
unionname: resp.data.unionname,
|
||||
originUnitId: resp.data.unitid,
|
||||
originThreeUnitId: resp.data.threeUnitId,
|
||||
originUnionId: resp.data.unionid,
|
||||
userState: resp.data.userState,
|
||||
personType: resp.data.personType,
|
||||
auditTime: moment().format('YYYY-MM-DD'),
|
||||
notes: null,
|
||||
oldIdCard:resp.data.idcard,
|
||||
oldMobile:resp.data.mobile,
|
||||
oldEducation:resp.data.education
|
||||
}
|
||||
this.disabled = false
|
||||
} else {
|
||||
this.disabled = true
|
||||
this.$notify.error({
|
||||
title: '错误',
|
||||
message: '获取用户信息失败'
|
||||
});
|
||||
}
|
||||
this.loading = false
|
||||
},
|
||||
async getUnits() {
|
||||
const resp = await $.post('/platform/member/change/mange/units')
|
||||
if (resp.code === 0) {
|
||||
this.unitOptions = resp.data
|
||||
}
|
||||
},
|
||||
async getUserChangeType(){
|
||||
const resp = await $.get('/platform/member/common/getUserChangType')
|
||||
if (resp.code === 0){
|
||||
this.userChangeTypeList = resp.data
|
||||
}
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
|
||||
await this.getUnits()
|
||||
await this.flush()
|
||||
await this.getUserChangeType()
|
||||
// getUnits(null).then(res => this.unitOptions = res)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.is-flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.is-flex .el-form-item {
|
||||
width: 50%;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,239 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-table :data="records" style="width: 100%" row-key="id"
|
||||
@expand-change="onExpand">
|
||||
<el-table-column type="expand">
|
||||
<template slot-scope="{row}">
|
||||
<el-form class="demo-table-expand" v-loading="row.loading"
|
||||
label-position="right" label-suffix=":" label-width="120px">
|
||||
|
||||
<vi-title title="变更信息"></vi-title>
|
||||
|
||||
<el-form-item label="变更原因">
|
||||
{{ row.remark }}
|
||||
</el-form-item>
|
||||
|
||||
<!--异动-->
|
||||
<template v-if="row.type==1">
|
||||
|
||||
<vi-title title="异动信息"></vi-title>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="原科室" v-if="isThreeUnit">
|
||||
<span>{{ row.originThreeUnitName }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="原单位">
|
||||
<span>{{ row.originUnitName }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="原工会">
|
||||
<span>{{ row.originUnionName }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8" v-if="isThreeUnit">
|
||||
<el-form-item label="新科室">
|
||||
<span>{{ row.currentThreeUnitName }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="新单位">
|
||||
<span>{{ row.currentUnitName }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="新工会">
|
||||
<span>{{ row.currentUnionName }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<template v-if="audit_info_union&&row.info.unionAudit">
|
||||
<vi-title title="基层工会审核信息"></vi-title>
|
||||
|
||||
<el-row :gutter="20" v-if="row.info&&row.info.unionAudit">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
<span>{{ row.info.unionAudit.username }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
<span>{{ row.info.unionAudit.auditTime }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
<span>{{ row.info.unionAudit.auditOpinion }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row v-else type="flex" justify="center">
|
||||
<el-form-item label="暂无审核信息">
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<template v-if="audit_info_school&&row.info.schoolAudit">
|
||||
<vi-title title="校工会审核信息"></vi-title>
|
||||
|
||||
<el-row :gutter="20" v-if="row.info&&row.info.schoolAudit">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
<span>{{ row.info.schoolAudit.username }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
<span>{{ row.info.schoolAudit.auditTime }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
<span>{{ row.info.schoolAudit.auditOpinion }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row v-else type="flex" justify="center">
|
||||
<el-form-item label="暂无审核信息">
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
</el-form>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="序号"
|
||||
type="index"></el-table-column>
|
||||
|
||||
<el-table-column label="申请人" prop="username" header-align="center"
|
||||
align="center"></el-table-column>
|
||||
|
||||
<el-table-column label="申请时间" prop="applyTime" header-align="center"
|
||||
align="center"></el-table-column>
|
||||
|
||||
<el-table-column label="申请方式" prop="type" header-align="center"
|
||||
align="center">
|
||||
<template scope="{row:{applyOrigin}}">
|
||||
{{ changeOrigin[applyOrigin] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="变更类型" prop="type" header-align="center"
|
||||
align="center">
|
||||
<template scope="{row:{type}}">
|
||||
{{ changeType[type] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="状态" prop="stateId" header-align="center"
|
||||
align="center">
|
||||
<template scope="{row}">
|
||||
<span :style="'color:'+row.stateColor">{{ row.stateName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
components: {},
|
||||
props: {
|
||||
records: {type: Array, default: []},
|
||||
userid: {type: String},
|
||||
audit_info_union: {type: Boolean, default: true},
|
||||
audit_info_school: {type: Boolean, default: true}
|
||||
},
|
||||
model: {
|
||||
prop: 'records',
|
||||
event: 'change'
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isThreeUnit: false,
|
||||
loading: true,
|
||||
changeType: {},
|
||||
changeOrigin: {},
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
userid(val) {
|
||||
this.getMemberChangeRecords()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
async onExpand(row, expandedRows) {
|
||||
if (!expandedRows.includes(row)) {
|
||||
return
|
||||
}
|
||||
|
||||
this.$set(row, "loading", true)
|
||||
const resp = await $.get("/platform/member/common/findChangeApplyInfo", {id: row.id})
|
||||
this.$set(row, "loading", false)
|
||||
|
||||
if (resp.code === 0) {
|
||||
this.$set(row, "info", resp.data)
|
||||
} else {
|
||||
this.$set(row, "info", {})
|
||||
}
|
||||
},
|
||||
|
||||
async getMemberChangeRecords() {
|
||||
this.loading = true
|
||||
|
||||
if (!this.userid && this.records.length) {
|
||||
this.loading = false
|
||||
return
|
||||
} else if (!this.userid) {
|
||||
this.records = []
|
||||
this.loading = false
|
||||
return
|
||||
}
|
||||
|
||||
const resp = await $.get("/platform/member/common/memberChangeRecords", {userId: this.userid})
|
||||
this.loading = false
|
||||
if (resp.code === 0) {
|
||||
this.records = resp.data
|
||||
} else {
|
||||
this.$notify.error({
|
||||
title: '错误',
|
||||
message: '获取变更记录失败'
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
|
||||
this.getMemberChangeRecords()
|
||||
|
||||
|
||||
this.changeType = await member.getChangeType()
|
||||
this.changeOrigin = await member.getChangeOrigin()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.is-flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.is-flex .el-form-item {
|
||||
width: 50%;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
*Desc:
|
||||
*Create by: jug
|
||||
*Create time:2023/6/8/10:29
|
||||
*/
|
||||
<template>
|
||||
<div>
|
||||
<el-input v-model="cnd.memberSearchKeyWord" placeholder="请输入值" style="width: 100%">
|
||||
<el-select v-model="cnd.memberSearchName" slot="prepend" placeholder="请选择字段" style="width: 120px">
|
||||
<el-option
|
||||
v-for="column in columnInfos"
|
||||
:key="column.COLUMN_NAME"
|
||||
:label="column.COLUMN_COMMENT"
|
||||
:value="column.COLUMN_NAME">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "MemberCnd",
|
||||
props: {},
|
||||
components: {'enum-select': httpVueLoader('/components/plugins/EnumSelect.vue?v=1.0.0'),},
|
||||
data() {
|
||||
return {
|
||||
columnInfos: [],
|
||||
cnd: {}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
cnd: {
|
||||
handler(val) {
|
||||
this.$emit('cnd', val)
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getColumnInfo() {
|
||||
const {data, msg, code} = await $.post('/platform/activity/basic/scope/getUserTableColumnInfo')
|
||||
if (code !== 0) {
|
||||
this.$notify.warning(msg)
|
||||
return
|
||||
}
|
||||
this.columnInfos = data
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getColumnInfo()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,993 @@
|
||||
<template>
|
||||
<div>
|
||||
<div v-if="!view">
|
||||
<el-form :model="formData" ref="form" :rules="formRules" label-width="120px" v-loading="loading"
|
||||
:disabled="!isAllowModify">
|
||||
<el-tabs v-model="activeName" type="card">
|
||||
|
||||
<el-tab-pane label="基本信息" :name="1">
|
||||
<vi-title title="基本资料"></vi-title>
|
||||
|
||||
<el-form-item prop="loginname" label="工  号">
|
||||
<el-input v-model="formData.loginname" placeholder="工号"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="unitid" label="所属单位">
|
||||
<el-select placeholder="所属单位"
|
||||
style="width: 100%"
|
||||
filterable @change="unitChange"
|
||||
v-model="formData.unitid">
|
||||
<el-option v-for="unit in unitOptions" :key="unit.id" :value="unit.id" :label="unit.name"></el-option>
|
||||
</el-select>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="unionid" label="所属工会">
|
||||
<el-input :value="formData.unionname" readonly></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<el-row :gutter="10" v-if="displayUnionGroup">
|
||||
<el-col :xs="24" :lg="12">
|
||||
<el-form-item label="所属三级单位" prop="deptId">
|
||||
<el-select v-model="formData.threeUnitId"
|
||||
filterable
|
||||
placeholder="所属三级单位"
|
||||
style="width: 100%"
|
||||
@change="threeUnitChange">
|
||||
<el-option
|
||||
v-for="item in threeUnits"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :lg="12">
|
||||
<el-form-item label="工会小组">
|
||||
<el-input :value="formData.unionGroupName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="username" label="姓  名">
|
||||
<el-input v-model="formData.username" placeholder="姓名"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="nameUsedBefore" label="曾 用 名">
|
||||
<el-input maxlength="100" placeholder="曾用名"
|
||||
v-model="formData.nameUsedBefore"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="birthday" label="出生日期">
|
||||
<el-date-picker style="width: 100%" v-model="formData.birthday" format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd" type="date" placeholder="出生日期"></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item prop="sex" label="性  别">
|
||||
<el-radio v-model="formData.sex" label="男" border size="small">男</el-radio>
|
||||
<el-radio v-model="formData.sex" label="女" border size="small">女</el-radio>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="birthday" label="出生地点">
|
||||
<el-input v-model="formData.birthPlace" placeholder="出生地点"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="婚  否">
|
||||
<el-radio-group v-model="formData.marriage" size="small">
|
||||
<el-radio label="已婚" border></el-radio>
|
||||
<el-radio label="未婚" border></el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
|
||||
<el-form-item prop="education" label="学  历">
|
||||
<dict-select v-model="formData.education" style="width: 100%" placeholder="请选择学历"
|
||||
code="Education"></dict-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="academicDegree" label="学  位">
|
||||
<dict-select v-model="formData.academicDegree" style="width: 100%" placeholder="请选择学位"
|
||||
code="academicDegree"></dict-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="nationality" label="国  籍">
|
||||
<el-input v-model="formData.nationality" placeholder="国籍"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="hometown" label="籍  贯">
|
||||
<el-input v-model="formData.hometown" placeholder="籍贯"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="nation" label="民  族">
|
||||
<el-select placeholder="民族" style="width: 100%" filterable v-model="formData.nation">
|
||||
<el-option v-for="nation in nationOptions" :key="nation" :value="nation" :label="nation"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="political" label="政治面貌">
|
||||
<el-input maxlength="100" placeholder="政治面貌" v-model="formData.political"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="jobTitle" label="职  称">
|
||||
<dict-select v-model="formData.jobTitle" style="width: 100%" placeholder="请选择职称"
|
||||
code="JobTitle"></dict-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="wage" label="工  资">
|
||||
<el-input v-model="formData.wage" placeholder="工资"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="mobile" label="手 机 号">
|
||||
<el-input maxlength="100" placeholder="手机号"
|
||||
v-model="formData.mobile"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="bank_number" label="银行账号">
|
||||
<el-input maxlength="100" placeholder="银行账号"
|
||||
v-model="formData.bank_number"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
|
||||
<el-form-item prop="userState" label="人员类型">
|
||||
<dict-select v-model="formData.personType" style="width: 100%" placeholder="请选择人员类型"
|
||||
code="UserType"></dict-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="userState" label="在职状态">
|
||||
<dict-select v-model="formData.userState" style="width: 100%" placeholder="请选择在职状态"
|
||||
code="UserState"></dict-select>
|
||||
</el-form-item>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="idType" label="有效证件类型">
|
||||
<dict-select
|
||||
v-model="formData.idType"
|
||||
placeholder="请选择有效证件类型"
|
||||
style="width: 100%"
|
||||
code="idType">
|
||||
</dict-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="idType" label="证件有效日期">
|
||||
<el-date-picker
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
v-model="formData.effectiveDate"
|
||||
type="daterange"
|
||||
range-separator="——"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
style="width: 100%">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="idcard" label="身份证号">
|
||||
<el-input v-model="formData.idcard" placeholder="身份证号"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="weChat" label="微 信 号">
|
||||
<el-input v-model="formData.weChat" placeholder="微信号"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item label="兴趣爱好">
|
||||
<el-input maxlength="255" placeholder="兴趣爱好" v-model="formData.hobby"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="qqnum" label="QQ号">
|
||||
<el-input maxlength="20" placeholder="QQ号" v-model="formData.qqnum"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="householdType" label="户籍类型">
|
||||
<dict-select
|
||||
v-model="formData.householdType"
|
||||
placeholder="请选择户籍类型"
|
||||
style="width: 100%"
|
||||
code="householdType">
|
||||
</dict-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="specialSkill" label="专  长">
|
||||
<el-input maxlength="100" placeholder="专长" v-model="formData.specialSkill"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="health" label="健康状况">
|
||||
<dict-select
|
||||
v-model="formData.health"
|
||||
placeholder="请选择健康状况"
|
||||
style="width: 100%"
|
||||
code="health">
|
||||
</dict-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="diseaseType" label="残疾类别">
|
||||
<dict-select
|
||||
v-model="formData.diseaseType"
|
||||
placeholder="请选择残疾类别"
|
||||
style="width: 100%"
|
||||
code="diseaseType">
|
||||
</dict-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<el-form-item label="疾病说明">
|
||||
<el-input type="textarea" v-model="formData.diseaseDescription"
|
||||
:autosize="{ minRows: 4}"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="照片上传">
|
||||
<el-upload
|
||||
:action="FILE_UPLOAD_ADDRESS"
|
||||
list-type="picture-card"
|
||||
:file-list="imageList"
|
||||
:class="{disabled:uploadDisabled}"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:limit="1"
|
||||
:on-remove="removeAvatarUpload"
|
||||
:before-upload="beforeAvatarUpload"
|
||||
:on-success="handleAvatarSuccess">
|
||||
<i class="el-icon-plus"></i>
|
||||
<div class="el-upload__tip" slot="tip" style="color: red">
|
||||
*只能上传jpg/png文件,且不超过2MB的一寸电子照片
|
||||
</div>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<!-- </el-form>-->
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="工作信息" :name="2">
|
||||
|
||||
<!-- <el-form :model="formData" ref="form" :rules="formRules" label-width="140px" v-loading="loading">-->
|
||||
|
||||
<vi-title title="工作信息"></vi-title>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="isOutsiders" label="是否外来务工人员">
|
||||
<el-radio-group v-model="formData.isOutsiders">
|
||||
<el-radio :label="true" border>是</el-radio>
|
||||
<el-radio :label="false" border>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="schoolTime" label="参加工作日期">
|
||||
<el-date-picker
|
||||
style="width: 100%;"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
v-model="formData.schoolTime"
|
||||
type="date"
|
||||
placeholder="选择参加工作日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="position" label="录用职位">
|
||||
<el-input maxlength="100" placeholder="录用职位" v-model="formData.position"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="majorCategory" label="所学专业类别">
|
||||
<el-input maxlength="50" placeholder="所学专业类别" v-model="formData.majorCategory"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="profession" label="从事专业">
|
||||
<el-input v-model="formData.profession" placeholder="从事专业"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="laborContractType" label="劳动合同制用工形式">
|
||||
<el-input v-model="formData.laborContractType" placeholder="劳动合同制用工形式"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="occupationType" label="职业类别">
|
||||
<el-input v-model="formData.occupationType" placeholder="职业类别"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
|
||||
<el-form-item prop="notes" label="注  释">
|
||||
<el-input type="textarea" v-model="formData.notes" placeholder="注释"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="vita" label="个人简历">
|
||||
<div id="vitaEditor"></div>
|
||||
</el-form-item>
|
||||
<!-- </el-form>-->
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="会员信息" :name="3">
|
||||
<!-- <el-form :model="formData" ref="form" :rules="formRules" label-width="160px" v-loading="loading">-->
|
||||
<vi-title title="会员信息"></vi-title>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="memberJoinTime" label="入会日期">
|
||||
<el-date-picker style="width: 100%" v-model="formData.memberJoinTime" format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd" type="date" placeholder="入会日期"></el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="memberNumber" label="会 员 号">
|
||||
<el-input v-model="formData.memberNumber" placeholder="会员号"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="awardWinning" label="工会特殊项标识">
|
||||
<dict-select
|
||||
v-model="formData.awardWinning"
|
||||
placeholder="请选择工会特殊项标识"
|
||||
style="width: 100%"
|
||||
code="awardWinning">
|
||||
</dict-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="membershipCardType" label="会员卡类型">
|
||||
<el-input v-model="formData.membershipCardType" placeholder="会员卡类型"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="isLeader" label="是否工会干部">
|
||||
<el-radio-group v-model="formData.isLeader">
|
||||
<el-radio :label="true" border>是</el-radio>
|
||||
<el-radio :label="false" border>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="isPay" label="是否缴纳会费">
|
||||
<el-radio-group v-model="formData.isPay">
|
||||
<el-radio :label="true" border>是</el-radio>
|
||||
<el-radio :label="false" border>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="isPhysicaisCard" label="是否办理工会实体卡">
|
||||
<el-radio-group v-model="formData.isPhysicaisCard">
|
||||
<el-radio :label="true" border>是</el-radio>
|
||||
<el-radio :label="false" border>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="isCardActivated" label="工会实体卡是否激活">
|
||||
<el-radio-group v-model="formData.isCardActivated">
|
||||
<el-radio :label="true" border>是</el-radio>
|
||||
<el-radio :label="false" border>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="cardNum" label="工会实体卡卡号">
|
||||
<el-input v-model="formData.cardNum" placeholder="工会实体卡卡号"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="cardBankNum" label="工会实体卡银行卡号">
|
||||
<el-input v-model="formData.cardBankNum" placeholder="工会实体卡银行卡卡号"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="electronicCardNumber" label="电子会员卡卡号">
|
||||
<el-input v-model="formData.electronicCardNumber" placeholder="电子会员卡卡号"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="electronicCardNumberTime" label="电子会员卡发放时间">
|
||||
<el-date-picker
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
v-model="formData.electronicCardNumberTime"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
style="width: 100%">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<!-- </el-form>-->
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="家庭及社会信息" :name="4">
|
||||
<!-- <el-form :model="formData" ref="form" :rules="formRules" label-width="120px" v-loading="loading">-->
|
||||
|
||||
<vi-title title="家庭及社会信息"></vi-title>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="personalStatus" label="个人身份">
|
||||
<el-input v-model="formData.personalStatus" placeholder="个人身份"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="socialIdentity" label="社会身份">
|
||||
<el-input v-model="formData.socialIdentity" placeholder="社会身份"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="otherIdentity" label="其他社会身份">
|
||||
<el-input v-model="formData.otherIdentity" placeholder="其他社会身份"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="employmentStatus" label="就业状况">
|
||||
<el-input v-model="formData.employmentStatus" placeholder="就业状况"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="homePhone" label="住宅电话">
|
||||
<el-input v-model="formData.homePhone" placeholder="住宅电话"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="otherPhone" label="其他电话">
|
||||
<el-input v-model="formData.otherPhone" placeholder="其他电话"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="homeAddress" label="家庭住址">
|
||||
<el-input v-model="formData.homeAddress" placeholder="家庭住址"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="mailingAddress" label="通信地址">
|
||||
<el-input v-model="formData.mailingAddress" placeholder="通信地址"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="otherContactInformation" label="其他联系方式">
|
||||
<el-input v-model="formData.otherContactInformation" placeholder="其他联系方式"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="registeredResidence" label="户籍所在地">
|
||||
<el-input v-model="formData.registeredResidence" placeholder="户籍所在地"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div class="is-flex">
|
||||
<el-form-item prop="postalCode" label="邮政编码">
|
||||
<el-input v-model="formData.postalCode" placeholder="邮政编码"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="familyPopulation" label="家庭人口数">
|
||||
<el-input v-model="formData.familyPopulation" placeholder="家庭人口数"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
</div>
|
||||
|
||||
<el-form-item label="家庭成员">
|
||||
<span style="color: red">(已结婚填配偶信息,未结婚填父母信息)</span>
|
||||
<el-button style="float: right;margin-bottom: 10px" icon="el-icon-plus" size="mini"
|
||||
@click="formData.family.push({})"> 添加成员
|
||||
</el-button>
|
||||
<el-table
|
||||
:data="formData.family"
|
||||
border
|
||||
size="mini"
|
||||
style="width: 100%">
|
||||
<el-table-column prop="relation" label="与本人关系" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-input placeholder="请输入与本人关系" maxlength="30" v-model="scope.row.relation"
|
||||
clearable></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="姓名" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-input placeholder="请输入姓名" maxlength="100" v-model="scope.row.name" clearable></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="unit" label="单位" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-input placeholder="请输入单位" maxlength="100" v-model="scope.row.unit" clearable></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-input placeholder="请输入备注" maxlength="100" v-model="scope.row.remark" clearable></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" width="100px" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="danger" icon="el-icon-delete" circle
|
||||
:disabled="formData.family.length===0"
|
||||
@click="formData.family.splice(scope.$index,1)"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
<!-- </el-form>-->
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-form>
|
||||
|
||||
|
||||
<el-button v-if="has_bottom_btn" @click="save" :loading="submitLoading" type="primary" style="float: right">提交
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<div v-else>
|
||||
<el-form label-width="100px" v-loading="loading" label-position="left" label-suffix=":">
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="18">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓  名">
|
||||
{{ formData.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="工  号">
|
||||
{{ formData.loginname }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="性  别">
|
||||
{{ formData.sex }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="所在科室">
|
||||
{{ formData.threeUnitName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="所在单位">
|
||||
{{ formData.unitname }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="所在工会">
|
||||
{{ formData.unionname }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="政治面貌">
|
||||
{{ formData.political }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="出生日期">
|
||||
{{ formData.birthday }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="籍  贯">
|
||||
{{ formData.hometown }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="民  族">
|
||||
{{ formData.nation }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-image :src="APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS + '?id=' +formData.avatar"
|
||||
style="width: 180px;height: 180px;display: flex;justify-content: center;align-items: center;background-color: #f5f7fa">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" style="font-size: 24px"></i>
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="兴趣爱好">
|
||||
{{ formData.hobby }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="婚  否">
|
||||
{{ formData.marriage }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="学  历">
|
||||
{{ formData.education }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="工  资">
|
||||
{{ formData.wage }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="人事编制">
|
||||
{{ formData.preparedBy }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="职  务">
|
||||
{{ formData.position }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="职  称">
|
||||
{{ formData.jobTitle }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="在职状态">
|
||||
{{ formData.userState }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="人员类型">
|
||||
{{ formData.personType }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="手 机 号">
|
||||
{{ formData.mobile }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="银行账号">
|
||||
{{ formData.bank_number }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="身份证号">
|
||||
{{ formData.idcard }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="个人简历">
|
||||
|
||||
<div v-html="formData.vita"></div>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="家庭成员">
|
||||
|
||||
<el-table
|
||||
v-if="formData.family&&formData.family.length"
|
||||
:data="formData.family"
|
||||
size="mini" border :header-cell-style="{background:'#eff3f6'}"
|
||||
style="width: 100%">
|
||||
<el-table-column prop="relation" label="与本人关系" align="center" header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="姓名" align="center" header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="unit" label="单位" align="center" header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" align="center" header-align="center">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
let vitaEditor = null
|
||||
|
||||
module.exports = {
|
||||
components: {
|
||||
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.4'),
|
||||
},
|
||||
props: {
|
||||
id: {type: String},
|
||||
view: {type: Boolean, default: false},
|
||||
edit_unit: {type: Boolean, default: false},
|
||||
source: {type: String},
|
||||
has_bottom_btn: {type: Boolean, default: true}
|
||||
},
|
||||
// model: {
|
||||
// prop: 'value',
|
||||
// event: 'change'
|
||||
// },
|
||||
data() {
|
||||
return {
|
||||
activeName: 1,
|
||||
|
||||
unionOptions: [],
|
||||
unitOptions: [],
|
||||
|
||||
submitLoading: false,
|
||||
imageList: [],
|
||||
uploadDisabled: false,
|
||||
loading: true,
|
||||
disabled: false,
|
||||
formData: {
|
||||
family: [],
|
||||
},
|
||||
formRules: {
|
||||
loginname: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
username: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
unitid: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
threeUnitId: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
},
|
||||
nationOptions: nation,
|
||||
threeUnits: [],
|
||||
displayUnionGroup: false,
|
||||
isAllowModify: false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
id() {
|
||||
this.getUserInfo()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async doOperating() {
|
||||
this.$refs["form"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
|
||||
const formData = clone(this.formData)
|
||||
formData.password = 'dd3s@#2022'
|
||||
formData.family = JSON.stringify(formData.family)
|
||||
formData.source = this.source
|
||||
if (formData.effectiveDate) {
|
||||
formData.beginningDate = formData.effectiveDate[0]
|
||||
formData.endDate = formData.effectiveDate[1]
|
||||
}
|
||||
|
||||
const resp = await $.post(formData.id ? "/platform/sys/user/editDo" : "/platform/sys/user/addDo", formData)
|
||||
if (resp.code === 0) {
|
||||
this.$notify.success({
|
||||
title: '成功',
|
||||
message: resp.msg,
|
||||
})
|
||||
this.$emit("load")
|
||||
} else {
|
||||
this.$notify.warning({
|
||||
title: '警告',
|
||||
message: resp.msg,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
},
|
||||
|
||||
async unitChange(v) {
|
||||
const unit = this.unitOptions.find(x => x.id == v)
|
||||
if (unit) {
|
||||
this.formData.unionid = unit.unionid
|
||||
this.formData.unionname = unit.unionname
|
||||
} else {
|
||||
this.formData.unionid = ''
|
||||
this.formData.unionname = ''
|
||||
}
|
||||
this.$set(this.formData, 'threeUnitId', null)
|
||||
this.$set(this.formData, 'unionGroupName', null)
|
||||
this.threeUnits = await this.getThreeUnits(v)
|
||||
},
|
||||
|
||||
async getThreeUnits(v) {
|
||||
const threeUnits = await threeUnitsByUnionGroupOrUnitId(v, null)
|
||||
return threeUnits
|
||||
|
||||
// debugger
|
||||
// if(v){
|
||||
// const threeUnit = this.threeUnits.find(v => v.id === val)
|
||||
// console.log(threeUnit)
|
||||
// }else{
|
||||
// this.$set(this.formData, 'unionGroupName', null)
|
||||
// }
|
||||
// this.$set(this.formData, 'threeUnitId', null)
|
||||
// this.threeUnits = await threeUnitsByUnionGroupOrUnitId(this.formData.unitId, null)
|
||||
},
|
||||
|
||||
threeUnitChange(val) {
|
||||
const threeUnit = this.threeUnits.find(v => v.id === val)
|
||||
this.$set(this.formData, 'unionGroupName', threeUnit.groupname)
|
||||
this.$set(this.formData, 'unionGroupId', threeUnit.uniongroupid)
|
||||
},
|
||||
|
||||
async save() {
|
||||
this.$refs["form"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
this.submitLoading = true
|
||||
|
||||
const formData = clone(this.formData)
|
||||
formData.family = JSON.stringify(formData.family)
|
||||
formData.source = this.source
|
||||
if (formData.effectiveDate) {
|
||||
formData.beginningDate = formData.effectiveDate[0]
|
||||
formData.endDate = formData.effectiveDate[1]
|
||||
}
|
||||
const resp = await $.post("/platform/member/common/saveUser", formData)
|
||||
this.submitLoading = false
|
||||
if (resp.code === 0) {
|
||||
this.$notify.success({
|
||||
title: '成功',
|
||||
message: resp.msg,
|
||||
})
|
||||
this.$emit("save", resp.data)
|
||||
} else {
|
||||
this.$notify.warning({
|
||||
title: '警告',
|
||||
message: resp.msg,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
load(data) {
|
||||
console.log(data)
|
||||
if (this.$refs['form']) {
|
||||
this.$refs['form'].resetFields()
|
||||
}
|
||||
|
||||
if (data.avatar) {
|
||||
this.imageList = [{
|
||||
name: "_.jpg",
|
||||
url: APP_DOMAIN + FILE_STREAM_PREVIEW_ADDRESS + '?id=' + data.avatar,
|
||||
status: "success"
|
||||
}]
|
||||
}
|
||||
data.family = JSON.parse(data.family || '[]')
|
||||
if (data.beginningDate && data.endDate) {
|
||||
data.effectiveDate = [data.beginningDate, data.endDate]
|
||||
}
|
||||
this.formData = data
|
||||
this.$nextTick(() => {
|
||||
$("#vitaEditor").html("")
|
||||
|
||||
vitaEditor = new wangEditor("#vitaEditor")
|
||||
vitaEditor.config.onchange = (html) => {
|
||||
this.formData.vita = html
|
||||
}
|
||||
vitaEditor.create()
|
||||
vitaEditor.txt.html(data.vita)
|
||||
})
|
||||
},
|
||||
|
||||
async getUserInfo() {
|
||||
this.loading = true
|
||||
this.disabled = false
|
||||
this.imageList = []
|
||||
if (!this.id) {
|
||||
this.load({})
|
||||
this.unionOptions = await getUnions(null)
|
||||
this.unitOptions = await getUnionUnits()
|
||||
this.displayUnionGroup = await getConfigKey('SysUnionGroup') === 'true'
|
||||
this.isAllowModify = await getConfigKey('MemberInfoModify') === 'true'
|
||||
this.loading = false
|
||||
return
|
||||
}
|
||||
|
||||
const resp = await $.get("/platform/member/common/userInfo", {userId: this.id, source: this.source})
|
||||
if (resp.code === 0) {
|
||||
const data = resp.data
|
||||
this.unitOptions = await getUnits(data.unionid)
|
||||
this.threeUnits = await this.getThreeUnits(data.unitid)
|
||||
this.load(data)
|
||||
} else {
|
||||
this.$notify.error({
|
||||
title: '错误',
|
||||
message: '获取用户信息失败'
|
||||
});
|
||||
}
|
||||
this.loading = false
|
||||
},
|
||||
|
||||
handlePictureCardPreview(file) {
|
||||
/*showpic(file.url.replace(FILE_DOMAIN, ''))*/
|
||||
let image = new Image()
|
||||
image.src = file.url
|
||||
let viewer = new Viewer(image)
|
||||
viewer.show()
|
||||
},
|
||||
removeAvatarUpload(val) {
|
||||
this.imageList = []
|
||||
this.formData.avatar = null
|
||||
},
|
||||
|
||||
beforeAvatarUpload(file) {
|
||||
let isLt2M = file.size / 1024 / 1024 < 2;
|
||||
let isJPG = file.type === 'image/jpeg';
|
||||
let isPng = file.type === 'image/png';
|
||||
if (!isJPG && !isPng) {
|
||||
this.$message.error('上传头像图片只能是 JPG和PNG格式!');
|
||||
}
|
||||
if (!isLt2M) {
|
||||
this.$message.error('上传头像图片大小不能超过 2MB!');
|
||||
}
|
||||
return (isJPG || isPng) && isLt2M;
|
||||
},
|
||||
|
||||
handleAvatarSuccess: function (res, file) {
|
||||
var self = this;
|
||||
if (res.code == 0) {
|
||||
|
||||
const {data: {filepath}} = res
|
||||
|
||||
self.formData.avatar = filepath;
|
||||
|
||||
} else {
|
||||
this.$notify.error({
|
||||
title: '错误',
|
||||
message: res.msg
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
},
|
||||
async created() {
|
||||
await this.getUserInfo()
|
||||
this.unionOptions = await getUnions(null)
|
||||
this.unitOptions = await getUnionUnits()
|
||||
this.displayUnionGroup = await getConfigKey('SysUnionGroup') === 'true'
|
||||
this.isAllowModify = await getConfigKey('MemberInfoModify') === 'true'
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.is-flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.is-flex .el-form-item {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.el-picker-panel {
|
||||
z-index: 9999999 !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,189 @@
|
||||
<template>
|
||||
<div style="padding-bottom: 20px;">
|
||||
|
||||
<van-form readonly input-align="right">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
基础信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-field readonly :value="viewData.username" label="姓名"></van-field>
|
||||
<van-field readonly :value="viewData.loginname" label="工资号"></van-field>
|
||||
<van-field readonly :value="viewData.unitname" label="单位"></van-field>
|
||||
<van-field readonly :value="viewData.unionname" label="工会"></van-field>
|
||||
</van-cell-group>
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
作品信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-field readonly name="type" :value="viewData.zpzt" label="作品主题"></van-field>
|
||||
<van-field readonly name="type" :value="viewData.lname" label="活动类别"></van-field>
|
||||
<van-field readonly name="type" :value="viewData.zname" label="作品类别"></van-field>
|
||||
<van-field readonly :value="viewData.zpms" label="简介"
|
||||
input-align="left"
|
||||
style="flex-flow: column"
|
||||
rows="2" maxlength="200" type="textarea" show-word-limit autosize></van-field>
|
||||
|
||||
<van-field label="照片" style="flex-flow: column" input-align="left">
|
||||
<template #label>
|
||||
<div class="mb10">照  片</div>
|
||||
</template>
|
||||
<template #input>
|
||||
<vant-file-upload :files.sync="img2List" view :del="false"
|
||||
v-if="img2List&&img2List.length>0"></vant-file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
<van-field label="视频" style="flex-flow: column" input-align="left">
|
||||
<template #label>
|
||||
<div class="mb10">视  频</div>
|
||||
</template>
|
||||
<template #input>
|
||||
<template v-for="item in videoList" v-if="videoList.length>0">
|
||||
<video id="myVideo" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="auto"
|
||||
width="640" height="264"
|
||||
data-setup="{}" webkit-playsinline='true' playsinline='true' x-webkit-airplay='true'
|
||||
x5-video-player-type='h5' x5-video-player-fullscreen='true' x5-video-ignore-metadata='true'>
|
||||
<source :src="FILE_DOMAIN+item.filepath" type="video/mp4">
|
||||
</video>
|
||||
</template>
|
||||
<div v-else style="text-align: center;color: #c2bbbb;font-size: 10px;">
|
||||
没有音频。
|
||||
</div>
|
||||
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
<van-field label="音频" style="flex-flow: column" input-align="left">
|
||||
<template #label>
|
||||
<div class="mb10">音  频</div>
|
||||
</template>
|
||||
<template #input>
|
||||
<template v-for="item in videoList" v-if="audioList.length>0">
|
||||
<audio id="amusic" preload="auto" controls style="width: 100%;outline: none;">
|
||||
<source :src="FILE_DOMAIN+item.filepath"/>
|
||||
</audio>
|
||||
</template>
|
||||
<div v-else style="text-align: center;color: #c2bbbb;font-size: 10px;">
|
||||
没有音频。
|
||||
</div>
|
||||
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
<van-field label="文档" style="flex-flow: column" input-align="left">
|
||||
<template #label>
|
||||
<div class="mb10">文  档</div>
|
||||
</template>
|
||||
<template #input>
|
||||
<template v-for="(item,index) in docList" v-if="docList.length>0">
|
||||
<div class="text-nowrap color-puple"
|
||||
@click="previewFile(item.filepath,item.filename,docList,index,item.id)">
|
||||
{{ item.filename }}
|
||||
</div>
|
||||
</template>
|
||||
<div v-else style="text-align: center;color: #c2bbbb;font-size: 10px;">
|
||||
没有文档。
|
||||
</div>
|
||||
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
|
||||
</van-cell-group>
|
||||
</van-form>
|
||||
|
||||
|
||||
<template v-if="handle">
|
||||
<slot name="handle"></slot>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
id: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
viewData: {},
|
||||
videoList: [],
|
||||
prevImgList: [],
|
||||
img2List: [],
|
||||
audioList: [],
|
||||
docList: [],
|
||||
imgtype: ['gif', 'jpg', 'png', 'jpeg'],
|
||||
videotype: ['flv', 'swf', 'mkv', 'avi', 'rm', 'rmvb', 'wmv', 'mp4', 'mov', 'mpg', 'mpeg'],
|
||||
doctype: ['doc', 'docx'],
|
||||
audiotype: ['mp3', 'wma', 'flac', 'wav', 'm4a', 'amr', 'au'],
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'vant-file-upload': httpVueLoader('/components/plugins/VantFileUpload.vue')
|
||||
},
|
||||
methods: {
|
||||
async getInfo(id) {
|
||||
const {data, code, msg} = await $.get("/platform/hd/wmhd/findOneById", {id})
|
||||
const refs = await $.get("/mobile/cahd/list/findOne", {id})
|
||||
|
||||
if (refs) {
|
||||
this.viewData = refs[0]
|
||||
data.forEach(val => {
|
||||
val.fjname = val.filename
|
||||
val.fjurl = val.filepath
|
||||
val.url = FILE_DOMAIN + val.filepath
|
||||
let filetype = val.fjname.substring(val.fjname.lastIndexOf('.') + 1, val.fjname.length).toLowerCase();
|
||||
if (this.videotype.indexOf(filetype) > -1) {
|
||||
this.videoList.push(val);
|
||||
} else if (this.imgtype.indexOf(filetype) > -1) {
|
||||
this.prevImgList.push(FILE_DOMAIN + val.filepath)
|
||||
this.img2List.push(val);
|
||||
} else if (this.doctype.indexOf(filetype) > -1) {
|
||||
this.docList.push(val);
|
||||
} else if (this.audiotype.indexOf(filetype) > -1) {
|
||||
this.audioList.push(val);
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$toast.fail('获取信息失败');
|
||||
}
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.van-cell-group__title {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item {
|
||||
font-size: 16px !important;
|
||||
text-indent: 4px !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item--select::before {
|
||||
left: 5px !important;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,50 @@
|
||||
<template>
|
||||
<div class="card">
|
||||
<div class="card-header" v-if="$slots.header">
|
||||
<slot name="header"></slot>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<slot></slot>
|
||||
</div>
|
||||
<div class="card-footer" v-if="$slots.footer">
|
||||
<slot name="footer"></slot>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "MCard"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.card {
|
||||
border: none;
|
||||
border-radius: .5rem;
|
||||
}
|
||||
|
||||
.card-header {
|
||||
border-bottom:1px dashed rgba(0,0,0,.125);
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
|
||||
.card-header:first-child {
|
||||
border-radius: calc(.5rem - 1px) calc(.5rem - 1px) 0 0
|
||||
}
|
||||
|
||||
.card-body>.van-cell{
|
||||
padding: 5px 0;
|
||||
}
|
||||
.card-body{
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
|
||||
.card-header, .card-footer {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,89 @@
|
||||
<template>
|
||||
<div class="loader"></div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "MLoading"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.loader {
|
||||
z-index: 10000;
|
||||
position: relative;
|
||||
width: 2.5em;
|
||||
height: 2.5em;
|
||||
transform: rotate(165deg);
|
||||
}
|
||||
|
||||
.loader:before, .loader:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
display: block;
|
||||
width: 0.5em;
|
||||
height: 0.5em;
|
||||
border-radius: 0.25em;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.loader:before {
|
||||
animation: before 2s infinite;
|
||||
}
|
||||
|
||||
.loader:after {
|
||||
animation: after 2s infinite;
|
||||
}
|
||||
|
||||
@keyframes before {
|
||||
0% {
|
||||
width: 0.5em;
|
||||
box-shadow: 1em -0.5em rgba(225, 20, 98, 0.75), -1em 0.5em rgba(111, 202, 220, 0.75);
|
||||
}
|
||||
35% {
|
||||
width: 2.5em;
|
||||
box-shadow: 0 -0.5em rgba(225, 20, 98, 0.75), 0 0.5em rgba(111, 202, 220, 0.75);
|
||||
}
|
||||
70% {
|
||||
width: 0.5em;
|
||||
box-shadow: -1em -0.5em rgba(225, 20, 98, 0.75), 1em 0.5em rgba(111, 202, 220, 0.75);
|
||||
}
|
||||
100% {
|
||||
box-shadow: 1em -0.5em rgba(225, 20, 98, 0.75), -1em 0.5em rgba(111, 202, 220, 0.75);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes after {
|
||||
0% {
|
||||
height: 0.5em;
|
||||
box-shadow: 0.5em 1em rgba(61, 184, 143, 0.75), -0.5em -1em rgba(233, 169, 32, 0.75);
|
||||
}
|
||||
35% {
|
||||
height: 2.5em;
|
||||
box-shadow: 0.5em 0 rgba(61, 184, 143, 0.75), -0.5em 0 rgba(233, 169, 32, 0.75);
|
||||
}
|
||||
70% {
|
||||
height: 0.5em;
|
||||
box-shadow: 0.5em -1em rgba(61, 184, 143, 0.75), -0.5em 1em rgba(233, 169, 32, 0.75);
|
||||
}
|
||||
100% {
|
||||
box-shadow: 0.5em 1em rgba(61, 184, 143, 0.75), -0.5em -1em rgba(233, 169, 32, 0.75);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to center the whole thing!
|
||||
*/
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.loader {
|
||||
position: absolute;
|
||||
top: calc(50% - 1.25em);
|
||||
left: calc(50% - 1.25em);
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,140 @@
|
||||
<template>
|
||||
<figure>
|
||||
<div class="dot white"></div>
|
||||
<div class="dot"></div>
|
||||
<div class="dot"></div>
|
||||
<div class="dot"></div>
|
||||
<div class="dot"></div>
|
||||
</figure>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "MTableLoading"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
body {
|
||||
background: #222;
|
||||
}
|
||||
|
||||
figure {
|
||||
position: absolute;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 6.250em;
|
||||
height: 6.250em;
|
||||
animation: rotate 2.4s linear infinite;
|
||||
}
|
||||
|
||||
.white {
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: white;
|
||||
animation: flash 2.4s linear infinite;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.dot {
|
||||
position: absolute;
|
||||
margin: auto;
|
||||
width: 2.4em;
|
||||
height: 2.4em;
|
||||
border-radius: 100%;
|
||||
transition: all 1s ease;
|
||||
}
|
||||
|
||||
.dot:nth-child(2) {
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background: #FF4444;
|
||||
animation: dotsY 2.4s linear infinite;
|
||||
}
|
||||
|
||||
.dot:nth-child(3) {
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
background: #FFBB33;
|
||||
animation: dotsX 2.4s linear infinite;
|
||||
}
|
||||
|
||||
.dot:nth-child(4) {
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
background: #99CC00;
|
||||
animation: dotsY 2.4s linear infinite;
|
||||
}
|
||||
|
||||
.dot:nth-child(5) {
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: #33B5E5;
|
||||
animation: dotsX 2.4s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes rotate {
|
||||
0% {
|
||||
transform: rotate(0);
|
||||
}
|
||||
10% {
|
||||
width: 6.250em;
|
||||
height: 6.250em;
|
||||
}
|
||||
66% {
|
||||
width: 2.4em;
|
||||
height: 2.4em;
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
width: 6.250em;
|
||||
height: 6.250em;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes dotsY {
|
||||
66% {
|
||||
opacity: .1;
|
||||
width: 2.4em;
|
||||
}
|
||||
77% {
|
||||
opacity: 1;
|
||||
width: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes dotsX {
|
||||
66% {
|
||||
opacity: .1;
|
||||
height: 2.4em;
|
||||
}
|
||||
77% {
|
||||
opacity: 1;
|
||||
height: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes flash {
|
||||
33% {
|
||||
opacity: 0;
|
||||
border-radius: 0%;
|
||||
}
|
||||
55% {
|
||||
opacity: .6;
|
||||
border-radius: 100%;
|
||||
}
|
||||
66% {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,184 @@
|
||||
<style>
|
||||
.field .van-field__error-message {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
<template>
|
||||
<div>
|
||||
<van-form @submit="onSubmit" ref="form">
|
||||
<template v-for="column in dynamicData">
|
||||
<!-- 文本、数值、时间 -->
|
||||
<template v-if="['VARCHAR','TEXT','INT','DATE','DATETIME'].includes(column.columnType)">
|
||||
<van-field
|
||||
class="field"
|
||||
v-model="column.columnValue"
|
||||
:clickable="['SELECT'].includes(column.columnFormType)"
|
||||
:label="column.columnName"
|
||||
:name="column.columnCode"
|
||||
:type="['INT'].includes(column.columnType) ? 'digit' : ''"
|
||||
:placeholder="(['SELECT'].includes(column.columnFormType) ? '请选择' : '请填写') + column.columnName"
|
||||
:readonly="['SELECT'].includes(column.columnFormType)"
|
||||
:rules="[{ required: column.isRequired, message: (['SELECT'].includes(column.columnFormType) ? '请选择' : '请填写') + column.columnName }]"
|
||||
:required="column.isRequired"
|
||||
@click="selectFieldClick(column)"
|
||||
></van-field>
|
||||
|
||||
<van-popup v-if="['SELECT'].includes(column.columnFormType)"
|
||||
v-model="pickerStates[column.columnCode + 'Picker']"
|
||||
position="bottom">
|
||||
<template v-if="['DATETIME','DATE'].includes(column.columnType)">
|
||||
<van-datetime-picker
|
||||
:title="column.columnName"
|
||||
:type="column.columnType.toLocaleLowerCase()"
|
||||
show-toolbar
|
||||
@cancel="pickerStates[column.columnCode + 'Picker'] = false; column.columnValue = ''"
|
||||
@confirm="(time)=>{dateTimePickerConfirm(time,column)}"
|
||||
/>
|
||||
</template>
|
||||
<template v-else>
|
||||
<van-picker
|
||||
:columns="column.selectValues"
|
||||
:title="column.columnName"
|
||||
show-toolbar
|
||||
@cancel="pickerStates[column.columnCode + 'Picker'] = false; column.columnValue = ''"
|
||||
@confirm="(value)=>{ordinaryPickerConfirm(value,column)}"
|
||||
/>
|
||||
</template>
|
||||
</van-popup>
|
||||
</template>
|
||||
<!-- 单选框 -->
|
||||
<template v-else-if="['BOOLEAN'].includes(column.columnType)">
|
||||
|
||||
</template>
|
||||
<!-- 文件 -->
|
||||
<template v-else-if="['JSON'].includes(column.columnType)">
|
||||
<van-field :required="column.isRequired" :label="column.columnName"
|
||||
:rules="[{ required: column.isRequired, message: '请上传' + column.columnName }]">
|
||||
<template #input>
|
||||
<!-- <van-uploader v-model="fileList" :after-read="(file)=>{fileAfterRead(file,column)}"
|
||||
:max-count="column.fileNumber"/>-->
|
||||
|
||||
<vant_file_upload :files.sync="column.columnValue" :max="column.fileNumber"
|
||||
:type="column.fileType"></vant_file_upload>
|
||||
</template>
|
||||
</van-field>
|
||||
</template>
|
||||
|
||||
</template>
|
||||
</van-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<!-- 请在van-form中引用 -->
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "TrainDynamicForm",
|
||||
components: {
|
||||
'vant_file_upload': httpVueLoader('/components/plugins/VantFileUpload.vue')
|
||||
},
|
||||
props: {
|
||||
dynamicData: []
|
||||
},
|
||||
model: {
|
||||
prop: 'dynamicData',
|
||||
event: 'updateDynamicData'
|
||||
},
|
||||
watch: {
|
||||
dynamicData: {
|
||||
handler: function (newValue, oldValue) {
|
||||
this.$emit('updateDynamicData', newValue)
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
//所有的picker状态
|
||||
pickerStates: {},
|
||||
fileList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
validForm() {
|
||||
try {
|
||||
this.$refs.form.validate().then(() => {
|
||||
return true
|
||||
}).catch(() => {
|
||||
return false
|
||||
})
|
||||
} catch (e) {
|
||||
return false
|
||||
}
|
||||
|
||||
/*return new Promise(resolve => {
|
||||
this.$refs.form.validate().then(() => {
|
||||
resolve(true)
|
||||
}).catch(() => {
|
||||
resolve(false)
|
||||
})
|
||||
})*/
|
||||
|
||||
},
|
||||
onSubmit() {
|
||||
|
||||
},
|
||||
selectFieldClick(column) {
|
||||
console.log(column)
|
||||
this.$set(this.pickerStates, column.columnCode + 'Picker', true)
|
||||
if (!['DATE', 'DATETIME'].includes(column.columnType)) {
|
||||
//说明是普通的下拉框
|
||||
// column.selectValues = ['1', '2', '3']
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 时间picker确认
|
||||
* @param time
|
||||
* @param column
|
||||
*/
|
||||
dateTimePickerConfirm(time, column) {
|
||||
if (column.columnType === 'DATE') {
|
||||
column.columnValue = moment(time).format('YYYY-MM-DD')
|
||||
} else if (column.columnType === 'DATETIME') {
|
||||
column.columnValue = moment(time).format('YYYY-MM-DD HH:mm:ss')
|
||||
} else {
|
||||
//预留别的类型
|
||||
column.columnValue = moment(time).format('YYYY-MM-DD HH:mm:ss')
|
||||
}
|
||||
this.pickerStates[column.columnCode + 'Picker'] = false
|
||||
},
|
||||
/**
|
||||
* 普通picker确认
|
||||
* @param value
|
||||
* @param column
|
||||
*/
|
||||
ordinaryPickerConfirm(value, column) {
|
||||
column.columnValue = value
|
||||
this.pickerStates[column.columnCode + 'Picker'] = false
|
||||
},
|
||||
/**
|
||||
* 文件读取
|
||||
*/
|
||||
fileAfterRead(file, column) {
|
||||
|
||||
|
||||
console.log(file)
|
||||
console.log(column)
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// console.log(this.dynamicData)
|
||||
// this.dynamicData.forEach(v => {
|
||||
// if (v.columnFormType === 'SELECT') {
|
||||
// v.columnPickerName = v.columnCode+'Picker'
|
||||
// }
|
||||
// })
|
||||
// console.log(this.dynamicData)
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,158 @@
|
||||
<template>
|
||||
<div style="padding-bottom: 20px;">
|
||||
|
||||
<van-form readonly input-align="right">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
申请信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-field readonly :value="viewData.sqrname" label="申请人"></van-field>
|
||||
<van-field readonly :value="viewData.sqsj" label="申请时间"></van-field>
|
||||
<van-field readonly :value="viewData.bbname" label="受补助人"></van-field>
|
||||
<van-field readonly :value="viewData.idcard" label="身份证号"></van-field>
|
||||
<van-field readonly name="type" :value="viewData.bbsex" label="性别"></van-field>
|
||||
<van-field readonly name="type" :value="viewData.zc" label="职称"></van-field>
|
||||
<van-field readonly name="type" :value="viewData.zw" label="职务"></van-field>
|
||||
<van-field readonly :value="viewData.bbunit" label="所在单位"></van-field>
|
||||
<van-field readonly name="way" :value="viewData.bbbirthday" label="出生日期"></van-field>
|
||||
<van-field readonly :value="viewData.lxfs" label="手机号码"></van-field>
|
||||
<van-field readonly :value="difficulty.subsidy[viewData.sq_bzlx]" label="补助类型"></van-field>
|
||||
<van-field readonly :value=" difficulty.sq_knlx[viewData.sq_knlx] " label="困难类型"></van-field>
|
||||
<van-field readonly :value="viewData.apply_reason" label="申请理由"
|
||||
input-align="left"
|
||||
style="flex-flow: column"
|
||||
rows="2" maxlength="200" type="textarea" show-word-limit autosize></van-field>
|
||||
<van-field label="附件" style="flex-flow: column" input-align="left">
|
||||
<template #label>
|
||||
<div class="mb10">附  件</div>
|
||||
</template>
|
||||
<template #input>
|
||||
<vant-file-upload :files.sync="viewData.files" view :del="false"
|
||||
v-if="viewData.files&&viewData.files.length"></vant-file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
<van-field name="sign" label="申请人签字">
|
||||
<template #input>
|
||||
<van-image width="200" height="100" :src="viewData.sqsign" v-if="viewData.sqsign!=null"></van-image>
|
||||
<span v-else>暂无</span>
|
||||
</template>
|
||||
</van-field>
|
||||
</van-cell-group>
|
||||
</van-form>
|
||||
|
||||
<template v-if="viewData.upa">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
院级工会审核信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group class="mt10">
|
||||
<div style="padding-left: 16px">
|
||||
<van-field label="审核人员" :value="viewData.upa.username" left-icon="contact" readonly></van-field>
|
||||
<van-field label="审核时间" :value="viewData.upa.auditTime" left-icon="clock-o"
|
||||
readonly></van-field>
|
||||
<van-field label="审核意见" left-icon="chat-o"
|
||||
:value="viewData.upa.auditOpinion ? viewData.upa.auditOpinion : '暂无'"
|
||||
readonly></van-field>
|
||||
<van-field name="sign" label="签字">
|
||||
<template #input>
|
||||
<van-image width="200" height="100" :src="viewData.upa.auditSign"
|
||||
v-if="viewData.upa.auditSign"></van-image>
|
||||
<span v-else>暂无</span>
|
||||
</template>
|
||||
</van-field>
|
||||
</div>
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
<template v-if="viewData.sma">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
校工会审核信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group class="mt10">
|
||||
<div style="padding-left: 16px">
|
||||
<van-field label="审核人员" :value="viewData.sma.username" left-icon="contact" readonly></van-field>
|
||||
<van-field label="审核时间" :value="viewData.sma.auditTime" left-icon="clock-o"
|
||||
readonly></van-field>
|
||||
<van-field label="审核意见" left-icon="chat-o"
|
||||
:value="viewData.sma.auditOpinion ? viewData.sma.auditOpinion : '暂无'"
|
||||
readonly></van-field>
|
||||
<van-field name="sign" label="签字">
|
||||
<template #input>
|
||||
<van-image width="200" height="100" :src="viewData.sma.auditSign"
|
||||
v-if="viewData.sma.auditSign"></van-image>
|
||||
<span v-else>暂无</span>
|
||||
</template>
|
||||
</van-field>
|
||||
</div>
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
<template v-if="handle">
|
||||
<slot name="handle"></slot>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
id: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
viewData: {},
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'vant-file-upload': httpVueLoader('/components/plugins/VantFileUpload.vue')
|
||||
},
|
||||
methods: {
|
||||
async getInfo(id) {
|
||||
const {data, code, msg} = await $.get("/platform/fw/difficulty/applylist/findOne", {id})
|
||||
if (data) {
|
||||
condolence.toFormData(data)
|
||||
this.viewData = data
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$toast.fail('获取信息失败');
|
||||
}
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
await this.getInfo(this.id)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.van-cell-group__title {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item {
|
||||
font-size: 16px !important;
|
||||
text-indent: 4px !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item--select::before {
|
||||
left: 5px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,214 @@
|
||||
<template>
|
||||
<div style="padding-bottom: 20px;">
|
||||
|
||||
<van-form readonly input-align="right">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
申请信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-field :value="viewData.loginname" label="工号" left-icon="contact"></van-field>
|
||||
<van-field label="姓名" :value="viewData.username" left-icon="contact"></van-field>
|
||||
<van-field label="性别" :value="viewData.sex" left-icon="ellipsis"></van-field>
|
||||
<van-field label="民族" left-icon="bar-chart-o" :value="viewData.nation"></van-field>
|
||||
<van-field label="学历" left-icon="coupon-o" :value="viewData.education"></van-field>
|
||||
<van-field label="学位" left-icon="comment-o" :value="viewData.academicDegree"></van-field>
|
||||
<van-field label="政治面貌" left-icon="label-o" :value="viewData.political"></van-field>
|
||||
<van-field :value="viewData.personType" label="人员类型" left-icon="label-o"></van-field>
|
||||
<van-field label="身份证" left-icon="idcard" :value="viewData.idcard"></van-field>
|
||||
<van-field label="联系电话" left-icon="phone-o" :value="viewData.mobile"></van-field>
|
||||
<van-field label="户口所在地" left-icon="wap-home-o"
|
||||
:value="viewData.registeredResidence"></van-field>
|
||||
<van-field label="现居住地" left-icon="home-o" :value="viewData.homeAddress"></van-field>
|
||||
<van-field label="工作单位" left-icon="cluster-o" :value="viewData.unitname"></van-field>
|
||||
<van-field label="职务" left-icon="debit-pay" :value="viewData.position"></van-field>
|
||||
</van-cell-group>
|
||||
</van-form>
|
||||
<van-cell-group class="mt10 up_down">
|
||||
<div class="van-cell" style="flex-flow: column">
|
||||
<div style="display: flex">
|
||||
<div class="van-field__left-icon">
|
||||
<i class="van-icon van-icon-notes-o"></i>
|
||||
</div>
|
||||
<div class="van-cell__title van-field__label">
|
||||
<span>个人工作简历</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-divider></van-divider>
|
||||
|
||||
<van-field readonly>
|
||||
<template #input>
|
||||
<div v-html="viewData.position"></div>
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
|
||||
</div>
|
||||
</van-cell-group>
|
||||
<van-cell-group class="mt10 up_down">
|
||||
<div class="van-cell" style="flex-flow: column">
|
||||
<div style="display: flex">
|
||||
<div class="van-field__left-icon">
|
||||
<i class="van-icon van-icon-award-o"></i>
|
||||
</div>
|
||||
<div class="van-cell__title van-field__label">
|
||||
<span>特长</span>
|
||||
</div>
|
||||
</div>
|
||||
<van-divider></van-divider>
|
||||
|
||||
<van-field readonly>
|
||||
<template #input>
|
||||
<div v-html="viewData.specialSkill"></div>
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
</div>
|
||||
</van-cell-group>
|
||||
<van-cell-group class="mt10 up_down">
|
||||
<div class="van-cell" style="flex-flow: column">
|
||||
<div class="van-cell__title van-field__label"
|
||||
style="display: flex;justify-content: space-between">
|
||||
<div style="display: flex;">
|
||||
<div class="van-field__left-icon">
|
||||
<i class="van-icon van-icon-friends-o"></i>
|
||||
</div>
|
||||
<div class="van-cell__title van-field__label" style="width: auto">
|
||||
<span>家庭主要成员及联系方式</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-divider></van-divider>
|
||||
|
||||
<div v-if="family && family.length>0">
|
||||
<div v-for="(o,i) in family" class="mt5">
|
||||
<div style="font-weight: 700;display: flex;justify-content: space-between">
|
||||
<span>成员{{ toChinesNum(i + 1) }}</span>
|
||||
</div>
|
||||
<van-form readonly input-align="right">
|
||||
<van-field label="关系" :value="o.relation" left-icon="exchange"></van-field>
|
||||
<van-field label="姓名" :value="o.name" left-icon="user-o"></van-field>
|
||||
<van-field label="联系方式" :value="o.mobile" left-icon="phone-o"></van-field>
|
||||
</van-form>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else style="height: 100px">
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</van-cell-group>
|
||||
|
||||
|
||||
<template v-if="unionAudit">
|
||||
<div class="van-cell-group__title mt20">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
分工会审核信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-field label="审 核 人" :value="unionAudit.username" left-icon="contact"
|
||||
readonly></van-field>
|
||||
<van-field label="审核时间" :value="moment(unionAudit.auditTime).format('YYYY-MM-DD')"
|
||||
left-icon="clock-o"
|
||||
readonly></van-field>
|
||||
<van-field label="审核意见" left-icon="chat-o" :value="unionAudit.auditOpinion"
|
||||
readonly></van-field>
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
<template v-if="schoolAudit">
|
||||
<div class="van-cell-group__title mt20">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
校工会审核信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-field label="审 核 人" :value="schoolAudit.username" left-icon="contact"
|
||||
readonly></van-field>
|
||||
<van-field label="审核时间" :value="moment(schoolAudit.auditTime).format('YYYY-MM-DD')"
|
||||
left-icon="clock-o"
|
||||
readonly></van-field>
|
||||
<van-field label="审核意见" left-icon="chat-o" :value="schoolAudit.auditOpinion"
|
||||
readonly></van-field>
|
||||
</van-cell-group>
|
||||
|
||||
</template>
|
||||
|
||||
<template v-if="handle">
|
||||
<slot name="handle"></slot>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
data() {
|
||||
return {
|
||||
info: {},
|
||||
viewData: {},
|
||||
unionAudit: {},
|
||||
schoolAudit: {},
|
||||
family: []
|
||||
}
|
||||
},
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
user_id: String,
|
||||
record_id: String
|
||||
},
|
||||
methods: {
|
||||
async getAuditInfo(id) {
|
||||
const {data} = await $.get('/platform/member/common/findChangeApplyInfo', {id: id})
|
||||
if (data !== null) {
|
||||
const {unionAudit, schoolAudit} = data
|
||||
this.info = data
|
||||
this.unionAudit = unionAudit
|
||||
this.schoolAudit = schoolAudit
|
||||
} else {
|
||||
this.unionAudit = null
|
||||
this.schoolAudit = null
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
async getUserInfo(id) {
|
||||
const {data} = await $.get('/platform/member/common/userInfo', {userId: id})
|
||||
this.viewData = data
|
||||
this.family = JSON.parse(data.family)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.card_title {
|
||||
margin: 5px 0 5px 16px;
|
||||
}
|
||||
|
||||
.van-cell-group__title {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item {
|
||||
font-size: 16px !important;
|
||||
text-indent: 4px !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item--select::before {
|
||||
left: 5px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,208 @@
|
||||
<template>
|
||||
<div style="padding-bottom: 20px;">
|
||||
|
||||
<van-form readonly input-align="right">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
申请信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-field :value="viewData.loginname" label="工号" left-icon="contact"></van-field>
|
||||
<van-field label="姓名" :value="viewData.username" left-icon="contact"></van-field>
|
||||
<van-field label="性别" :value="viewData.sex" left-icon="ellipsis"></van-field>
|
||||
<van-field label="民族" left-icon="bar-chart-o" :value="viewData.nation"></van-field>
|
||||
<van-field label="学历" left-icon="coupon-o" :value="viewData.education"></van-field>
|
||||
<van-field label="学位" left-icon="comment-o" :value="viewData.academicDegree"></van-field>
|
||||
<van-field label="政治面貌" left-icon="label-o" :value="viewData.political"></van-field>
|
||||
<van-field :value="viewData.personType" label="人员类型" left-icon="label-o"></van-field>
|
||||
<van-field label="身份证" left-icon="idcard" :value="viewData.idcard"></van-field>
|
||||
<van-field label="联系电话" left-icon="phone-o" :value="viewData.mobile"></van-field>
|
||||
<van-field label="户口所在地" left-icon="wap-home-o" :value="viewData.registeredResidence"></van-field>
|
||||
<van-field label="现居住地" left-icon="home-o" :value="viewData.homeAddress"></van-field>
|
||||
<van-field label="工作单位" left-icon="cluster-o" :value="viewData.unitname"></van-field>
|
||||
<van-field label="职务" left-icon="debit-pay" :value="viewData.position"></van-field>
|
||||
</van-cell-group>
|
||||
</van-form>
|
||||
<van-cell-group class="mt10 up_down">
|
||||
<div class="van-cell" style="flex-flow: column">
|
||||
<div style="display: flex">
|
||||
<div class="van-field__left-icon">
|
||||
<i class="van-icon van-icon-notes-o"></i>
|
||||
</div>
|
||||
<div class="van-cell__title van-field__label">
|
||||
<span>个人工作简历</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-divider></van-divider>
|
||||
|
||||
<van-field readonly>
|
||||
<template #input>
|
||||
<div v-html="viewData.position"></div>
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
|
||||
</div>
|
||||
</van-cell-group>
|
||||
<van-cell-group class="mt10 up_down">
|
||||
<div class="van-cell" style="flex-flow: column">
|
||||
<div style="display: flex">
|
||||
<div class="van-field__left-icon">
|
||||
<i class="van-icon van-icon-award-o"></i>
|
||||
</div>
|
||||
<div class="van-cell__title van-field__label">
|
||||
<span>特长</span>
|
||||
</div>
|
||||
</div>
|
||||
<van-divider></van-divider>
|
||||
|
||||
<van-field readonly>
|
||||
<template #input>
|
||||
<div v-html="viewData.specialSkill"></div>
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
</div>
|
||||
</van-cell-group>
|
||||
<van-cell-group class="mt10 up_down">
|
||||
<div class="van-cell" style="flex-flow: column">
|
||||
<div class="van-cell__title van-field__label" style="display: flex;justify-content: space-between">
|
||||
<div style="display: flex;">
|
||||
<div class="van-field__left-icon">
|
||||
<i class="van-icon van-icon-friends-o"></i>
|
||||
</div>
|
||||
<div class="van-cell__title van-field__label" style="width: auto">
|
||||
<span>家庭主要成员及联系方式</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-divider></van-divider>
|
||||
|
||||
<div v-if="family && family.length>0">
|
||||
<div v-for="(o,i) in family" class="mt5">
|
||||
<div style="font-weight: 700;display: flex;justify-content: space-between">
|
||||
<span>成员{{ toChinesNum(i + 1) }}</span>
|
||||
</div>
|
||||
<van-form readonly input-align="right">
|
||||
<van-field label="关系" :value="o.relation" left-icon="exchange"></van-field>
|
||||
<van-field label="姓名" :value="o.name" left-icon="user-o"></van-field>
|
||||
<van-field label="联系方式" :value="o.mobile" left-icon="phone-o"></van-field>
|
||||
</van-form>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else style="height: 100px">
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</van-cell-group>
|
||||
|
||||
|
||||
<template v-if="unionAudit!=null">
|
||||
<div class="van-cell-group__title mt20">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
院级工会审核信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-field label="审 核 人" :value="unionAudit.username" left-icon="contact" readonly></van-field>
|
||||
<van-field label="审核时间" :value="moment(unionAudit.auditTime).format('YYYY-MM-DD')" left-icon="clock-o"
|
||||
readonly></van-field>
|
||||
<van-field label="审核意见" left-icon="chat-o" :value="unionAudit.auditOpinion" readonly></van-field>
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
<template v-if="schoolAudit!=null">
|
||||
<div class="van-cell-group__title mt20">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
校工会审核信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-field label="审 核 人" :value="schoolAudit.username" left-icon="contact" readonly></van-field>
|
||||
<van-field label="审核时间" :value="moment(schoolAudit.auditTime).format('YYYY-MM-DD')" left-icon="clock-o"
|
||||
readonly></van-field>
|
||||
<van-field label="审核意见" left-icon="chat-o" :value="schoolAudit.auditOpinion" readonly></van-field>
|
||||
</van-cell-group>
|
||||
|
||||
</template>
|
||||
|
||||
<template v-if="handle">
|
||||
<slot name="handle"></slot>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
data() {
|
||||
return {
|
||||
viewData: {},
|
||||
unionAudit: {},
|
||||
schoolAudit: {},
|
||||
family: []
|
||||
}
|
||||
},
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
user_id: String,
|
||||
record_id: String
|
||||
},
|
||||
methods: {
|
||||
// getDetailInfo(user_id, record_id) {
|
||||
// this.getUserInfo(user_id)
|
||||
// this.getAuditInfo(record_id)
|
||||
// },
|
||||
async getAuditInfo(id) {
|
||||
const {data} = await $.get('/platform/member/common/findApplyInfo', {id: id})
|
||||
if (data !== null) {
|
||||
const {unionAudit, schoolAudit} = data
|
||||
this.unionAudit = unionAudit
|
||||
this.schoolAudit = schoolAudit
|
||||
} else {
|
||||
this.unionAudit = null
|
||||
this.schoolAudit = null
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
async getUserInfo(id) {
|
||||
const {data} = await $.get('/platform/member/common/userInfo', {userId: id})
|
||||
this.viewData = data
|
||||
this.family = JSON.parse(data.family)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.card_title {
|
||||
margin: 5px 0 5px 16px;
|
||||
}
|
||||
|
||||
.van-cell-group__title {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item {
|
||||
font-size: 16px !important;
|
||||
text-indent: 4px !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item--select::before {
|
||||
left: 5px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,247 @@
|
||||
<template>
|
||||
<div style="padding-bottom: 20px;">
|
||||
|
||||
<van-form readonly input-align="right">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
基础信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-field readonly :value="viewData.username" label="姓名"></van-field>
|
||||
<van-field readonly :value="viewData.loginname" label="工资号"></van-field>
|
||||
<van-field readonly :value="viewData.dwname" label="单位"></van-field>
|
||||
<van-field readonly :value="viewData.ghname" label="工会"></van-field>
|
||||
</van-cell-group>
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
作品信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-field readonly name="type" :value="viewData.hdname" label="作品主题"></van-field>
|
||||
<van-field readonly name="type" :value="viewData.hdlbname" label="活动类别"></van-field>
|
||||
<van-field readonly name="type" :value="viewData.step_count" label="健步走步数"
|
||||
v-if="viewData.step_count"></van-field>
|
||||
<van-field readonly name="type" :value="viewData.zname" label="作品类别" v-if="viewData.zname"></van-field>
|
||||
<van-field readonly :value="viewData.hdsbzpms" label="简介"
|
||||
input-align="left"
|
||||
style="flex-flow: column"
|
||||
rows="2" maxlength="200" type="textarea" show-word-limit autosize></van-field>
|
||||
|
||||
<van-field label="照片" style="flex-flow: column" input-align="left">
|
||||
<template #label>
|
||||
<div class="mb10">照  片</div>
|
||||
</template>
|
||||
<template #input>
|
||||
<vant-file-upload :files.sync="img2List" view :del="false"
|
||||
v-if="img2List&&img2List.length>0"></vant-file-upload>
|
||||
<div v-if="img2List.length===0" style="text-align: center;color: #c2bbbb;font-size: 10px;">
|
||||
没有照片。
|
||||
</div>
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
<van-field label="视频" style="flex-flow: column" input-align="left">
|
||||
<template #label>
|
||||
<div class="mb10">视  频</div>
|
||||
</template>
|
||||
<template #input>
|
||||
<div v-if="videoList.length>0">
|
||||
<div v-for="item in videoList" class="mt10">
|
||||
<video id="myVideo" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="auto"
|
||||
width="640" height="264"
|
||||
data-setup="{}" webkit-playsinline='true' playsinline='true' x-webkit-airplay='true'
|
||||
x5-video-player-type='h5' x5-video-player-fullscreen='true' x5-video-ignore-metadata='true'>
|
||||
<source :src="item.url" type="video/mp4">
|
||||
</video>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="videoList.length===0" style="text-align: center;color: #c2bbbb;font-size: 10px;">
|
||||
没有视频。
|
||||
</div>
|
||||
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
<van-field label="音频" style="flex-flow: column" input-align="left">
|
||||
<template #label>
|
||||
<div class="mb10">音  频</div>
|
||||
</template>
|
||||
<template #input>
|
||||
<div v-if="audioList&&audioList.length>0">
|
||||
<div v-for="audio in audioList" class="mt10">
|
||||
<audio id="amusic" preload="auto" controls>
|
||||
<source :src="FILE_DOMAIN+audio.url"/>
|
||||
</audio>
|
||||
</div>
|
||||
</div>
|
||||
<div style="text-align: center;color: #c2bbbb;font-size: 10px;" v-if="audioList.length===0">
|
||||
没有音频。
|
||||
</div>
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
<van-field label="文档" style="flex-flow: column" input-align="left">
|
||||
<template #label>
|
||||
<div class="mb10">文  档</div>
|
||||
</template>
|
||||
<template #input>
|
||||
<div v-for="(item,index) in docList" v-if="docList&&docList.length>0">
|
||||
<div class="text-nowrap color-puple"
|
||||
@click="previewFile(item.filepath,item.filename,docList,index,item.id)">
|
||||
{{ item.filename }}
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="docList.length===0" style="text-align: center;color: #c2bbbb;font-size: 10px;">
|
||||
没有文档。
|
||||
</div>
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
|
||||
</van-cell-group>
|
||||
|
||||
<template v-if="viewData.union">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
分工会审核信息
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-cell-group>
|
||||
<van-field readonly name="type" :value="viewData.union.username" label="审核人"></van-field>
|
||||
<van-field label="审核时间" :value="viewData.union.auditTime" left-icon="clock-o"
|
||||
readonly></van-field>
|
||||
<van-field label="审核意见" left-icon="chat-o"
|
||||
:value="viewData.union.auditOpinion ? viewData.union.auditOpinion : '暂无'"
|
||||
readonly></van-field>
|
||||
<van-field name="sign" label="签字">
|
||||
<template #input>
|
||||
<van-image width="200" height="100" :src="viewData.union.auditSign"
|
||||
v-if="viewData.union.auditSign"></van-image>
|
||||
<span v-else>暂无</span>
|
||||
</template>
|
||||
</van-field>
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
<template v-if="viewData.school">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
校工会审核信息
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-cell-group>
|
||||
<van-field readonly name="type" :value="viewData.school.username" label="审核人"></van-field>
|
||||
<van-field label="审核时间" :value="viewData.school.auditTime" left-icon="clock-o"
|
||||
readonly></van-field>
|
||||
<van-field label="审核意见" left-icon="chat-o"
|
||||
:value="viewData.school.auditOpinion ? viewData.school.auditOpinion : '暂无'"
|
||||
readonly></van-field>
|
||||
<van-field name="sign" label="签字">
|
||||
<template #input>
|
||||
<van-image width="200" height="100" :src="viewData.school.auditSign"
|
||||
v-if="viewData.school.auditSign"></van-image>
|
||||
<span v-else>暂无</span>
|
||||
</template>
|
||||
</van-field>
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
|
||||
</van-form>
|
||||
|
||||
|
||||
<template v-if="handle">
|
||||
<slot name="handle"></slot>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
id: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
viewData: {},
|
||||
videoList: [],
|
||||
prevImgList: [],
|
||||
img2List: [],
|
||||
audioList: [],
|
||||
docList: [],
|
||||
imgtype: ['gif', 'jpg', 'png', 'jpeg'],
|
||||
videotype: ['flv', 'swf', 'mkv', 'avi', 'rm', 'rmvb', 'wmv', 'mp4', 'mov', 'mpg', 'mpeg'],
|
||||
doctype: ['doc', 'docx'],
|
||||
audiotype: ['mp3', 'wma', 'flac', 'wav', 'm4a', 'amr', 'au'],
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'vant-file-upload': httpVueLoader('/components/plugins/VantFileUpload.vue')
|
||||
},
|
||||
methods: {
|
||||
async getInfo(id) {
|
||||
const {data, code, msg} = await $.get("/platform/hd/wmhd/findOneById", {id})
|
||||
const refs = await $.get("/platform/hd/wmhd/findxxById", {id})
|
||||
|
||||
if (refs) {
|
||||
this.viewData = refs.data
|
||||
console.log(refs)
|
||||
data.forEach(val => {
|
||||
val.fjname = val.filename
|
||||
val.fjurl = val.filepath
|
||||
val.id = val.filepath
|
||||
val.url = FILE_DOMAIN + '/fileStreamPreview?id=' + val.filepath
|
||||
let filetype = val.fjname.substring(val.fjname.lastIndexOf('.') + 1, val.fjname.length).toLowerCase();
|
||||
if (this.videotype.indexOf(filetype) > -1) {
|
||||
this.videoList.push(val);
|
||||
} else if (this.imgtype.indexOf(filetype) > -1) {
|
||||
this.prevImgList.push(val.url)
|
||||
this.img2List.push(val);
|
||||
} else if (this.doctype.indexOf(filetype) > -1) {
|
||||
this.docList.push(val);
|
||||
} else if (this.audiotype.indexOf(filetype) > -1) {
|
||||
this.audioList.push(val);
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$toast.fail('获取信息失败');
|
||||
}
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.van-cell-group__title {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item {
|
||||
font-size: 16px !important;
|
||||
text-indent: 4px !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item--select::before {
|
||||
left: 5px !important;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,538 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form ref="addform" :model="formData" :rules="addFormRules" label-width="120px">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动名称" prop="title">
|
||||
<el-input v-model="formData.title" :disabled="title_disabled" clearable placeholder="请输入活动名称"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- <vi-title title="模式一"></vi-title>-->
|
||||
<div style="letter-spacing: 1px;color: rgb(24, 103, 176);margin-left: 26px; font-weight: bolder">模式一</div>
|
||||
<el-row>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="发送对象" prop="type">
|
||||
<el-radio v-model="formData.type" :disabled="hold" border label="system"
|
||||
@change="ChangeType">系统角色
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="所属模块" prop="module">
|
||||
<el-select v-model="formData.module" :disabled="hold" filterable
|
||||
style="width: 100%" @change="getRoleListByMenuId">
|
||||
<el-option
|
||||
v-for="item in menuOptions"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item
|
||||
v-if="formData.module=='aca4d14498c145ceb5b24ed70776aae2'||formData.module=='733d7266652740a3aeac9da97ab5eeca'"
|
||||
label="所属教代会"
|
||||
prop="teacherMeetingId">
|
||||
<el-select v-model="formData.teacherMeetingId" :disabled="hold" clearable
|
||||
filterable
|
||||
placeholder="所属教代会">
|
||||
<el-option v-for="item in meetingOptions" :key="item.id"
|
||||
:label="item.jdhallname"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="发送角色" prop="roleIds">
|
||||
<el-select v-model="formData.roleIds" :disabled="hold" clearable filterable multiple style="width: 100%"
|
||||
@change="changeRole">
|
||||
<el-option v-for="item in roleList" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- <vi-title title="模式二"></vi-title>-->
|
||||
<div style="letter-spacing: 1px;color: rgb(24, 103, 176);margin-left: 26px; font-weight: bolder">模式二</div>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发送对象" prop="activityGroupId">
|
||||
<!-- <el-select v-model="formData.activityGroupId" :disabled="hold" clearable-->
|
||||
<!-- placeholder="请在活动基础管理中设置人员范围" style="width: 100%" @change="getActivityUserData">-->
|
||||
<!-- <el-option v-for="item in activityGroupList"-->
|
||||
<!-- :label="item.groupName"-->
|
||||
<!-- :value="item.groupId"></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<div style="display: flex; justify-content: space-between">
|
||||
<div style="width: 99%">
|
||||
<el-select placeholder="请选择参加人员范围"
|
||||
v-model="formData.activityGroupId" style="width: 99%"
|
||||
clearable
|
||||
@change="getActivityUserData"
|
||||
filterable>
|
||||
<el-option v-for="item in activityGroupList"
|
||||
:label="item.groupName"
|
||||
:value="item.groupId"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div>
|
||||
<el-button @click="doLogInfo()"
|
||||
type="primary">设置
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
|
||||
<!-- <vi-title title="模式三"></vi-title>-->
|
||||
<div style="letter-spacing: 1px;color: rgb(24, 103, 176);margin-left: 26px; font-weight: bolder">模式三</div>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发送对象" prop="type">
|
||||
<el-radio v-model="formData.type" :disabled="hold" border label="user" @change="ChangeType">
|
||||
自定义人员
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-form-item>
|
||||
<div v-if="formData.type=='system'" class="btn-group tool-button mt5">
|
||||
<el-input v-model="pageForm1.searchKeyword" clearable placeholder="请输入内容"
|
||||
style="width: 100%"
|
||||
@keyup.enter.native="doSearch">
|
||||
<el-select slot="prepend" v-model="pageForm1.searchName" placeholder="查询类型"
|
||||
style="width: 80px;">
|
||||
<el-option label="姓名" value="u.username"></el-option>
|
||||
<el-option label="工号" value="u.loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div v-if="formData.type=='system'" class="btn-group tool-button mt5">
|
||||
<el-button icon="el-icon-search" type="primary" @click="changeRole">搜索</el-button>
|
||||
</div>
|
||||
<div v-if="!hold" class="pull-right offscreen-right mt5">
|
||||
<el-button v-if="formData.type=='user'" icon="el-icon-search" @click="openSelect">选择用户
|
||||
</el-button>
|
||||
<el-button icon="el-icon-delete" type="danger" @click="doDeleteUser">清空用户</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
:data="formData.users"
|
||||
:default-sort="{prop: 'opAt', order: 'descending'}"
|
||||
header-align="center"
|
||||
max-height="400px"
|
||||
style="width: 100%;margin-top: 10px;margin-bottom: 10px;overflow-y: auto;"
|
||||
@selection-change="(val)=>{selections = val.map(v=>v.loginname)}">
|
||||
|
||||
<el-table-column label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (pageForm1.pageNumber - 1) * pageForm1.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用户名" prop="loginName"></el-table-column>
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="手机" prop="mobile"></el-table-column>
|
||||
<el-table-column label="所属单位" prop="unitName"></el-table-column>
|
||||
<el-table-column label="院级工会" prop="unionName"></el-table-column>
|
||||
<el-table-column v-if="formData.type=='user'&&!hold" align="center" fixed="right" header-align="center"
|
||||
label="操作">
|
||||
<template scope="{$index,row}">
|
||||
<el-button size="mini" type="primary" @click="doDelete($index,row)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row v-if="formData.type!='user'" class="el-pagination-container" style="margin-bottom: 0px">
|
||||
<el-pagination
|
||||
:current-page="pageForm1.pageNumber"
|
||||
:page-size="pageForm1.pageSize"
|
||||
:page-sizes="[5,10, 20, 30, 50]"
|
||||
:total="pageForm1.totalCount"
|
||||
layout="total, sizes, prev, pager, next"
|
||||
@size-change=" pageSizeChange1 "
|
||||
@current-change="pageNumberChange1">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
|
||||
<vi-title title="消息发送方式"></vi-title>
|
||||
<el-form-item label="发送方式" prop="sendTypes">
|
||||
<el-checkbox-group v-model="formData.sendTypes" size="medium">
|
||||
<el-checkbox :disabled="hold || isSendPhoto" border label="msg">短信发送</el-checkbox>
|
||||
<el-checkbox :disabled="hold" border label="WeChat">微信发送</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="发送类型" prop="contentType">
|
||||
<el-radio-group v-model="formData.contentType" size="medium" @change="contentTypeChange">
|
||||
<el-radio border label="text">文本</el-radio>
|
||||
<el-radio border label="news">图片</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<!-- <el-form-item v-if="formData.contentType === 'news'" label="内容标题" prop="contentTitle">
|
||||
<el-input placeholder="请输入内容标题" v-model="formData.contentTitle">
|
||||
</el-input>
|
||||
</el-form-item>-->
|
||||
|
||||
<el-form-item v-if="formData.contentType === 'news'" label="上传图片" prop="contentUrl">
|
||||
<image-Upload :height="100" :width="180" :limit="1" :file-type="['png', 'jpg']" :file-size="1"
|
||||
:upload-data="{folderPath:'/msgPhoto/'}" v-model="formData.contentUrl"></image-Upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="发送内容" prop="content">
|
||||
<el-input
|
||||
:disabled="hold"
|
||||
v-model="formData.content"
|
||||
:rows="6"
|
||||
placeholder="请输入内容"
|
||||
type="textarea">
|
||||
</el-input>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-dialog
|
||||
:append-to-body="true" :visible.sync="selectDialogVisible"
|
||||
title="选择用户"
|
||||
:close-on-click-modal="false" @closed="diaClosed"
|
||||
width="65%">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-input v-model="pageForm.searchKeyword" clearable placeholder="请输入内容"
|
||||
style="width: 100%"
|
||||
@keyup.enter.native="doSearch">
|
||||
<el-select slot="prepend" v-model="pageForm.searchName" placeholder="查询类型"
|
||||
style="width: 80px;">
|
||||
<el-option label="姓名" value="username"></el-option>
|
||||
<el-option label="工号" value="loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-button icon="el-icon-search" type="primary" @click="doSearch">搜索</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
:data="tableData"
|
||||
:size="tableSize"
|
||||
ref="table"
|
||||
row-key="id"
|
||||
:default-sort="{prop: 'opAt', order: 'descending'}"
|
||||
header-align="center"
|
||||
size="small"
|
||||
style="width: 100%;margin-top: 10px;margin-bottom: 10px;overflow-y: auto"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="35" :reserve-selection="true"></el-table-column>
|
||||
<el-table-column label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (pageForm.pageNumber - 1) * pageForm.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用户名" prop="loginName"></el-table-column>
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="手机" prop="mobile"></el-table-column>
|
||||
<el-table-column label="所属单位" prop="unitName"></el-table-column>
|
||||
<el-table-column label="院级工会" prop="unionName"></el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
:page-sizes="[5,10, 20, 30, 50]"
|
||||
:total="pageForm.totalCount"
|
||||
layout="total, sizes, prev, pager, next"
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange">
|
||||
</el-pagination>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="selectDialogVisible = false"> 取 消 </el-button>
|
||||
<el-button type="primary" @click="addUser"> 确 定 </el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<div>
|
||||
<drawer-user-scope
|
||||
@group_change="getActivityGroup();getActivityUserData()"
|
||||
ref="drawerUserScope"
|
||||
:group_id.sync="formData.activityGroupId"
|
||||
></drawer-user-scope>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
model: {
|
||||
prop: 'formData',
|
||||
event: 'change'
|
||||
},
|
||||
props: {
|
||||
title_disabled: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
notify_id: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
hold: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
formData: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isSendPhoto: false,
|
||||
tableSize: '',
|
||||
notifyId: "",
|
||||
hold: false,
|
||||
selectDialogVisible: false,
|
||||
users: [],
|
||||
selectUsers: [],
|
||||
activityGroupList: [],
|
||||
roleList: [],
|
||||
meetingOptions: [],
|
||||
menuOptions: [],
|
||||
tableData: [],
|
||||
// formData: {
|
||||
// type: "",
|
||||
// sendTypes: []
|
||||
// },
|
||||
pageForm1: {
|
||||
groupId: "",
|
||||
searchName: 'u.username',
|
||||
pageNumber: 1,
|
||||
pageSize: 5,
|
||||
totalCount: 0,
|
||||
},
|
||||
pageForm: {
|
||||
searchName: "username",
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "",
|
||||
pageOrderBy: ""
|
||||
},
|
||||
addFormRules: {
|
||||
content: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
sendTypes: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
contentType: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
contentTitle: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
contentUrl: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
},
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
formData(val) {
|
||||
this.$emit('change', val);
|
||||
}
|
||||
|
||||
},
|
||||
components: {
|
||||
'drawer-user-scope': httpVueLoader('/components/plugins/DrawerUserScope.vue'),
|
||||
},
|
||||
methods: {
|
||||
contentTypeChange(val) {
|
||||
if(val === 'news') {
|
||||
this.formData.sendTypes = ['WeChat']
|
||||
this.isSendPhoto = true
|
||||
} else {
|
||||
this.formData.sendTypes = []
|
||||
this.isSendPhoto = false
|
||||
}
|
||||
},
|
||||
doLogInfo(){
|
||||
this.$refs.drawerUserScope.userScopeDialog = true
|
||||
// console.log(this.$refs.drawerUserScope)
|
||||
},
|
||||
diaClosed() {
|
||||
this.$refs.table.clearSelection()
|
||||
this.selectUsers = [];
|
||||
this.pageForm.searchKeyword = '';
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
this.selectUsers = val;
|
||||
},
|
||||
async doDelete(index, row) {
|
||||
try {
|
||||
const confirm = await this.$confirm('您确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm) {
|
||||
this.formData.users.splice(index, 1)
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
},
|
||||
doDeleteUser() {
|
||||
this.$set(this.formData, "users", [])
|
||||
this.$forceUpdate();
|
||||
},
|
||||
addUser() {
|
||||
this.formData.users = this.formData.users.concat(this.selectUsers)
|
||||
this.selectDialogVisible = false;
|
||||
},
|
||||
pageSizeChange1(val) {
|
||||
this.pageForm1.pageSize = val;
|
||||
if (this.formData.roleIds.length > 0) {
|
||||
this.changeRole();
|
||||
} else if (this.formData.activityGroupId != "") {
|
||||
this.getActivityUserData()
|
||||
|
||||
} else {
|
||||
this.getUsersByTitleId(this.formData.id)
|
||||
}
|
||||
},
|
||||
pageNumberChange1(val) {
|
||||
this.pageForm1.pageNumber = val;
|
||||
if (this.formData.roleIds.length > 0) {
|
||||
this.changeRole();
|
||||
} else if (this.formData.activityGroupId != "") {
|
||||
this.getActivityUserData()
|
||||
|
||||
} else {
|
||||
this.getUsersByTitleId(this.formData.id)
|
||||
}
|
||||
},
|
||||
async ChangeType() {
|
||||
this.$set(this.formData, "roleIds", [])
|
||||
this.$set(this.formData, "module", "")
|
||||
this.$set(this.formData, "teacherMeetingId", "")
|
||||
this.$set(this.formData, "activityGroupId", "")
|
||||
|
||||
// this.$set(this.formData, "type", "")
|
||||
this.$set(this.formData, "users", [])
|
||||
|
||||
},
|
||||
async getRoleListByMenuId() {
|
||||
const {data} = await $.post("/platform/msgNotify/send/getRoleListByMenuId", {menuId: this.formData.module})
|
||||
this.roleList = data
|
||||
if (!this.formData.id) {
|
||||
this.$set(this.formData, "roleIds", [])
|
||||
this.$set(this.formData, "users", [])
|
||||
}
|
||||
|
||||
},
|
||||
async getMenuOptions() {
|
||||
const {data} = await $.get("/platform/sys/role/getMenuOptions")
|
||||
this.menuOptions = data
|
||||
if (!this.formData.id) {
|
||||
this.$set(this.formData, "roleIds", [])
|
||||
this.$set(this.formData, "users", [])
|
||||
}
|
||||
},
|
||||
async changeRole() {
|
||||
const data = await $.post("/platform/msgNotify/send/getUserByRoleId", {
|
||||
roleIds: JSON.stringify(this.formData.roleIds),
|
||||
module: this.formData.module,
|
||||
teacherMeetingId: this.formData.teacherMeetingId,
|
||||
pageSize: this.pageForm1.pageSize,
|
||||
pageNumber: this.pageForm1.pageNumber,
|
||||
searchName: this.pageForm1.searchName,
|
||||
searchKeyword: this.pageForm1.searchKeyword
|
||||
})
|
||||
this.formData.users = data.data.list;
|
||||
this.pageForm1.totalCount = data.data.totalCount;
|
||||
|
||||
|
||||
},
|
||||
async getActivityUserData() {
|
||||
this.$set(this.formData, "roleIds", [])
|
||||
this.$set(this.formData, "module", "")
|
||||
this.$set(this.formData, "teacherMeetingId", "")
|
||||
this.$set(this.formData, "type", "")
|
||||
this.$set(this.formData, "users", [])
|
||||
const pageForm = clone(this.pageForm1)
|
||||
pageForm.groupId = this.formData.activityGroupId
|
||||
const resp = await $.post('/platform/activity/basic/user/pageData', pageForm)
|
||||
if (resp.code === 0) {
|
||||
this.formData.users = resp.data.list
|
||||
this.pageForm1.totalCount = resp.data.totalCount
|
||||
}
|
||||
},
|
||||
async openSelect() {
|
||||
this.pageData()
|
||||
this.selectDialogVisible = true
|
||||
},
|
||||
doSearch() {
|
||||
this.tableKey = new Date().getTime()
|
||||
this.pageForm.pageNumber = 1
|
||||
this.pageData()
|
||||
},
|
||||
pageNumberChange(val) {
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageSizeChange(val) {
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageData() {
|
||||
const pageForm = clone(this.pageForm)
|
||||
pageForm.users = JSON.stringify(this.formData.users.map(v => v.id))
|
||||
$.post('/platform/msgNotify/send/pageData', pageForm, (data) => {
|
||||
if (data.code == 0) {
|
||||
this.tableData = data.data.list;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
this.$message.error(data.msg);
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
async findOne(id) {
|
||||
const {data} = await $.post("/platform/msgNotify/send/findOne", {id: id})
|
||||
data.sendTypes = data.sendTypes
|
||||
data.activityGroupId = data.activityGroupId ? parseInt(data.activityGroupId) : ""
|
||||
this.formData = data
|
||||
},
|
||||
async getUsersByTitleId(id, type) {
|
||||
const data = await $.post("/platform/msgNotify/send/getUsersByTitleId", {...this.pageForm1, id: id, type: type})
|
||||
if (data.data.totalCount) {
|
||||
this.$set(this.formData, "users", data.data.list)
|
||||
} else {
|
||||
this.$set(this.formData, "users", data.data)
|
||||
}
|
||||
this.pageForm1.totalCount = data.data.totalCount;
|
||||
},
|
||||
async getActivityGroup() {
|
||||
const resp = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
||||
this.activityGroupList = resp.data
|
||||
},
|
||||
|
||||
},
|
||||
async created() {
|
||||
this.meetingOptions = await proposal.getOpenMeeting()
|
||||
await this.getActivityGroup()
|
||||
|
||||
await this.getMenuOptions()
|
||||
// console.log(this.hold)
|
||||
if (this.notify_id) {
|
||||
await this.findOne(this.notify_id)
|
||||
await this.getUsersByTitleId(this.notify_id, this.formData.type)
|
||||
setTimeout(async () => {
|
||||
await this.getRoleListByMenuId()
|
||||
}, 100)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,113 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-tabs v-model="activeName" tab-position="top">
|
||||
<el-tab-pane label="基础信息" name="1">
|
||||
<el-descriptions border column="3">
|
||||
<el-descriptions-item label="主题" span="3">
|
||||
<div style="font-weight:bold;">
|
||||
{{ viewData.subjectName }}
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="姓名">{{
|
||||
viewData.createUserName + '-' + viewData.createLoginName
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="时间">{{ viewData.createTime }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="类型">{{ viewData.type.typeName }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="内容" span="3">
|
||||
<div class="text-left" v-html="viewData.brief"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="建议措施" span="3">
|
||||
<div class="text-left" v-html="viewData.measures"></div>
|
||||
</el-descriptions-item>
|
||||
|
||||
</el-descriptions>
|
||||
<file-upload v-if="viewData.files && viewData.files.length"
|
||||
:files="viewData.files"
|
||||
:view="true" class="mt10"></file-upload>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="!jQuery.isEmptyObject(viewData.schoolUnionAuditInfo)" label="校工会审核信息" name="2">
|
||||
<el-descriptions border column="2">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ viewData.schoolUnionAuditInfo.username }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.schoolUnionAuditInfo.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :span="2" label="审核意见">
|
||||
{{ viewData.schoolUnionAuditInfo.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="承办单位">
|
||||
{{ viewData.underTakeInfo.unitName }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="!jQuery.isEmptyObject(viewData.leaderAuditInfo)" label="分管校领导审核信息" name="3">
|
||||
<el-descriptions border column="2">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ viewData.leaderAuditInfo.username }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ viewData.leaderAuditInfo.auditTime }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :span="2" label="审核意见">
|
||||
{{ viewData.leaderAuditInfo.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="是否公示">
|
||||
<template v-if="viewData.publicity!=null">
|
||||
<span :class="viewData.publicity?'text-success':'text-danger'">{{ viewData.publicity ? '是' : '否' }}</span>
|
||||
</template>
|
||||
<span v-else>无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<slot name="handle"></slot>
|
||||
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "OfferAdviceInfo",
|
||||
data() {
|
||||
return {
|
||||
activeName: "1",
|
||||
viewData: {
|
||||
type: {}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openView(id) {
|
||||
this.findOne(id)
|
||||
},
|
||||
openAudit(id, activeName) {
|
||||
this.findOne(id)
|
||||
this.activeName = activeName
|
||||
},
|
||||
async findOne(id) {
|
||||
const resp = await $.get('/platform/offerAdviceWrite/findOne/' + id)
|
||||
if (resp.code === 0) {
|
||||
this.viewData = resp.data
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-descriptions__table {
|
||||
table-layout: fixed !important;
|
||||
}
|
||||
|
||||
.el-descriptions-item__cell {
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
*Desc:
|
||||
*Create by: jug
|
||||
*Create time:2023/11/10/11:07
|
||||
*/
|
||||
<template>
|
||||
<div class="el-descriptions">
|
||||
<div class="el-descriptions__body">
|
||||
<slot></slot>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-descriptions__table {
|
||||
table-layout: fixed;
|
||||
!important;
|
||||
}
|
||||
|
||||
.el-descriptions table {
|
||||
table-layout: auto;
|
||||
}
|
||||
|
||||
.el-descriptions__body table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
.el-descriptions :not(.is-bordered) th, td {
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
|
||||
.el-descriptions .is-bordered th, td {
|
||||
border: 1px solid #ebeef5;
|
||||
padding: 12px 10px;
|
||||
}
|
||||
|
||||
.el-descriptions__body table th, td {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
text-align: left;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.el-descriptions__body table th {
|
||||
font-weight: 400;
|
||||
color: #909399;
|
||||
background: #fafafa;
|
||||
border: 1px solid #ebeef5;
|
||||
padding: 12px 10px;
|
||||
min-width: 180px;
|
||||
}
|
||||
|
||||
.el-descriptions__body table td .el-form-item {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.el-descriptions__body table td .is-required .el-form-item__error {
|
||||
background: #303133;
|
||||
color: #fff;
|
||||
position: absolute;
|
||||
border-radius: 4px;
|
||||
padding: 10px;
|
||||
z-index: 2000;
|
||||
font-size: 12px;
|
||||
line-height: 1.2;
|
||||
min-width: 10px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.el-descriptions .el-date-editor.el-input, .el-date-editor.el-input__inner {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,266 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="高级查询构造器"
|
||||
:visible.sync="dialogVisible"
|
||||
:close-on-click-modal="false"
|
||||
width="50%">
|
||||
|
||||
<el-row type="flex">
|
||||
<el-col style="display:flex;align-items: center;width: 200px">
|
||||
<vi-title title="过滤条件匹配:"
|
||||
style="display:flex;align-items: center;margin-bottom: 0"></vi-title>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<enum-select v-model="value.method" value="name" :clearable="false" label="description"
|
||||
style="width: 300px"
|
||||
enum="MatchMethod"></enum-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row v-for="(cnd,idx) in value.conditions" gutter="20" style="margin-top: 20px" type="flex">
|
||||
<el-col span="7">
|
||||
<el-select v-model="cnd.field" placeholder="请选择字段" style="width: 100%"
|
||||
@change="(v)=>fieldChange(v,cnd)">
|
||||
<el-option
|
||||
v-for="item in fields"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col span="4">
|
||||
<enum-select v-model="cnd.operational" value="name" :clearable="false" label="description"
|
||||
style="width: 100%"
|
||||
enum="ConditionalOperational"></enum-select>
|
||||
</el-col>
|
||||
<el-col span="9">
|
||||
|
||||
<el-select v-if="cnd.fieldObj&&cnd.fieldObj.type=='select'" v-model="cnd.value"
|
||||
placeholder="请选择值"
|
||||
filterable
|
||||
style="width: 100%"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="item in cnd.fieldObj.options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
|
||||
<el-date-picker
|
||||
v-else-if="cnd.fieldObj&&cnd.fieldObj.type=='date'"
|
||||
v-model="cnd.value"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择日期" style="width: 100%">
|
||||
</el-date-picker>
|
||||
|
||||
<el-input v-else v-model="cnd.value" clearable placeholder="请输入值"
|
||||
style="width: 100%"></el-input>
|
||||
|
||||
</el-col>
|
||||
<el-col style="width: 180px">
|
||||
<el-button icon="el-icon-plus" @click="value.conditions.splice(idx+1, 0, {})"></el-button>
|
||||
<el-button icon="el-icon-minus" :disabled="value.conditions.length==1"
|
||||
@click="value.conditions.splice(idx, 1)"></el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row v-if="show_filter_result" :gutter="10" class="mt20">
|
||||
<table-tool :app="this" label="查询结果">
|
||||
<template #func>
|
||||
<!-- <el-button @click="openAdd" size="small" type="primary">新增类型</el-button>-->
|
||||
</template>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="searchData" :size="tableSize" v-loading="tableLoading" style="width: 100%">
|
||||
<el-table-column header-align="center" label="序号" type="index"
|
||||
width="80px"></el-table-column>
|
||||
|
||||
<el-table-column
|
||||
v-for="column in tableColumns"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
align="center"
|
||||
header-align="center"
|
||||
min-width="50"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container" style="margin-bottom: 0px">
|
||||
<el-pagination
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
:page-sizes="[5,10, 20, 30, 50]"
|
||||
:total="pageForm.totalCount"
|
||||
layout="total, sizes, prev, pager, next"
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
|
||||
</el-row>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="doSubmit" v-if="show_submit">{{ submit_text }}</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
value: {
|
||||
type: Object, default: {
|
||||
method: "AND",
|
||||
conditions: [{}],
|
||||
}
|
||||
},
|
||||
fields: [],
|
||||
submit_text: {type: String, default: '确 定'},
|
||||
show_filter_result: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
show_submit: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
model: {
|
||||
prop: 'value',
|
||||
event: 'confirm'
|
||||
},
|
||||
components: {'enum-select': httpVueLoader('/components/plugins/EnumSelect.vue?v=1.0.0'),},
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
searchData: [],
|
||||
tableSize: null,
|
||||
tableLoading: false,
|
||||
tableColumns: [
|
||||
{label: '姓名', prop: 'username'},
|
||||
{label: '工号', prop: 'loginname'},
|
||||
{label: '性别', prop: 'sex'},
|
||||
{label: '单位', prop: 'unitname'},
|
||||
{label: '分工会', prop: 'unionname'},
|
||||
],
|
||||
pageForm: {pageNumber: 1, totalCount: 0, pageSize: 5}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value: {
|
||||
deep: true,
|
||||
handler: function (value) {
|
||||
if (value.conditions.length) {
|
||||
value.conditions.map(v => {
|
||||
const field = this.fields.find(x => x.value == v.field)
|
||||
v.fieldObj = field
|
||||
})
|
||||
}
|
||||
// this.$emit("confirm", value)
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
fieldChange(val, cnd) {
|
||||
this.$set(cnd, "value", '')
|
||||
this.$set(cnd, "fieldObj", this.fields.find(v => v.value == val))
|
||||
},
|
||||
doSubmit() {
|
||||
this.dialogVisible = false
|
||||
//传递合法的数据
|
||||
const matchCnd = clone(this.value)
|
||||
matchCnd.conditions = matchCnd.conditions.filter(v => {
|
||||
if (v.field && v.operational && v.value) {
|
||||
v.options = []
|
||||
return v
|
||||
}
|
||||
})
|
||||
this.$emit("confirm", matchCnd)
|
||||
},
|
||||
flush() {
|
||||
this.value = {
|
||||
method: "AND",
|
||||
conditions: [{}],
|
||||
}
|
||||
},
|
||||
flushUserTable() {
|
||||
this.searchData = []
|
||||
this.pageForm.pageNumber = 1
|
||||
this.pageForm.pageSize = 5
|
||||
this.pageForm.totalCount = 0
|
||||
},
|
||||
|
||||
open(flush) {
|
||||
if (flush || !this.value || !Object.keys(this.value)) {
|
||||
this.flush()
|
||||
}
|
||||
this.flushUserTable()
|
||||
if (this.value && this.value.conditions.length > 0) {
|
||||
// this.doSearch()
|
||||
}
|
||||
this.dialogVisible = true
|
||||
},
|
||||
pageNumberChange(val) {
|
||||
this.pageForm.pageNumber = val
|
||||
this.findUserByCnd()
|
||||
},
|
||||
pageSizeChange(val) {
|
||||
this.pageForm.pageSize = val
|
||||
this.findUserByCnd()
|
||||
},
|
||||
async findUserByCnd() {
|
||||
const param = {
|
||||
...this.pageForm,
|
||||
cnd: null
|
||||
}
|
||||
const matchCnd = clone(this.value)
|
||||
matchCnd.conditions = matchCnd.conditions.filter(v => {
|
||||
if (v.field && v.operational && v.value) {
|
||||
v.options = []
|
||||
return v
|
||||
}
|
||||
})
|
||||
if (matchCnd.conditions && matchCnd.conditions.length > 0) {
|
||||
param.cnd = JSON.stringify(matchCnd)
|
||||
this.tableLoading = true
|
||||
const resp = await $.post('/platform/userFilter/findUserByCnd', param)
|
||||
if (resp.code === 0) {
|
||||
this.searchData = resp.data.list
|
||||
this.pageForm.totalCount = resp.data.totalCount
|
||||
} else {
|
||||
this.$message.error(resp.msg)
|
||||
}
|
||||
this.tableLoading = false
|
||||
}
|
||||
},
|
||||
doSearch() {
|
||||
this.pageForm.pageNumber = 1
|
||||
this.findUserByCnd()
|
||||
},
|
||||
tableSizeChange(size) {
|
||||
this.tableSize = size
|
||||
},
|
||||
columnChange(val) {
|
||||
this.tableLoading = true
|
||||
this.tableColumns = val
|
||||
this.tableLoading = false
|
||||
},
|
||||
},
|
||||
created() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,91 @@
|
||||
<template>
|
||||
<el-select v-model="value" :placeholder="placeholder" @change="onChange" :disabled="disabled" :clearable="clearable"
|
||||
:style="style"
|
||||
:multiple="multiple"
|
||||
:size="size">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item[option_value]"
|
||||
:label="item[option_label]"
|
||||
:value="item[option_value]">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
value: {type: String},
|
||||
code: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
option_value: {
|
||||
type: String,
|
||||
default: "code"
|
||||
},
|
||||
option_label: {
|
||||
type: String,
|
||||
default: "name"
|
||||
},
|
||||
style: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
placeholder: {
|
||||
type: String,
|
||||
default: "请选择"
|
||||
},
|
||||
clearable: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
multiple: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
model: {
|
||||
prop: 'value',
|
||||
event: 'change'
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
options: []
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
code(val) {
|
||||
this.flushOptions()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onChange(val) {
|
||||
this.$emit("change", val)
|
||||
},
|
||||
async flushOptions() {
|
||||
if (!this.code) {
|
||||
this.options = []
|
||||
return
|
||||
}
|
||||
this.options = await getDictOptions(this.code)
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.flushOptions()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,83 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-drawer
|
||||
title="我是标题" size="78%"
|
||||
:visible.sync="userScopeDialog"
|
||||
:append-to-body="true"
|
||||
:with-header="false">
|
||||
<div style="padding: 0px 16px;" class="clearfix">
|
||||
<el-button icon="el-icon-back" style="font-size: 16px" type="text"
|
||||
@click="userScopeDialog = false">返回
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<guava>
|
||||
<el-tabs tab-position="top" v-model="activeName" @tab-click="handleClick">
|
||||
|
||||
<el-tab-pane label="人员设置" name="1">
|
||||
<template>
|
||||
|
||||
<user-scope ref="userScope" @group_change="group_change"
|
||||
:group_id.sync="groupId"></user-scope>
|
||||
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="人员调整" name="2">
|
||||
<user-data-scope
|
||||
@group_change="group_change"
|
||||
ref="userDataScope"
|
||||
></user-data-scope>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
</guava>
|
||||
|
||||
</el-drawer>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {},
|
||||
model: {},
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
groupId: "",
|
||||
userScopeDialog: false,
|
||||
activeName: '1',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClick() {
|
||||
if (this.activeName === "2") {
|
||||
this.$refs.userDataScope.getActivityGroup()
|
||||
} else {
|
||||
this.$refs.userScope.getActivityGroup()
|
||||
|
||||
}
|
||||
},
|
||||
group_change() {
|
||||
this.$emit('group_change')
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'user-data-scope': httpVueLoader('/components/plugins/UserDataScope.vue'),
|
||||
'user-scope': httpVueLoader('/components/plugins/UserScope.vue'),
|
||||
},
|
||||
watch: {
|
||||
'groupId': {
|
||||
async handler(newVal) {
|
||||
this.$emit("update:group_id", newVal)
|
||||
},
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
<template>
|
||||
<el-select v-model="model" :clearable="clearable" :multiple="multiple" :placeholder="placeholder" :size="size"
|
||||
:style="style"
|
||||
@change="onChange">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item[value]"
|
||||
:label="item[label]"
|
||||
:value="item[value]">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
model: {type: String},
|
||||
enum: {type: String},
|
||||
value: {
|
||||
type: String
|
||||
},
|
||||
label: {
|
||||
type: String
|
||||
},
|
||||
style: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
placeholder: {
|
||||
type: String,
|
||||
default: "请选择"
|
||||
},
|
||||
clearable: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
multiple: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
model: {
|
||||
prop: 'model',
|
||||
event: 'change'
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
options: []
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
enum(val) {
|
||||
this.flushOptions()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onChange(val) {
|
||||
this.$emit("change", val)
|
||||
},
|
||||
async flushOptions() {
|
||||
if (!this.enum) {
|
||||
this.options = []
|
||||
return
|
||||
}
|
||||
this.options = await getEnumOptions(this.enum)
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.flushOptions()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,189 @@
|
||||
<template>
|
||||
|
||||
<div>
|
||||
|
||||
<vi-title2 title="分段设置  提示:如分工会人数在0-20人的,分配5个名额;21-50人,分配10个名额">
|
||||
<template #func>
|
||||
<el-button size="small" type="primary" @click="unionLimitQuickSetting">
|
||||
应用分段设置
|
||||
</el-button>
|
||||
</template>
|
||||
</vi-title2>
|
||||
|
||||
<el-row v-for="(item,index) in unionUserNumCalc" :gutter="20" class="mb5">
|
||||
<el-col :span="7">
|
||||
<el-input-number v-model="item.startNum" :precision="0" :step="1" :min="1" placeholder="请输入最小人数"
|
||||
style="width: 100%"></el-input-number>
|
||||
</el-col>
|
||||
<el-col :span="7">
|
||||
<el-input-number v-model="item.endNum" :precision="0" :step="1" :min="1" placeholder="请输入最大人数"
|
||||
style="width: 100%"></el-input-number>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-input-number v-model="item.resultNum" :precision="0" :step="1" :min="1" placeholder="请输入限制人数"
|
||||
style="width: 100%"></el-input-number>
|
||||
</el-col>
|
||||
<el-col :span="4" class="text-right">
|
||||
<el-button icon="el-icon-plus" @click="unionUserNumCalc.push({})"></el-button>
|
||||
<el-button icon="el-icon-minus" @click="unionUserNumCalc.splice(index,1)"
|
||||
:disabled="unionUserNumCalc.length===1"></el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="mt10">
|
||||
<div v-for="(item,index) in unionUserNumCalcTips" class="text-danger">
|
||||
<span class="mr10">({{ index + 1 }}).</span> {{ item }}
|
||||
</div>
|
||||
</el-row>
|
||||
|
||||
<vi-title2 title="比例设置" class="mt20">
|
||||
<template #func>
|
||||
一键比例:
|
||||
<el-input-number v-model="unionUserNumOneKeyRatio" :precision="0" :step="1" :min="0"
|
||||
placeholder="请输入一键比例"
|
||||
size="small"
|
||||
:max="100"></el-input-number>
|
||||
<el-button size="small" type="primary" @click="applyScaleSettings" class="ml5">应用比例设置</el-button>
|
||||
</template>
|
||||
</vi-title2>
|
||||
|
||||
<el-table :data="union_limit" max-height="500px">
|
||||
<el-table-column prop="unionname" label="分工会"></el-table-column>
|
||||
<el-table-column prop="teacherCount" label="人数"></el-table-column>
|
||||
<el-table-column prop="ratio" label="比例(%)">
|
||||
<template slot-scope="scope">
|
||||
<el-input-number v-model="scope.row.ratio" @change="(val) => ratioChange(val, scope.$index)" :precision="0"
|
||||
:step="1" :min="0" :max="100"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="limitCount" label="分配人数">
|
||||
<template scope="{row}">
|
||||
<el-input-number v-model="row.limitCount" :precision="0" :step="1" :min="0"
|
||||
:max="row.teacherCount" @change="calSummaryCount"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-row class="mt20" justify="end" type="flex">
|
||||
<div class="text-danger" style="width: 100%;font-size: 18px;display: flex;align-items: center;font-weight: bold">
|
||||
分配总人数:{{ summaryCount }}人
|
||||
</div>
|
||||
<el-button @click="clearUnionLimit" type="danger">清空当前已分配</el-button>
|
||||
</el-row>
|
||||
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
union_limit: {
|
||||
type: Object, default: []
|
||||
},
|
||||
user_scope: {
|
||||
type: String, default: ''
|
||||
}
|
||||
},
|
||||
model: {},
|
||||
data() {
|
||||
return {
|
||||
unionUserNumCalc: [{}],
|
||||
summaryCount: 0,
|
||||
unionUserNumOneKeyRatio: null,
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
union_limit: {
|
||||
deep: true,
|
||||
handler: function (value) {
|
||||
this.$emit("update:union_limit", value)
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async clearUnionLimit() {
|
||||
const confirm = await this.$confirm('确定要清空分工会人数限制吗, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if ('confirm' === confirm) {
|
||||
this.union_limit = []
|
||||
this.summaryCount = 0
|
||||
this.unionUserNumOneKeyRatio = null
|
||||
this.unionUserNumCalc = [{}]
|
||||
await this.initData()
|
||||
}
|
||||
},
|
||||
unionLimitQuickSetting() {
|
||||
this.unionUserNumCalc.forEach((v, i) => {
|
||||
const startNum = v.startNum
|
||||
const endNum = v.endNum
|
||||
const resultNum = v.resultNum
|
||||
if (startNum > endNum) {
|
||||
this.$message.warning('第' + (i + 1) + '行设置错误')
|
||||
} else {
|
||||
this.union_limit.forEach(x => {
|
||||
if (x.teacherCount >= startNum && x.teacherCount <= endNum) {
|
||||
x.limitCount = resultNum
|
||||
}
|
||||
})
|
||||
this.calSummaryCount()
|
||||
}
|
||||
})
|
||||
},
|
||||
calSummaryCount() {
|
||||
const array = this.union_limit
|
||||
if (array && array.length > 0) {
|
||||
this.summaryCount = array.reduce((prev, curr) => {
|
||||
const union_limit = Number(curr.limitCount);
|
||||
if (!isNaN(union_limit)) {
|
||||
return prev + curr.limitCount;
|
||||
} else {
|
||||
return prev;
|
||||
}
|
||||
}, 0)
|
||||
}
|
||||
},
|
||||
//应用比例设置
|
||||
applyScaleSettings() {
|
||||
this.union_limit.forEach(v => {
|
||||
v.ratio = this.unionUserNumOneKeyRatio
|
||||
if (v.ratio) {
|
||||
v.limitCount = parseFloat((v.teacherCount * v.ratio / 100).toFixed(0))
|
||||
}
|
||||
})
|
||||
this.calSummaryCount()
|
||||
},
|
||||
ratioChange(val, index) {
|
||||
const v = this.union_limit[index]
|
||||
v.limitCount = parseFloat((v.teacherCount * v.ratio / 100).toFixed(0))
|
||||
this.calSummaryCount()
|
||||
},
|
||||
async initData() {
|
||||
if (!this.union_limit || this.union_limit.length === 0) {
|
||||
const resp = await $.get('/platform/vi/common/getUnionLimit', {activityScopeId: this.user_scope})
|
||||
if (resp.code === 0) {
|
||||
this.$set(this, 'union_limit', resp.data)
|
||||
}
|
||||
}
|
||||
this.calSummaryCount()
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
unionUserNumCalcTips() {
|
||||
return this.unionUserNumCalc.map(v => {
|
||||
return (v.startNum ? v.startNum : '?') + '-' + (v.endNum ? v.endNum : '?') + '人的分工会,限报' + (v.resultNum ? v.resultNum : '?') + '人'
|
||||
})
|
||||
},
|
||||
},
|
||||
|
||||
created() {
|
||||
this.initData()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,948 @@
|
||||
<template>
|
||||
<div>
|
||||
<div v-if="view" class="viewFile">
|
||||
<div v-for="(file,index) in files" class="viewFileItem" title="点击查看" @click="showSource(file,index,$event)">
|
||||
|
||||
<template v-if="resolvingShowByFileName(file.filename) == 1">
|
||||
<el-image
|
||||
:src="APP_DOMAIN + '/file_server/fileStreamPreview?id=' + file.id"
|
||||
fit="cover"
|
||||
style="width: 100%; height: 100%;"></el-image>
|
||||
<!-- <img class="show-img" :src="getFileItemShowIcon(file.filepath)" :alt="file.filename"/>-->
|
||||
</template>
|
||||
<template v-else>
|
||||
<svg aria-hidden="true">
|
||||
<!-- <use :xlink:href="APP_DOMAIN + '/file_server/fileStreamPreview?id=' + file.id"></use>-->
|
||||
<use
|
||||
:xlink:href="wpUploadFileShowResolving.getFileItemShowIcon(resolvingShowByFileName(file.filename), file.filepath, true)"></use>
|
||||
</svg>
|
||||
</template>
|
||||
<div :title="file.filename" class="viewFileName">{{ file.filename }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-upload
|
||||
v-else-if="card"
|
||||
:limit="max"
|
||||
:action="FILE_UPLOAD_ADDRESS"
|
||||
:before-upload="beforeUpload"
|
||||
:on-remove="handleRemove"
|
||||
:on-success="onSuccess"
|
||||
:file-list="fileList"
|
||||
:on-exceed="handleExceed"
|
||||
class="x100000 upload-card"
|
||||
drag
|
||||
:on-preview="handlePreview"
|
||||
:data="{source:source}"
|
||||
multiple>
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">
|
||||
将文件拖到此处,或<em>点击上传</em>
|
||||
|
||||
<!-- <span @click.stop="openPicture">或<em>图库上传</em></span>-->
|
||||
<!-- <slot name="el-upload__tip"></slot>-->
|
||||
<div class="el-upload__tip" slot="tip" v-if="showTip">
|
||||
请上传
|
||||
<template v-if="max_size"> 大小不超过 <b style="color: #f56c6c">{{ max_size }}MB</b></template>
|
||||
<template v-if="size"> 尺寸为 <b style="color: #f56c6c">{{ size }}</b></template>
|
||||
<template v-if="type"> 格式为 <b style="color: #f56c6c">{{ type.join("/") }}</b></template>
|
||||
的文件
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</el-upload>
|
||||
|
||||
<el-upload
|
||||
v-else
|
||||
:limit="max"
|
||||
:action="FILE_UPLOAD_ADDRESS"
|
||||
:before-upload="beforeUpload"
|
||||
:on-remove="handleRemove"
|
||||
:on-success="onSuccess"
|
||||
:file-list="fileList"
|
||||
:on-exceed="handleExceed"
|
||||
:on-preview="handlePreview"
|
||||
:data="{source:source}"
|
||||
class="x100000"
|
||||
multiple>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<el-button size="small" type="primary" @click.stop="openPicture">从图库选择</el-button>
|
||||
<!-- <slot name="el-upload__tip"></slot>-->
|
||||
<div class="el-upload__tip" slot="tip" v-if="showTip">
|
||||
请上传
|
||||
<template v-if="max_size"> 大小不超过 <b style="color: #f56c6c">{{ max_size / 1024 / 1024 }}MB</b></template>
|
||||
<template v-if="size"> 尺寸为 <b style="color: #f56c6c">{{ size }}</b></template>
|
||||
<template v-if="type"> 格式为 <b style="color: #f56c6c">{{ type.join("/") }}</b></template>
|
||||
的文件
|
||||
</div>
|
||||
</el-upload>
|
||||
|
||||
<el-dialog title="图片选择" :visible.sync="picDialogVisible" width="50%" class="pictureDialog"
|
||||
:close-on-click-modal="false">
|
||||
|
||||
<el-tabs v-model="picActiveName" type="card">
|
||||
<el-tab-pane v-for="picType in pictures" :key="picType.id" :label="picType.typeName" :name="picType.id">
|
||||
<div style="display: grid;grid-template-columns: repeat(auto-fill,100px);column-gap: 30px;row-gap: 20px">
|
||||
<div v-for="pic in picType.pictureList" :key="pic.id">
|
||||
<el-checkbox v-model="selectPictures" :label="pic.id">
|
||||
<!-- <el-image :key="pic.id"-->
|
||||
<!-- :src="CREATE_PREVIEW_URL(pic.filepath)"-->
|
||||
<!-- class="picture-image-item"-->
|
||||
<!-- :class="{'picture-image-item-select':selectPictures.includes(pic.id)}"-->
|
||||
<!-- style="width: 100%;height: 100%"/>-->
|
||||
<!-- <span>{{ pic.filename }}</span>-->
|
||||
|
||||
<div class="picture-image-item"
|
||||
:class="{'picture-image-item-select':selectPictures.includes(pic.id)}"
|
||||
:style="{'background-image':'url('+CREATE_PREVIEW_URL(pic.filepath)+')'}">
|
||||
</div>
|
||||
</el-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="picDialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="confirmPictures">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
/**
|
||||
* 文件类型解析
|
||||
* @type {{isImg: wpUploadFileTypeResolve.isImg}}
|
||||
*/
|
||||
let fileTypeResolving = {
|
||||
/**
|
||||
* 是否是一张图片
|
||||
*/
|
||||
isImg: function (fileItem) {
|
||||
return fileTypeResolving.resolvingByType(fileItem.type, /image\/(\w)*/)
|
||||
},
|
||||
/**
|
||||
* 通过后缀验证图片
|
||||
*/
|
||||
isImgByName: function (fileItemName) {
|
||||
let checkSuffixArray = ['jpg', 'png', 'jpeg', 'bmp', 'gif', 'webp', 'tif', 'svg', 'wmf'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray)
|
||||
},
|
||||
/**
|
||||
* 是否是视频
|
||||
*/
|
||||
isVideo: function (fileItem) {
|
||||
return fileTypeResolving.resolvingByType(fileItem.type, /video\/(\w)*/)
|
||||
},
|
||||
/**
|
||||
* 通过后缀验证图片
|
||||
*/
|
||||
isVideoByName: function (fileItemName) {
|
||||
let checkSuffixArray = ['mp4', 'Ogg', 'webm'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray)
|
||||
},
|
||||
/**
|
||||
* 是否是音频
|
||||
*/
|
||||
isAudio: function (fileItem) {
|
||||
return fileTypeResolving.resolvingByType(fileItem.type, /audio\/(\w)*/)
|
||||
},
|
||||
/**
|
||||
* 通过后缀验证图片
|
||||
*/
|
||||
isAudioByName: function (fileItemName) {
|
||||
let checkSuffixArray = ['mp3', 'ogg', 'wav'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray)
|
||||
},
|
||||
|
||||
/**
|
||||
* 是否是doc文件
|
||||
*/
|
||||
isDoc: function (fileItemName) {
|
||||
let checkSuffixArray = ['doc', 'docx', 'dot', 'dotx'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 是否是excel文件
|
||||
*/
|
||||
isExcel: function (fileItemName) {
|
||||
let checkSuffixArray = ['xls', 'xlsx', 'csv', 'xlt', 'xltx'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 是否是PPT文件
|
||||
*/
|
||||
isPPT: function (fileItemName) {
|
||||
let checkSuffixArray = ['ppt', 'pptx', 'pot', 'potx', 'odp'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 是否是Pdf文件
|
||||
*/
|
||||
isPdf: function (fileItemName) {
|
||||
let checkSuffixArray = ['pdf'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 是否是压缩文件
|
||||
* @param fileItem
|
||||
* @returns {boolean}
|
||||
*/
|
||||
isZip: function (fileItemName) {
|
||||
let checkSuffixArray = ['zip', '7z', 'war', 'tar', 'rar', 'jar', 'zipx', 'zix', 'zoo'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isWeb: function (fileItemName) {
|
||||
let checkSuffixArray = ['html', 'htm'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isTxt: function (fileItemName) {
|
||||
let checkSuffixArray = ['txt'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isPsd: function (fileItemName) {
|
||||
let checkSuffixArray = ['psd'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isCad: function (fileItemName) {
|
||||
let checkSuffixArray = ['cad'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isIso: function (fileItemName) {
|
||||
let checkSuffixArray = ['iso'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isExe: function (fileItemName) {
|
||||
let checkSuffixArray = ['exe'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 根据文件类型来解析
|
||||
* @param fileType 文件类型
|
||||
* @param checkTypeModel 文件类型模型,如:image\/(\w)*
|
||||
* @returns {boolean}
|
||||
*/
|
||||
resolvingByType: function (fileType, checkTypeModel) {
|
||||
if (checkTypeModel.test(fileType)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
/**
|
||||
* 根据名字和名字后缀名来验证文件
|
||||
* @param fileName 文件名
|
||||
* @param checkSuffixArray 文件类型包含的后缀
|
||||
*/
|
||||
resolvingByName: function (fileName, checkSuffixArray) {
|
||||
let suffixName = wpUploadFileTools.getSuffixNameByFileName(fileName);
|
||||
// 名字是否有效
|
||||
if (!wpUploadDataValid.isValidStr(suffixName)) {
|
||||
// 无效直接返回false
|
||||
return false;
|
||||
}
|
||||
suffixName = suffixName.trim();
|
||||
suffixName = suffixName.toLowerCase();
|
||||
if (checkSuffixArray.indexOf(suffixName) != -1) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件工具
|
||||
* @type {{}}
|
||||
*/
|
||||
let wpUploadFileTools = {
|
||||
/**
|
||||
* 获取文件显示模版
|
||||
* @param fileItem
|
||||
*/
|
||||
wapFileItemShow: function (fileItem) {
|
||||
return wpUploadFileTools.wapFileItemShowBase(fileItem, false);
|
||||
},
|
||||
/**
|
||||
* 包装已上传的文件列表
|
||||
*/
|
||||
wapFileItemShowWithUpload(uploadFile) {
|
||||
return wpUploadFileTools.wapFileItemShowBase(uploadFile, true);
|
||||
},
|
||||
/**
|
||||
* 获取文件显示的基本操作
|
||||
*/
|
||||
wapFileItemShowBase(fileItem, isUploaded = false) {
|
||||
let fileName = "";
|
||||
let suffix = "";
|
||||
let show = "";
|
||||
let showIcon = "";
|
||||
if (!isUploaded) {
|
||||
fileName = fileItem.name;
|
||||
suffix = wpUploadFileTools.getSuffixNameByFileName(fileName);
|
||||
show = wpUploadFileTools.resolvingShow(fileItem);
|
||||
showIcon = wpUploadFileShowResolving.getFileItemShowIcon(show, fileItem, false);
|
||||
} else {
|
||||
fileName = fileItem.name ? fileItem.name : wpUploadFileTools.resolvingUrlFileName(fileItem.url);
|
||||
let fileNameGetOFuRL = wpUploadFileTools.resolvingUrlFileName(fileItem.url);
|
||||
suffix = wpUploadFileTools.getSuffixNameByFileName(fileNameGetOFuRL);
|
||||
show = wpUploadFileTools.resolvingShowByFileName(fileNameGetOFuRL);
|
||||
showIcon = wpUploadFileShowResolving.getFileItemShowIcon(show, fileItem.url, true);
|
||||
}
|
||||
let fileItemShow = {
|
||||
// 文件的id
|
||||
id: wpUploadFileTools.uuid(),
|
||||
// 文件对象
|
||||
file: null,
|
||||
// 文件的类型
|
||||
type: null,
|
||||
// 文件的大小
|
||||
size: null,
|
||||
// 文件的名字
|
||||
name: fileName,
|
||||
// 文件地址
|
||||
url: null,
|
||||
// 后缀
|
||||
suffix: suffix,
|
||||
// 显示的类型
|
||||
show: show,
|
||||
// 显示的图标或者图片地址
|
||||
showIcon: showIcon,
|
||||
// 显示进度条
|
||||
processStatus: {
|
||||
show: false,
|
||||
width: 0,
|
||||
isFail: false
|
||||
},
|
||||
// 文件来源,0选择文件上传,1回显文件
|
||||
fileSource: 0,
|
||||
// 状态0未上传,失败也会转到0,1正在上传,2已经上传
|
||||
status: 0,
|
||||
// 上传文件的描述
|
||||
fileDes: null
|
||||
}
|
||||
if (!isUploaded) {
|
||||
// 如果非选择文件下面三个属性为null
|
||||
fileItemShow.file = fileItem;
|
||||
fileItemShow.type = fileItem.type;
|
||||
fileItemShow.size = fileItem.size;
|
||||
} else {
|
||||
// 文件描述
|
||||
fileItemShow.status = 2;
|
||||
fileItemShow.fileDes = fileItem;
|
||||
fileItemShow.fileSource = 1;
|
||||
fileItemShow.url = fileItem.url;
|
||||
}
|
||||
return fileItemShow;
|
||||
},
|
||||
/**
|
||||
* 解析URL的文件名字
|
||||
*/
|
||||
resolvingUrlFileName: function (fileUrl) {
|
||||
let index = fileUrl.lastIndexOf("/");
|
||||
if (index <= 0) {
|
||||
index = fileUrl.lastIndexOf("\\");
|
||||
}
|
||||
index = index + 1;
|
||||
let fileName = fileUrl.substring(index, fileUrl.length);
|
||||
return fileName;
|
||||
},
|
||||
/**
|
||||
* 获取文件名后缀
|
||||
* @param fileName 文件名全名
|
||||
* */
|
||||
getSuffixNameByFileName: function (fileName) {
|
||||
let str = fileName;
|
||||
let index = str.lastIndexOf(".");
|
||||
if (index < 0) {
|
||||
return "";
|
||||
}
|
||||
let pos = index + 1;
|
||||
return str.substring(pos, str.length);
|
||||
},
|
||||
/**
|
||||
* 解析显示类型
|
||||
* @param fileItem 文件
|
||||
* @returns {number}
|
||||
*/
|
||||
resolvingShow: function (fileItem) {
|
||||
// 默认0普通文件
|
||||
let showResult = 0;
|
||||
if (wpUploadFileTypeResolving.isImg(fileItem)) {
|
||||
showResult = 1;
|
||||
} else if (wpUploadFileTypeResolving.isVideo(fileItem)) {
|
||||
showResult = 2;
|
||||
} else if (wpUploadFileTypeResolving.isAudio(fileItem)) {
|
||||
showResult = 3;
|
||||
} else if (wpUploadFileTypeResolving.isDoc(fileItem.name)) {
|
||||
showResult = 4;
|
||||
} else if (wpUploadFileTypeResolving.isExcel(fileItem.name)) {
|
||||
showResult = 5;
|
||||
} else if (wpUploadFileTypeResolving.isPPT(fileItem.name)) {
|
||||
showResult = 6;
|
||||
} else if (wpUploadFileTypeResolving.isPdf(fileItem.name)) {
|
||||
showResult = 7;
|
||||
} else if (wpUploadFileTypeResolving.isZip(fileItem.name)) {
|
||||
showResult = 8;
|
||||
} else if (wpUploadFileTypeResolving.isWeb(fileItem.name)) {
|
||||
showResult = 9;
|
||||
} else if (wpUploadFileTypeResolving.isTxt(fileItem.name)) {
|
||||
showResult = 10;
|
||||
} else if (wpUploadFileTypeResolving.isPsd(fileItem.name)) {
|
||||
showResult = 11;
|
||||
} else if (wpUploadFileTypeResolving.isCad(fileItem.name)) {
|
||||
showResult = 12;
|
||||
} else if (wpUploadFileTypeResolving.isIso(fileItem.name)) {
|
||||
showResult = 13;
|
||||
} else if (wpUploadFileTypeResolving.isExe(fileItem.name)) {
|
||||
showResult = 14;
|
||||
}
|
||||
return showResult
|
||||
},
|
||||
|
||||
/**
|
||||
* 解析显示类型
|
||||
* @param fileItem 文件
|
||||
* @returns {number}
|
||||
*/
|
||||
resolvingShowByFileName: function (fileItemName) {
|
||||
// 默认0普通文件
|
||||
let showResult = 0;
|
||||
if (wpUploadFileTypeResolving.isImgByName(fileItemName)) {
|
||||
showResult = 1;
|
||||
} else if (wpUploadFileTypeResolving.isVideoByName(fileItemName)) {
|
||||
showResult = 2;
|
||||
} else if (wpUploadFileTypeResolving.isAudioByName(fileItemName)) {
|
||||
showResult = 3;
|
||||
} else if (wpUploadFileTypeResolving.isDoc(fileItemName)) {
|
||||
showResult = 4;
|
||||
} else if (wpUploadFileTypeResolving.isExcel(fileItemName)) {
|
||||
showResult = 5;
|
||||
} else if (wpUploadFileTypeResolving.isPPT(fileItemName)) {
|
||||
showResult = 6;
|
||||
} else if (wpUploadFileTypeResolving.isPdf(fileItemName)) {
|
||||
showResult = 7;
|
||||
} else if (wpUploadFileTypeResolving.isZip(fileItemName)) {
|
||||
showResult = 8;
|
||||
} else if (wpUploadFileTypeResolving.isWeb(fileItemName)) {
|
||||
showResult = 9;
|
||||
} else if (wpUploadFileTypeResolving.isTxt(fileItemName)) {
|
||||
showResult = 10;
|
||||
} else if (wpUploadFileTypeResolving.isPsd(fileItemName)) {
|
||||
showResult = 11;
|
||||
} else if (wpUploadFileTypeResolving.isCad(fileItemName)) {
|
||||
showResult = 12;
|
||||
} else if (wpUploadFileTypeResolving.isIso(fileItemName)) {
|
||||
showResult = 13;
|
||||
} else if (wpUploadFileTypeResolving.isExe(fileItemName)) {
|
||||
showResult = 14;
|
||||
}
|
||||
return showResult
|
||||
},
|
||||
/**
|
||||
* 生成UUID
|
||||
* @returns {string}
|
||||
*/
|
||||
uuid: function () {
|
||||
let str = wpUploadFileTools.uuidFull();
|
||||
str = str.replace(/-/g, "");
|
||||
return str;
|
||||
},
|
||||
uuidFull() {
|
||||
let s = []
|
||||
let hexDigits = "0123456789abcdef"
|
||||
for (var i = 0; i < 36; i++) {
|
||||
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)
|
||||
}
|
||||
s[14] = "4"
|
||||
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1)
|
||||
s[8] = s[13] = s[18] = s[23] = "-"
|
||||
let uuid = s.join("")
|
||||
return uuid
|
||||
},
|
||||
/**
|
||||
* 禁止某个dom的某个事件
|
||||
*/
|
||||
disableObjEvent(domObj, eventName) {
|
||||
domObj.addEventListener(eventName, function (e) {
|
||||
e.preventDefault();
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据验证工具
|
||||
* @type {{isValid: wpUploadDataValid.isValid}}
|
||||
*/
|
||||
let wpUploadDataValid = {
|
||||
isValid: function (obj) {
|
||||
if (undefined === obj || null === obj) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
isValidStr: function (str) {
|
||||
let isValidObj = wpUploadDataValid.isValid(str);
|
||||
if (!isValidObj) {
|
||||
return isValidObj;
|
||||
}
|
||||
str = str.trim();
|
||||
if ("" == str || '' == str) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
isValidArray(array) {
|
||||
if (null == array || array == undefined || array.length <= 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
props: {
|
||||
files: Array,
|
||||
type: {
|
||||
type: Array,
|
||||
default: ['jpg', 'jpeg', 'png', 'doc', 'docx', 'xls', 'xlsx', 'pdf']
|
||||
},
|
||||
max: {
|
||||
type: Number,
|
||||
default: 5
|
||||
},
|
||||
max_size: {
|
||||
type: Number,
|
||||
default: 20 * 1024 * 1024
|
||||
},
|
||||
view: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
card: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
del: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
//"来源(1.文件管理 2.业务上传)"
|
||||
source: {
|
||||
type: Number,
|
||||
default: 2
|
||||
},
|
||||
size: {
|
||||
type: String
|
||||
},
|
||||
// 是否显示提示
|
||||
isShowTip: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
fileList: [],
|
||||
picDialogVisible: false,
|
||||
picActiveName: '1',
|
||||
pictures: [],
|
||||
//图库中已选择的图片
|
||||
selectPictures: []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 是否显示提示
|
||||
showTip() {
|
||||
return this.isShowTip && (this.type || this.max_size);
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
files(val) {
|
||||
this.updateFileList(val)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 查看资源
|
||||
*/
|
||||
showSource(showItem, index, e) {
|
||||
const viewFileParent = $(e.target).closest(".viewFile")
|
||||
const show = this.resolvingShowByFileName(showItem.filename)
|
||||
if (show == 1 || show == 2 || show == 3) {
|
||||
const vv = new Viewer(viewFileParent.clone()[0], {
|
||||
url: 'src',
|
||||
initialViewIndex: index
|
||||
})
|
||||
vv.show()
|
||||
} else if (show == 4 || show == 5 || show == 7) {
|
||||
preview(showItem.filename, showItem.id)
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 解析显示类型
|
||||
* @param fileItem 文件
|
||||
* @returns {number}
|
||||
*/
|
||||
resolvingShowByFileName(fileItemName) {
|
||||
// 默认0普通文件
|
||||
let showResult = 0;
|
||||
if (fileTypeResolving.isImgByName(fileItemName)) {
|
||||
showResult = 1;
|
||||
} else if (fileTypeResolving.isVideoByName(fileItemName)) {
|
||||
showResult = 2;
|
||||
} else if (fileTypeResolving.isAudioByName(fileItemName)) {
|
||||
showResult = 3;
|
||||
} else if (fileTypeResolving.isDoc(fileItemName)) {
|
||||
showResult = 4;
|
||||
} else if (fileTypeResolving.isExcel(fileItemName)) {
|
||||
showResult = 5;
|
||||
} else if (fileTypeResolving.isPPT(fileItemName)) {
|
||||
showResult = 6;
|
||||
} else if (fileTypeResolving.isPdf(fileItemName)) {
|
||||
showResult = 7;
|
||||
} else if (fileTypeResolving.isZip(fileItemName)) {
|
||||
showResult = 8;
|
||||
} else if (fileTypeResolving.isWeb(fileItemName)) {
|
||||
showResult = 9;
|
||||
} else if (fileTypeResolving.isTxt(fileItemName)) {
|
||||
showResult = 10;
|
||||
} else if (fileTypeResolving.isPsd(fileItemName)) {
|
||||
showResult = 11;
|
||||
} else if (fileTypeResolving.isCad(fileItemName)) {
|
||||
showResult = 12;
|
||||
} else if (fileTypeResolving.isIso(fileItemName)) {
|
||||
showResult = 13;
|
||||
} else if (fileTypeResolving.isExe(fileItemName)) {
|
||||
showResult = 14;
|
||||
}
|
||||
return showResult
|
||||
},
|
||||
/**
|
||||
* 获取文件显示图标
|
||||
* @param filePath
|
||||
* @returns {string}
|
||||
*/
|
||||
getFileItemShowIcon(filePath) {
|
||||
let showIcon = '';
|
||||
switch (this.resolvingShowByFileName(filePath)) {
|
||||
case 0:
|
||||
showIcon = "#icon-yunpanlogo-3";
|
||||
break;
|
||||
// 图片
|
||||
case 1:
|
||||
showIcon = this.getImgShowIcon(filePath);
|
||||
break;
|
||||
// 视频
|
||||
case 2:
|
||||
showIcon = "#icon-yunpanlogo-6";
|
||||
break;
|
||||
// 音乐
|
||||
case 3:
|
||||
showIcon = "#icon-yunpanlogo-4";
|
||||
break;
|
||||
// doc
|
||||
case 4:
|
||||
showIcon = "#icon-yunpanlogo-2";
|
||||
break;
|
||||
// excel
|
||||
case 5:
|
||||
showIcon = "#icon-yunpanlogo-";
|
||||
break;
|
||||
// ppt
|
||||
case 6:
|
||||
showIcon = "#icon-yunpanlogo-1";
|
||||
break;
|
||||
// pdf
|
||||
case 7:
|
||||
showIcon = "#icon-yunpanlogo-12";
|
||||
break;
|
||||
// zip
|
||||
case 8:
|
||||
showIcon = "#icon-yasuobao";
|
||||
break;
|
||||
// web文件
|
||||
case 9:
|
||||
showIcon = "#icon-yunpanlogo-5";
|
||||
break;
|
||||
// txt文件
|
||||
case 10:
|
||||
showIcon = "#icon-yunpanlogo-7";
|
||||
break;
|
||||
// PSD
|
||||
case 11:
|
||||
showIcon = "#icon-yunpanlogo-10";
|
||||
break;
|
||||
// cad
|
||||
case 12:
|
||||
showIcon = "#icon-yunpanlogo-11";
|
||||
break;
|
||||
// ISO
|
||||
case 13:
|
||||
showIcon = "#icon-yunpanlogo-8";
|
||||
break;
|
||||
// 可执行
|
||||
case 14:
|
||||
showIcon = "#icon-yunpanlogo-9";
|
||||
break;
|
||||
// 普通文件
|
||||
default:
|
||||
showIcon = "#icon-yunpanlogo-3";
|
||||
}
|
||||
return showIcon;
|
||||
},
|
||||
/**
|
||||
* 获取图片的显示图标
|
||||
* @param fileItem
|
||||
* @returns {string|*}
|
||||
*/
|
||||
getImgShowIcon(fileItem) {
|
||||
return FILE_DOMAIN + fileItem;
|
||||
},
|
||||
|
||||
|
||||
updateFileList(val) {
|
||||
if (!val || !val.length) {
|
||||
this.fileList = []
|
||||
return
|
||||
}
|
||||
this.fileList = val.map(v => {
|
||||
return {data: v, uid: v.id, name: v.filename, status: 'success', origin: v.origin ? v.origin : null}
|
||||
})
|
||||
},
|
||||
change(fileList) {
|
||||
//此处要把origin传到父组件 防止图库里的图片被删除
|
||||
this.$emit("update:files", fileList.map(v => {
|
||||
return {
|
||||
origin: v.origin,
|
||||
...v.data
|
||||
}
|
||||
}))
|
||||
},
|
||||
handleExceed(files, fileList) {
|
||||
this.$message.warning(`当前限制选择 ${this.max} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
|
||||
},
|
||||
onSuccess(response, file, fileList) {
|
||||
if (response.code === 0) {
|
||||
const {data} = response
|
||||
file.data = {...data, origin: 'userLocal'}
|
||||
this.change(fileList)
|
||||
} else {
|
||||
this.$message.warning('文件上传失败')
|
||||
}
|
||||
},
|
||||
beforeUpload(file) {
|
||||
const lastIndexOf = file.name.lastIndexOf(".")
|
||||
const type = this.type.map(v => v.toLowerCase()).includes(file.name.substr(lastIndexOf + 1).toLowerCase())
|
||||
const size = file.size < this.max_size;
|
||||
if (!type) {
|
||||
this.$message.warning(`上传文件只能是 ${this.type.map(v => v.toLowerCase()).join("/")} 格式!`);
|
||||
}
|
||||
if (!size) {
|
||||
this.$message.warning(`上传文件大小不能超过 ${this.max_size / 1024 / 1024} MB!`);
|
||||
}
|
||||
return type && size;
|
||||
},
|
||||
async handleRemove(file, fileList) {
|
||||
//只有用户本地上传的图片才去删除源文件
|
||||
if (file.data && file.origin === 'userLocal') {
|
||||
const {id} = file.data
|
||||
if (this.del) {
|
||||
const resp = await $.post(FILE_DELETE_ADDRESS, {id})
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
} else {
|
||||
this.$message.warning(resp.msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
this.change(fileList)
|
||||
// if (file.origin && file.origin === "pictureLibrary") {
|
||||
// //图库里的图 不删除
|
||||
// }
|
||||
},
|
||||
handlePreview(file) {
|
||||
if (file.data) {
|
||||
const {filename, id} = file.data
|
||||
preview(filename, id)
|
||||
}
|
||||
},
|
||||
|
||||
async openPicture() {
|
||||
this.picDialogVisible = true
|
||||
const {data} = await $.get('/platform/sys/pictureLibrary/allData')
|
||||
this.pictures = data
|
||||
if (this.pictures && this.pictures.length > 0) {
|
||||
this.picActiveName = this.pictures[0].id
|
||||
}
|
||||
},
|
||||
pictureItemClick(picId) {
|
||||
let index = this.selectPictures.indexOf(picId)
|
||||
if (index > -1) {
|
||||
this.selectPictures.splice(index, 1)
|
||||
} else {
|
||||
this.selectPictures.push(picId)
|
||||
}
|
||||
console.log(this.selectPictures)
|
||||
},
|
||||
confirmPictures() {
|
||||
debugger
|
||||
if (this.selectPictures.length === 0) {
|
||||
this.$message.warning('请选择图片')
|
||||
return
|
||||
}
|
||||
const sysFiles = this.pictures.flatMap(v => v.pictureList)
|
||||
.filter(v => this.selectPictures.includes(v.id))
|
||||
.flatMap(v => v['sysFile'])
|
||||
|
||||
//构造为fileList格式
|
||||
const addFileList = sysFiles.map(v => {
|
||||
return {data: v, uid: v.id, name: v.filename, status: 'success', origin: 'pictureLibrary'}
|
||||
})
|
||||
|
||||
//使用Map去重 防止重复添加
|
||||
const tempFileList = this.fileList.concat(addFileList)
|
||||
let uniqueMap = new Map();
|
||||
tempFileList.forEach(item => {
|
||||
uniqueMap.set(item.uid, item);
|
||||
});
|
||||
const fileList = Array.from(uniqueMap.values())
|
||||
|
||||
if (fileList.length > this.max) {
|
||||
this.$message.warning('最多只能上传' + this.max + "个文件")
|
||||
// this.selectPictures = []
|
||||
return;
|
||||
}
|
||||
|
||||
//传输到父组件
|
||||
this.fileList = fileList
|
||||
this.change(this.fileList)
|
||||
this.picDialogVisible = false
|
||||
}
|
||||
|
||||
},
|
||||
created() {
|
||||
this.updateFileList(this.files)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.viewFileName {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
padding: 0 10px;
|
||||
color: white;
|
||||
background-color: rgb(160, 160, 160);
|
||||
border-radius: 2px;
|
||||
opacity: .95;
|
||||
}
|
||||
|
||||
.viewFile {
|
||||
position: relative;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
max-height: 256px;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
/*height: 150px;*/
|
||||
}
|
||||
|
||||
.viewFileItem {
|
||||
width: 118px;
|
||||
height: 118px;
|
||||
margin-right: 10px;
|
||||
position: relative;
|
||||
transition: all 500ms;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
/*margin-bottom: 10px;*/
|
||||
}
|
||||
|
||||
.viewFileItem:hover {
|
||||
background-color: rgb(230, 230, 230);
|
||||
}
|
||||
|
||||
.viewFileItem img {
|
||||
padding: 10px 10px;
|
||||
}
|
||||
|
||||
.viewFileItem svg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.x100000 .el-upload-dragger {
|
||||
height: 120px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.x100000 .el-upload {
|
||||
/*width: 100%;*/
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.upload-card .el-upload {
|
||||
width: 100%
|
||||
}
|
||||
|
||||
|
||||
.el-upload-dragger .el-icon-upload {
|
||||
font-size: 54px;
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
|
||||
.pictureDialog .el-dialog__body {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.pictureDialog .picture-image-item {
|
||||
/*width: 100%;*/
|
||||
/*height: 100%;*/
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.pictureDialog .el-checkbox {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.pictureDialog .el-checkbox .el-checkbox__label {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.pictureDialog .el-checkbox .el-checkbox__input {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
|
||||
.pictureDialog .picture-image-item-select {
|
||||
border-color: rgba(7, 193, 96, 0.3);
|
||||
box-shadow: 0 0 0 2px #8CD68C inset;
|
||||
}
|
||||
|
||||
.pictureDialog .picture-image-item:hover {
|
||||
cursor: pointer;
|
||||
border-color: rgba(7, 193, 96, 0.3);
|
||||
box-shadow: 0 0 0 2px #8CD68C inset;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,146 @@
|
||||
<template>
|
||||
<div class="guava-main-content">
|
||||
<div v-show="v==='index'" key="index" class="transition-item">
|
||||
<slot></slot>
|
||||
</div>
|
||||
|
||||
<el-card v-show="v==='edit'" key="edit" shadow="never" class="animated-card">
|
||||
<template #header>
|
||||
<el-row type="flex">
|
||||
<el-col :span="12">
|
||||
<el-button icon="el-icon-back" style="font-size: 16px" type="text" @click="v='index'">返回</el-button>
|
||||
</el-col>
|
||||
<el-col :span="12" class="text-right">
|
||||
<slot name="edit_func"></slot>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<div :class="{'card_scroll':edit_scroll}">
|
||||
<slot name="edit"></slot>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card v-show="v==='view'" key="view" shadow="never" class="animated-card">
|
||||
<template #header>
|
||||
<el-button icon="el-icon-back" style="font-size: 16px" type="text" @click="v='index'">返回</el-button>
|
||||
</template>
|
||||
<div :class="{'card_scroll':edit_scroll}">
|
||||
<slot name="view"></slot>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card v-show="v==='public'" key="public" shadow="never" class="animated-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<el-button icon="el-icon-back" style="font-size: 16px" type="text" @click="back()">返回
|
||||
</el-button>
|
||||
</div>
|
||||
<div>
|
||||
<slot name="public"></slot>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
default: 'index'
|
||||
},
|
||||
//为true的时候页面不会滚动 card-body滚动 edit view 自己来控制
|
||||
edit_scroll: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
view_scroll: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
v: 'index',
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
v(newValue, oldValue) {
|
||||
this.$emit('vchange', {newValue, oldValue})
|
||||
this.$emit('input', newValue)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
index() {
|
||||
this.v = 'index'
|
||||
},
|
||||
edit() {
|
||||
this.v = 'edit'
|
||||
},
|
||||
view() {
|
||||
this.v = 'view'
|
||||
},
|
||||
public() {
|
||||
this.v = 'public'
|
||||
},
|
||||
back() {
|
||||
this.v = 'index'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
.guava-main-content {
|
||||
padding: 10px 12px;
|
||||
background-color: #f6f6f6;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
.animated-card {
|
||||
animation-name: cardAnimation;
|
||||
animation-duration: .5s;
|
||||
animation-fill-mode: both;
|
||||
}
|
||||
|
||||
@keyframes cardAnimation {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(-50px);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
.el-card__header {
|
||||
padding: 5px 20px !important;
|
||||
}
|
||||
|
||||
.el-tabs--border-card {
|
||||
box-shadow: unset !important;
|
||||
}
|
||||
|
||||
.card_scroll {
|
||||
max-height: calc(100vh - 50px - 20px - 54px - 40px - 5px);
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.card_scroll {
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
.card_scroll::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.card_scroll::-webkit-scrollbar-vertical {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.card_scroll::-webkit-scrollbar-horizontal {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,520 @@
|
||||
<template>
|
||||
<div class="component-upload-image">
|
||||
|
||||
<el-popover
|
||||
placement="top-start"
|
||||
width="200"
|
||||
trigger="click">
|
||||
<ul class="upload-popover-ul" style="list-style: none">
|
||||
<li @click="handleLocalSelect">从本地选择</li>
|
||||
<li v-auth="'sysadmin'" @click="openPicture">从图库选择</li>
|
||||
<!-- <li @click="mobileScanUpload">手机扫码上传</li>-->
|
||||
</ul>
|
||||
|
||||
<el-upload
|
||||
disabled
|
||||
slot="reference"
|
||||
:style="{'--box-width': width + 'px', '--box-height': height + 'px'}"
|
||||
multiple
|
||||
:action="FILE_UPLOAD_ADDRESS"
|
||||
list-type="picture-card"
|
||||
:on-success="handleUploadSuccess"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:limit="limit"
|
||||
:on-error="handleUploadError"
|
||||
:on-exceed="handleExceed"
|
||||
ref="imageUpload"
|
||||
:on-remove="handleDelete"
|
||||
:file-list="fileList"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:class="{hidePic: this.fileList.length >= this.limit}"
|
||||
:data="uploadData"
|
||||
>
|
||||
|
||||
<i slot="default" class="el-icon-plus"></i>
|
||||
<div slot="file" slot-scope="{file}">
|
||||
<img class="el-upload-list__item-thumbnail" :src="file.url" alt=""
|
||||
style="var(--box-width, '100px') !important;height: var(--box-height, '100px') !important">
|
||||
<span class="el-upload-list__item-actions">
|
||||
<span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
|
||||
<i class="el-icon-zoom-in"></i>
|
||||
</span>
|
||||
<span class="el-upload-list__item-delete" @click="handleDelete(file)">
|
||||
<i class="el-icon-delete"></i>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</el-upload>
|
||||
|
||||
</el-popover>
|
||||
|
||||
<!-- 上传提示 -->
|
||||
<div class="el-upload__tip" slot="tip" v-if="showTip">
|
||||
请上传
|
||||
<template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b></template>
|
||||
<template v-if="size"> 尺寸为 <b style="color: #f56c6c">{{ size.join('*') }}</b></template>
|
||||
<template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b></template>
|
||||
的文件
|
||||
</div>
|
||||
|
||||
<el-dialog title="图片选择"
|
||||
:visible.sync="picDialogVisible"
|
||||
width="50%"
|
||||
custom-class="pictureDialog"
|
||||
:close-on-click-modal="false"
|
||||
:append-to-body="true"
|
||||
>
|
||||
|
||||
<el-tabs v-model="picActiveName" type="card">
|
||||
<el-tab-pane v-for="picType in pictures" :key="picType.id" :label="picType.typeName" :name="picType.id">
|
||||
<div style="display: grid;grid-template-columns: repeat(auto-fill,100px);column-gap: 30px;row-gap: 20px">
|
||||
<div v-for="pic in picType.pictureList" :key="pic.id">
|
||||
<el-checkbox v-model="selectPictures" :label="pic.id">
|
||||
<div class="picture-image-item"
|
||||
:class="{'picture-image-item-select':selectPictures.includes(pic.id)}"
|
||||
:style="{'background-image':'url('+CREATE_PREVIEW_URL(pic.filepath)+')'}">
|
||||
</div>
|
||||
</el-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="picDialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="confirmPictures">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="手机上传"
|
||||
:visible.sync="mobileScanDialogVisible"
|
||||
width="20%"
|
||||
custom-class="pictureDialog"
|
||||
:close-on-click-modal="false"
|
||||
:append-to-body="true">
|
||||
<div style="width: 100%;">
|
||||
<div id="qrcode" style="width: 70%;left: 0;right: 0;margin: auto"></div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "ImageUpload",
|
||||
props: {
|
||||
value: [String, Array],
|
||||
// 图片数量限制
|
||||
limit: {
|
||||
type: Number,
|
||||
default: 5,
|
||||
},
|
||||
// 大小限制(MB)
|
||||
fileSize: {
|
||||
type: Number,
|
||||
default: 2,
|
||||
},
|
||||
// 文件类型, 例如['png', 'jpg', 'jpeg']
|
||||
fileType: {
|
||||
type: Array,
|
||||
default: () => ["png", "jpg", "jpeg"],
|
||||
},
|
||||
// 是否显示提示
|
||||
isShowTip: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
uploadData: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
}
|
||||
},
|
||||
height: {
|
||||
type: Number,
|
||||
default: 100
|
||||
},
|
||||
width: {
|
||||
type: Number,
|
||||
default: 100
|
||||
},
|
||||
size: {
|
||||
type: Array,
|
||||
required: false,
|
||||
default: () => {
|
||||
return []
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogImageUrl: "",
|
||||
dialogVisible: false,
|
||||
hideUpload: false,
|
||||
fileList: [],
|
||||
uploadOtherData: {},
|
||||
picDialogVisible: false,
|
||||
picActiveName: '1',
|
||||
pictures: [],
|
||||
//图库中已选择的图片
|
||||
selectPictures: [],
|
||||
|
||||
mobileScanDialogVisible: false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value: {
|
||||
immediate: true,
|
||||
deep: true,
|
||||
handler(val) {
|
||||
if (val) {
|
||||
let fff = []
|
||||
fff = Array.isArray(val) ? [...val] : [val]
|
||||
this.fileList = fff.map(v => {
|
||||
return {
|
||||
name: v,
|
||||
url: CREATE_PREVIEW_URL(v)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 是否显示提示
|
||||
showTip() {
|
||||
return this.isShowTip && (this.fileType || this.fileSize);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
handleLocalSelect() {
|
||||
this.$refs['imageUpload'].$refs['upload-inner'].$refs['input'].click()
|
||||
},
|
||||
|
||||
// mobileScanUpload() {
|
||||
// this.mobileScanDialogVisible = true
|
||||
// const config = {
|
||||
// limit: this.limit,
|
||||
// fileSize: this.fileSize,
|
||||
// fileType: this.fileType.join(',')
|
||||
// }
|
||||
// const configParams = Object.entries(config)
|
||||
// .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
|
||||
// .join('&');
|
||||
// const text = APP_DOMAIN + '/platform/sys/h5ScanUpload?' + configParams
|
||||
// console.log(text)
|
||||
// this.$nextTick(() => {
|
||||
// $("#qrcode").html("")
|
||||
// $("#qrcode").qrcode({ //设置css
|
||||
// render: "canvas", //二维码的生成方式
|
||||
// width: $("#qrcode").width(), //生成二维码的宽度
|
||||
// height: $("#qrcode").width(), //生成二维码的高度
|
||||
// text: text,
|
||||
// correctLevel: 3 //容错级别,默认为2,最高为3,为了让用户扫码最快,容错级别应当设为最低
|
||||
// });
|
||||
// })
|
||||
// debugger
|
||||
// this.getMobileScanUploadFiles()
|
||||
//
|
||||
// },
|
||||
|
||||
// async getMobileScanUploadFiles() {
|
||||
// const {code, data, msg} = await $.get('/platform/sys/h5ScanUpload/getUploadFile')
|
||||
// if (code === 0) {
|
||||
// const filePaths = data.map(v => v.filepath)
|
||||
// if (filePaths) {
|
||||
// if (this.limit === 1) {
|
||||
// this.$emit("input", data[0].filepath)
|
||||
// } else if (this.value && Array.isArray(this.value)) {
|
||||
// this.$emit("input", [...this.value, ...filePaths])
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// console.log(data)
|
||||
// },
|
||||
|
||||
async openPicture() {
|
||||
this.picDialogVisible = true
|
||||
const {data} = await $.get('/platform/sys/pictureLibrary/allData')
|
||||
this.pictures = data
|
||||
console.log(this.pictures)
|
||||
if (this.pictures && this.pictures.length > 0) {
|
||||
this.picActiveName = this.pictures[0].id
|
||||
}
|
||||
},
|
||||
pictureItemClick(picId) {
|
||||
let index = this.selectPictures.indexOf(picId)
|
||||
if (index > -1) {
|
||||
this.selectPictures.splice(index, 1)
|
||||
} else {
|
||||
this.selectPictures.push(picId)
|
||||
}
|
||||
console.log(this.selectPictures)
|
||||
},
|
||||
confirmPictures() {
|
||||
if (this.selectPictures.length === 0) {
|
||||
this.$message.warning('请选择图片')
|
||||
return
|
||||
}
|
||||
const pictureLibIds = this.pictures.flatMap(v => v.pictureList)
|
||||
.filter(v => this.selectPictures.includes(v.id))
|
||||
.flatMap(v => v['sysFile'])
|
||||
.map(v => v['filepath'])
|
||||
|
||||
let values = this.values ? this.values : []
|
||||
|
||||
const v = [...new Set([...values, ...pictureLibIds])]
|
||||
if (v.length > this.limit) {
|
||||
this.$message.warning('最多只能上传' + this.limit + "个文件")
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.limit === 1) {
|
||||
this.$emit("input", pictureLibIds ? pictureLibIds[0] : null)
|
||||
} else {
|
||||
this.$emit("input", v)
|
||||
}
|
||||
this.picDialogVisible = false
|
||||
|
||||
},
|
||||
|
||||
// 上传前loading加载
|
||||
handleBeforeUpload(file) {
|
||||
// 判断文件是否为图片类型
|
||||
function isImage(file, fileType) {
|
||||
let fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
|
||||
return fileType.some(type => file.type.indexOf(type) > -1 || (fileExtension && fileExtension.indexOf(type) > -1));
|
||||
}
|
||||
|
||||
// 判断文件大小是否符合要求
|
||||
function isFileSizeValid(file, fileSize) {
|
||||
return !fileSize || file.size / 1024 / 1024 < fileSize;
|
||||
}
|
||||
|
||||
// 判断文件尺寸是否符合要求
|
||||
function validateSize(file, maxWidth, maxHeight) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const reader = new FileReader();
|
||||
reader.onload = function (event) {
|
||||
debugger
|
||||
const img = new Image();
|
||||
img.onload = function () {
|
||||
if (img.width <= maxWidth && img.height <= maxHeight) {
|
||||
resolve();
|
||||
} else {
|
||||
reject(`上传图片尺寸不能超过 ${maxWidth}x${maxHeight} 像素`);
|
||||
}
|
||||
};
|
||||
img.src = event.target.result;
|
||||
};
|
||||
reader.readAsDataURL(file);
|
||||
});
|
||||
}
|
||||
|
||||
let isImg = this.fileType.length ? isImage(file, this.fileType) : file.type.indexOf("image") > -1;
|
||||
if (!isImg) {
|
||||
this.$message.error(`文件格式不正确,请上传${this.fileType.join("/")}图片格式文件!`);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (this.fileSize && !isFileSizeValid(file, this.fileSize)) {
|
||||
this.$message.error(`上传头像图片大小不能超过 ${this.fileSize} MB!`);
|
||||
return false;
|
||||
}
|
||||
|
||||
// if (this.size) {
|
||||
// let sizeFlag = true
|
||||
// validateSize(file, this.size[0], size[1]).then(() => {
|
||||
// return new Promise(resolve => resolve())
|
||||
// }).catch(error => {
|
||||
// this.$message.error(error)
|
||||
// return new Promise(resolve,reject => reject())
|
||||
// })
|
||||
//
|
||||
// if (!sizeFlag) {
|
||||
// return false
|
||||
// }
|
||||
// }
|
||||
return true
|
||||
},
|
||||
// 文件个数超出
|
||||
handleExceed() {
|
||||
this.$message.error(`上传文件数量不能超过 ${this.limit} 个!`);
|
||||
},
|
||||
// 上传成功回调
|
||||
handleUploadSuccess(res, file) {
|
||||
if (res.code === 0) {
|
||||
if (this.limit === 1) {
|
||||
this.$emit("input", res.data.filepath)
|
||||
} else {
|
||||
if (this.value && Array.isArray(this.value)) {
|
||||
const v = [...this.value, res.data.filepath]
|
||||
this.$emit("input", v)
|
||||
} else {
|
||||
this.$emit("input", [res.data.filepath])
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.$message.error(res.msg);
|
||||
this.$refs.imageUpload.handleRemove(file);
|
||||
}
|
||||
},
|
||||
// 删除图片
|
||||
async handleDelete(file) {
|
||||
// const resp = await $.post(FILE_DELETE_ADDRESS, {id: file.name})
|
||||
const findex = this.fileList.map(f => f.name).indexOf(file.name);
|
||||
if (findex > -1) {
|
||||
this.fileList.splice(findex, 1)
|
||||
if (this.limit === 1) {
|
||||
this.$emit("input", this.fileList.map(v => v.name).join('、'))
|
||||
} else {
|
||||
this.$emit("input", this.fileList.map(v => v.name))
|
||||
}
|
||||
}
|
||||
/*if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
const findex = this.fileList.map(f => f.name).indexOf(file.name);
|
||||
if (findex > -1) {
|
||||
this.fileList.splice(findex, 1)
|
||||
if (this.limit === 1) {
|
||||
this.$emit("input", this.fileList.map(v => v.name).join('、'))
|
||||
} else {
|
||||
this.$emit("input", this.fileList.map(v => v.name))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.$message.warning(resp.msg)
|
||||
}*/
|
||||
|
||||
|
||||
},
|
||||
// 上传失败
|
||||
handleUploadError() {
|
||||
this.$message.error("上传图片失败,请重试");
|
||||
},
|
||||
// 预览
|
||||
handlePictureCardPreview(file) {
|
||||
if (file.url) {
|
||||
let image = new Image();
|
||||
image.src = file.url
|
||||
let viewer = new Viewer(image);
|
||||
viewer.show();
|
||||
} else {
|
||||
viewImage(file.response.data.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.component-upload-image .el-upload--picture-card {
|
||||
width: var(--box-width, '100px') !important;
|
||||
height: var(--box-height, '100px') !important;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.el-upload--picture-card i {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.el-upload-list--picture-card .el-upload-list__item {
|
||||
width: var(--box-width, '100px');
|
||||
height: var(--box-height, '100px');
|
||||
}
|
||||
|
||||
.hidePic .el-upload--picture-card {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.el-list-enter-active,
|
||||
.el-list-leave-active {
|
||||
transition: all 0s;
|
||||
}
|
||||
|
||||
.el-list-enter, .el-list-leave-active {
|
||||
opacity: 0;
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
.component-upload-image {
|
||||
height: inherit;
|
||||
}
|
||||
|
||||
.component-upload-image > div:nth-child(1) {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.component-upload-image .el-upload--picture-card {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.component-upload-image .pictureLibButton {
|
||||
transition: font-size 0.3s ease; /* 过渡属性、持续时间和缓动函数 */
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.component-upload-image .pictureLibButton:hover {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.el-upload__tip {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.pictureDialog .el-dialog__body {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.pictureDialog .picture-image-item {
|
||||
/*width: 100%;*/
|
||||
/*height: 100%;*/
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.pictureDialog .el-checkbox {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.pictureDialog .el-checkbox .el-checkbox__label {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.pictureDialog .el-checkbox .el-checkbox__input {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.pictureDialog .picture-image-item-select {
|
||||
border-color: rgba(7, 193, 96, 0.3);
|
||||
box-shadow: 0 0 0 2px #8CD68C inset;
|
||||
}
|
||||
|
||||
.pictureDialog .picture-image-item:hover {
|
||||
cursor: pointer;
|
||||
border-color: rgba(7, 193, 96, 0.3);
|
||||
box-shadow: 0 0 0 2px #8CD68C inset;
|
||||
}
|
||||
|
||||
.upload-popover-ul {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.upload-popover-ul li {
|
||||
padding: 5px;
|
||||
border-bottom: 1px solid #f3f3f3;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,183 @@
|
||||
<template>
|
||||
<el-timeline>
|
||||
<el-timeline-item timestamp="" placement="top">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
|
||||
@keyup.enter.native="doSearch" style="width: 300px">
|
||||
<el-select v-model="pageForm.searchName" slot="prepend" style="width: 80px;">
|
||||
<el-option label="姓名" value="username"></el-option>
|
||||
<el-option label="工号" value="loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
|
||||
</el-timeline-item>
|
||||
<el-timeline-item timestamp="" placement="top" v-if="is_ghxzzz">
|
||||
<el-col :span="12">
|
||||
<el-select v-model="pageForm.threeUnitId" clearable filterable
|
||||
placeholder="请选择新科室"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in threeUnits2"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-timeline-item>
|
||||
<el-timeline-item timestamp="" placement="top">
|
||||
<el-table :data="tableData" style="width: 100%" row-key="id"
|
||||
v-loading="tableLoading" ref="table" class="vi-table"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" :reserve-selection="true"></el-table-column>
|
||||
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in columns"
|
||||
show-overflow-tooltip
|
||||
:sortable="column.sortable"
|
||||
:label="column.label"
|
||||
:prop="column.prop" :width="column.width">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, prev, pager, next"
|
||||
:total="pageForm.totalCount">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
value: {type: Array},
|
||||
columns: {
|
||||
type: Array,
|
||||
default: [{
|
||||
prop: 'loginname',
|
||||
label: '工号',
|
||||
}, {
|
||||
prop: 'username',
|
||||
label: '姓名',
|
||||
}, {
|
||||
prop: 'sex',
|
||||
label: '性别',
|
||||
}, {
|
||||
prop: 'mobile',
|
||||
label: '电话',
|
||||
}, {
|
||||
prop: 'threeUnitName',
|
||||
label: '科室',
|
||||
}, {
|
||||
prop: 'unitname',
|
||||
label: '单位',
|
||||
}, {
|
||||
prop: 'unionname',
|
||||
label: '工会',
|
||||
}]
|
||||
},
|
||||
union: {type: String},
|
||||
is_ghxzzz: {type: Boolean},
|
||||
page_size: {type: Number, default: 5},
|
||||
sql_cnd: {
|
||||
type: Array
|
||||
}
|
||||
},
|
||||
model: {
|
||||
prop: 'value',
|
||||
event: 'change'
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
unitMoveUnits: [],
|
||||
threeUnits2: [],
|
||||
tableData: [],
|
||||
tableLoading: false,
|
||||
selectUser: [],
|
||||
pageForm: {
|
||||
unionId: this.union,
|
||||
sqlCnd: JSON.stringify(this.sql_cnd),
|
||||
searchName: "username",
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: this.page_size,
|
||||
totalCount: 0,
|
||||
pageOrderName: "",
|
||||
pageOrderBy: ""
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value(val) {
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSelectionChange(val) {
|
||||
this.selectUser = val
|
||||
this.$emit("change", val.map(v => v.id))
|
||||
},
|
||||
doSearch() {
|
||||
this.tableKey = new Date().getTime()
|
||||
this.pageForm.pageNumber = 1
|
||||
this.pageData()
|
||||
},
|
||||
pageOrder(column) {
|
||||
this.pageForm.pageOrderName = column.prop;
|
||||
this.pageForm.pageOrderBy = column.order;
|
||||
this.pageData();
|
||||
},
|
||||
pageNumberChange(val) {
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageSizeChange(val) {
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageData() {
|
||||
this.tableLoading = true
|
||||
|
||||
$.post("/platform/member/change/mange/userPageData", this.pageForm, (data) => {
|
||||
this.tableLoading = false
|
||||
if (data.code == 0) {
|
||||
this.tableData = data.data.list;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
|
||||
this.tableData.filter(v => this.value.includes(v.id) && !this.selectUser.some(x => x.id == v.id)).forEach(v => {
|
||||
this.$refs.table.toggleRowSelection(v, true);
|
||||
})
|
||||
|
||||
} else {
|
||||
this.$message.error(data.msg);
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
async init() {
|
||||
console.log(this.is_ghxzzz,this.sql_cnd)
|
||||
this.doSearch()
|
||||
this.selectUser = []
|
||||
this.unitMoveUnits = await getUnits()
|
||||
if (this.unitMoveUnits && this.unitMoveUnits.length > 0) {
|
||||
this.pageForm.unitId = this.unitMoveUnits[0].id
|
||||
this.threeUnits2 = await threeUnitsByUnionGroupOrUnitId(this.pageForm.unitId, null)
|
||||
}
|
||||
this.$refs.table.clearSelection();
|
||||
},
|
||||
},
|
||||
created() {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,70 @@
|
||||
<template>
|
||||
|
||||
<div>
|
||||
|
||||
<el-dialog
|
||||
title="活动二维码"
|
||||
:visible.sync="codeDialogVisible"
|
||||
:close-on-click-modal="false"
|
||||
width="40%">
|
||||
<div style="width: 100%;">
|
||||
<div id="qrcode" style="width: 70%;left: 0;right: 0;margin: auto"></div>
|
||||
</div>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="codeDialogVisible = false" type="primary">关 闭</el-button>
|
||||
<!-- <el-button type="primary" @click="dwn('活动二维码')">下 载</el-button>-->
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
module.exports = {
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
codeDialogVisible: false,
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
saveFile(data, filename) {
|
||||
var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
|
||||
save_link.href = data;
|
||||
save_link.download = filename;
|
||||
|
||||
var event = document.createEvent('MouseEvents');
|
||||
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
|
||||
save_link.dispatchEvent(event);
|
||||
},
|
||||
/*下载二维码*/
|
||||
dwn(name) {
|
||||
var type = 'png';
|
||||
var dataurl = $("canvas").get(0).toDataURL('image/png').replace("image/png", "image/octet-stream");
|
||||
var filename = name + '_' + (new Date()).getTime() + '.' + type;
|
||||
this.saveFile(dataurl, filename);
|
||||
},
|
||||
openCode(url) {
|
||||
this.codeDialogVisible = true
|
||||
this.$nextTick(() => {
|
||||
$("#qrcode").html("")
|
||||
$("#qrcode").qrcode({ //设置css
|
||||
render: "canvas", //二维码的生成方式
|
||||
width: $("#qrcode").width(), //生成二维码的宽度
|
||||
height: $("#qrcode").width(), //生成二维码的高度
|
||||
text: APP_DOMAIN + url,
|
||||
correctLevel: 3 //容错级别,默认为2,最高为3,为了让用户扫码最快,容错级别应当设为最低
|
||||
});
|
||||
})
|
||||
console.log(APP_DOMAIN + url)
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,424 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card shadow="never">
|
||||
<el-form ref="form">
|
||||
|
||||
<el-card v-for="(s,idx) in subject" :key="s.id" class="item" shadow="hover">
|
||||
<!-- <el-form-item :label="(s.subjectType==='radio'?'(单选)':'(多选)')+ (idx+1)+'.'" prop="subjectName">-->
|
||||
<el-form-item label="" prop="subjectName">
|
||||
<div class="s-title-wrap">
|
||||
<el-row align="middle" style="width: 100%" type="flex">
|
||||
<el-col :xl="20"
|
||||
style="border: 1px dashed rgb(217, 217, 217);border-radius:6px;display: flex;align-items: center;">
|
||||
<el-input v-model="s.subjectName" class="text-input"
|
||||
data-type="subject"></el-input>
|
||||
</el-col>
|
||||
<el-col :xl="2" style="text-align: center"></el-col>
|
||||
<!-- <el-col :xl="2" style="text-align: center">
|
||||
<div class="option-delete">
|
||||
<el-button circle
|
||||
icon="el-icon-delete"
|
||||
size="mini" type="danger"
|
||||
@click="subject.splice(idx,1)"></el-button>
|
||||
</div>
|
||||
</el-col>-->
|
||||
</el-row>
|
||||
</div>
|
||||
<div class="s-options-list" style="margin-top: 10px;">
|
||||
<el-table :data="s.options" border>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="类型"
|
||||
width="150"
|
||||
>
|
||||
<template slot-scope="{row}">
|
||||
<el-select v-model="row.optionType" placeholder="请选择"
|
||||
@change="optionTypeChange(row)">
|
||||
<el-option
|
||||
|
||||
v-for="item in typeOptions"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="福利名称"
|
||||
>
|
||||
<template slot-scope="{row}">
|
||||
<div
|
||||
style="border: 1px dashed rgb(217, 217, 217);border-radius:6px;display: flex;align-items: center;padding-left: 10px;">
|
||||
<i v-if="s.subjectType==='radio'" class="fa fa-circle-o"
|
||||
style="cursor: pointer"></i>
|
||||
<i v-else-if="s.subjectType==='checkBox'" class="fa fa-square-o"
|
||||
style="cursor: pointer"></i>
|
||||
|
||||
<template v-if="row.optionType==='套餐'">
|
||||
<el-input v-model="row.optionName" autosize
|
||||
class="text-input"
|
||||
data-type="option"
|
||||
></el-input>
|
||||
</template>
|
||||
|
||||
<template v-if="row.optionType==='提货券'">
|
||||
<el-select v-model="row.optionNameId" placeholder="请选择"
|
||||
@change="optionNameIdChange(row)" style="width: 100%">
|
||||
<el-option
|
||||
|
||||
v-for="item in shoppingTypeOptions"
|
||||
:key="item.id"
|
||||
:disabled="item.disabled"
|
||||
:label="item.shoppingName"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column width="120px" label="所属供应商">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.shoppingName ? row.shoppingName : '暂无' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="排序" width="120px">
|
||||
<template slot-scope="{row}">
|
||||
<div
|
||||
style="border: 1px dashed rgb(217, 217, 217);border-radius:6px;display: flex;align-items: center;padding-left: 10px;">
|
||||
<el-input v-model="row.optionSort" autosize
|
||||
class="text-input"
|
||||
data-type="option"
|
||||
></el-input>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="图片" width="120">
|
||||
<template slot-scope="{row,$index}">
|
||||
<image-upload :height="100"
|
||||
:width="100"
|
||||
:limit="1"
|
||||
:file-type="['png','jpg']"
|
||||
:file-size="0.2"
|
||||
:size="[500,200]"
|
||||
v-model="row.imgUrl"></image-upload>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="说明" width="100px">
|
||||
<template slot-scope="scope">
|
||||
<el-link type="primary"
|
||||
@click="openDescRichText(scope.row.description,idx,scope.$index)">编辑说明
|
||||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="默认选择"
|
||||
width="100px">
|
||||
<template slot-scope="{row,$index}">
|
||||
<el-checkbox v-model="row.isSystemDefault"
|
||||
@change="(val,event)=>{systemDefaultChange(idx,$index,val)}"
|
||||
></el-checkbox>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="默认选择几个"
|
||||
width="100px">
|
||||
<template slot-scope="{row,$index}">
|
||||
<el-input v-model="row.defaultSelectNum"></el-input>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column label="没选系统自动分配" width="150px">
|
||||
<template slot-scope="{row,$index}">
|
||||
<el-checkbox v-model="row.isDefaultOption"
|
||||
@change="(val,event)=>{defaultOptionChange(idx,$index,val)}"
|
||||
></el-checkbox>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" width="100px">
|
||||
<template slot-scope="{row,$index}">
|
||||
<div class="option-delete">
|
||||
<el-button circle
|
||||
icon="el-icon-delete"
|
||||
size="mini" type="danger"
|
||||
@click="deleteRow(s.options,row,$index)"></el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div class="s-operation">
|
||||
<el-button size="small" type="primary"
|
||||
@click="s.options.push({optionType:'套餐',optionNameId:'',optionName:'福利'+(s.options.length+1),optionSort:s.options.length+1,imgUrl:null,isDefaultOption:false,isSystemDefault:false})">
|
||||
添加福利
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-card>
|
||||
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="richTextDialog"
|
||||
title="编辑说明"
|
||||
:append-to-body="true"
|
||||
width="60%">
|
||||
<text-editor v-model="descRichTextContent"></text-editor>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="richTextDialog = false">取 消</el-button>
|
||||
<el-button type="primary" @click="saveRichText">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
let questionRichTextEditor = null
|
||||
|
||||
module.exports = {
|
||||
components: {
|
||||
vuedraggable: window.vuedraggable,
|
||||
},
|
||||
watch: {
|
||||
subject(val) {
|
||||
}
|
||||
},
|
||||
props: {
|
||||
subject: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
files: [],
|
||||
typeOptions: ["套餐", "提货券"],
|
||||
shoppingTypeOptions: null,
|
||||
richTextDialog: false,
|
||||
subjectIndex: 0,
|
||||
optionIndex: 0,
|
||||
imgPopover: false,
|
||||
idx: null,
|
||||
oidx: null,
|
||||
|
||||
//富文本内容
|
||||
descRichTextContent: ''
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
deleteRow(options, row, index) {
|
||||
options.splice(index, 1)
|
||||
const shoppingTypeOption = this.shoppingTypeOptions.find(v => v.id === row.optionNameId)
|
||||
shoppingTypeOption.disabled = false
|
||||
},
|
||||
optionTypeChange(row) {
|
||||
this.optionNameIdChange()
|
||||
row.optionNameId = null
|
||||
row.optionName = null
|
||||
},
|
||||
optionNameIdChange(row) {
|
||||
if (row) {
|
||||
row.optionName = this.shoppingTypeOptions.find(v => v.id === row.optionNameId).shoppingName
|
||||
}
|
||||
const optionNameIds = this.subject[0].options.map(v => v.optionNameId)
|
||||
this.shoppingTypeOptions.forEach(v => {
|
||||
v.disabled = optionNameIds.includes(v.id)
|
||||
})
|
||||
this.$forceUpdate()
|
||||
},
|
||||
addSubject(type) {
|
||||
let subject = {
|
||||
subjectName: '题目' + (this.subject.length + 1),
|
||||
subjectType: type,
|
||||
options: [
|
||||
{optionName: '选项一', imgUrl: null},
|
||||
{optionName: '选项一', imgUrl: null}
|
||||
]
|
||||
}
|
||||
this.subject.push(subject)
|
||||
},
|
||||
defaultOptionChange(idx, oidx, val) {
|
||||
const subject = this.subject[idx]
|
||||
const {subjectType} = subject
|
||||
if (val) {
|
||||
// subject.options.forEach(v => v.isDefaultOption = false)
|
||||
subject.options[oidx].isDefaultOption = true
|
||||
}
|
||||
},
|
||||
systemDefaultChange(idx, oidx, val) {
|
||||
const subject = this.subject[idx]
|
||||
const {subjectType} = subject
|
||||
if (val) {
|
||||
subject.options.forEach(v => v.isSystemDefault = false)
|
||||
subject.options[oidx].isSystemDefault = true
|
||||
}
|
||||
},
|
||||
validate(fn) {
|
||||
if (this._validate()) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
|
||||
},
|
||||
_validate() {
|
||||
return this.subject.some(v => {
|
||||
if (!v.subjectName) return true
|
||||
return v.options.some(x => {
|
||||
if (!x.optionName) return true
|
||||
})
|
||||
})
|
||||
},
|
||||
openDescRichText(richText, sIdx, oIdx) {
|
||||
this.descRichTextContent = richText
|
||||
this.richTextDialog = true
|
||||
this.subjectIndex = sIdx
|
||||
this.optionIndex = oIdx
|
||||
},
|
||||
saveRichText() {
|
||||
this.subject[this.subjectIndex]['options'][this.optionIndex].description = this.descRichTextContent
|
||||
this.richTextDialog = false
|
||||
},
|
||||
async getShoppingType() {
|
||||
const resp = await $.get("/platform/shoppingType/apply/getShoppingType", {typeName: "商超"})
|
||||
this.shoppingTypeOptions = resp.data
|
||||
},
|
||||
doCopy(row) {
|
||||
const input = document.createElement('input')
|
||||
input.value = APP_DOMAIN + FILE_STREAM_PREVIEW_ADDRESS + "?id=" + row.id // 设置复制内容
|
||||
document.body.appendChild(input) // 添加临时实例
|
||||
input.select() // 选择实例内容
|
||||
document.execCommand('Copy') // 执行复制
|
||||
document.body.removeChild(input) // 删除临时实例
|
||||
this.$message.success('复制成功!')
|
||||
},
|
||||
|
||||
},
|
||||
created() {
|
||||
this.getShoppingType()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.avatar-uploader .el-upload {
|
||||
border: 1px dashed #d9d9d9;
|
||||
border-radius: 6px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
/* width: 40px;
|
||||
height: 40px;*/
|
||||
/*line-height: 40px;*/
|
||||
}
|
||||
|
||||
.avatar-uploader .el-upload:hover {
|
||||
border-color: #409EFF;
|
||||
}
|
||||
|
||||
.avatar-uploader-icon {
|
||||
font-size: 14px;
|
||||
color: #8c939d;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
.el-upload el-upload--text {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 100px;
|
||||
height: 80px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*被拖拽对象的样式*/
|
||||
.item {
|
||||
padding: 6px;
|
||||
background-color: #FFF;
|
||||
border: solid 1px #eee;
|
||||
margin-bottom: 10px;
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
.item:hover {
|
||||
/*background-color: #f1f1f1;*/
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
/*选中样式*/
|
||||
.chosen {
|
||||
border: solid 1px #3089dc !important;
|
||||
}
|
||||
|
||||
.s-title-wrap {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
word-break: break-word;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
|
||||
.s-operation {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: start;
|
||||
padding: 5px 0;
|
||||
}
|
||||
|
||||
.s-operation > span {
|
||||
display: flex;
|
||||
height: 22px;
|
||||
cursor: pointer;
|
||||
color: #2672ff;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
|
||||
.option-delete {
|
||||
width: 80px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.s-operation i {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.text-input > input, .text-input > textarea {
|
||||
resize: none;
|
||||
overflow: hidden;
|
||||
/*border: 1px dashed rgb(217, 217, 217);*/
|
||||
border: none;
|
||||
}
|
||||
|
||||
.avatar-delete {
|
||||
font-size: 20px;
|
||||
color: red;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,158 @@
|
||||
<template>
|
||||
|
||||
<div>
|
||||
|
||||
<el-dialog :visible.sync="sendDialogVisible" title="发送通知" width="45%"
|
||||
:close-on-click-modal="false"
|
||||
@closed="sendDialogClose">
|
||||
|
||||
<el-form ref="sendForm" :model="formData" label-width="80px">
|
||||
|
||||
<el-form-item label="发送对象" prop="activityGroupId"
|
||||
:rules="[{required: true, message: '请选择发送对象', trigger: ['blur', 'change']}]">
|
||||
<el-select @change="groupChange" :disabled="group_id" placeholder="请选择活动组别" clearable
|
||||
style="width: 100%"
|
||||
v-model="formData.activityGroupId">
|
||||
<el-option :label="item.groupName"
|
||||
:value="item.groupId"
|
||||
v-for="item in activityGroupList"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="发送方式" prop="sendTypes"
|
||||
:rules="[{required: true, message: '请选择发送方式', trigger: ['blur', 'change']}]">
|
||||
<el-checkbox-group v-model="formData.sendTypes" size="medium">
|
||||
<el-checkbox border label="1">短信发送</el-checkbox>
|
||||
<el-checkbox border label="4">微信发送</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="发送内容" prop="content"
|
||||
:rules="[{required: true, message: '请选择发送内容', trigger: ['blur', 'change']}]">
|
||||
<el-input
|
||||
v-model="formData.content"
|
||||
:rows="6"
|
||||
placeholder="请输入内容"
|
||||
type="textarea">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-alert
|
||||
show-icon
|
||||
:title="url"
|
||||
description="如果您发送的内容需要含有链接,请把上述内容复制到发送内容里面,不要随意修改!"
|
||||
type="warning">
|
||||
</el-alert>
|
||||
|
||||
</el-form>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="sendDialogVisible = false">取 消</el-button>
|
||||
<el-button :disabled="!this.formData.activityGroupId" type="primary"
|
||||
@click="doSend()">发 送</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
group_id: {
|
||||
type: String, default: ''
|
||||
},
|
||||
url: {
|
||||
required: false,
|
||||
type: String
|
||||
}
|
||||
},
|
||||
model: {},
|
||||
data() {
|
||||
return {
|
||||
sendDialogVisible: false,
|
||||
activityGroupList: [],
|
||||
formData: {
|
||||
sendTypes: [],
|
||||
activityGroupId: '',
|
||||
content: '',
|
||||
},
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
||||
},
|
||||
methods: {
|
||||
sendDialogClose() {
|
||||
if (this.$refs['sendForm']) {
|
||||
this.$refs['sendForm'].resetFields()
|
||||
}
|
||||
},
|
||||
openDialog(groupId) {
|
||||
if (!groupId) {
|
||||
this.$notify.warning({title: '警告', message: '您选择的活动没有发送对象!'})
|
||||
return
|
||||
}
|
||||
this.group_id = groupId
|
||||
if (groupId) {
|
||||
this.formData.activityGroupId = Number(groupId)
|
||||
}
|
||||
this.sendDialogVisible = true
|
||||
},
|
||||
groupChange(val) {
|
||||
|
||||
},
|
||||
async doSend() {
|
||||
const valid = await this.$refs['sendForm'].validate()
|
||||
if (!valid) return
|
||||
|
||||
const group = this.activityGroupList.find(o => o.groupId === this.formData.activityGroupId)
|
||||
const groupName = group !== undefined ? group.groupName : ''
|
||||
|
||||
const confirm = await this.$confirm('您确定要给【' + groupName + '】发送通知吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm) {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '正在发送...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: COVER_LAYER_COLOR
|
||||
});
|
||||
|
||||
this.formData.activityGroupId = this.group_id
|
||||
this.formData.flag = this.group_id
|
||||
const resp = await $.post('/platform/msgNotify/send/sendMsgByGroupId', {
|
||||
msgNotify: JSON.stringify(this.formData),
|
||||
})
|
||||
if (resp.code === 0) {
|
||||
this.$notify.success({title: '成功', message: resp.msg})
|
||||
this.sendDialogVisible = false
|
||||
} else {
|
||||
this.$notify.warning({title: '警告', message: resp.msg})
|
||||
}
|
||||
loading.close()
|
||||
}
|
||||
},
|
||||
async getActivityGroup() {
|
||||
const resp = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
||||
this.activityGroupList = resp.data
|
||||
},
|
||||
async initData() {
|
||||
|
||||
await this.getActivityGroup()
|
||||
},
|
||||
},
|
||||
computed: {},
|
||||
created() {
|
||||
this.initData()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,147 @@
|
||||
<template>
|
||||
<el-card class="box-card" shadow="never">
|
||||
|
||||
<div class="signature-body">
|
||||
<el-collapse-transition>
|
||||
<div v-show="showQrCode" class="qr-code-div">
|
||||
<el-link type="primary" :underline="false">{{ scan_title }}</el-link>
|
||||
<QrCode v-if="postAddress" :options="{ width: 126 }" :value="postAddress"></QrCode>
|
||||
</div>
|
||||
</el-collapse-transition>
|
||||
|
||||
<el-image fit="contain" v-show="!showQrCode" v-loading="loading"
|
||||
style="height: 100px;width: 100%" :src="signature">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline"></i>
|
||||
</div>
|
||||
</el-image>
|
||||
<el-link type="danger" style="font-size: 12px;margin-top: 20px" @click="refresh();clear()" icon="el-icon-edit"
|
||||
v-show="!showQrCode">重签
|
||||
</el-link>
|
||||
</div>
|
||||
|
||||
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
window.signatureInterval = null
|
||||
|
||||
module.exports = {
|
||||
name: "Signature",
|
||||
props: {
|
||||
scan_title: {
|
||||
type: String,
|
||||
default: '扫描下方二维码进行签字'
|
||||
},
|
||||
prefix: {
|
||||
type: String,
|
||||
default: 'DEFAULT'
|
||||
},
|
||||
signature: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
model: {
|
||||
prop: 'signature',
|
||||
event: 'change'
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
showQrCode: false,
|
||||
loading: true,
|
||||
postAddress: '',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
refresh() {
|
||||
this.signature = ''
|
||||
},
|
||||
startRequest() {
|
||||
this.signature = ''
|
||||
clearInterval(signatureInterval)
|
||||
const ts = new Date().getTime()
|
||||
this.postAddress = location.protocol + '//' + location.host + '/signature?prefix=' + this.prefix + '&id=' + ts
|
||||
|
||||
this.showQrCode = true
|
||||
|
||||
console.log(this.postAddress)
|
||||
window.signatureInterval = setInterval(() => {
|
||||
$.get(base + "/signature/getBase64?prefix=" + this.prefix + "&id=" + ts).then(res => {
|
||||
if (res != null) {
|
||||
this.$emit("change", res)
|
||||
this.signature = res
|
||||
this.loading = false
|
||||
this.save()
|
||||
clearInterval(signatureInterval)
|
||||
}
|
||||
})
|
||||
}, 1000 * 3)
|
||||
},
|
||||
save() {
|
||||
localStorage.setItem("signature", this.signature)
|
||||
},
|
||||
clear() {
|
||||
localStorage.removeItem("signature")
|
||||
},
|
||||
getSignature() {
|
||||
return localStorage.getItem("signature")
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'signature': {
|
||||
handler(s) {
|
||||
this.loading = !s
|
||||
if (!s) {
|
||||
const signature = this.getSignature()
|
||||
|
||||
if (!signature) {
|
||||
this.$emit("change", '')
|
||||
this.startRequest()
|
||||
} else {
|
||||
this.signature = signature
|
||||
this.$emit("change", signature)
|
||||
}
|
||||
|
||||
} else {
|
||||
this.signature = s
|
||||
this.showQrCode = false
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.el-card__body {
|
||||
position: relative !important;
|
||||
}
|
||||
|
||||
.signature-body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
min-height: 160px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.qr-code-div {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
z-index: 999;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,144 @@
|
||||
<template>
|
||||
<div>
|
||||
<wp-upload :key="key" :url="uploadUrl"
|
||||
:file-list="hxfileList"
|
||||
:max-file-number="maxnum"
|
||||
:allow-files="allowfiles"
|
||||
:upload-auto="true"
|
||||
upload-file-param="file"
|
||||
@on-delete="onDelete"
|
||||
@docexcel-preview="docexcelPreview"
|
||||
@on-upload-after="uploadAfter">
|
||||
</wp-upload>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const METHOD_NAME = "change"
|
||||
|
||||
module.exports = {
|
||||
props: {
|
||||
filex: {
|
||||
type: String
|
||||
},
|
||||
resfile: {
|
||||
type: 'Object',
|
||||
default: () => {
|
||||
}
|
||||
},
|
||||
allowfiles: {
|
||||
type: 'Array',
|
||||
default: () => []
|
||||
},
|
||||
maxnum: {
|
||||
type: [String, Number]
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
filex: {
|
||||
handler(val) {
|
||||
if (val) {
|
||||
this.hxfileList.push({url: val})
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
},
|
||||
resfile(val) {
|
||||
this.hxfileList = [{url: FILE_DOMAIN + val}]
|
||||
this.key = Math.random()
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
key: Math.random(),
|
||||
uploadUrl: '/platform/Common/uploadFile',
|
||||
fileList: [],
|
||||
filePath: '',
|
||||
hxfileList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
uploadAfter({data, fileId}) {
|
||||
if (data && data.code === 0) {
|
||||
//fileId 文件的唯一ID 组件生成
|
||||
this.resfile = {...data.data, fileId}
|
||||
this.$emit('update:resfile', this.resfile.filepath)
|
||||
}
|
||||
},
|
||||
onDelete(file) {
|
||||
if (file.status === 2) {
|
||||
for (let index in this.resfile) {
|
||||
if (this.resfile[index].fileId === file.id) {
|
||||
$.post('/platform/Common/deleteFile', {filepath: this.resfile[index].filepath})
|
||||
this.resfile.splice(index, 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
docexcelPreview(id) {
|
||||
//61行的fileId
|
||||
for (let index in this.resfile) {
|
||||
if (this.resfile[index].fileId === id) {
|
||||
window.open('/platform/base/Common/preview?filepath=' + this.resfile[index].filepath + '&fileid=' + this.resfile[index].id)
|
||||
}
|
||||
}
|
||||
},
|
||||
handleChange(file, fileList) {
|
||||
const delFile = () => {
|
||||
for (let i = 0; i < fileList.length; i++) {
|
||||
for (let i = 0; i < fileList.length; i++) {
|
||||
if (file === fileList[i]) {
|
||||
fileList.splice(i, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.size === 0) {
|
||||
this.$message.warning("您选择的是空文件!");
|
||||
delFile()
|
||||
}
|
||||
if (!uploadFileType.includes(file.name.split('.')[1])) {
|
||||
this.$message.warning("文件格式不支持!");
|
||||
delFile()
|
||||
}
|
||||
|
||||
let formData = new FormData()
|
||||
formData.append("file", file.raw, file.raw.name);
|
||||
|
||||
$.ajax({
|
||||
url: "/platform/Common/uploadFile",
|
||||
type: "post",
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success: (res) => {
|
||||
const {code, data, msg} = res
|
||||
if (code == 0) {
|
||||
file.v = data
|
||||
//this.$emit(METHOD_NAME, data)
|
||||
this.$emit('update:' + METHOD_NAME, data)
|
||||
}
|
||||
},
|
||||
error: res => {
|
||||
const {code, data, msg} = res
|
||||
this.$message.error(msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
handleRemove(file, fileList) {
|
||||
if (file.v) {
|
||||
$.post('/platform/Common/deleteFile', {filepath: file.v.filepath})
|
||||
for (let index in this.resfile) {
|
||||
if (this.resfile[index].filepath === file.v.filepath) {
|
||||
this.resfile.splice(index, 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,671 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-upload :key="key"
|
||||
:action="FILE_UPLOAD_ADDRESS"
|
||||
limit="1" :before-upload="beforeUpload"
|
||||
list-type="picture-card" :file-list="fileList" :on-success="onSuccess">
|
||||
<i slot="default" class="el-icon-plus"></i>
|
||||
<div slot="file" slot-scope="{file}">
|
||||
|
||||
<template v-if="resolvingShowByFileName(file.data.filepath) == 1">
|
||||
<el-image
|
||||
style="width: 100px; height: 100px"
|
||||
:src="getFileItemShowIcon(file.data.filepath)"
|
||||
fit="cover"></el-image>
|
||||
<!-- <img class="show-img" :src="getFileItemShowIcon(file.filepath)" :alt="file.filename"/>-->
|
||||
</template>
|
||||
<template v-else>
|
||||
<svg aria-hidden="true" style="width: 100px; height: 100px">
|
||||
<use :xlink:href="getFileItemShowIcon(file.data.filepath)"></use>
|
||||
</svg>
|
||||
</template>
|
||||
|
||||
<span class="el-upload-list__item-actions">
|
||||
<span
|
||||
class="el-upload-list__item-preview"
|
||||
@click="showSource(file.data)"
|
||||
>
|
||||
<i class="el-icon-zoom-in"></i>
|
||||
</span>
|
||||
<span
|
||||
class="el-upload-list__item-delete"
|
||||
@click="handleDownload(file)"
|
||||
>
|
||||
<i class="el-icon-download"></i>
|
||||
</span>
|
||||
<span
|
||||
class="el-upload-list__item-delete"
|
||||
@click="handleRemove(file)"
|
||||
>
|
||||
<i class="el-icon-delete"></i>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
</el-upload>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
/**
|
||||
* 文件类型解析
|
||||
* @type {{isImg: wpUploadFileTypeResolve.isImg}}
|
||||
*/
|
||||
let fileTypeResolving = {
|
||||
/**
|
||||
* 是否是一张图片
|
||||
*/
|
||||
isImg: function (fileItem) {
|
||||
return fileTypeResolving.resolvingByType(fileItem.type, /image\/(\w)*/)
|
||||
},
|
||||
/**
|
||||
* 通过后缀验证图片
|
||||
*/
|
||||
isImgByName: function (fileItemName) {
|
||||
let checkSuffixArray = ['jpg', 'png', 'jpeg', 'bmp', 'gif', 'webp', 'tif', 'svg', 'wmf'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray)
|
||||
},
|
||||
/**
|
||||
* 是否是视频
|
||||
*/
|
||||
isVideo: function (fileItem) {
|
||||
return fileTypeResolving.resolvingByType(fileItem.type, /video\/(\w)*/)
|
||||
},
|
||||
/**
|
||||
* 通过后缀验证图片
|
||||
*/
|
||||
isVideoByName: function (fileItemName) {
|
||||
let checkSuffixArray = ['mp4', 'Ogg', 'webm'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray)
|
||||
},
|
||||
/**
|
||||
* 是否是音频
|
||||
*/
|
||||
isAudio: function (fileItem) {
|
||||
return fileTypeResolving.resolvingByType(fileItem.type, /audio\/(\w)*/)
|
||||
},
|
||||
/**
|
||||
* 通过后缀验证图片
|
||||
*/
|
||||
isAudioByName: function (fileItemName) {
|
||||
let checkSuffixArray = ['mp3', 'ogg', 'wav'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray)
|
||||
},
|
||||
|
||||
/**
|
||||
* 是否是doc文件
|
||||
*/
|
||||
isDoc: function (fileItemName) {
|
||||
let checkSuffixArray = ['doc', 'docx', 'dot', 'dotx'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 是否是excel文件
|
||||
*/
|
||||
isExcel: function (fileItemName) {
|
||||
let checkSuffixArray = ['xls', 'xlsx', 'csv', 'xlt', 'xltx'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 是否是PPT文件
|
||||
*/
|
||||
isPPT: function (fileItemName) {
|
||||
let checkSuffixArray = ['ppt', 'pptx', 'pot', 'potx', 'odp'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 是否是Pdf文件
|
||||
*/
|
||||
isPdf: function (fileItemName) {
|
||||
let checkSuffixArray = ['pdf'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 是否是压缩文件
|
||||
* @param fileItem
|
||||
* @returns {boolean}
|
||||
*/
|
||||
isZip: function (fileItemName) {
|
||||
let checkSuffixArray = ['zip', '7z', 'war', 'tar', 'rar', 'jar', 'zipx', 'zix', 'zoo'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isWeb: function (fileItemName) {
|
||||
let checkSuffixArray = ['html', 'htm'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isTxt: function (fileItemName) {
|
||||
let checkSuffixArray = ['txt'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isPsd: function (fileItemName) {
|
||||
let checkSuffixArray = ['psd'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isCad: function (fileItemName) {
|
||||
let checkSuffixArray = ['cad'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isIso: function (fileItemName) {
|
||||
let checkSuffixArray = ['iso'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isExe: function (fileItemName) {
|
||||
let checkSuffixArray = ['exe'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 根据文件类型来解析
|
||||
* @param fileType 文件类型
|
||||
* @param checkTypeModel 文件类型模型,如:image\/(\w)*
|
||||
* @returns {boolean}
|
||||
*/
|
||||
resolvingByType: function (fileType, checkTypeModel) {
|
||||
if (checkTypeModel.test(fileType)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
/**
|
||||
* 根据名字和名字后缀名来验证文件
|
||||
* @param fileName 文件名
|
||||
* @param checkSuffixArray 文件类型包含的后缀
|
||||
*/
|
||||
resolvingByName: function (fileName, checkSuffixArray) {
|
||||
let suffixName = wpUploadFileTools.getSuffixNameByFileName(fileName);
|
||||
// 名字是否有效
|
||||
if (!wpUploadDataValid.isValidStr(suffixName)) {
|
||||
// 无效直接返回false
|
||||
return false;
|
||||
}
|
||||
suffixName = suffixName.trim();
|
||||
suffixName = suffixName.toLowerCase();
|
||||
if (checkSuffixArray.indexOf(suffixName) != -1) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件工具
|
||||
* @type {{}}
|
||||
*/
|
||||
let wpUploadFileTools = {
|
||||
/**
|
||||
* 获取文件显示模版
|
||||
* @param fileItem
|
||||
*/
|
||||
wapFileItemShow: function (fileItem) {
|
||||
return wpUploadFileTools.wapFileItemShowBase(fileItem, false);
|
||||
},
|
||||
/**
|
||||
* 包装已上传的文件列表
|
||||
*/
|
||||
wapFileItemShowWithUpload(uploadFile) {
|
||||
return wpUploadFileTools.wapFileItemShowBase(uploadFile, true);
|
||||
},
|
||||
/**
|
||||
* 获取文件显示的基本操作
|
||||
*/
|
||||
wapFileItemShowBase(fileItem, isUploaded = false) {
|
||||
let fileName = "";
|
||||
let suffix = "";
|
||||
let show = "";
|
||||
let showIcon = "";
|
||||
if (!isUploaded) {
|
||||
fileName = fileItem.name;
|
||||
suffix = wpUploadFileTools.getSuffixNameByFileName(fileName);
|
||||
show = wpUploadFileTools.resolvingShow(fileItem);
|
||||
showIcon = wpUploadFileShowResolving.getFileItemShowIcon(show, fileItem, false);
|
||||
} else {
|
||||
fileName = fileItem.name ? fileItem.name : wpUploadFileTools.resolvingUrlFileName(fileItem.url);
|
||||
let fileNameGetOFuRL = wpUploadFileTools.resolvingUrlFileName(fileItem.url);
|
||||
suffix = wpUploadFileTools.getSuffixNameByFileName(fileNameGetOFuRL);
|
||||
show = wpUploadFileTools.resolvingShowByFileName(fileNameGetOFuRL);
|
||||
showIcon = wpUploadFileShowResolving.getFileItemShowIcon(show, fileItem.url, true);
|
||||
}
|
||||
let fileItemShow = {
|
||||
// 文件的id
|
||||
id: wpUploadFileTools.uuid(),
|
||||
// 文件对象
|
||||
file: null,
|
||||
// 文件的类型
|
||||
type: null,
|
||||
// 文件的大小
|
||||
size: null,
|
||||
// 文件的名字
|
||||
name: fileName,
|
||||
// 文件地址
|
||||
url: null,
|
||||
// 后缀
|
||||
suffix: suffix,
|
||||
// 显示的类型
|
||||
show: show,
|
||||
// 显示的图标或者图片地址
|
||||
showIcon: showIcon,
|
||||
// 显示进度条
|
||||
processStatus: {
|
||||
show: false,
|
||||
width: 0,
|
||||
isFail: false
|
||||
},
|
||||
// 文件来源,0选择文件上传,1回显文件
|
||||
fileSource: 0,
|
||||
// 状态0未上传,失败也会转到0,1正在上传,2已经上传
|
||||
status: 0,
|
||||
// 上传文件的描述
|
||||
fileDes: null
|
||||
}
|
||||
if (!isUploaded) {
|
||||
// 如果非选择文件下面三个属性为null
|
||||
fileItemShow.file = fileItem;
|
||||
fileItemShow.type = fileItem.type;
|
||||
fileItemShow.size = fileItem.size;
|
||||
} else {
|
||||
// 文件描述
|
||||
fileItemShow.status = 2;
|
||||
fileItemShow.fileDes = fileItem;
|
||||
fileItemShow.fileSource = 1;
|
||||
fileItemShow.url = fileItem.url;
|
||||
}
|
||||
return fileItemShow;
|
||||
},
|
||||
/**
|
||||
* 解析URL的文件名字
|
||||
*/
|
||||
resolvingUrlFileName: function (fileUrl) {
|
||||
let index = fileUrl.lastIndexOf("/");
|
||||
if (index <= 0) {
|
||||
index = fileUrl.lastIndexOf("\\");
|
||||
}
|
||||
index = index + 1;
|
||||
let fileName = fileUrl.substring(index, fileUrl.length);
|
||||
return fileName;
|
||||
},
|
||||
/**
|
||||
* 获取文件名后缀
|
||||
* @param fileName 文件名全名
|
||||
* */
|
||||
getSuffixNameByFileName: function (fileName) {
|
||||
let str = fileName;
|
||||
let index = str.lastIndexOf(".");
|
||||
if (index < 0) {
|
||||
return "";
|
||||
}
|
||||
let pos = index + 1;
|
||||
return str.substring(pos, str.length);
|
||||
},
|
||||
/**
|
||||
* 解析显示类型
|
||||
* @param fileItem 文件
|
||||
* @returns {number}
|
||||
*/
|
||||
resolvingShow: function (fileItem) {
|
||||
// 默认0普通文件
|
||||
let showResult = 0;
|
||||
if (wpUploadFileTypeResolving.isImg(fileItem)) {
|
||||
showResult = 1;
|
||||
} else if (wpUploadFileTypeResolving.isVideo(fileItem)) {
|
||||
showResult = 2;
|
||||
} else if (wpUploadFileTypeResolving.isAudio(fileItem)) {
|
||||
showResult = 3;
|
||||
} else if (wpUploadFileTypeResolving.isDoc(fileItem.name)) {
|
||||
showResult = 4;
|
||||
} else if (wpUploadFileTypeResolving.isExcel(fileItem.name)) {
|
||||
showResult = 5;
|
||||
} else if (wpUploadFileTypeResolving.isPPT(fileItem.name)) {
|
||||
showResult = 6;
|
||||
} else if (wpUploadFileTypeResolving.isPdf(fileItem.name)) {
|
||||
showResult = 7;
|
||||
} else if (wpUploadFileTypeResolving.isZip(fileItem.name)) {
|
||||
showResult = 8;
|
||||
} else if (wpUploadFileTypeResolving.isWeb(fileItem.name)) {
|
||||
showResult = 9;
|
||||
} else if (wpUploadFileTypeResolving.isTxt(fileItem.name)) {
|
||||
showResult = 10;
|
||||
} else if (wpUploadFileTypeResolving.isPsd(fileItem.name)) {
|
||||
showResult = 11;
|
||||
} else if (wpUploadFileTypeResolving.isCad(fileItem.name)) {
|
||||
showResult = 12;
|
||||
} else if (wpUploadFileTypeResolving.isIso(fileItem.name)) {
|
||||
showResult = 13;
|
||||
} else if (wpUploadFileTypeResolving.isExe(fileItem.name)) {
|
||||
showResult = 14;
|
||||
}
|
||||
return showResult
|
||||
},
|
||||
|
||||
/**
|
||||
* 解析显示类型
|
||||
* @param fileItem 文件
|
||||
* @returns {number}
|
||||
*/
|
||||
resolvingShowByFileName: function (fileItemName) {
|
||||
// 默认0普通文件
|
||||
let showResult = 0;
|
||||
if (wpUploadFileTypeResolving.isImgByName(fileItemName)) {
|
||||
showResult = 1;
|
||||
} else if (wpUploadFileTypeResolving.isVideoByName(fileItemName)) {
|
||||
showResult = 2;
|
||||
} else if (wpUploadFileTypeResolving.isAudioByName(fileItemName)) {
|
||||
showResult = 3;
|
||||
} else if (wpUploadFileTypeResolving.isDoc(fileItemName)) {
|
||||
showResult = 4;
|
||||
} else if (wpUploadFileTypeResolving.isExcel(fileItemName)) {
|
||||
showResult = 5;
|
||||
} else if (wpUploadFileTypeResolving.isPPT(fileItemName)) {
|
||||
showResult = 6;
|
||||
} else if (wpUploadFileTypeResolving.isPdf(fileItemName)) {
|
||||
showResult = 7;
|
||||
} else if (wpUploadFileTypeResolving.isZip(fileItemName)) {
|
||||
showResult = 8;
|
||||
} else if (wpUploadFileTypeResolving.isWeb(fileItemName)) {
|
||||
showResult = 9;
|
||||
} else if (wpUploadFileTypeResolving.isTxt(fileItemName)) {
|
||||
showResult = 10;
|
||||
} else if (wpUploadFileTypeResolving.isPsd(fileItemName)) {
|
||||
showResult = 11;
|
||||
} else if (wpUploadFileTypeResolving.isCad(fileItemName)) {
|
||||
showResult = 12;
|
||||
} else if (wpUploadFileTypeResolving.isIso(fileItemName)) {
|
||||
showResult = 13;
|
||||
} else if (wpUploadFileTypeResolving.isExe(fileItemName)) {
|
||||
showResult = 14;
|
||||
}
|
||||
return showResult
|
||||
},
|
||||
/**
|
||||
* 生成UUID
|
||||
* @returns {string}
|
||||
*/
|
||||
uuid: function () {
|
||||
let str = wpUploadFileTools.uuidFull();
|
||||
str = str.replace(/-/g, "");
|
||||
return str;
|
||||
},
|
||||
uuidFull() {
|
||||
let s = []
|
||||
let hexDigits = "0123456789abcdef"
|
||||
for (var i = 0; i < 36; i++) {
|
||||
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)
|
||||
}
|
||||
s[14] = "4"
|
||||
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1)
|
||||
s[8] = s[13] = s[18] = s[23] = "-"
|
||||
let uuid = s.join("")
|
||||
return uuid
|
||||
},
|
||||
/**
|
||||
* 禁止某个dom的某个事件
|
||||
*/
|
||||
disableObjEvent(domObj, eventName) {
|
||||
domObj.addEventListener(eventName, function (e) {
|
||||
e.preventDefault();
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据验证工具
|
||||
* @type {{isValid: wpUploadDataValid.isValid}}
|
||||
*/
|
||||
let wpUploadDataValid = {
|
||||
isValid: function (obj) {
|
||||
if (undefined === obj || null === obj) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
isValidStr: function (str) {
|
||||
let isValidObj = wpUploadDataValid.isValid(str);
|
||||
if (!isValidObj) {
|
||||
return isValidObj;
|
||||
}
|
||||
str = str.trim();
|
||||
if ("" == str || '' == str) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
isValidArray(array) {
|
||||
if (null == array || array == undefined || array.length <= 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
props: {
|
||||
files: Array,
|
||||
type: {
|
||||
type: Array,
|
||||
default: ['jpg', 'png', 'doc', 'docx', 'xls', 'xlsx', 'pdf']
|
||||
},
|
||||
max_size: {
|
||||
type: Number,
|
||||
default: 5 * 1024 * 1024
|
||||
},
|
||||
view: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
files(val) {
|
||||
this.updateFileList(val)
|
||||
this.key = Math.random()
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
key: Math.random(),
|
||||
dialogImageUrl: '',
|
||||
dialogVisible: false,
|
||||
fileList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
/**
|
||||
* 查看资源
|
||||
*/
|
||||
showSource(showItem) {
|
||||
const show = this.resolvingShowByFileName(showItem.filepath)
|
||||
if (show == 1 || show == 2 || show == 3) {
|
||||
dd3s.showpic(showItem.filepath)
|
||||
} else if (show == 4 || show == 5) {
|
||||
dd3s.preview(showItem.filepath, showItem.id)
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 解析显示类型
|
||||
* @param fileItem 文件
|
||||
* @returns {number}
|
||||
*/
|
||||
resolvingShowByFileName(fileItemName) {
|
||||
// 默认0普通文件
|
||||
let showResult = 0;
|
||||
if (fileTypeResolving.isImgByName(fileItemName)) {
|
||||
showResult = 1;
|
||||
} else if (fileTypeResolving.isVideoByName(fileItemName)) {
|
||||
showResult = 2;
|
||||
} else if (fileTypeResolving.isAudioByName(fileItemName)) {
|
||||
showResult = 3;
|
||||
} else if (fileTypeResolving.isDoc(fileItemName)) {
|
||||
showResult = 4;
|
||||
} else if (fileTypeResolving.isExcel(fileItemName)) {
|
||||
showResult = 5;
|
||||
} else if (fileTypeResolving.isPPT(fileItemName)) {
|
||||
showResult = 6;
|
||||
} else if (fileTypeResolving.isPdf(fileItemName)) {
|
||||
showResult = 7;
|
||||
} else if (fileTypeResolving.isZip(fileItemName)) {
|
||||
showResult = 8;
|
||||
} else if (fileTypeResolving.isWeb(fileItemName)) {
|
||||
showResult = 9;
|
||||
} else if (fileTypeResolving.isTxt(fileItemName)) {
|
||||
showResult = 10;
|
||||
} else if (fileTypeResolving.isPsd(fileItemName)) {
|
||||
showResult = 11;
|
||||
} else if (fileTypeResolving.isCad(fileItemName)) {
|
||||
showResult = 12;
|
||||
} else if (fileTypeResolving.isIso(fileItemName)) {
|
||||
showResult = 13;
|
||||
} else if (fileTypeResolving.isExe(fileItemName)) {
|
||||
showResult = 14;
|
||||
}
|
||||
return showResult
|
||||
},
|
||||
/**
|
||||
* 获取文件显示图标
|
||||
* @param filePath
|
||||
* @returns {string}
|
||||
*/
|
||||
getFileItemShowIcon(filePath) {
|
||||
let showIcon = '';
|
||||
switch (this.resolvingShowByFileName(filePath)) {
|
||||
case 0:
|
||||
showIcon = "#icon-yunpanlogo-3";
|
||||
break;
|
||||
// 图片
|
||||
case 1:
|
||||
showIcon = this.getImgShowIcon(filePath);
|
||||
break;
|
||||
// 视频
|
||||
case 2:
|
||||
showIcon = "#icon-yunpanlogo-6";
|
||||
break;
|
||||
// 音乐
|
||||
case 3:
|
||||
showIcon = "#icon-yunpanlogo-4";
|
||||
break;
|
||||
// doc
|
||||
case 4:
|
||||
showIcon = "#icon-yunpanlogo-2";
|
||||
break;
|
||||
// excel
|
||||
case 5:
|
||||
showIcon = "#icon-yunpanlogo-";
|
||||
break;
|
||||
// ppt
|
||||
case 6:
|
||||
showIcon = "#icon-yunpanlogo-1";
|
||||
break;
|
||||
// pdf
|
||||
case 7:
|
||||
showIcon = "#icon-yunpanlogo-12";
|
||||
break;
|
||||
// zip
|
||||
case 8:
|
||||
showIcon = "#icon-yasuobao";
|
||||
break;
|
||||
// web文件
|
||||
case 9:
|
||||
showIcon = "#icon-yunpanlogo-5";
|
||||
break;
|
||||
// txt文件
|
||||
case 10:
|
||||
showIcon = "#icon-yunpanlogo-7";
|
||||
break;
|
||||
// PSD
|
||||
case 11:
|
||||
showIcon = "#icon-yunpanlogo-10";
|
||||
break;
|
||||
// cad
|
||||
case 12:
|
||||
showIcon = "#icon-yunpanlogo-11";
|
||||
break;
|
||||
// ISO
|
||||
case 13:
|
||||
showIcon = "#icon-yunpanlogo-8";
|
||||
break;
|
||||
// 可执行
|
||||
case 14:
|
||||
showIcon = "#icon-yunpanlogo-9";
|
||||
break;
|
||||
// 普通文件
|
||||
default:
|
||||
showIcon = "#icon-yunpanlogo-3";
|
||||
}
|
||||
return showIcon;
|
||||
},
|
||||
/**
|
||||
* 获取图片的显示图标
|
||||
* @param fileItem
|
||||
* @returns {string|*}
|
||||
*/
|
||||
getImgShowIcon(fileItem) {
|
||||
return FILE_DOMAIN + fileItem;
|
||||
},
|
||||
|
||||
updateFileList(val) {
|
||||
if (!val || !val.length) {
|
||||
this.fileList = []
|
||||
return
|
||||
}
|
||||
this.fileList = val.map(v => {
|
||||
return {data: v, uid: v.id, name: v.filename, url: FILE_DOMAIN + v.filepath, status: 'success'}
|
||||
})
|
||||
},
|
||||
change() {
|
||||
this.$emit("update:files", this.fileList.map(v => v.data))
|
||||
},
|
||||
onSuccess(response, file, fileList) {
|
||||
const {data} = response
|
||||
file.data = data
|
||||
this.fileList = fileList
|
||||
this.change()
|
||||
},
|
||||
beforeUpload(file) {
|
||||
const type = this.type.includes(file.name.split('.')[1].toLowerCase());
|
||||
const size = file.size < this.max_size;
|
||||
if (!type) {
|
||||
this.$message.warning(`上传文件只能是 ${this.type.map(v => v.toUpperCase()).join("/")} 格式!`);
|
||||
}
|
||||
if (!size) {
|
||||
this.$message.warning(`上传文件大小不能超过 ${this.max_size / 1024 / 1024} MB!`);
|
||||
}
|
||||
return type && size;
|
||||
},
|
||||
handleRemove(file) {
|
||||
if (file.data) {
|
||||
const {filename, filepath} = file.data
|
||||
$.post(FILE_DELETE_ADDRESS, {filepath})
|
||||
this.fileList.splice(this.fileList.findIndex(v => v == file), 1)
|
||||
this.change()
|
||||
}
|
||||
},
|
||||
handleDownload(file) {
|
||||
const {filepath, filename} = file.data
|
||||
if (filepath && filename) {
|
||||
dd3s.download(filepath, filename)
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.updateFileList(this.files)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.el-upload--picture-card, .el-upload-list--picture-card .el-upload-list__item {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.el-upload--picture-card {
|
||||
line-height: 110px;
|
||||
}
|
||||
|
||||
.el-upload-list--picture-card .el-upload-list__item-actions span + span {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.el-upload-list--picture-card .el-upload-list__item-actions {
|
||||
font-size: 16px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,229 @@
|
||||
/**
|
||||
*Desc:
|
||||
*Create by: jug
|
||||
*Create time:2024/1/24/16:40
|
||||
*/
|
||||
<template>
|
||||
<div>
|
||||
<div ref="editorDom"></div>
|
||||
<input type="file" style="display: none;">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script src="/assets/platform/plugins/jquery/jquery-1.11.1.min.js"></script>
|
||||
<script>
|
||||
|
||||
const {$, BtnMenu, DropListMenu, PanelMenu, DropList, Panel, Tooltip} = wangEditor
|
||||
|
||||
class AlertMenu extends BtnMenu {
|
||||
constructor(editor) {
|
||||
const $elem = wangEditor.$(
|
||||
`<div class="w-e-menu" data-title="上传word">
|
||||
word
|
||||
</div>`
|
||||
)
|
||||
super($elem, editor)
|
||||
}
|
||||
|
||||
clickHandler() {
|
||||
const _this = this
|
||||
const inputFileElement = document.querySelector('#'+this.editor.textElemId).parentElement.parentElement.nextElementSibling
|
||||
inputFileElement.click()
|
||||
inputFileElement.addEventListener('change', function () {
|
||||
const file = this.files[0];
|
||||
const fileName = file.name
|
||||
|
||||
if (!fileName.toLowerCase().endsWith('.doc') && !fileName.toLowerCase().endsWith('.docx')) {
|
||||
alert('请上传doc或者docx的文件')
|
||||
_this.clearInputFile()
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
const formData = new FormData()
|
||||
formData.append('file', file, file.name)
|
||||
axios.post('/file_server/word2Html', formData, {}).then(response => {
|
||||
console.log(response.data)
|
||||
if (response.data.code === 0) {
|
||||
_this.editor.txt.html(response.data.data)
|
||||
} else {
|
||||
alert(response.data.msg + ',上传word失败,请联系管理员!')
|
||||
_this.clearInputFile()
|
||||
}
|
||||
}).catch(error => {
|
||||
console.log(error)
|
||||
_this.clearInputFile()
|
||||
alert('上传word失败,请联系管理员!')
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
clearInputFile() {
|
||||
const obj = document.getElementById('fileInput');
|
||||
obj.outerHTML = obj.outerHTML
|
||||
}
|
||||
|
||||
tryChangeActive() {
|
||||
this.active()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
wangEditor.registerMenu('alertMenuKey', AlertMenu)
|
||||
module.exports = {
|
||||
name: "textEditor",
|
||||
props: {
|
||||
// 定义值属性,用于接收父组件传递的值
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
height: {
|
||||
type: Number,
|
||||
default: 300
|
||||
},
|
||||
menus: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
return [
|
||||
'head',//标题
|
||||
'bold',//加粗
|
||||
'fontSize',//字号
|
||||
'fontName',//字体
|
||||
'italic',//斜体
|
||||
'underline',//下划线
|
||||
'strikeThrough',//删除线
|
||||
'indent',//缩进
|
||||
'lineHeight',//行高
|
||||
'foreColor',//文字颜色
|
||||
'backColor',//背景颜色
|
||||
//'link',//链接
|
||||
'list',//序列
|
||||
'todo',//待办
|
||||
'justify',//对齐
|
||||
'quote',//引用
|
||||
// 'emoticon',//表情
|
||||
'image',
|
||||
//'video',
|
||||
'table',
|
||||
//'code',
|
||||
'splitLine',//分割线
|
||||
'undo',
|
||||
'redo',
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
editor: null
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initEditor()
|
||||
},
|
||||
|
||||
watch: {
|
||||
value: {
|
||||
handler: function (newValue) {
|
||||
this.$nextTick(() => {
|
||||
this.editor.txt.html(newValue);
|
||||
// this.editor.config.focus = true
|
||||
})
|
||||
// const _this = this
|
||||
// const waitUntilEditorNotNull = () => {
|
||||
// if (_this.editor != null) {
|
||||
// _this.editor.txt.html(newValue);
|
||||
// } else {
|
||||
// setTimeout(waitUntilEditorNotNull, 100); // 每隔100毫秒检查一次
|
||||
// }
|
||||
// }
|
||||
// waitUntilEditorNotNull();
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
initEditor() {
|
||||
let _this = this
|
||||
this.editor = new wangEditor(this.$refs.editorDom)
|
||||
|
||||
// this.editor.config.focus = false // 取消光标自动定位
|
||||
|
||||
//内容change回调
|
||||
this.editor.config.onchange = function (newHtml) {
|
||||
let content = _this.editor.txt.html()
|
||||
let text = _this.editor.txt.text()
|
||||
// 对于一键格式化后的内容,空内容可能会出现<p></br></p>标签,此处进行判断
|
||||
// if (_this.isEmptyEditor()) {
|
||||
// content = ''
|
||||
// }
|
||||
_this.$emit('input', content)
|
||||
_this.$emit('catchData', content, text)
|
||||
}
|
||||
|
||||
//配置图片上传
|
||||
this.editor.config.customUploadImg = function (resultFiles, insertImgFn) {
|
||||
// resultFiles 是 input 中选中的文件列表
|
||||
// insertImgFn 是获取图片 url 后,插入到编辑器的方法
|
||||
|
||||
Promise.all(_this.uploadFiles(resultFiles)).then(res => {
|
||||
res.forEach(v => {
|
||||
if (v.code === 0) {
|
||||
insertImgFn(APP_DOMAIN + CREATE_PREVIEW_URL(v.data.filepath))
|
||||
} else {
|
||||
ELEMENT.message.warning('图片上传失败')
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
//粘贴过滤
|
||||
this.editor.config.pasteFilterStyle = false
|
||||
//高度
|
||||
this.editor.config.height = this.height
|
||||
//菜单
|
||||
this.editor.config.menus = this.menus
|
||||
this.editor.create()
|
||||
},
|
||||
isEmptyEditor() {
|
||||
const children = this.editor.$textElem.children()
|
||||
for (let i = 0; i < children.elems.length; i++) {
|
||||
const node = children.elems[i]
|
||||
if (node && node.nodeType === Node.TEXT_NODE && node.textContent.trim().length !== '') {
|
||||
return false
|
||||
}
|
||||
if (node && node.nodeType === Node.ELEMENT_NODE && node.tagName.toLowerCase() === 'p' && node.innerText.trim() !== '') {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
},
|
||||
uploadFiles(resultFiles) {
|
||||
return resultFiles.map(async file => {
|
||||
const formData = new FormData()
|
||||
formData.append('file', file, file.name)
|
||||
formData.append("folderPath", "/wangEditorImg/")
|
||||
return $.ajax({
|
||||
url: '/file_server/uploadFile',
|
||||
type: 'post',
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,120 @@
|
||||
<template>
|
||||
<div class="v-tree-layout">
|
||||
|
||||
<div class="shrink" :style="'left:'+(showTree?'calc(20% - 15px)':'0')" @click="shrink">
|
||||
<i v-if="!showTree" class="el-icon-arrow-right"></i>
|
||||
<i v-else class="el-icon-arrow-left"></i>
|
||||
</div>
|
||||
|
||||
<div class="v-tree-layout-left">
|
||||
<slot name="tree"></slot>
|
||||
</div>
|
||||
<div class="v-tree-layout-right">
|
||||
|
||||
<slot></slot>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
module.exports = {
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
showTree: true,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
shrink() {
|
||||
if (this.showTree) {
|
||||
$(".v-tree-layout-left").width(0)
|
||||
$(".v-tree-layout-right").width('100%')
|
||||
this.showTree = false
|
||||
} else {
|
||||
$(".v-tree-layout-left").width('20%')
|
||||
$(".v-tree-layout-right").width('80%')
|
||||
this.showTree = true
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
.shrink {
|
||||
position: absolute;
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 15px;
|
||||
background-color: white;
|
||||
z-index: 99;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
margin: auto;
|
||||
box-shadow: 0 0 5px rgb(200, 200, 200);
|
||||
cursor: pointer;
|
||||
transition: all 500ms;
|
||||
}
|
||||
|
||||
.shrink:hover {
|
||||
box-shadow: 0 0 10px rgb(150, 150, 150);
|
||||
}
|
||||
|
||||
.v-tree-layout-left::-webkit-scrollbar { /*滚动条整体样式*/
|
||||
width: 4px; /*高宽分别对应横竖滚动条的尺寸*/
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
.v-tree-layout-left::-webkit-scrollbar-thumb { /*滚动条里面小方块*/
|
||||
|
||||
border-radius: 10px;
|
||||
|
||||
|
||||
background: #dcdcdc;
|
||||
|
||||
}
|
||||
|
||||
.v-tree-layout-left::-webkit-scrollbar-track { /*滚动条里面轨道*/
|
||||
|
||||
-webkit-box-shadow: inset 0 0 5px transparent;
|
||||
|
||||
border-radius: 10px;
|
||||
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.v-tree-layout {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.v-tree-layout-left {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.v-tree-layout-left, .v-tree-layout-left .el-tree {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
.v-tree-layout-right {
|
||||
width: 80%;
|
||||
border-left: 1px solid rgb(240, 240, 240);
|
||||
}
|
||||
|
||||
.v-tree-layout-left, .v-tree-layout-right {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
overflow: auto;
|
||||
transition: all 500ms;
|
||||
position: relative;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,95 @@
|
||||
/**
|
||||
*Desc:
|
||||
*Create by: jug
|
||||
*Create time:2023/6/8/10:29
|
||||
*/
|
||||
<template>
|
||||
<div style="margin: 10px 0">
|
||||
<!-- <vi-title style="display:flex;align-items: center;margin:10px 0" title="过滤条件匹配:"></vi-title>-->
|
||||
<enum-select v-model="matchMethod" :clearable="false" enum="MatchMethod" label="description"
|
||||
style="width: 300px"
|
||||
value="name"></enum-select>
|
||||
|
||||
<div v-for="(r,index) in rules" :key="r.name +index" style="margin: 5px 0">
|
||||
<div style="display: flex;column-gap: 10px">
|
||||
<el-select v-model="r.name" clearable filterable placeholder="请选择字段">
|
||||
<el-option
|
||||
v-for="column in columnInfos"
|
||||
:key="column.COLUMN_NAME"
|
||||
:label="column.COLUMN_COMMENT"
|
||||
:value="column.COLUMN_NAME">
|
||||
</el-option>
|
||||
</el-select>
|
||||
|
||||
<el-select v-model="r.cnd" clearable filterable placeholder="请选择条件">
|
||||
<el-option
|
||||
v-for="column in cnds"
|
||||
:key="column.value"
|
||||
:label="column.description"
|
||||
:value="column.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
|
||||
<div style="width: 300px">
|
||||
<el-input v-model="r.value" placeholder="请输入值"></el-input>
|
||||
</div>
|
||||
|
||||
<div class="start" style="display: flex;align-items: center;column-gap: 10px;">
|
||||
<el-button type="danger" @click="rules.splice(index,1)">-</el-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-button size="small" type="primary" @click="rules.push({})">添加条件</el-button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "UserCnd",
|
||||
props: {},
|
||||
components: {'enum-select': httpVueLoader('/components/plugins/EnumSelect.vue?v=1.0.0'),},
|
||||
data() {
|
||||
return {
|
||||
columnInfos: [],
|
||||
rules: [
|
||||
{}
|
||||
],
|
||||
cnds: [
|
||||
{value: "=", desc: "等于"},
|
||||
{value: "!=", desc: "不等于"},
|
||||
],
|
||||
matchMethods: [],
|
||||
matchMethod: "AND"
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
matchMethod(val) {
|
||||
this.$emit('cnd', {matchMethod: val, rules: this.rules})
|
||||
},
|
||||
rules(val) {
|
||||
this.$emit('cnd', {matchMethod: this.matchMethod, rules: val})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getColumnInfo() {
|
||||
const {data, msg, code} = await $.post('/platform/activity/basic/scope/getUserTableColumnInfo')
|
||||
if (code !== 0) {
|
||||
this.$notify.warning(msg)
|
||||
return
|
||||
}
|
||||
this.columnInfos = data
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getColumnInfo()
|
||||
getEnumOptions('MatchMethod').then(res => this.matchMethods = res)
|
||||
getEnumOptions('ConditionalOperational').then(res => this.cnds = res)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,310 @@
|
||||
<template>
|
||||
|
||||
<div>
|
||||
<el-card shadow="never">
|
||||
<div class="search">
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">活动分组:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select placeholder="活动分组" v-model="pageForm.groupId"
|
||||
style="width: 100%;"
|
||||
@change="doSearch();viewGroupName()"
|
||||
filterable>
|
||||
<el-option v-for="item in activityGroupList" :label="item.groupName"
|
||||
:value="item.groupId"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">姓名工号:</div>
|
||||
<div class="search-item-option">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
|
||||
style="width: 100%"
|
||||
@keyup.enter.native="doSearch">
|
||||
<el-select v-model="pageForm.searchName" slot="prepend"
|
||||
placeholder="查询类型"
|
||||
style="width: 80px;">
|
||||
<el-option label="姓名" value="username"></el-option>
|
||||
<el-option label="工号" value="loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search-item"
|
||||
v-if="is_sysadmin||is_A06||is_H03">
|
||||
<div class="search-item-label">所属工会:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select placeholder="所属工会" v-model="pageForm.unionId"
|
||||
style="width: 100%;"
|
||||
clearable="true"
|
||||
@change="flushUnits" @clear="flushUnits"
|
||||
filterable="true">
|
||||
<el-option v-for="item in unions" :label="item.unionname"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">所属单位:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
|
||||
clearable="true"
|
||||
@change="doSearch"
|
||||
filterable="true">
|
||||
<el-option v-for="item in units" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--<div class="search-item"
|
||||
v-if="${@shiro.hasRole('sysadmin')}">
|
||||
<div class="search-item-label">活动工会:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select placeholder="所属工会" v-model="pageForm.activityUnionId"
|
||||
style="width: 100%;"
|
||||
clearable="true"
|
||||
@change="flushUnits" @clear="flushUnits"
|
||||
filterable="true">
|
||||
<el-option v-for="item in ActivityUnions" :label="item.unionname"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search-item" v-if="${@shiro.hasRole('sysadmin')}">
|
||||
<div class="search-item-label">活动单位:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select placeholder="所属单位" v-model="pageForm.activityUnitId"
|
||||
style="width: 100%;"
|
||||
clearable="true"
|
||||
@change="doSearch"
|
||||
filterable="true">
|
||||
<el-option v-for="item in ActivityUnits" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>-->
|
||||
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">人员类型:</div>
|
||||
<div class="search-item-option">
|
||||
<dict-select v-model="pageForm.personType" style="width: 100%" clearable
|
||||
placeholder="人员类型"
|
||||
@change="doSearch"
|
||||
code="UserType"></dict-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">在职状态:</div>
|
||||
<div class="search-item-option">
|
||||
<dict-select v-model="pageForm.userState" style="width: 100%" clearable
|
||||
placeholder="在职状态"
|
||||
@change="doSearch"
|
||||
code="UserState"></dict-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search-query">
|
||||
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool :label="currentGroupName" :app="this">
|
||||
<template #label_end>
|
||||
<!-- <span class="text-danger pl5">提醒:删除活动分组操作,请先选择某个活动分组后,再点击右边的删除按钮。</span>-->
|
||||
</template>
|
||||
<template #func>
|
||||
|
||||
<el-button @click="doExportUser" icon="el-icon-printer"
|
||||
size="medium" type="primary" :disabled="!pageForm.groupId">
|
||||
导出活动分组人员xlsx
|
||||
</el-button>
|
||||
<el-button @click="doDelete(null,pageForm.groupId)"
|
||||
type="danger"
|
||||
size="medium" :disabled="tableData.length===0">
|
||||
删除{{ currentGroupName }}
|
||||
</el-button>
|
||||
</template>
|
||||
</table-tool>
|
||||
<el-table ref="userTable" :data="tableData" stripe border :size="tableSize">
|
||||
<el-table-column type="index" label="序号" width="80px"></el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in tableColumns"
|
||||
show-overflow-tooltip
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="操作" width="100">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="danger" @click="doDelete(row.id,null)">删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container" style="margin-bottom: 0px">
|
||||
<el-pagination
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-sizes="[5,10, 20, 30, 50]"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next"
|
||||
:total="pageForm.totalCount">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
group_id: {
|
||||
type: String, default: ''
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
is_H10() {
|
||||
return this.roleData.is_H10
|
||||
},
|
||||
is_A06() {
|
||||
return this.roleData.is_A06
|
||||
},
|
||||
is_H04() {
|
||||
return this.roleData.is_H04
|
||||
},
|
||||
is_H02() {
|
||||
return this.roleData.is_H02
|
||||
},
|
||||
is_H03() {
|
||||
return this.roleData.is_H03
|
||||
},
|
||||
is_sysadmin() {
|
||||
return this.roleData.is_sysadmin
|
||||
},
|
||||
unionid() {
|
||||
return this.roleData.unionid
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activityGroupList: [],
|
||||
ActivityUnions: [],
|
||||
ActivityUnits: [],
|
||||
unions: [],
|
||||
units: [],
|
||||
pageForm: {
|
||||
unionId: "",
|
||||
unitId: "",
|
||||
searchName: "username",
|
||||
personTypes: [],
|
||||
userStates: [],
|
||||
memberStatus: [],
|
||||
year: moment().format('YYYY')
|
||||
},
|
||||
tableColumns: [
|
||||
{prop: 'loginName', label: '工号'},
|
||||
{prop: 'userName', label: '姓名'},
|
||||
{prop: 'sex', label: '性别'},
|
||||
{prop: 'birthday', label: '出生年月'},
|
||||
{prop: 'mobile', label: '联系电话'},
|
||||
{prop: 'personType', label: '人员类型', sortable: true},
|
||||
{prop: 'userState', label: '在职状态', sortable: true},
|
||||
{prop: 'unitName', label: '所属单位', sortable: true},
|
||||
{prop: 'unionName', label: '所属工会', sortable: true},
|
||||
{prop: 'activityUnionName', label: '活动工会', sortable: true},
|
||||
{prop: 'groupName', label: '所属分组', sortable: true},
|
||||
],
|
||||
roleData: {},
|
||||
currentGroupName: null,
|
||||
}
|
||||
},
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0')
|
||||
},
|
||||
methods: {
|
||||
viewGroupName() {
|
||||
if (this.pageForm.groupId) {
|
||||
const group = this.activityGroupList.find(v => v.groupId === this.pageForm.groupId)
|
||||
this.currentGroupName = group.groupName + '人员'
|
||||
return
|
||||
}
|
||||
this.currentGroupName = '全部人员'
|
||||
},
|
||||
doExportUser() {
|
||||
window.open("/platform/activity/basic/user/doExportUser?groupId=" + this.pageForm.groupId)
|
||||
},
|
||||
doSearch2() {
|
||||
this.getActivityGroup()
|
||||
this.doSearch()
|
||||
},
|
||||
async doDelete(id, groupId) {
|
||||
const confirm = await this.$confirm('您确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === 'confirm') {
|
||||
const resp = await $.post('/platform/activity/basic/user/doDelete', {id, groupId})
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
this.$set(this.pageForm, "groupId", null)
|
||||
this.doSearch()
|
||||
await this.getActivityGroup()
|
||||
this.$emit('group_change')
|
||||
}
|
||||
}
|
||||
},
|
||||
async flushUnits() {
|
||||
this.$set(this.pageForm, "unitId", "")
|
||||
if (this.is_A06 || this.is_sysadmin || this.is_H03) {
|
||||
this.units = await getUnits(this.pageForm.unionId)
|
||||
this.ActivityUnits = await getActivityUnits(this.pageForm.activityUnionId)
|
||||
} else {
|
||||
this.units = await getUnits(this.unionid)
|
||||
}
|
||||
},
|
||||
async getActivityGroup() {
|
||||
this.pageForm.groupId = ''
|
||||
const resp = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
||||
this.activityGroupList = resp.data
|
||||
if (resp.data && resp.data.length > 0) {
|
||||
this.$set(this.pageForm, "groupId", resp.data[0].groupId)
|
||||
}
|
||||
await this.pageData()
|
||||
},
|
||||
async pageData() {
|
||||
sublime.showLoadingbar()
|
||||
const resp = await $.post('/platform/activity/basic/user/pageData', this.pageForm)
|
||||
if (resp.code === 0) {
|
||||
this.tableData = resp.data.list
|
||||
this.pageForm.totalCount = resp.data.totalCount
|
||||
}
|
||||
sublime.closeLoadingbar()
|
||||
},
|
||||
|
||||
},
|
||||
async created() {
|
||||
this.unions = await getUnions(null)
|
||||
this.ActivityUnions = await getActivityUnions()
|
||||
await this.flushUnits()
|
||||
await this.getActivityGroup()
|
||||
this.viewGroupName()
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,744 @@
|
||||
<template>
|
||||
|
||||
<div>
|
||||
<template>
|
||||
<el-card shadow="never">
|
||||
<el-row class="query-row">
|
||||
<el-col class="query-title">姓名/工号:</el-col>
|
||||
<el-select clearable
|
||||
v-model="pageForm.userId" filterable remote collapse-tags
|
||||
placeholder="输入工号或者姓名查找" :remote-method="queryUser" @change="doSearch"
|
||||
style="width: 100%"
|
||||
multiple>
|
||||
<el-option v-for="o in userList"
|
||||
:label="o.username+'('+o.loginname+')-'+o.unitname" :value="o.id"
|
||||
:key="o.id"></el-option>
|
||||
</el-select>
|
||||
</el-row>
|
||||
|
||||
<el-row class="query-row"
|
||||
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H02===true||is_H04===true">
|
||||
<el-col class="query-title hidden-xs-only">会员类型:</el-col>
|
||||
<el-col class="query-content">
|
||||
<el-tag
|
||||
:effect="pageForm.memberTypes.includes(item.name)?'dark':'plain'"
|
||||
:key="item.code"
|
||||
:type="item.name"
|
||||
@click="tagClick('memberTypes',item.name)"
|
||||
style="margin-right: 10px;cursor: pointer"
|
||||
v-for="item in memberTypeOptions">
|
||||
{{ item.name }}
|
||||
</el-tag>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row class="query-row">
|
||||
<el-col class="query-title hidden-xs-only">性别:</el-col>
|
||||
<el-col class="query-content">
|
||||
<el-tag
|
||||
:effect="pageForm.sexTypes.includes(item.name)?'dark':'plain'"
|
||||
:key="item.code"
|
||||
:type="item.name"
|
||||
@click="tagClick('sexTypes',item.name)"
|
||||
style="margin-right: 10px;cursor: pointer"
|
||||
v-for="item in sexTypeOptions">
|
||||
{{ item.name }}
|
||||
</el-tag>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row class="query-row"
|
||||
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H04===true">
|
||||
<el-col class="query-title">人员类型:</el-col>
|
||||
<el-col class="query-content">
|
||||
<el-tag
|
||||
:effect="pageForm.personTypes.includes(item.name)?'dark':'plain'"
|
||||
:key="item.code"
|
||||
:type="item.name"
|
||||
@click="tagClick('personTypes',item.name)"
|
||||
style="margin-right: 10px;cursor: pointer"
|
||||
v-for="item in personTypeOptions">
|
||||
{{ item.name }}
|
||||
</el-tag>
|
||||
|
||||
<el-link :underline="false" @click="pageForm.personTypes=[];doSearch()"
|
||||
type="danger"
|
||||
v-if="personTypeOptions.length&&pageForm.personTypes.length">清空
|
||||
</el-link>
|
||||
|
||||
<el-link :underline="false"
|
||||
@click="pageForm.personTypes=personTypeOptions.map(p=>p.code);doSearch()"
|
||||
type="success">全部
|
||||
</el-link>
|
||||
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row class="query-row"
|
||||
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H04===true">
|
||||
<el-col class="query-title">在职状态:</el-col>
|
||||
<el-col class="query-content">
|
||||
<el-tag
|
||||
:effect="pageForm.userStates.includes(item.name)?'dark':'plain'"
|
||||
:key="item.code"
|
||||
:type="item.name"
|
||||
@click="tagClick('userStates',item.name)"
|
||||
style="margin-right: 10px;cursor: pointer"
|
||||
v-for="item in userStateOptions">
|
||||
{{ item.name }}
|
||||
</el-tag>
|
||||
|
||||
<el-link :underline="false" @click="pageForm.userStates=[];doSearch()"
|
||||
type="danger"
|
||||
v-if="userStateOptions.length&&pageForm.userStates.length">清空
|
||||
</el-link>
|
||||
<el-link :underline="false"
|
||||
@click="pageForm.userStates=userStateOptions.map(p=>p.code);doSearch()"
|
||||
type="success">全部
|
||||
</el-link>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row class="query-row"
|
||||
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H04===true">
|
||||
<el-col class="query-title">部门查询:</el-col>
|
||||
<el-col class="query-content">
|
||||
<el-row :gutter="20">
|
||||
<el-col :lg="12" :md="12" :sm="24" :xl="12" :xs="24">
|
||||
<el-select @change="flushUnits();doSearch()"
|
||||
@clear="flushUnits();doSearch()"
|
||||
:clearable="is_H10===true||is_A06===true||is_sysadmin===true"
|
||||
filterable="true"
|
||||
placeholder="所属工会" style="width: 100%"
|
||||
v-model="pageForm.unionId">
|
||||
<el-option :label="item.unionname" :value="item.id"
|
||||
v-for="item in unions"></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :lg="12" :md="12" :sm="24" :xl="12" :xs="24">
|
||||
<el-select @change="doSearch" @clear="doSearch" clearable="true"
|
||||
filterable="true"
|
||||
placeholder="所属单位"
|
||||
style="width: 100%"
|
||||
v-model="pageForm.unitId">
|
||||
<el-option :label="item.name" :value="item.id"
|
||||
v-for="item in units"></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<template v-if="is_H10===true||is_A06===true||is_sysadmin===true">
|
||||
|
||||
<!--<el-row class="query-row">
|
||||
<el-col class="query-title">活动部门:</el-col>
|
||||
<el-col class="query-content">
|
||||
<el-row :gutter="20">
|
||||
<el-col :lg="12" :md="12" :sm="24" :xl="12" :xs="24">
|
||||
<el-select @change="flushUnits();doSearch()" @clear="flushUnits();doSearch()"
|
||||
:clearable="is_A06===true||is_sysadmin===true"
|
||||
filterable="true"
|
||||
placeholder="所属工会" style="width: 100%"
|
||||
v-model="pageForm.activityUnionId">
|
||||
<el-option :label="item.unionname" :value="item.id"
|
||||
v-for="item in activityUnions"></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :lg="12" :md="12" :sm="24" :xl="12" :xs="24">
|
||||
<el-select @change="doSearch" @clear="doSearch" clearable="true"
|
||||
filterable="true"
|
||||
placeholder="所属单位"
|
||||
style="width: 100%"
|
||||
v-model="pageForm.activityUnitId">
|
||||
<el-option :label="item.name" :value="item.id"
|
||||
v-for="item in activityUnits"></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>-->
|
||||
|
||||
<el-row class="query-row">
|
||||
<el-col class="query-title">系统角色:</el-col>
|
||||
<el-col class="query-content">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-select @change="getRoleListByMenuId" v-model="pageForm.module"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 100%" placeholder="请选择角色所属的系统">
|
||||
<el-option
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
v-for="item in menuOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6" v-if="relatedSessionMenus.includes(pageForm.module)">
|
||||
<el-select filterable
|
||||
placeholder="届次"
|
||||
style="width: 100%"
|
||||
:disabled="!relatedSessionMenus.includes(pageForm.module)"
|
||||
v-model="pageForm.teacherMeetingId">
|
||||
<el-option :key="item.id" :label="item.name"
|
||||
:value="item.id"
|
||||
v-for="item in meetingOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-select
|
||||
@change="doSearch" clearable filterable
|
||||
placeholder="请选择角色"
|
||||
multiple
|
||||
style="width: 100%"
|
||||
v-model="pageForm.roleIds">
|
||||
<el-option :label="item.name" :value="item.id"
|
||||
v-for="item in roleList"></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-row class="query-row"
|
||||
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H02===true">
|
||||
<el-col class="query-title">协会:</el-col>
|
||||
<el-col class="query-content">
|
||||
<el-select v-model="pageForm.clubId" placeholder="请选择协会" @change="doSearch"
|
||||
filterable
|
||||
:clearable="is_H10===true||is_A06===true||is_sysadmin===true||(is_H04===true&&is_H02===true)"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in clubOptions"
|
||||
:key="item.stid"
|
||||
:label="item.name"
|
||||
:value="item.stid">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row class="query-row">
|
||||
<el-col class="query-title">活动组别:</el-col>
|
||||
<el-col class="query-content">
|
||||
<el-select @change="doSearch()" placeholder="请选择活动组别范围之外的人员" clearable
|
||||
style="width: 100%" v-model="pageForm.activityGroupId">
|
||||
<el-option :label="item.groupName"
|
||||
:value="item.groupId"
|
||||
v-for="item in activityGroupList2"></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row class="query-row"
|
||||
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H04===true">
|
||||
<el-col class="query-title">年龄范围:</el-col>
|
||||
<el-col class="query-content">
|
||||
<el-row type="flex" style="align-items: center">
|
||||
<el-col :span="15">
|
||||
<el-slider
|
||||
v-model="pageForm.age"
|
||||
range
|
||||
show-stops
|
||||
:max="100">
|
||||
</el-slider>
|
||||
</el-col>
|
||||
<el-col :span="9" class="pl20">
|
||||
当前范围:{{ pageForm.age }}
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row class="query-row"
|
||||
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H04===true">
|
||||
<el-col class="query-title">条件匹配:</el-col>
|
||||
<el-col class="query-content">
|
||||
<user-cnd @cnd="(v)=>{this.$set(this.pageForm,'activityUserCnd',v)}"></user-cnd>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row class="query-row" style="justify-content: end">
|
||||
<el-checkbox v-model="pageForm.reverseSelection" label="是否反选" border
|
||||
@change="doSearch"
|
||||
class="reverseCheckBox"></el-checkbox>
|
||||
<el-button type="danger" icon="el-icon-circle-close" @click="doReset">重置
|
||||
</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
|
||||
</el-row>
|
||||
|
||||
</el-card>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="筛选人员">
|
||||
<template #func>
|
||||
<el-button @click="doExportUser"
|
||||
size="medium"
|
||||
type="primary" icon="el-icon-download">
|
||||
导出查询人员
|
||||
</el-button>
|
||||
<el-button @click="setDialogVisible=true"
|
||||
size="medium"
|
||||
type="primary">
|
||||
设置为活动人员
|
||||
</el-button>
|
||||
</template>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" border
|
||||
ref="userTable" stripe>
|
||||
<el-table-column label="序号" type="index" width="80px"></el-table-column>
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
align="center"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
></el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, prev, pager, next"
|
||||
:total="pageForm.totalCount">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<el-dialog :visible.sync="setDialogVisible" title="设置活动人员" width="45%" :append-to-body="true"
|
||||
:close-on-click-modal="false">
|
||||
<el-form :model="formData" :rules="rules" label-width="100px" ref="setForm">
|
||||
<el-form-item label="添加方式" prop="setGroupType">
|
||||
<el-radio-group size="small" v-model="formData.setGroupType">
|
||||
<el-radio :label="1">添加至原有分组</el-radio>
|
||||
<el-radio :label="2">添加到新分组</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-row v-if="formData.setGroupType===1">
|
||||
<el-form-item label="原有分组" prop="setGroupId">
|
||||
<el-radio-group size="small" v-model="formData.setGroupId">
|
||||
<el-radio :disabled="item.groupId!=pageForm.activityGroupId" :label="item.groupId"
|
||||
border v-for="item in activityGroupList">
|
||||
{{ item.groupName }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row v-if="formData.setGroupType===2">
|
||||
<el-form-item label="新分组" prop="setGroupName">
|
||||
<el-input placeholder="请输入新分组名称" v-model="formData.setGroupName"></el-input>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<span class="dialog-footer" slot="footer">
|
||||
<el-button @click="setDialogVisible = false">取 消</el-button>
|
||||
<el-button @click="doSetActivityUser" type="primary"
|
||||
v-loading="settingLoading">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {},
|
||||
model: {},
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
userList: [],
|
||||
clubOptions: [],
|
||||
settingLoading: false,
|
||||
setDialogVisible: false,
|
||||
setGroupType: null,
|
||||
setGroupId: null,
|
||||
setGroupName: null,
|
||||
personTypeOptions: [],
|
||||
userStateOptions: [],
|
||||
activityGroupList: [],
|
||||
activityGroupList2: [],
|
||||
memberTypeOptions: [{
|
||||
code: 'unionMember',
|
||||
name: '工会会员'
|
||||
}, {
|
||||
code: 'welfareMember',
|
||||
name: '福利会员'
|
||||
}, {
|
||||
code: 'sickFundMember',
|
||||
name: '基金会员'
|
||||
}],
|
||||
sexTypeOptions: [
|
||||
{code: '男', name: '男'},
|
||||
{code: '女', name: '女'}
|
||||
],
|
||||
pageForm: {
|
||||
age: [0, 0],
|
||||
unionId: '',
|
||||
unitId: '',
|
||||
clubId: '',
|
||||
searchName: "u.username",
|
||||
personTypes: [],
|
||||
userStates: [],
|
||||
memberStatus: [],
|
||||
memberTypes: [],
|
||||
sexTypes: [],
|
||||
minAge: 0,
|
||||
maxAge: 0,
|
||||
year: moment().format('YYYY'),
|
||||
module: '',
|
||||
teacherMeetingId: '',
|
||||
activityGroupId: '',
|
||||
roleIds: [],
|
||||
userId: [],
|
||||
activityUserCnd: '',
|
||||
reverseSelection: false
|
||||
},
|
||||
activityUnions: [],
|
||||
unions: [],
|
||||
units: [],
|
||||
activityUnits: [],
|
||||
menuOptions: [],
|
||||
meetingOptions: [],
|
||||
roleList: [],
|
||||
tableHeight: '0px',
|
||||
tableColumns: [
|
||||
{prop: 'loginName', label: '工号'},
|
||||
{prop: 'userName', label: '姓名'},
|
||||
{prop: 'sex', label: '性别'},
|
||||
{prop: 'birthday', label: '出生年月', sortable: true},
|
||||
{prop: 'age', label: '年龄', sortable: true},
|
||||
{prop: 'mobile', label: '联系电话'},
|
||||
{prop: 'personType', label: '人员类型', sortable: true},
|
||||
{prop: 'userState', label: '在职状态', sortable: true},
|
||||
{prop: 'unitName', label: '所属单位', sortable: true},
|
||||
{prop: 'unionName', label: '所属工会', sortable: true},
|
||||
// {prop: 'activityUnionName', label: '活动工会', sortable: true},
|
||||
],
|
||||
rules: {
|
||||
setGroupType: [{required: true, message: '请选择添加方式', trigger: ['blur', 'change']}],
|
||||
setGroupId: [{required: true, message: '请选择分组', trigger: ['blur', 'change']}],
|
||||
setGroupName: [{required: true, message: '请输入分组名称', trigger: ['blur', 'change']}]
|
||||
},
|
||||
relatedSessionMenus: ['aca4d14498c145ceb5b24ed70776aae2', '733d7266652740a3aeac9da97ab5eeca', 'fe2d0768e26d4a80beeb159306bb8d01'],
|
||||
roleData: {}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
is_H10() {
|
||||
return this.roleData.is_H10
|
||||
},
|
||||
is_A06() {
|
||||
return this.roleData.is_A06
|
||||
},
|
||||
is_H04() {
|
||||
return this.roleData.is_H04
|
||||
},
|
||||
is_H02() {
|
||||
return this.roleData.is_H02
|
||||
},
|
||||
is_sysadmin() {
|
||||
return this.roleData.is_sysadmin
|
||||
},
|
||||
unionid() {
|
||||
return this.roleData.unionid
|
||||
},
|
||||
},
|
||||
components: {
|
||||
'user-cnd': httpVueLoader('/components/plugins/UserCnd.vue'),
|
||||
},
|
||||
methods: {
|
||||
doExportUser() {
|
||||
const {
|
||||
userId,
|
||||
memberTypes,
|
||||
sexTypes,
|
||||
personTypes,
|
||||
userStates,
|
||||
unionId,
|
||||
unitId,
|
||||
teacherMeetingId,
|
||||
roleIds,
|
||||
clubId,
|
||||
activityGroupId,
|
||||
age,
|
||||
reverseSelection,
|
||||
activityUserCnd
|
||||
} = this.pageForm
|
||||
|
||||
let props = {}
|
||||
this.tableColumns.forEach(v => {
|
||||
props[v.prop] = v.label
|
||||
})
|
||||
window.open("/platform/activity/basic/scope/doExportUser?userId=" + JSON.stringify(userId) +
|
||||
"&props=" + JSON.stringify(props) +
|
||||
"&memberTypes=" + JSON.stringify(memberTypes) +
|
||||
"&sexTypes=" + JSON.stringify(sexTypes) +
|
||||
"&personTypes=" + JSON.stringify(personTypes) +
|
||||
"&userStates=" + JSON.stringify(userStates) +
|
||||
"&roleIds=" + JSON.stringify(roleIds) +
|
||||
"&age=" + JSON.stringify(age) +
|
||||
"&activityUserCnd=" + (activityUserCnd ? JSON.stringify(activityUserCnd) : activityUserCnd) +
|
||||
"&reverseSelection=" + reverseSelection +
|
||||
"&clubId=" + clubId +
|
||||
"&activityGroupId=" + activityGroupId +
|
||||
"&teacherMeetingId=" + teacherMeetingId +
|
||||
"&unionId=" + unionId +
|
||||
"&unitId=" + unitId
|
||||
)
|
||||
},
|
||||
doReset() {
|
||||
this.pageForm.userId = []
|
||||
this.pageForm.memberTypes = []
|
||||
this.pageForm.sexTypes = []
|
||||
this.pageForm.personTypes = []
|
||||
this.pageForm.userStates = []
|
||||
this.pageForm.unionId = ''
|
||||
this.pageForm.unitId = ''
|
||||
this.pageForm.module = ''
|
||||
this.pageForm.teacherMeetingId = ''
|
||||
this.pageForm.roleIds = []
|
||||
this.pageForm.clubId = ''
|
||||
this.pageForm.activityGroupId = ''
|
||||
this.pageForm.activityUserCnd = ''
|
||||
this.pageForm.age = [0, 0]
|
||||
this.pageForm.reverseSelection = false
|
||||
this.doSearch()
|
||||
},
|
||||
|
||||
|
||||
async queryUser(val) {
|
||||
this.userList = await searchUser(val)
|
||||
},
|
||||
tagClick(key, val) {
|
||||
let idx = this.pageForm[key].indexOf(val)
|
||||
if (idx !== -1) {
|
||||
this.pageForm[key].splice(idx, 1)
|
||||
} else {
|
||||
this.pageForm[key].push(val)
|
||||
}
|
||||
this.doSearch()
|
||||
},
|
||||
async flushUnits() {
|
||||
this.$set(this.pageForm, "unitId", "")
|
||||
if (this.is_sysadmin || this.is_A06) {
|
||||
this.units = await getUnits(this.pageForm.unionId)
|
||||
this.activityUnits = await getActivityUnits(this.pageForm.activityUnionId)
|
||||
} else {
|
||||
this.units = await getUnits(this.unionid)
|
||||
}
|
||||
},
|
||||
async pageData() {
|
||||
sublime.showLoadingbar()
|
||||
const pageForm = clone(this.pageForm)
|
||||
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
|
||||
pageForm.userStates = JSON.stringify(pageForm.userStates)
|
||||
pageForm.memberStatus = JSON.stringify(pageForm.memberStatus)
|
||||
pageForm.memberTypes = JSON.stringify(pageForm.memberTypes)
|
||||
pageForm.sexTypes = JSON.stringify(pageForm.sexTypes)
|
||||
pageForm.roleIds = JSON.stringify(pageForm.roleIds)
|
||||
pageForm.userId = JSON.stringify(pageForm.userId)
|
||||
pageForm.age = JSON.stringify(pageForm.age)
|
||||
pageForm.activityUserCnd = pageForm.activityUserCnd ? JSON.stringify(pageForm.activityUserCnd) : pageForm.activityUserCnd
|
||||
|
||||
const resp = await $.post('/platform/activity/basic/scope/pageData', pageForm)
|
||||
sublime.closeLoadingbar()
|
||||
|
||||
if (resp.code === 0) {
|
||||
this.tableData = resp.data.list
|
||||
this.pageForm.totalCount = resp.data.totalCount
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
async doSetActivityUser() {
|
||||
const valid = await this.$refs.setForm.validate()
|
||||
if (!valid) {
|
||||
return
|
||||
}
|
||||
|
||||
if (this.tableData.length === 0) {
|
||||
this.$message.warning('请先指定筛选条件!')
|
||||
return
|
||||
}
|
||||
const confirm = await this.$confirm('是否将符合搜索条件的用户设为活动人员?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === 'confirm') {
|
||||
this.settingLoading = true
|
||||
const pageForm = clone(this.pageForm)
|
||||
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
|
||||
pageForm.userStates = JSON.stringify(pageForm.userStates)
|
||||
pageForm.memberStatus = JSON.stringify(pageForm.memberStatus)
|
||||
pageForm.memberTypes = JSON.stringify(pageForm.memberTypes)
|
||||
pageForm.sexTypes = JSON.stringify(pageForm.sexTypes)
|
||||
pageForm.roleIds = JSON.stringify(pageForm.roleIds)
|
||||
pageForm.userId = JSON.stringify(pageForm.userId)
|
||||
pageForm.age = JSON.stringify(pageForm.age)
|
||||
pageForm.activityUserCnd = pageForm.activityUserCnd ? JSON.stringify(pageForm.activityUserCnd) : pageForm.activityUserCnd
|
||||
|
||||
Object.assign(pageForm, this.formData)
|
||||
const resp = await $.post('/platform/activity/basic/scope/doSetActivityUser', pageForm)
|
||||
if (resp.code === 0) {
|
||||
this.setDialogVisible = false
|
||||
// this.userScopeDialog = false
|
||||
await this.getActivityGroup()
|
||||
this.doSearch()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.formData = {
|
||||
setGroupType: null,
|
||||
setGroupId: null,
|
||||
setGroupName: null
|
||||
}
|
||||
} else {
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
this.settingLoading = false
|
||||
this.$emit("update:group_id", resp.data)
|
||||
this.$emit('group_change')
|
||||
}
|
||||
},
|
||||
async getActivityGroup() {
|
||||
const resp = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
||||
this.activityGroupList = resp.data
|
||||
this.activityGroupList2 = []
|
||||
resp.data.forEach(v => {
|
||||
this.activityGroupList2.push({groupId: v.groupId, groupName: v.groupName + "范围之外人员"})
|
||||
})
|
||||
},
|
||||
async getMenuOptions() {
|
||||
const {data} = await $.get("/platform/sys/role/getMenuOptions")
|
||||
this.menuOptions = data
|
||||
},
|
||||
async getRoleListByMenuId() {
|
||||
if (['aca4d14498c145ceb5b24ed70776aae2', '733d7266652740a3aeac9da97ab5eeca'].includes(this.pageForm.module)) {
|
||||
//教代会
|
||||
let meets = await proposal.getOpenMeeting()
|
||||
this.meetingOptions = meets.map(v => ({...v, name: v.jdhallname}))
|
||||
} else if (['fe2d0768e26d4a80beeb159306bb8d01'].includes(this.pageForm.module)) {
|
||||
//工代会
|
||||
let meets = await getGdh(true)
|
||||
this.meetingOptions = meets.map(v => ({...v, name: v.gdhAllName}))
|
||||
}
|
||||
this.pageForm.teacherMeetingId = ''
|
||||
const {data} = await $.post("/platform/activity/basic/scope/getRoleListByMenuId", {menuId: this.pageForm.module})
|
||||
this.roleList = data
|
||||
},
|
||||
async getRolesAndUnion() {
|
||||
const {data} = await $.post("/platform/activity/basic/scope/getRolesAndUnion")
|
||||
this.roleData = data
|
||||
}
|
||||
|
||||
},
|
||||
async created() {
|
||||
await this.getRolesAndUnion()
|
||||
this.clubOptions = await getClubsByRole()
|
||||
|
||||
if (((this.is_sysadmin || this.is_A06 || this.is_H02) === false) && this.is_H04 === true) {
|
||||
this.unions = await getUnionList(this.unionid)
|
||||
this.$set(this.pageForm, "unionId", this.unions[0].id)
|
||||
} else {
|
||||
this.unions = await getUnions(null)
|
||||
this.activityUnions = await getActivityUnions()
|
||||
}
|
||||
if (this.is_H04 === false && this.is_H02 === true) {
|
||||
if (this.clubOptions.length > 0) {
|
||||
this.$set(this.pageForm, "clubId", this.clubOptions[0].stid)
|
||||
}
|
||||
}
|
||||
await this.flushUnits()
|
||||
await this.getActivityGroup()
|
||||
this.personTypeOptions = await getDictOptions("UserType")
|
||||
this.userStateOptions = await getDictOptions("UserState")
|
||||
await this.getMenuOptions()
|
||||
await this.pageData()
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.query-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 6px 0;
|
||||
}
|
||||
|
||||
.query-row:not(:last-child) {
|
||||
border-bottom: 1px dashed rgb(230, 230, 230);
|
||||
}
|
||||
|
||||
.query-row > .query-title {
|
||||
width: 100px;
|
||||
max-width: 100px;
|
||||
min-width: 100px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.query-row > .query-content {
|
||||
min-width: 200px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.query-row > .query-content > .el-tag {
|
||||
margin-bottom: 5px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 992px) {
|
||||
.query-row:nth-child(4) .query-content .el-col:not(:last-child) {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.query-title {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.header_card .el-card__body {
|
||||
padding: 2px 20px;
|
||||
}
|
||||
|
||||
.user_card .el-card__body {
|
||||
padding: 2px 20px;
|
||||
}
|
||||
|
||||
.user_card {
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
.user_table {
|
||||
max-height: 260px;
|
||||
}
|
||||
|
||||
.user_table .el-table__cell {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.el-pagination {
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.el-popover {
|
||||
height: 250px;
|
||||
}
|
||||
|
||||
.reverseCheckBox {
|
||||
margin: 0 10px 0 0 !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,186 @@
|
||||
<template>
|
||||
<el-timeline>
|
||||
<el-timeline-item timestamp="" placement="top">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
|
||||
@keyup.enter.native="doSearch" style="width: 300px">
|
||||
<el-select v-model="pageForm.searchName" slot="prepend" style="width: 80px;">
|
||||
<el-option label="姓名" value="username"></el-option>
|
||||
<el-option label="工号" value="loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
|
||||
</el-timeline-item>
|
||||
<el-timeline-item timestamp="" placement="top" v-if="is_ghxzzz&&isThreeUnit">
|
||||
<el-col :span="12">
|
||||
<el-select v-model="pageForm.threeUnitId" clearable filterable
|
||||
placeholder="请选择新科室"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in threeUnits2"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-timeline-item>
|
||||
<el-timeline-item timestamp="" placement="top">
|
||||
<el-table :data="tableData" style="width: 100%" row-key="id"
|
||||
v-loading="tableLoading" ref="table" class="vi-table"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" :reserve-selection="true"></el-table-column>
|
||||
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in columns"
|
||||
show-overflow-tooltip
|
||||
:sortable="column.sortable"
|
||||
:label="column.label"
|
||||
:prop="column.prop" :width="column.width">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, prev, pager, next"
|
||||
:total="pageForm.totalCount">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
value: {type: Array},
|
||||
columns: {
|
||||
type: Array,
|
||||
default: [{
|
||||
prop: 'loginname',
|
||||
label: '工号',
|
||||
}, {
|
||||
prop: 'username',
|
||||
label: '姓名',
|
||||
}, {
|
||||
prop: 'sex',
|
||||
label: '性别',
|
||||
}, {
|
||||
prop: 'mobile',
|
||||
label: '电话',
|
||||
}, {
|
||||
prop: 'unitname',
|
||||
label: '单位',
|
||||
|
||||
}, {
|
||||
prop: 'unionname',
|
||||
label: '工会',
|
||||
}]
|
||||
},
|
||||
union: {type: String},
|
||||
is_ghxzzz: {type: Boolean},
|
||||
page_size: {type: Number, default: 5},
|
||||
sql_cnd: {
|
||||
type: Array
|
||||
}
|
||||
},
|
||||
model: {
|
||||
prop: 'value',
|
||||
event: 'change'
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
unitMoveUnits: [],
|
||||
threeUnits2: [],
|
||||
tableData: [],
|
||||
tableLoading: false,
|
||||
selectUser: [],
|
||||
pageForm: {
|
||||
unionId: this.union,
|
||||
sqlCnd: JSON.stringify(this.sql_cnd),
|
||||
searchName: "username",
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: this.page_size,
|
||||
totalCount: 0,
|
||||
pageOrderName: "",
|
||||
pageOrderBy: "",
|
||||
unitId: "",
|
||||
threeUnitId: "",
|
||||
},
|
||||
isThreeUnit: false,
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value(val) {
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSelectionChange(val) {
|
||||
this.selectUser = val
|
||||
this.$emit("change", val.map(v => v.id))
|
||||
},
|
||||
doSearch() {
|
||||
this.tableKey = new Date().getTime()
|
||||
this.pageForm.pageNumber = 1
|
||||
this.pageData()
|
||||
},
|
||||
pageOrder(column) {
|
||||
this.pageForm.pageOrderName = column.prop;
|
||||
this.pageForm.pageOrderBy = column.order;
|
||||
this.pageData();
|
||||
},
|
||||
pageNumberChange(val) {
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageSizeChange(val) {
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageData() {
|
||||
this.tableLoading = true
|
||||
|
||||
$.post("/platform/welfare/member/mange/userPageData", this.pageForm, (data) => {
|
||||
this.tableLoading = false
|
||||
if (data.code == 0) {
|
||||
this.tableData = data.data.list;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
|
||||
this.tableData.filter(v => this.value.includes(v.id) && !this.selectUser.some(x => x.id == v.id)).forEach(v => {
|
||||
this.$refs.table.toggleRowSelection(v, true);
|
||||
})
|
||||
|
||||
} else {
|
||||
this.$message.error(data.msg);
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
async init() {
|
||||
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
|
||||
|
||||
this.doSearch()
|
||||
this.pageForm.threeUnitId = null
|
||||
this.unitMoveUnits = await getUnits()
|
||||
if (this.unitMoveUnits && this.unitMoveUnits.length > 0) {
|
||||
this.pageForm.unitId = this.unitMoveUnits[0].id
|
||||
this.threeUnits2 = await threeUnitsByUnionGroupOrUnitId(this.pageForm.unitId, null)
|
||||
}
|
||||
this.selectUser = []
|
||||
this.$refs.table.clearSelection();
|
||||
},
|
||||
},
|
||||
created() {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,671 @@
|
||||
<template>
|
||||
|
||||
<div>
|
||||
<van-uploader v-model="fileList" multiple
|
||||
:after-read="afterRead"
|
||||
@delete="doDelete"
|
||||
:max-count="max"
|
||||
:show-upload="!view"
|
||||
:deletable="!view"
|
||||
:max-size="max_size"
|
||||
:preview-options="{closeable:true}"
|
||||
@oversize="onOversize"
|
||||
@click-preview="clickPreview"
|
||||
:before-read="beforeRead"
|
||||
>
|
||||
</van-uploader>
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
/**
|
||||
* 文件类型解析
|
||||
* @type {{isImg: wpUploadFileTypeResolve.isImg}}
|
||||
*/
|
||||
let fileTypeResolving = {
|
||||
/**
|
||||
* 是否是一张图片
|
||||
*/
|
||||
isImg: function (fileItem) {
|
||||
return fileTypeResolving.resolvingByType(fileItem.type, /image\/(\w)*/)
|
||||
},
|
||||
/**
|
||||
* 通过后缀验证图片
|
||||
*/
|
||||
isImgByName: function (fileItemName) {
|
||||
let checkSuffixArray = ['jpg', 'png', 'jpeg', 'bmp', 'gif', 'webp', 'tif', 'svg', 'wmf'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray)
|
||||
},
|
||||
/**
|
||||
* 是否是视频
|
||||
*/
|
||||
isVideo: function (fileItem) {
|
||||
return fileTypeResolving.resolvingByType(fileItem.type, /video\/(\w)*/)
|
||||
},
|
||||
/**
|
||||
* 通过后缀验证图片
|
||||
*/
|
||||
isVideoByName: function (fileItemName) {
|
||||
let checkSuffixArray = ['mp4', 'Ogg', 'webm'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray)
|
||||
},
|
||||
/**
|
||||
* 是否是音频
|
||||
*/
|
||||
isAudio: function (fileItem) {
|
||||
return fileTypeResolving.resolvingByType(fileItem.type, /audio\/(\w)*/)
|
||||
},
|
||||
/**
|
||||
* 通过后缀验证图片
|
||||
*/
|
||||
isAudioByName: function (fileItemName) {
|
||||
let checkSuffixArray = ['mp3', 'ogg', 'wav'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray)
|
||||
},
|
||||
|
||||
/**
|
||||
* 是否是doc文件
|
||||
*/
|
||||
isDoc: function (fileItemName) {
|
||||
let checkSuffixArray = ['doc', 'docx', 'dot', 'dotx'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 是否是excel文件
|
||||
*/
|
||||
isExcel: function (fileItemName) {
|
||||
let checkSuffixArray = ['xls', 'xlsx', 'csv', 'xlt', 'xltx'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 是否是PPT文件
|
||||
*/
|
||||
isPPT: function (fileItemName) {
|
||||
let checkSuffixArray = ['ppt', 'pptx', 'pot', 'potx', 'odp'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 是否是Pdf文件
|
||||
*/
|
||||
isPdf: function (fileItemName) {
|
||||
let checkSuffixArray = ['pdf'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 是否是压缩文件
|
||||
* @param fileItem
|
||||
* @returns {boolean}
|
||||
*/
|
||||
isZip: function (fileItemName) {
|
||||
let checkSuffixArray = ['zip', '7z', 'war', 'tar', 'rar', 'jar', 'zipx', 'zix', 'zoo'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isWeb: function (fileItemName) {
|
||||
let checkSuffixArray = ['html', 'htm'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isTxt: function (fileItemName) {
|
||||
let checkSuffixArray = ['txt'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isPsd: function (fileItemName) {
|
||||
let checkSuffixArray = ['psd'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isCad: function (fileItemName) {
|
||||
let checkSuffixArray = ['cad'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isIso: function (fileItemName) {
|
||||
let checkSuffixArray = ['iso'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
isExe: function (fileItemName) {
|
||||
let checkSuffixArray = ['exe'];
|
||||
return fileTypeResolving.resolvingByName(fileItemName, checkSuffixArray);
|
||||
},
|
||||
/**
|
||||
* 根据文件类型来解析
|
||||
* @param fileType 文件类型
|
||||
* @param checkTypeModel 文件类型模型,如:image\/(\w)*
|
||||
* @returns {boolean}
|
||||
*/
|
||||
resolvingByType: function (fileType, checkTypeModel) {
|
||||
if (checkTypeModel.test(fileType)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
/**
|
||||
* 根据名字和名字后缀名来验证文件
|
||||
* @param fileName 文件名
|
||||
* @param checkSuffixArray 文件类型包含的后缀
|
||||
*/
|
||||
resolvingByName: function (fileName, checkSuffixArray) {
|
||||
let suffixName = wpUploadFileTools.getSuffixNameByFileName(fileName);
|
||||
// 名字是否有效
|
||||
if (!wpUploadDataValid.isValidStr(suffixName)) {
|
||||
// 无效直接返回false
|
||||
return false;
|
||||
}
|
||||
suffixName = suffixName.trim();
|
||||
suffixName = suffixName.toLowerCase();
|
||||
if (checkSuffixArray.indexOf(suffixName) != -1) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件工具
|
||||
* @type {{}}
|
||||
*/
|
||||
let wpUploadFileTools = {
|
||||
/**
|
||||
* 获取文件显示模版
|
||||
* @param fileItem
|
||||
*/
|
||||
wapFileItemShow: function (fileItem) {
|
||||
return wpUploadFileTools.wapFileItemShowBase(fileItem, false);
|
||||
},
|
||||
/**
|
||||
* 包装已上传的文件列表
|
||||
*/
|
||||
wapFileItemShowWithUpload(uploadFile) {
|
||||
return wpUploadFileTools.wapFileItemShowBase(uploadFile, true);
|
||||
},
|
||||
/**
|
||||
* 获取文件显示的基本操作
|
||||
*/
|
||||
wapFileItemShowBase(fileItem, isUploaded = false) {
|
||||
let fileName = "";
|
||||
let suffix = "";
|
||||
let show = "";
|
||||
let showIcon = "";
|
||||
if (!isUploaded) {
|
||||
fileName = fileItem.name;
|
||||
suffix = wpUploadFileTools.getSuffixNameByFileName(fileName);
|
||||
show = wpUploadFileTools.resolvingShow(fileItem);
|
||||
showIcon = wpUploadFileShowResolving.getFileItemShowIcon(show, fileItem, false);
|
||||
} else {
|
||||
fileName = fileItem.name ? fileItem.name : wpUploadFileTools.resolvingUrlFileName(fileItem.url);
|
||||
let fileNameGetOFuRL = wpUploadFileTools.resolvingUrlFileName(fileItem.url);
|
||||
suffix = wpUploadFileTools.getSuffixNameByFileName(fileNameGetOFuRL);
|
||||
show = wpUploadFileTools.resolvingShowByFileName(fileNameGetOFuRL);
|
||||
showIcon = wpUploadFileShowResolving.getFileItemShowIcon(show, fileItem.url, true);
|
||||
}
|
||||
let fileItemShow = {
|
||||
// 文件的id
|
||||
id: wpUploadFileTools.uuid(),
|
||||
// 文件对象
|
||||
file: null,
|
||||
// 文件的类型
|
||||
type: null,
|
||||
// 文件的大小
|
||||
size: null,
|
||||
// 文件的名字
|
||||
name: fileName,
|
||||
// 文件地址
|
||||
url: null,
|
||||
// 后缀
|
||||
suffix: suffix,
|
||||
// 显示的类型
|
||||
show: show,
|
||||
// 显示的图标或者图片地址
|
||||
showIcon: showIcon,
|
||||
// 显示进度条
|
||||
processStatus: {
|
||||
show: false,
|
||||
width: 0,
|
||||
isFail: false
|
||||
},
|
||||
// 文件来源,0选择文件上传,1回显文件
|
||||
fileSource: 0,
|
||||
// 状态0未上传,失败也会转到0,1正在上传,2已经上传
|
||||
status: 0,
|
||||
// 上传文件的描述
|
||||
fileDes: null
|
||||
}
|
||||
if (!isUploaded) {
|
||||
// 如果非选择文件下面三个属性为null
|
||||
fileItemShow.file = fileItem;
|
||||
fileItemShow.type = fileItem.type;
|
||||
fileItemShow.size = fileItem.size;
|
||||
} else {
|
||||
// 文件描述
|
||||
fileItemShow.status = 2;
|
||||
fileItemShow.fileDes = fileItem;
|
||||
fileItemShow.fileSource = 1;
|
||||
fileItemShow.url = fileItem.url;
|
||||
}
|
||||
return fileItemShow;
|
||||
},
|
||||
/**
|
||||
* 解析URL的文件名字
|
||||
*/
|
||||
resolvingUrlFileName: function (fileUrl) {
|
||||
let index = fileUrl.lastIndexOf("/");
|
||||
if (index <= 0) {
|
||||
index = fileUrl.lastIndexOf("\\");
|
||||
}
|
||||
index = index + 1;
|
||||
let fileName = fileUrl.substring(index, fileUrl.length);
|
||||
return fileName;
|
||||
},
|
||||
/**
|
||||
* 获取文件名后缀
|
||||
* @param fileName 文件名全名
|
||||
* */
|
||||
getSuffixNameByFileName: function (fileName) {
|
||||
let str = fileName;
|
||||
let index = str.lastIndexOf(".");
|
||||
if (index < 0) {
|
||||
return "";
|
||||
}
|
||||
let pos = index + 1;
|
||||
return str.substring(pos, str.length);
|
||||
},
|
||||
/**
|
||||
* 解析显示类型
|
||||
* @param fileItem 文件
|
||||
* @returns {number}
|
||||
*/
|
||||
resolvingShow: function (fileItem) {
|
||||
// 默认0普通文件
|
||||
let showResult = 0;
|
||||
if (wpUploadFileTypeResolving.isImg(fileItem)) {
|
||||
showResult = 1;
|
||||
} else if (wpUploadFileTypeResolving.isVideo(fileItem)) {
|
||||
showResult = 2;
|
||||
} else if (wpUploadFileTypeResolving.isAudio(fileItem)) {
|
||||
showResult = 3;
|
||||
} else if (wpUploadFileTypeResolving.isDoc(fileItem.name)) {
|
||||
showResult = 4;
|
||||
} else if (wpUploadFileTypeResolving.isExcel(fileItem.name)) {
|
||||
showResult = 5;
|
||||
} else if (wpUploadFileTypeResolving.isPPT(fileItem.name)) {
|
||||
showResult = 6;
|
||||
} else if (wpUploadFileTypeResolving.isPdf(fileItem.name)) {
|
||||
showResult = 7;
|
||||
} else if (wpUploadFileTypeResolving.isZip(fileItem.name)) {
|
||||
showResult = 8;
|
||||
} else if (wpUploadFileTypeResolving.isWeb(fileItem.name)) {
|
||||
showResult = 9;
|
||||
} else if (wpUploadFileTypeResolving.isTxt(fileItem.name)) {
|
||||
showResult = 10;
|
||||
} else if (wpUploadFileTypeResolving.isPsd(fileItem.name)) {
|
||||
showResult = 11;
|
||||
} else if (wpUploadFileTypeResolving.isCad(fileItem.name)) {
|
||||
showResult = 12;
|
||||
} else if (wpUploadFileTypeResolving.isIso(fileItem.name)) {
|
||||
showResult = 13;
|
||||
} else if (wpUploadFileTypeResolving.isExe(fileItem.name)) {
|
||||
showResult = 14;
|
||||
}
|
||||
return showResult
|
||||
},
|
||||
|
||||
/**
|
||||
* 解析显示类型
|
||||
* @param fileItem 文件
|
||||
* @returns {number}
|
||||
*/
|
||||
resolvingShowByFileName: function (fileItemName) {
|
||||
// 默认0普通文件
|
||||
let showResult = 0;
|
||||
if (wpUploadFileTypeResolving.isImgByName(fileItemName)) {
|
||||
showResult = 1;
|
||||
} else if (wpUploadFileTypeResolving.isVideoByName(fileItemName)) {
|
||||
showResult = 2;
|
||||
} else if (wpUploadFileTypeResolving.isAudioByName(fileItemName)) {
|
||||
showResult = 3;
|
||||
} else if (wpUploadFileTypeResolving.isDoc(fileItemName)) {
|
||||
showResult = 4;
|
||||
} else if (wpUploadFileTypeResolving.isExcel(fileItemName)) {
|
||||
showResult = 5;
|
||||
} else if (wpUploadFileTypeResolving.isPPT(fileItemName)) {
|
||||
showResult = 6;
|
||||
} else if (wpUploadFileTypeResolving.isPdf(fileItemName)) {
|
||||
showResult = 7;
|
||||
} else if (wpUploadFileTypeResolving.isZip(fileItemName)) {
|
||||
showResult = 8;
|
||||
} else if (wpUploadFileTypeResolving.isWeb(fileItemName)) {
|
||||
showResult = 9;
|
||||
} else if (wpUploadFileTypeResolving.isTxt(fileItemName)) {
|
||||
showResult = 10;
|
||||
} else if (wpUploadFileTypeResolving.isPsd(fileItemName)) {
|
||||
showResult = 11;
|
||||
} else if (wpUploadFileTypeResolving.isCad(fileItemName)) {
|
||||
showResult = 12;
|
||||
} else if (wpUploadFileTypeResolving.isIso(fileItemName)) {
|
||||
showResult = 13;
|
||||
} else if (wpUploadFileTypeResolving.isExe(fileItemName)) {
|
||||
showResult = 14;
|
||||
}
|
||||
return showResult
|
||||
},
|
||||
/**
|
||||
* 生成UUID
|
||||
* @returns {string}
|
||||
*/
|
||||
uuid: function () {
|
||||
let str = wpUploadFileTools.uuidFull();
|
||||
str = str.replace(/-/g, "");
|
||||
return str;
|
||||
},
|
||||
uuidFull() {
|
||||
let s = []
|
||||
let hexDigits = "0123456789abcdef"
|
||||
for (var i = 0; i < 36; i++) {
|
||||
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)
|
||||
}
|
||||
s[14] = "4"
|
||||
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1)
|
||||
s[8] = s[13] = s[18] = s[23] = "-"
|
||||
let uuid = s.join("")
|
||||
return uuid
|
||||
},
|
||||
/**
|
||||
* 禁止某个dom的某个事件
|
||||
*/
|
||||
disableObjEvent(domObj, eventName) {
|
||||
domObj.addEventListener(eventName, function (e) {
|
||||
e.preventDefault();
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据验证工具
|
||||
* @type {{isValid: wpUploadDataValid.isValid}}
|
||||
*/
|
||||
let wpUploadDataValid = {
|
||||
isValid: function (obj) {
|
||||
if (undefined === obj || null === obj) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
isValidStr: function (str) {
|
||||
let isValidObj = wpUploadDataValid.isValid(str);
|
||||
if (!isValidObj) {
|
||||
return isValidObj;
|
||||
}
|
||||
str = str.trim();
|
||||
if ("" == str || '' == str) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
isValidArray(array) {
|
||||
if (null == array || array == undefined || array.length <= 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
props: {
|
||||
files: Array,
|
||||
type: {
|
||||
type: Array,
|
||||
default: ['jpg', 'jpeg', 'png', 'doc', 'docx', 'xls', 'xlsx', 'pdf']
|
||||
},
|
||||
max: {
|
||||
type: Number,
|
||||
default: 10
|
||||
},
|
||||
max_size: {
|
||||
type: Number,
|
||||
default: 100 * 1024 * 1024
|
||||
},
|
||||
view: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
del: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
fileList: []
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
files(val) {
|
||||
this.updateFileList(val)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 返回布尔值
|
||||
beforeRead(file) {
|
||||
const lastIndexOf = file.name.lastIndexOf(".")
|
||||
const type = this.type.map(v => v.toLowerCase()).includes(file.name.substr(lastIndexOf + 1).toLowerCase())
|
||||
if (!type) {
|
||||
this.$message.warning(`上传文件只能是 ${this.type.map(v => v.toLowerCase()).join("/")} 格式!`);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
getAccept() {
|
||||
return this.type.map(v => '.' + v).join(",")
|
||||
},
|
||||
onOversize() {
|
||||
this.$toast(`上传文件大小不能超过 ${this.max_size / 1024 / 1024} MB!`);
|
||||
},
|
||||
/**
|
||||
* 查看资源
|
||||
*/
|
||||
showSource(showItem) {
|
||||
const show = this.resolvingShowByFileName(showItem.filepath)
|
||||
if (show == 1 || show == 2 || show == 3) {
|
||||
$('.viewFile').viewer({
|
||||
url: 'src',
|
||||
});
|
||||
} else if (show == 4 || show == 5 || show == 7) {
|
||||
preview(showItem.filepath, showItem.id)
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 解析显示类型
|
||||
* @param fileItem 文件
|
||||
* @returns {number}
|
||||
*/
|
||||
resolvingShowByFileName(fileItemName) {
|
||||
// 默认0普通文件
|
||||
let showResult = 0;
|
||||
if (fileTypeResolving.isImgByName(fileItemName)) {
|
||||
showResult = 1;
|
||||
} else if (fileTypeResolving.isVideoByName(fileItemName)) {
|
||||
showResult = 2;
|
||||
} else if (fileTypeResolving.isAudioByName(fileItemName)) {
|
||||
showResult = 3;
|
||||
} else if (fileTypeResolving.isDoc(fileItemName)) {
|
||||
showResult = 4;
|
||||
} else if (fileTypeResolving.isExcel(fileItemName)) {
|
||||
showResult = 5;
|
||||
} else if (fileTypeResolving.isPPT(fileItemName)) {
|
||||
showResult = 6;
|
||||
} else if (fileTypeResolving.isPdf(fileItemName)) {
|
||||
showResult = 7;
|
||||
} else if (fileTypeResolving.isZip(fileItemName)) {
|
||||
showResult = 8;
|
||||
} else if (fileTypeResolving.isWeb(fileItemName)) {
|
||||
showResult = 9;
|
||||
} else if (fileTypeResolving.isTxt(fileItemName)) {
|
||||
showResult = 10;
|
||||
} else if (fileTypeResolving.isPsd(fileItemName)) {
|
||||
showResult = 11;
|
||||
} else if (fileTypeResolving.isCad(fileItemName)) {
|
||||
showResult = 12;
|
||||
} else if (fileTypeResolving.isIso(fileItemName)) {
|
||||
showResult = 13;
|
||||
} else if (fileTypeResolving.isExe(fileItemName)) {
|
||||
showResult = 14;
|
||||
}
|
||||
return showResult
|
||||
},
|
||||
/**
|
||||
* 获取文件显示图标
|
||||
* @param filePath
|
||||
* @returns {string}
|
||||
*/
|
||||
getFileItemShowIcon(filePath) {
|
||||
let showIcon = '';
|
||||
switch (this.resolvingShowByFileName(filePath)) {
|
||||
case 0:
|
||||
showIcon = "#icon-yunpanlogo-3";
|
||||
break;
|
||||
// 图片
|
||||
case 1:
|
||||
showIcon = this.getImgShowIcon(filePath);
|
||||
break;
|
||||
// 视频
|
||||
case 2:
|
||||
showIcon = "#icon-yunpanlogo-6";
|
||||
break;
|
||||
// 音乐
|
||||
case 3:
|
||||
showIcon = "#icon-yunpanlogo-4";
|
||||
break;
|
||||
// doc
|
||||
case 4:
|
||||
showIcon = "#icon-yunpanlogo-2";
|
||||
break;
|
||||
// excel
|
||||
case 5:
|
||||
showIcon = "#icon-yunpanlogo-";
|
||||
break;
|
||||
// ppt
|
||||
case 6:
|
||||
showIcon = "#icon-yunpanlogo-1";
|
||||
break;
|
||||
// pdf
|
||||
case 7:
|
||||
showIcon = "#icon-yunpanlogo-12";
|
||||
break;
|
||||
// zip
|
||||
case 8:
|
||||
showIcon = "#icon-yasuobao";
|
||||
break;
|
||||
// web文件
|
||||
case 9:
|
||||
showIcon = "#icon-yunpanlogo-5";
|
||||
break;
|
||||
// txt文件
|
||||
case 10:
|
||||
showIcon = "#icon-yunpanlogo-7";
|
||||
break;
|
||||
// PSD
|
||||
case 11:
|
||||
showIcon = "#icon-yunpanlogo-10";
|
||||
break;
|
||||
// cad
|
||||
case 12:
|
||||
showIcon = "#icon-yunpanlogo-11";
|
||||
break;
|
||||
// ISO
|
||||
case 13:
|
||||
showIcon = "#icon-yunpanlogo-8";
|
||||
break;
|
||||
// 可执行
|
||||
case 14:
|
||||
showIcon = "#icon-yunpanlogo-9";
|
||||
break;
|
||||
// 普通文件
|
||||
default:
|
||||
showIcon = "#icon-yunpanlogo-3";
|
||||
}
|
||||
return showIcon;
|
||||
},
|
||||
/**
|
||||
* 获取图片的显示图标
|
||||
* @param fileItem
|
||||
* @returns {string|*}
|
||||
*/
|
||||
getImgShowIcon(fileItem) {
|
||||
return FILE_DOMAIN + fileItem;
|
||||
},
|
||||
change(fileList) {
|
||||
this.$emit("update:files", fileList.map(v => v.data))
|
||||
},
|
||||
afterRead(file) {
|
||||
file.status = 'uploading';
|
||||
file.message = '上传中...';
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("file", file.file, file.file.name);
|
||||
|
||||
$.ajax({
|
||||
url: FILE_UPLOAD_ADDRESS,
|
||||
type: "post",
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success: (res) => {
|
||||
const {code, data} = res
|
||||
if (code === 0) {
|
||||
file.status = 'success';
|
||||
file.data = data
|
||||
this.change(this.fileList)
|
||||
}
|
||||
},
|
||||
error: (err) => {
|
||||
file.status = 'failed';
|
||||
file.message = '上传失败';
|
||||
}
|
||||
});
|
||||
},
|
||||
doDelete(file) {
|
||||
if (file.data) {
|
||||
const {filename, filepath} = file.data
|
||||
if (this.del) {
|
||||
$.post(FILE_DELETE_ADDRESS, {filepath})
|
||||
}
|
||||
this.change(this.fileList)
|
||||
}
|
||||
},
|
||||
clickPreview(file) {
|
||||
const {filepath, id} = file.data
|
||||
const show = this.resolvingShowByFileName(filepath)
|
||||
if (show == 4 || show == 5 || show == 7) {
|
||||
preview(filepath, id)
|
||||
}
|
||||
},
|
||||
updateFileList(val) {
|
||||
if (!val || !val.length) {
|
||||
this.fileList = []
|
||||
return
|
||||
}
|
||||
|
||||
this.fileList = val.map(v => {
|
||||
let url = ''
|
||||
if (this.resolvingShowByFileName(v.filename) == 1) {
|
||||
url = APP_DOMAIN + '/file_server/fileStreamPreview?id=' + v.id
|
||||
console.log(url)
|
||||
return {data: v, url, isImage: true, file: {name: v.filename}, status: 'success'}
|
||||
}
|
||||
return {data: v, url, file: {name: v.filename}, status: 'success'}
|
||||
})
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.updateFileList(this.files)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.van-image-preview .van-image-preview__close-icon--top-right {
|
||||
font-size: 50px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
class SysDictData {
|
||||
constructor(dict) {
|
||||
this.dict = dict
|
||||
}
|
||||
|
||||
async init(dictNames) {
|
||||
const ps = [];
|
||||
dictNames.forEach((name) => {
|
||||
Vue.set(this.dict.type, name, null)
|
||||
ps.push(
|
||||
getDictOptions(name).then((res) => {
|
||||
const dictValue = res.map(v => {
|
||||
return {
|
||||
text: v.name,
|
||||
label: v.name,
|
||||
value: v.code,
|
||||
raw: v
|
||||
}
|
||||
})
|
||||
this.dict.type[name] = Object.freeze(dictValue)
|
||||
})
|
||||
)
|
||||
})
|
||||
await Promise.all(ps)
|
||||
}
|
||||
}
|
||||
|
||||
window.dictData = {}
|
||||
window.dictData.install = function (Vue) {
|
||||
Vue.mixin({
|
||||
data() {
|
||||
if (this.$options.dicts instanceof Array && this.$options.dicts.length > 0) {
|
||||
return {dict: {type: {}}};
|
||||
} else {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if (this.$options.dicts instanceof Array && this.$options.dicts.length > 0) {
|
||||
new SysDictData(this.dict).init(this.$options.dicts);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
if (window.Vue) {
|
||||
Vue.use(window.dictData)
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
*Desc:
|
||||
*Create by: jug
|
||||
*Create time:2023/7/28/9:55
|
||||
*/
|
||||
<template>
|
||||
<div>
|
||||
<template v-for="(item, index) in options">
|
||||
<template v-if="values.includes(item.value)">
|
||||
<span
|
||||
v-if="item.raw.listClass == 'default' || item.raw.listClass == ''"
|
||||
:key="item.value"
|
||||
:index="index"
|
||||
:class="item.raw.cssClass"
|
||||
>{{ item.label }}</span
|
||||
>
|
||||
<van-tag
|
||||
v-else
|
||||
:disable-transitions="true"
|
||||
:key="item.value"
|
||||
:index="index"
|
||||
:type="item.raw.listClass == 'primary' ? '' : item.raw.listClass"
|
||||
:class="item.raw.cssClass"
|
||||
>
|
||||
{{ item.label }}
|
||||
</van-tag>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "DictTag",
|
||||
props: {
|
||||
options: {
|
||||
type: Array,
|
||||
default: null,
|
||||
},
|
||||
value: [Number, String, Array],
|
||||
},
|
||||
computed: {
|
||||
values() {
|
||||
if (this.value !== null && typeof this.value !== 'undefined') {
|
||||
return Array.isArray(this.value) ? this.value : [String(this.value)];
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-tag + .el-tag {
|
||||
margin-left: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,172 @@
|
||||
<template>
|
||||
<el-tabs v-model="project" tab-position="top">
|
||||
<el-tab-pane label="基本信息" name="1">
|
||||
<el-card shadow="never">
|
||||
<el-descriptions class="margin-top" :title="projectFunding.basicInfo.projectName" :column="3" border>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
申报工会
|
||||
</template>
|
||||
{{ projectFunding.basicInfo.unionName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
工会人数
|
||||
</template>
|
||||
{{ projectFunding.basicInfo.unionPeoNum }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
工会主席
|
||||
</template>
|
||||
{{ projectFunding.basicInfo.unionLeader }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
申报人
|
||||
</template>
|
||||
{{ projectFunding.basicInfo.declarer }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
申报金额
|
||||
</template>
|
||||
{{ projectFunding.basicInfo.subsidyAmount }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
申报日期
|
||||
</template>
|
||||
{{ projectFunding.basicInfo.auditTime }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item :span="3">
|
||||
<template slot="label">
|
||||
年度获奖情况
|
||||
</template>
|
||||
{{ projectFunding.basicInfo.award ? projectFunding.basicInfo.award : '暂无' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
具体预算详情
|
||||
</template>
|
||||
<div class="text-left" v-html="projectFunding.basicInfo.specificInfo"></div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="projectFunding.basicInfo.state>1700" label="二级党组织审核信息" name="2">
|
||||
<el-card shadow="never">
|
||||
<el-descriptions class="margin-top" title="二级党组织审核信息" :column="2" border>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
审核人
|
||||
</template>
|
||||
{{projectFunding.basicInfo.twoOrganizationPrincipal}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
审核时间
|
||||
</template>
|
||||
{{projectFunding.basicInfo.twoOrganizationAuditTime}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
审核意见
|
||||
</template>
|
||||
{{projectFunding.basicInfo.twoOrganizationOpinion}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
签字
|
||||
</template>
|
||||
<div>
|
||||
<el-image :src="projectFunding.basicInfo.twoOrganizationSignature" style="width: 200px;height:auto"
|
||||
v-if="projectFunding.basicInfo.twoOrganizationSignature"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="projectFunding.basicInfo.state>1800" label="校工会审核信息" name="3">
|
||||
<el-card shadow="never">
|
||||
<el-descriptions class="margin-top" title="校工会审核信息" :column="2" border>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
审核人
|
||||
</template>
|
||||
{{projectFunding.basicInfo.xghPrincipal}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
审核时间
|
||||
</template>
|
||||
{{projectFunding.basicInfo.xghAuditTime}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
审批金额
|
||||
</template>
|
||||
{{projectFunding.basicInfo.auditAmount}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
审核意见
|
||||
</template>
|
||||
{{projectFunding.basicInfo.xghOpinion}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">
|
||||
签字
|
||||
</template>
|
||||
<div>
|
||||
<el-image :src="projectFunding.basicInfo.xghSignature" style="width: 200px;height:auto"
|
||||
v-if="projectFunding.basicInfo.xghSignature"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
|
||||
<!--handle 主要是审核操作-->
|
||||
<slot name="handle"></slot>
|
||||
</el-tabs>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
project: {
|
||||
type: String,
|
||||
default: '1'
|
||||
}
|
||||
},
|
||||
data(){
|
||||
return {
|
||||
projectFunding: {
|
||||
basicInfo: {},
|
||||
},
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
async showInfo(id, project = '1'){
|
||||
const resp = await $.get(base + '/platform/projectfunding/declare/findProjectInfo/' + id)
|
||||
this.project = project
|
||||
if (resp.code === 0){
|
||||
this.projectFunding.basicInfo = resp.data
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,489 @@
|
||||
<template>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading">
|
||||
|
||||
<el-tab-pane label="提案基础信息" name="1">
|
||||
<el-descriptions border>
|
||||
<el-descriptions-item label="提案名称" span="3">
|
||||
<div style="font-weight:bold;">
|
||||
{{ viewData.proposalName }}
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="提案编号">{{ viewData.proposalCode }}</el-descriptions-item>
|
||||
<el-descriptions-item label="提案人">{{
|
||||
viewData.createUserName + '-' + viewData.loginname
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="提案时间">{{ viewData.createTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="教代会届次"> {{ viewData.meetingName || '暂无' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="提案人工会">{{ viewData.unionName }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="viewData.mannerCode!=='W03'?'代表团名称':'委员会名称'">
|
||||
{{ viewData.mannerCode !== 'W03' ? viewData.delegationName : viewData.committeeName }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="提案类型">{{ viewData.typeName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="立案结果" span="2"> {{
|
||||
viewData.resultName ? viewData.resultName : '暂无'
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="提案方式" >{{ viewData.mannerName }}</el-descriptions-item>-->
|
||||
<!-- <el-descriptions-item label="建议落实部门" >{{ viewData.implementUnitName }}</el-descriptions-item>-->
|
||||
|
||||
<el-descriptions-item label="提案内容" span="3">
|
||||
<div class="text-left" v-html="viewData.brief"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="可行性分析" span="3">
|
||||
<div class="text-left" v-html="viewData.measures"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="签  字" span="3">
|
||||
<el-image v-if="viewData.createUserSign" :src="viewData.createUserSign" class="item-sign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<file-upload v-if="viewData.files&&viewData.files.length"
|
||||
:files="viewData.files" :view="true"></file-upload>
|
||||
|
||||
<slot name="seconded"></slot>
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="提案并案信息" name="99" v-if="viewData.isConjoin !== 0">
|
||||
<el-table :data="viewData.conJoinList" border>
|
||||
<el-table-column prop="proposalCode" label="提案编号"></el-table-column>
|
||||
<el-table-column prop="username" label="提案人"></el-table-column>
|
||||
<el-table-column prop="proposalName" label="提案名称">
|
||||
<template slot-scope="{row}">
|
||||
<span @click="openView(row.id)"
|
||||
style="color: #236eb4; cursor: pointer; text-decoration: underline">{{ row.proposalName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="附议信息" name="2" v-if="viewData.seconded">
|
||||
<el-table :data="viewData.seconded" border>
|
||||
<el-table-column prop="username" label="姓名"></el-table-column>
|
||||
<el-table-column prop="unitname" label="单位"></el-table-column>
|
||||
<el-table-column label="邀请时间" prop="inviteTime">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.inviteTime }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="secondedTime" label="附议时间"></el-table-column>
|
||||
<el-table-column prop="isAgree" label="附议结果">
|
||||
<template slot-scope="{row}">
|
||||
<template v-if="row.isAgree==null">
|
||||
<span class="text-muted">未附议</span>
|
||||
</template>
|
||||
<template v-else>
|
||||
<span v-if="row.isAgree" class="text-success">同意</span>
|
||||
<span v-else class="text-danger">拒绝</span>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column header-align="center" align="center" prop="signData" label="附议人签字">
|
||||
<template slot-scope="{row}">
|
||||
<el-image class="item-sign" :src="row.signData" fit="contain" v-if="row.signData"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="团长审核" name="3" v-if="viewData.delegationAudit&&viewData.delegationAudit.length>0">
|
||||
<el-descriptions border>
|
||||
<template v-for="(o,i) in viewData.delegationAudit">
|
||||
<el-descriptions-item label="审核人">{{ o.username + '-' + o.loginName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">
|
||||
{{ o.flag ? '通过' : '退回' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3" label="审核意见">{{ o.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item span="3" label="团长签字">
|
||||
<template>
|
||||
<image class="item-sign" :src="o.auditSign " fit="contain" v-if="o.auditSign"></image>
|
||||
<span v-else>暂无</span>
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="viewData.caseAuditId && viewData.caseAudit" label="提案委员会立案" name="5">
|
||||
<template v-for="(o,i) in viewData.caseAudit">
|
||||
<el-descriptions border :column="3">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ o.username + '-' + o.loginName }}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="立案结果">
|
||||
{{ viewData.resultName ? viewData.resultName : '暂无' }}
|
||||
<!– {{ viewData.determineTypeCode ? '(' + viewData.laLevelName + ')' : '' }}–>
|
||||
</el-descriptions-item>-->
|
||||
<el-descriptions-item label="审核结果">
|
||||
{{ o.flag ? '通过' : '退回修改' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item v-if="hostUnit!=''" label="承办单位" span="3">
|
||||
{{ hostUnit }}(主办)
|
||||
<template v-if="helpUnit&&helpUnit.length>0">
|
||||
,{{ helpUnit }}(协办)
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
|
||||
<!-- <el-descriptions-item label="承办单位" span="3" v-if="hostUnit!=''">
|
||||
{{ hostUnit }}(主办),
|
||||
{{ helpUnit }}(协办)
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item v-if="viewData.resultCode!=='notGive'" label="承办单位" span="3">
|
||||
<template v-for="(item,index) in viewData.undertake">
|
||||
{{ item.unitName }}
|
||||
({{ item.undertakeType === 1 ? '主办' : '协办' }})
|
||||
{{ index + 1 === viewData.undertake.length ? '' : '、' }}
|
||||
</template>
|
||||
</el-descriptions-item>-->
|
||||
<el-descriptions-item label="审核意见" span="3">{{ o.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item label="签字" span="3">
|
||||
<el-image v-if="o.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="承办单位初步意见" name="6"
|
||||
v-if="viewData.underTakeFirstOpinion&&viewData.underTakeFirstOpinion.length>0">
|
||||
<el-descriptions border>
|
||||
<template v-for="(o,i) in viewData.underTakeFirstOpinion">
|
||||
<el-descriptions-item label="承办单位">{{ o.underTakeName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="时间">{{ o.opionTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">
|
||||
{{ o.canTake ? '可以承办' : '无法承办' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3" label="意见">{{ o.opinion }}</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="委员会确认承办单位" name="10" v-if="viewData.caseUnitAuditId && viewData.caseUnitAudit">
|
||||
<el-descriptions border>
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ viewData.caseUnitAudit.username + '-' + viewData.caseUnitAudit.loginName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">{{ viewData.resultName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ viewData.caseUnitAudit.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="承办单位" span="3" v-if="viewData.resultCode!=='notGive'">
|
||||
<template v-for="(item,index) in viewData.undertake">
|
||||
{{ item.unitName }}
|
||||
({{ item.undertakeType === 1 ? '主办' : '协办' }})
|
||||
{{ index + 1 === viewData.undertake.length ? '' : '、' }}
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" span="3">{{ viewData.caseUnitAudit.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item label="签字" span="3">
|
||||
<el-image v-if="viewData.caseUnitAudit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.caseUnitAudit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="分管校领导批示" name="8"
|
||||
v-if="viewData.branchLeaderOpinion && viewData.branchLeaderOpinion.length>0">
|
||||
<template v-if="viewData.branchLeaderOpinion && viewData.branchLeaderOpinion.length>0">
|
||||
<el-descriptions :column="2" border class="wrap-table">
|
||||
<template v-for="(o,i) in viewData.branchLeaderOpinion">
|
||||
<el-descriptions-item label="审批人">{{ o.username }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审批时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item span="4" label="审批意见">{{ o.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item span="4" label="分管校领导签字">
|
||||
<el-image v-if="o.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="承办单位办理" name="11"
|
||||
v-if="viewData.replyInfo && viewData.replyInfo.length>0 && viewData.replyInfo.some(v=>v.isReply || v.leaderCheckResult!=null)">
|
||||
<el-descriptions border class="wrap-table-4" column="5">
|
||||
<template v-for="(o,i) in viewData.replyInfo.filter(v=>v.isReply || v.leaderCheckResult!=null)">
|
||||
<el-descriptions-item label="承办单位">{{
|
||||
o.unitName
|
||||
}}({{ o.undertakeType === 1 ? '主办' : '协办' }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="办理人">{{ o.dfrUserName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理时间">{{ o.replyTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理次数">{{ o.replyNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="落实情况">{{ o.implementState }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理内容" span="5">
|
||||
<div class="text-left" v-html="o.replyContent"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="承办单位签字" span="5">
|
||||
<el-image v-if="o.replySignData"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.replySignData"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="附件" span="5">
|
||||
<file-upload v-if="JSON.parse(o.replyFiles)&&JSON.parse(o.replyFiles).length"
|
||||
:files="JSON.parse(o.replyFiles)" :view="true"></file-upload>
|
||||
<span v-else>无</span>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="反馈评分信息" name="13" v-if="viewData.feedback&&viewData.feedback.length>0">
|
||||
<el-descriptions border column="4">
|
||||
<template v-for="(o,i) in viewData.feedback">
|
||||
<el-descriptions-item label="反馈人">{{ o.username }}({{ o.loginname }})</el-descriptions-item>
|
||||
<el-descriptions-item label="反馈时间">{{ o.feedbackTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="反馈次数">{{ o.feedbackNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="对办理结果评价">{{ o.feedbackResult }}</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="对承办单位办理态度评价">{{ o.feedbackCodeByUnderTake }}</el-descriptions-item>-->
|
||||
<el-descriptions-item label="反馈意见" span="5">
|
||||
<div class="text-left" v-html="o.feedbackOpinion"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="反馈人签字" span="4">
|
||||
<el-image v-if="o.scoreSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.scoreSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="分管校领导审批" name="14"
|
||||
v-if="viewData.branchLeaderSuffixAuditOpinion && viewData.branchLeaderSuffixAuditOpinion.length>0">
|
||||
<template v-if="viewData.branchLeaderSuffixAuditOpinion && viewData.branchLeaderSuffixAuditOpinion.length>0">
|
||||
<el-descriptions :column="2" border class="wrap-table">
|
||||
<template v-for="(o,i) in viewData.branchLeaderSuffixAuditOpinion">
|
||||
<el-descriptions-item label="审批人">{{ o.username }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审批时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item span="4" label="审批意见">{{ o.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item span="4" label="分管校领导签字">
|
||||
<el-image v-if="o.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
</el-tabs>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
module.exports = {
|
||||
props: {
|
||||
id: String,
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
hostUnit: '',
|
||||
helpUnit: [],
|
||||
unitOptions: [],
|
||||
activeName: '1',
|
||||
activeCollapse: '',
|
||||
loading: true,
|
||||
viewData: {},
|
||||
config: {}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async openView(id) {
|
||||
this.loading = true
|
||||
this.viewData = await proposal.getProposalInfo(id)
|
||||
|
||||
console.log(this.viewData)
|
||||
|
||||
if (!this.viewData) {
|
||||
this.$notify.error({title: '失败', message: '获取提案信息失败'});
|
||||
this.loading = false
|
||||
return
|
||||
}
|
||||
|
||||
const {files, feedback, caseAudit, resultCode} = this.viewData
|
||||
this.helpUnit = []
|
||||
if (caseAudit != null && resultCode !== "notGive" && caseAudit.other != null) {
|
||||
const other = JSON.parse(caseAudit.other)
|
||||
if (this.unitOptions.find(v => v.id === other.hostUnit)) {
|
||||
this.hostUnit = this.unitOptions.find(v => v.id === other.hostUnit).unitName
|
||||
if (other.helpUnit && other.helpUnit.length > 0) {
|
||||
other.helpUnit.forEach((v, i) => {
|
||||
const helpUnit = this.unitOptions.find(z => other.helpUnit[i] === z.id).unitName
|
||||
this.helpUnit.push(helpUnit)
|
||||
})
|
||||
this.helpUnit = this.helpUnit.join('、')
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (files) {
|
||||
this.viewData.files = JSON.parse(files)
|
||||
}
|
||||
|
||||
if (feedback) {
|
||||
this.viewData.feedback.map(v => {
|
||||
v.files = JSON.parse(v.files)
|
||||
})
|
||||
}
|
||||
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.config = await proposal.getProposalConfig()
|
||||
this.unitOptions = await proposal.getProposalUndertake()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
.el-descriptions__table {
|
||||
table-layout: fixed !important;
|
||||
}
|
||||
|
||||
.el-descriptions-item__cell {
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
|
||||
.item-center {
|
||||
text-align: center;
|
||||
font-weight: 700;
|
||||
margin-right: 110px;
|
||||
}
|
||||
|
||||
.item-center .el-form-item__content {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.item-sign {
|
||||
width: 200px;
|
||||
height: 130px;
|
||||
}
|
||||
|
||||
.item-form {
|
||||
padding: 0 25px;
|
||||
}
|
||||
|
||||
.el-collapse-item__wrap {
|
||||
padding: 10px 10px;
|
||||
}
|
||||
|
||||
.el-collapse-item__header {
|
||||
border-bottom: 1px solid #eee;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.item-number {
|
||||
color: red;
|
||||
font-weight: 600
|
||||
}
|
||||
|
||||
.el-collapse-item__header {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.el-collapse-item__arrow {
|
||||
color: #1582dc;
|
||||
font-weight: 800 !important;
|
||||
}
|
||||
|
||||
/*.el-tabs__header{*/
|
||||
/* background-image: url(https://my.njucm.edu.cn/assets/17289587176453.jpg);*/
|
||||
/* background-size: cover;*/
|
||||
/* background-color: rgba(87,99,189,1);*/
|
||||
/* background-repeat: no-repeat;*/
|
||||
/* background-position: 50% 50%;*/
|
||||
/* height: 60px;*/
|
||||
/* !*border-top-left-radius: 4px;*!*/
|
||||
/* !*border-top-right-radius: 4px;*!*/
|
||||
/* !*border-bottom-left-radius: 4px;*!*/
|
||||
/* !*border-bottom-right-radius: 4px;*!*/
|
||||
/*}*/
|
||||
|
||||
/*.el-tabs__item{*/
|
||||
/* height: 60px;*/
|
||||
/* line-height: 60px;*/
|
||||
/* font-size: 16px;*/
|
||||
/* color: #FFFFFF;*/
|
||||
/*}*/
|
||||
|
||||
/*.el-tabs__item:hover{*/
|
||||
/* font-size: 16px;*/
|
||||
/* color: #FFFFFF;*/
|
||||
/*}*/
|
||||
|
||||
/*.el-tabs__item.is-active{*/
|
||||
/* color: #FFFFFF;*/
|
||||
/*}*/
|
||||
|
||||
/*.el-tabs__active-bar{*/
|
||||
/* background-color:orangered;*/
|
||||
/* height: 4px;*/
|
||||
/* bottom: 2px;*/
|
||||
/*}*/
|
||||
|
||||
.wrap-table tbody:nth-child(3n+3):after {
|
||||
content: '';
|
||||
display: block;
|
||||
height: 15px;
|
||||
}
|
||||
|
||||
.wrap-table-4 tbody:nth-child(4n+4):after {
|
||||
content: '';
|
||||
display: block;
|
||||
height: 15px;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,184 @@
|
||||
<template>
|
||||
<el-card shadow="never" style="position:relative;">
|
||||
<div class="d-search-item btn-group tool-button">
|
||||
<el-input placeholder="请输入内容" clearable v-model="page.searchKeyword"
|
||||
@keyup.enter.native="$emit('doSearch')">
|
||||
<el-select v-model="page.searchName" slot="prepend" placeholder="查询类型"
|
||||
style="width: 110px;">
|
||||
<el-option label="提案名称" value="proposalName"></el-option>
|
||||
<el-option label="提案编号" value="proposalCode"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="d-search-item btn-group tool-button">
|
||||
<el-input placeholder="请输入提案人的姓名或工号" clearable v-model="page.createUser"
|
||||
@keyup.enter.native="$emit('doSearch')">
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="d-search-item btn-group tool-button">
|
||||
<el-select v-model="page.meetingId" filterable clearable @change="meetingChange" placeholder="根据教代会查询">
|
||||
<el-option
|
||||
v-for="item in allJdhOptions"
|
||||
:label="item.jdhallname"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="d-search-item btn-group tool-button">
|
||||
<el-select v-model="page.delegationId" filterable clearable placeholder="所属代表团" @change="delegationChange">
|
||||
<el-option v-for="item in delegationOptions" :key="item.id" :label="item.dbtname"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="mt10">
|
||||
<div class="d-search-item btn-group tool-button">
|
||||
<el-select clearable v-model="page.unionId" filterable placeholder="请选择工会" @change="unionChange">
|
||||
<el-option
|
||||
v-for="item in unionOptions"
|
||||
:key="item.id"
|
||||
:label="item.unionname"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="d-search-item btn-group tool-button">
|
||||
<el-select clearable v-model="page.unitId" filterable placeholder="请选择单位">
|
||||
<el-option
|
||||
v-for="item in unitOptions"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="d-search-item btn-group tool-button" v-if="has_seconded">
|
||||
<el-select clearable v-model="page.resultCode" filterable placeholder="请选择立案结果">
|
||||
<el-option
|
||||
v-for="item in resultOptions"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="btn-group tool-button" style="margin-left: 10px">
|
||||
<el-button type="primary" icon="el-icon-search" @click="$emit('search')"></el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="position: absolute;right: 20px;top: 20px;">
|
||||
|
||||
|
||||
<template v-if="has_add">
|
||||
<el-button class="ml5" icon="el-icon-upload2" plain type="primary"
|
||||
@click="$emit('import')">导入提案
|
||||
</el-button>
|
||||
</template>
|
||||
|
||||
<template v-if="has_add">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="$emit('add')">新建提案</el-button>
|
||||
</template>
|
||||
|
||||
<template v-if="audit">
|
||||
<el-radio-group v-model="page.isAudit" @change="$emit('search')">
|
||||
<el-radio-button :label="null">全部</el-radio-button>
|
||||
<el-radio-button :label="true">已{{ title }}</el-radio-button>
|
||||
<el-radio-button :label="false">未{{ title }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
|
||||
<slot name="column"></slot>
|
||||
</div>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
page: {
|
||||
type: Object,
|
||||
default: {}
|
||||
},
|
||||
has_add: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
has_seconded: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
audit: {
|
||||
type: String,
|
||||
default: true
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
allJdhOptions: [],
|
||||
delegationOptions: [],
|
||||
unionOptions: [],
|
||||
unitOptions: [],
|
||||
resultOptions: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async meetingChange(val) {
|
||||
this.page.delegationId = null
|
||||
this.delegationOptions = await proposal.getDelegation(val)
|
||||
},
|
||||
async delegationChange(val) {
|
||||
this.unionOptions = await getUnions(val)
|
||||
},
|
||||
async unionChange(val) {
|
||||
this.unitOptions = await getUnits(val)
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
this.resultOptions = await getDictByCode("proposal_result")
|
||||
this.allJdhOptions = await proposal.getOpenMeeting()
|
||||
this.page.meetingId = this.allJdhOptions.length > 0 ? this.allJdhOptions[0].id : null
|
||||
this.delegationOptions = await proposal.getDelegation(this.page.meetingId)
|
||||
this.unionOptions = await getUnions(null)
|
||||
this.unitOptions = await getUnits(null)
|
||||
this.$emit('finished', null)
|
||||
},
|
||||
async created() {
|
||||
// this.resultOptions = await getDictByCode("proposal_result")
|
||||
// this.allJdhOptions = await proposal.getOpenMeeting()
|
||||
// this.page.meetingId = this.allJdhOptions.length > 0 ? this.allJdhOptions[0].id : null
|
||||
// this.delegationOptions = await proposal.getDelegation(this.page.meetingId)
|
||||
// this.unionOptions = await getUnions(null)
|
||||
// this.unitOptions = await getUnits(null)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
line-height: 3;
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.d-search-item {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.search-op {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,61 @@
|
||||
<template>
|
||||
<el-card shadow="never" class="mt20">
|
||||
|
||||
<slot name="operation"></slot>
|
||||
|
||||
<el-table :data="data" align="center" header-align="center" :row-key="rowkeyFunc" v-loading="loading"
|
||||
@sort-change="(c)=>{$emit('order',c)}" @selection-change="(s)=>{$emit('selection',s)}">
|
||||
<el-table-column v-if="selection" type="selection" width="55"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (page.pageNumber - 1) * page.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="提案编号" prop="proposalCode" align="center" header-align="center" sortable width="120"></el-table-column>
|
||||
<el-table-column label="提案名称" prop="proposalName" align="center" header-align="center" width="300px">
|
||||
<template scope="{row}">
|
||||
<el-link type="primary" @click="$emit('view',row)">{{ row.proposalName }}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="提案人" prop="username" align="center" header-align="center"></el-table-column>
|
||||
<!-- <el-table-column label="提案时间" prop="createTime" align="center" header-align="center" sortable></el-table-column>-->
|
||||
<el-table-column label="提案类型" prop="typeName" align="center" header-align="center" sortable></el-table-column>
|
||||
<el-table-column label="届次" prop="meetingName" align="center" header-align="center"
|
||||
sortable></el-table-column>
|
||||
<el-table-column label="所属代表团" prop="delegationName" align="center" header-align="center"
|
||||
sortable></el-table-column>
|
||||
<el-table-column label="提案状态" prop="stateName" align="center" header-align="center" sortable></el-table-column>
|
||||
|
||||
<slot name="column"></slot>
|
||||
|
||||
</el-table>
|
||||
|
||||
<slot name="pagination"></slot>
|
||||
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
page: '',
|
||||
data: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
loading: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
selection: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
rowkeyFunc(row) {
|
||||
return new Date().getTime()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,384 @@
|
||||
<template>
|
||||
<div>
|
||||
|
||||
<template name="提案基本信息">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
提案基本信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group>
|
||||
<van-collapse v-model="secondedActiveNames" :border="false" accordion>
|
||||
<van-collapse-item name="1">
|
||||
<template #title>
|
||||
<div>提案名称  {{ viewData.proposalName }}
|
||||
<van-icon name="question-o"/>
|
||||
</div>
|
||||
</template>
|
||||
<van-cell :value="viewData.proposalCode" title="提案编号"></van-cell>
|
||||
<van-cell title="提案时间">{{ viewData.createTime }}</van-cell>
|
||||
<van-cell title="教代会届次">{{ viewData.meetingName }}</van-cell>
|
||||
<van-cell title="代表工会">{{ viewData.unionName }}</van-cell>
|
||||
<van-cell title="代表团名称">{{ viewData.delegationName }}</van-cell>
|
||||
<van-cell title="提案类型">{{ viewData.typeName }}</van-cell>
|
||||
<van-cell title="提案方式">{{ viewData.mannerName }}</van-cell>
|
||||
<van-cell title="立案结果">{{ viewData.resultName ? viewData.resultName : '暂无' }}</van-cell>
|
||||
<van-cell title="建议落实部门">{{ viewData.implementUnitName || '暂无' }}</van-cell>
|
||||
<van-cell title="提案状态"><span :style="'color:'+viewData.stateColor">{{ viewData.stateName }}</span>
|
||||
</van-cell>
|
||||
</van-collapse-item>
|
||||
<van-cell title="提  案  人">
|
||||
{{ viewData.createUserName }}({{ viewData.loginname }})
|
||||
</van-cell>
|
||||
|
||||
|
||||
<van-collapse-item v-if="viewData.undertake&&viewData.undertake.length>0" name="3" title="承办单位">
|
||||
<span v-if="!viewData.undertake">暂未分配</span>
|
||||
<van-cell v-for="(item,index) in viewData.undertake" v-else
|
||||
:title="item.undertakeType === 1 ? '主办' : '协办'">
|
||||
{{ item.unitName }}
|
||||
</van-cell>
|
||||
</van-collapse-item>
|
||||
|
||||
<van-collapse-item name="4" title="案  由">
|
||||
<span v-html="viewData.brief"></span>
|
||||
</van-collapse-item>
|
||||
|
||||
<van-collapse-item name="5" title="建议措施">
|
||||
<span v-html="viewData.measures"></span>
|
||||
</van-collapse-item>
|
||||
|
||||
</van-collapse>
|
||||
|
||||
|
||||
<van-collapse v-model="createUserSignNames" :border="false" v-if="viewData.createUserSign">
|
||||
<van-collapse-item name="1" title="签  字">
|
||||
<van-image width="200" height="100" :src="viewData.createUserSign" v-if="viewData.createUserSign"/>
|
||||
<span v-else>暂无</span>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
|
||||
|
||||
<!-- <van-cell title="附件">
|
||||
<div v-for="(obj,index) in viewData.files" class="text-nowrap color-puple"
|
||||
@click="previewFile(obj.filepath,obj.filename,viewData.files,index)">
|
||||
{{ obj.filename }}
|
||||
</div>
|
||||
</van-cell>-->
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
<template v-if="viewData.seconded" name="附议信息">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
附议信息
|
||||
</div>
|
||||
</div>
|
||||
<van-collapse v-model="secondedNames" :border="false">
|
||||
<van-collapse-item name="1" title="附  议  人">
|
||||
<van-cell v-for="(item,index) in viewData.seconded"
|
||||
:value="item.isAgree === true ? '同意' : item.isAgree === false ? '拒绝' : '未附议'">
|
||||
<template #title>
|
||||
<span>{{ item.username }}({{ item.unitname }})</span>
|
||||
</template>
|
||||
</van-cell>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
</template>
|
||||
|
||||
|
||||
<template v-if="viewData.delegationAudit&&viewData.delegationAudit.length>0" name="团长审核信息">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
团长审核信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group v-for="(item,index) in viewData.delegationAudit" class="info">
|
||||
<van-cell title="审核时间">{{ item.auditTime }}</van-cell>
|
||||
<van-cell title="审核结果">{{ item.flag ? '通过' : '退回' }}</van-cell>
|
||||
<van-cell title="审核意见">{{ item.opinion }}</van-cell>
|
||||
<van-cell title="签  字" v-if="item.auditSign">
|
||||
<van-image width="200" height="100" :src="item.auditSign" v-if="item.auditSign"/>
|
||||
<span v-else>暂无</span>
|
||||
</van-cell>
|
||||
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
<template v-if="viewData.secretaryAudit&&viewData.secretaryAudit.length>0" name="提案委员会立案信息">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
提案委员会立案信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group v-for="item in viewData.secretaryAudit" class="info">
|
||||
<van-cell title="审核时间">{{ item.auditTime }}</van-cell>
|
||||
<van-cell title="立案编号">{{ viewData.caseCode }}</van-cell>
|
||||
<van-cell title="审核结果">{{ viewData.resultName }}</van-cell>
|
||||
<van-cell v-if="!viewData.undertake" title="承办单位">暂未分配</van-cell>
|
||||
<van-collapse v-else v-model="undertakeActiveNames">
|
||||
<van-collapse-item name="1" title="承办单位">
|
||||
<van-cell v-for="(item,index) in viewData.undertake"
|
||||
:title="item.undertakeType === 1 ? '主办' : '协办'">
|
||||
{{ item.unitName }}
|
||||
</van-cell>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
<van-cell title="审核意见">{{ item.opinion }}</van-cell>
|
||||
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
<template v-if="viewData.caseAudit" name="确认承办单位">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
确认承办单位
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group class="info">
|
||||
<van-cell title="审核时间">{{ viewData.caseAudit.auditTime }}</van-cell>
|
||||
<van-cell title="立案结果">{{ viewData.resultName }}</van-cell>
|
||||
<van-collapse v-model="undertakeActiveNames">
|
||||
<van-collapse-item name="2" title="承办单位">
|
||||
<span v-if="!viewData.undertake">暂未分配</span>
|
||||
<van-cell v-for="(item,index) in viewData.undertake" v-else
|
||||
:title="item.undertakeType === 1 ? '主办' : '协办'">
|
||||
{{ item.unitName }}
|
||||
</van-cell>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
<van-cell title="审核意见">{{ viewData.caseAudit.opinion }}</van-cell>
|
||||
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
<template v-if="viewData.makeLeader" name="分管校领导批示信息">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
分管校领导批示信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group class="info">
|
||||
<van-collapse v-model="undertakeActiveNames">
|
||||
<van-collapse-item v-for="(v,k) in viewData.makeLeader" name="3">
|
||||
<!--({{ v[0].undertakeType === 1 ? '主办' : '协办' }}) -->
|
||||
<template #title>
|
||||
{{ v[0].unitName }}
|
||||
</template>
|
||||
<template v-for="item in v">
|
||||
<van-cell title="批示时间"> {{ item.auditTime }}</van-cell>
|
||||
<van-cell title="批示意见"> {{ item.opinion }}</van-cell>
|
||||
</template>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
<template v-if="viewData.replyInfo && viewData.replyInfo.length>0 && viewData.replyInfo.some(v=>v.isReply)"
|
||||
name="承办单位答复">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
承办单位答复信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group class="info">
|
||||
<van-collapse v-model="undertakeActiveNames">
|
||||
<van-collapse-item v-for="item in viewData.replyInfo" :name="item.unitName">
|
||||
<template #title>
|
||||
{{ item.unitName }}
|
||||
</template>
|
||||
<van-cell title="答复时间"> {{ item.replyTime }}</van-cell>
|
||||
<van-cell title="落实情况"> {{ item.implementState }}</van-cell>
|
||||
<van-cell title="答复信息">
|
||||
<span v-html="item.replyContent"></span>
|
||||
</van-cell>
|
||||
<van-panel>
|
||||
<template #header>
|
||||
<div class="van-cell van-panel__header">
|
||||
<div class="van-cell__title">
|
||||
附件
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div style="padding: 5px 16px">
|
||||
<upload v-if="item.replyFiles&&item.replyFiles.length>0" :del="false" :files.sync="item.files"
|
||||
view></upload>
|
||||
<span v-else>暂无</span>
|
||||
</div>
|
||||
</van-panel>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
<template v-if="viewData.feedback&&viewData.feedback.length>0" name="反馈评分信息">
|
||||
<div class="van-cell-group__title">
|
||||
<div class="van-sidebar-item van-sidebar-item--select">
|
||||
反馈评分信息
|
||||
</div>
|
||||
</div>
|
||||
<van-cell-group class="info">
|
||||
<template v-for="item in viewData.feedback">
|
||||
<van-cell title="反馈时间">{{ item.feedbackTime }}</van-cell>
|
||||
<van-cell title="反馈结果">{{ item.feedbackResult }}</van-cell>
|
||||
<van-cell title="反馈意见"><span v-html="item.feedbackOpinion"></span></van-cell>
|
||||
<van-panel>
|
||||
<template #header>
|
||||
<div class="van-cell van-panel__header">
|
||||
<div class="van-cell__title">
|
||||
附件
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div style="padding: 5px 16px">
|
||||
<upload :del="false" :files.sync="item.files" view></upload>
|
||||
</div>
|
||||
</van-panel>
|
||||
</template>
|
||||
</van-cell-group>
|
||||
</template>
|
||||
|
||||
<template v-if="handle">
|
||||
<div id="wechat_proposal_handle">
|
||||
<slot name="handle"></slot>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
function removeHTMLTag(str) {
|
||||
str = str.replace(/<\/?[^>]*>/g, ''); //去除HTML tag
|
||||
str = str.replace(/[ | ]*\n/g, '\n'); //去除行尾空白
|
||||
str = str.replace(/\n[\s| | ]*\r/g, '\n'); //去除多余空行
|
||||
str = str.replace(/ /ig, '');//去掉
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
module.exports = {
|
||||
data() {
|
||||
return {
|
||||
activeName: 1,
|
||||
secondedActiveNames: '',
|
||||
secondedNames: [],
|
||||
createUserSignNames: [],
|
||||
undertakeActiveNames: [],
|
||||
briefActiveNames: [],
|
||||
viewData: {},
|
||||
}
|
||||
},
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
proposal_id: String
|
||||
// pid:String
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
components: {
|
||||
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
|
||||
'upload': httpVueLoader('/components/plugins/VantFileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
async openView(id) {
|
||||
this.viewData = await getProposalInfo(id)
|
||||
if (this.viewData.files) {
|
||||
this.viewData.files = JSON.parse(this.viewData.files)
|
||||
}
|
||||
if (this.viewData.replyInfo) {
|
||||
const keys = Object.keys(this.viewData.replyInfo)
|
||||
|
||||
keys.map(k => {
|
||||
if (this.viewData.replyInfo[k].replyFiles != null) {
|
||||
this.viewData.replyInfo[k].replyFiles = JSON.parse(this.viewData.replyInfo[k].replyFiles)
|
||||
}
|
||||
})
|
||||
if (this.viewData.feedback && this.viewData.feedback.length > 0) {
|
||||
this.viewData.feedback.map(v => {
|
||||
v.files = JSON.parse(v.files)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
},
|
||||
previewFile(filepath, filename, fileList, index) {
|
||||
const doctype = ['doc', 'docx', 'xls', 'xlsx'];
|
||||
const pictype = ['jpg', 'png', 'gif', 'jpeg'];
|
||||
let filetype = filepath.substring(filepath.lastIndexOf('.') + 1, filepath.length);
|
||||
if (doctype.indexOf(filetype) > -1) {
|
||||
const pdfpath = 'https://' + window.location.hostname + '/assets/platform/plugins/pdf/web/viewer.html?file=' +
|
||||
encodeURIComponent("/platform/base/Common/preview?filepath=" + filepath + "&filename=" + filename);
|
||||
window.open(pdfpath);
|
||||
} else if (pictype.indexOf(filetype) > -1) {
|
||||
let ele = document.createElement("div");
|
||||
fileList.forEach(v => {
|
||||
let fp = v.filepath.substring(v.filepath.lastIndexOf('.') + 1, v.filepath.length);
|
||||
if (pictype.indexOf(fp) > -1) {
|
||||
const image = new Image();
|
||||
const src = FILE_DOMAIN + v.filepath
|
||||
image.src = src
|
||||
image.alt = v.filename
|
||||
ele.appendChild(image);
|
||||
}
|
||||
})
|
||||
const viewer = new Viewer(ele, {
|
||||
title: function (img, obj) {
|
||||
return img.getAttribute("alt");
|
||||
}
|
||||
});
|
||||
viewer.show();
|
||||
} else {
|
||||
alert('该文件不支持在手机端预览')
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'handle'(val) {
|
||||
if (val === true) {
|
||||
this.$nextTick(() => {
|
||||
window.scrollTo(0, document.getElementById('wechat_proposal_handle').offsetTop)
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
await this.openView(this.proposal_id)
|
||||
if (this.handle) {
|
||||
window.scrollTo(0, document.getElementById('wechat_proposal_handle').offsetTop)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.van-cell__value {
|
||||
color: #323233 !important;
|
||||
}
|
||||
|
||||
.van-cell-group__title {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item {
|
||||
font-size: 16px !important;
|
||||
text-indent: 4px !important;
|
||||
}
|
||||
|
||||
.van-sidebar-item--select::before {
|
||||
left: 5px !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,123 @@
|
||||
<template>
|
||||
<div>
|
||||
<template v-if="questionType===3">
|
||||
<el-radio-group v-model="shopRadio">
|
||||
<el-radio-button label="人员表"></el-radio-button>
|
||||
<el-radio-button label="清单表"></el-radio-button>
|
||||
</el-radio-group>
|
||||
|
||||
<el-table :data="shopDataMap.person" v-show="shopRadio === '人员表'">
|
||||
<el-table-column prop="loginname" label="工号"></el-table-column>
|
||||
<el-table-column prop="username" label="姓名"></el-table-column>
|
||||
<el-table-column prop="unitname" label="所属单位"></el-table-column>
|
||||
<el-table-column prop="unionname" label="所属工会"></el-table-column>
|
||||
<el-table-column prop="totalNumber" label="选购总数"></el-table-column>
|
||||
<el-table-column prop="totalPrice" label="总金额"></el-table-column>
|
||||
<el-table-column prop="signerUserName" label="签收人姓名"></el-table-column>
|
||||
<el-table-column prop="signerPhone" label="联系方式"></el-table-column>
|
||||
<el-table-column prop="signerAddress" label="收获地址"></el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-table :data="shopDataMap.list" v-show="shopRadio === '清单表'">
|
||||
<el-table-column prop="loginname" label="工号"></el-table-column>
|
||||
<el-table-column prop="username" label="姓名"></el-table-column>
|
||||
<el-table-column prop="commodityName" label="商品名称"></el-table-column>
|
||||
<el-table-column prop="price" label="商品单价"></el-table-column>
|
||||
<el-table-column prop="number" label="选购数量"></el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
|
||||
<template v-if="questionType===2">
|
||||
<el-table :data="personnelData" row-key="id" ref="table">
|
||||
<el-table-column type="index" width="50"></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="unitname" label="所属单位"></el-table-column>
|
||||
<el-table-column prop="unionname" label="所属工会"></el-table-column>
|
||||
<el-table-column prop="fraction" label="分值"></el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
|
||||
<template v-if="questionType===4">
|
||||
<div>
|
||||
<!-- <el-radio-group v-model="cakeForm.isSelected" @change="getCakeData">-->
|
||||
<!-- <el-radio-button :label="true">已选择</el-radio-button>-->
|
||||
<!-- <el-radio-button :label="false">未选择</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
|
||||
<el-button type="primary"
|
||||
class="pull-right"
|
||||
icon="el-icon-printer"
|
||||
@click="doExportCakeUser">导出领取人员表
|
||||
</el-button>
|
||||
<!-- <el-divider></el-divider>-->
|
||||
</div>
|
||||
|
||||
<el-table :data="cakeData" row-key="id" ref="table">
|
||||
<el-table-column type="index" width="50"></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="wtxt" label="所选物品"></el-table-column>
|
||||
<el-table-column prop="unitName" label="所属单位"></el-table-column>
|
||||
<el-table-column prop="unionName" label="所属工会"></el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "questionDetail",
|
||||
data() {
|
||||
return {
|
||||
questionType: null,
|
||||
shopRadio: '人员表',
|
||||
shopDataMap: {
|
||||
person: [],
|
||||
list: []
|
||||
},
|
||||
personnelData: [],
|
||||
cakeData: [],
|
||||
unionId: null,
|
||||
questionId: null,
|
||||
cakeForm: {
|
||||
isSelected: true
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async openView(questionId, questionList, unionId) {
|
||||
this.questionId = questionId
|
||||
const question = questionList.find(v => v.qid === questionId)
|
||||
const questionType = question.qlx
|
||||
this.questionType = questionType
|
||||
this.unionId = unionId
|
||||
switch (questionType) {
|
||||
case 3:
|
||||
const shopData = await $.get('/platform/question/intentionalChoice/shopDetail', {questionId, unionId})
|
||||
this.shopDataMap.person = shopData[0].data
|
||||
this.shopDataMap.list = shopData[1].data
|
||||
break
|
||||
case 2:
|
||||
const answerData = await $.get(loc() + "/getAnswerData", {questionId, unionId})
|
||||
this.personnelData = answerData.data
|
||||
break
|
||||
case 4:
|
||||
// const cakeData = await $.get('/platform/zgfw/question/stats/cakeDataByUnionId', {questionId, unionId})
|
||||
const cakeData = await $.get('/platform/question/cake/cakeUserData', {questionId, unionId})
|
||||
this.cakeData = cakeData.data
|
||||
break
|
||||
}
|
||||
},
|
||||
doExportCakeUser() {
|
||||
window.location.href =
|
||||
'/platform/question/cake/doExportCakeUser?questionId=' + this.questionId + '&ghId=' + this.unionId + '&isSelected=true'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,348 @@
|
||||
<template>
|
||||
|
||||
<div>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading" class="ml25">
|
||||
<el-tab-pane label="申请信息" name="1">
|
||||
<el-form label-suffix=":" label-position="left" style="padding: 20px 0" class="ml25">
|
||||
<el-row gutter="60">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="经办人">
|
||||
{{ viewData.userName }}({{ viewData.loginName }})
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系方式">
|
||||
{{ viewData.mobile }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报销类别">
|
||||
{{ viewData.reimbursementItemSort === 'fy' ? '费用报销' : '支付凭证' }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报销项目">
|
||||
{{ viewData.reimbursementItemName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="支付方式">
|
||||
{{ viewData.paymentMethodName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户名">
|
||||
{{ viewData.bankUserName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="银行账号">
|
||||
{{ viewData.bankCardNumber }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="开户行">
|
||||
{{ viewData.bankOfDeposit }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row gutter="60" v-if="viewData.reimbursementItemId==='fyww'||viewData.reimbursementItemId==='zfww'">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="慰问对象">
|
||||
{{ viewData.be_username }}({{ viewData.be_loginname }})
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="性  别">
|
||||
{{ viewData.sex }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<!--<el-col :span="12">
|
||||
<el-form-item label="生  日">
|
||||
{{ viewData.birthday }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份证号">
|
||||
{{ viewData.idCard }}
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系方式">
|
||||
{{ viewData.conMobile }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="慰问类型">
|
||||
{{ viewData.typeName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<template v-if="viewData.typeCode === 'D'">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="住院病由">
|
||||
{{ viewData.hospital_by }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="住院时间">
|
||||
{{ viewData.starting_time }}-{{ viewData.end_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="入住医院">
|
||||
{{ viewData.the_hospital }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="当年次数">
|
||||
{{ viewData.hospital_yearNum }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</template>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="慰问金额">
|
||||
{{ viewData.money }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发票张数">
|
||||
{{ viewData.files_num }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<template v-if="viewData.typeCode==='E'">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="去逝时间">
|
||||
{{ viewData.dead_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="与被慰问人关系">
|
||||
{{ viewData.dead_gx }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<template v-if="viewData.typeCode==='A'">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="结婚时间">
|
||||
{{ viewData.marry_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</template>
|
||||
<template v-if="viewData.typeCode==='B'">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="生育时间">
|
||||
{{ viewData.birth_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="慰问时间">
|
||||
{{ viewData.occur_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
</el-row>
|
||||
|
||||
<el-row v-else gutter="60">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动名称">
|
||||
{{ viewData.activity_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col v-if="viewData.reimbursementItemId=='fyhd'" :span="12">
|
||||
<el-form-item label="活动类型">
|
||||
{{ viewData.activity_type === '1' ? '分工会活动' : viewData.activity_type === '2' ? '校工会活动' : '协会(社团)活动' }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="12" v-if="viewData.activity_number">
|
||||
<el-form-item label="活动人数">
|
||||
{{ viewData.activity_number }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动地点">
|
||||
{{ viewData.venue }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报销金额">
|
||||
{{ viewData.money }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动时间">
|
||||
{{ viewData.activity_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发票张数">
|
||||
{{ viewData.files_num }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发票号码">
|
||||
{{ viewData.billNumber }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row gutter="60">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="支付内容">
|
||||
{{ viewData.cause }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注">
|
||||
{{ viewData.remark }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
|
||||
<el-form-item label="附件" prop="files">
|
||||
<file-upload view :files.sync="viewData.files"
|
||||
v-if="viewData.files&&viewData.files.length>0"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="审核信息" name="2" v-if="viewData.accountingAuditId">
|
||||
<el-form label-suffix=":" label-position="left" style="padding: 20px 0" class="ml25">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人">
|
||||
{{ viewData.accounting.username }}({{ viewData.accounting.loginname }})
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.accounting.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核意见">
|
||||
{{ viewData.accounting.auditOpinion ? viewData.accounting.auditOpinion : '暂无' }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: "1",
|
||||
viewData: {},
|
||||
loading: true,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
this.loading = true
|
||||
const {data, code, msg} = await $.get("/activity/reimbursement/list/findOne", {id})
|
||||
this.loading = false
|
||||
if (data) {
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
condolence.toFormData(data)
|
||||
this.viewData = data
|
||||
console.log(this.viewData)
|
||||
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$message({
|
||||
message: "获取信息失败",
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.item-form {
|
||||
padding: 0 25px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,71 @@
|
||||
/**
|
||||
*Desc:
|
||||
*Create by: jug
|
||||
*Create time:2023/7/25/9:14
|
||||
*/
|
||||
<template>
|
||||
<div>
|
||||
<el-descriptions :column="3" border>
|
||||
<el-descriptions-item label="姓名">{{ userData.username }}</el-descriptions-item>
|
||||
<el-descriptions-item label="工号">{{ userData.loginname }}</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">{{ userData.sex }}</el-descriptions-item>
|
||||
<el-descriptions-item label="退休小组">{{ userData.retiredGroupName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="政治面貌">{{ userData.political }}</el-descriptions-item>
|
||||
<el-descriptions-item label="退休党支部">{{ userData.retiredPartyBranchName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="所在科室">{{ userData.threeUnitName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="所在单位">{{ userData.unitname }}</el-descriptions-item>
|
||||
<el-descriptions-item label="所在工会">{{ userData.unionname }}</el-descriptions-item>
|
||||
<el-descriptions-item label="出生日期">{{ userData.birthday }}</el-descriptions-item>
|
||||
<el-descriptions-item label="民族">{{ userData.nation }}</el-descriptions-item>
|
||||
<el-descriptions-item label="学历">{{ userData.education }}</el-descriptions-item>
|
||||
<el-descriptions-item label="在职状态">{{ userData.userState }}</el-descriptions-item>
|
||||
<el-descriptions-item label="人员类型">{{ userData.personType }}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系方式">{{ userData.mobile }}</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号码">{{ userData.idcard }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "userInfo",
|
||||
props: {
|
||||
id: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
userData: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getInfo() {
|
||||
if (this.id) {
|
||||
$.post('/platform/retiredUser/list/userInfo', {userId: this.id}).then(res => {
|
||||
this.userData = res.data
|
||||
})
|
||||
} else {
|
||||
this.userData = {}
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
id: {
|
||||
handler: function (val) {
|
||||
this.getInfo()
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,134 @@
|
||||
<template>
|
||||
<div>
|
||||
<van-image :src="'/signature/getSignData?path='+value" v-if="!signDrawingBoardShow"
|
||||
style="width: 100%;height: 150px;border: 1px dashed"></van-image>
|
||||
<div style="text-align: right">
|
||||
<van-button plain type="danger" hairline size="small" @click="openSignDrawingBoard">
|
||||
打开签字版
|
||||
</van-button>
|
||||
</div>
|
||||
<van-popup v-model="signDrawingBoardShow" position="bottom" :style="{ height: '60vh' }">
|
||||
<div id="canvas" style="position: relative;width: 100%"></div>
|
||||
<div class="button-extra">
|
||||
<van-button plain type="danger" hairline size="small" @click="reset">清空重签</van-button>
|
||||
<van-button plain type="primary" hairline size="small" @click="confirm">确定</van-button>
|
||||
</div>
|
||||
</van-popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
module.exports = {
|
||||
props: {
|
||||
my_sign: {
|
||||
type: String
|
||||
},
|
||||
value: {
|
||||
type: String
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
signDrawingBoardShow: false,
|
||||
signData: null
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
//打开签字画板
|
||||
openSignDrawingBoard() {
|
||||
this.signDrawingBoardShow = true
|
||||
this.$nextTick(() => {
|
||||
$("#canvas").jSignature({
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
"decor-color": "transparent",
|
||||
lineWidth: '3'
|
||||
})
|
||||
})
|
||||
},
|
||||
reset() {
|
||||
$('#canvas').jSignature('reset')
|
||||
this.$emit("update:my_sign", null)
|
||||
},
|
||||
|
||||
confirm() {
|
||||
const isNull = $('#canvas').jSignature('getData', 'native').length === 0
|
||||
if (isNull) {
|
||||
this.$modal.msgError("请签字后再确定")
|
||||
return
|
||||
}
|
||||
this.signData = $('#canvas').jSignature('getData')
|
||||
this.signDrawingBoardShow = false
|
||||
this.uploadSignData()
|
||||
},
|
||||
|
||||
async uploadSignData() {
|
||||
const {data, code, msg} = await $.post('/signature/uploadSignData', {data: this.signData})
|
||||
if (code === 0) {
|
||||
console.log(data)
|
||||
this.$emit('input', data)
|
||||
} else {
|
||||
this.$modal.msgError(msg)
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
checkNull() {
|
||||
return $('#canvas').jSignature('getData', 'native').length === 0
|
||||
},
|
||||
submitSign() {
|
||||
this.$emit("update:my_sign", $('#canvas').jSignature('getData'))
|
||||
},
|
||||
async updateSign() {
|
||||
const data = await $.post("/mobile/common/signing/update", {sign: $('#canvas').jSignature('getData')})
|
||||
},
|
||||
async getMySign() {
|
||||
const data = await $.get("/mobile/common/signing/getMySign")
|
||||
if (data) {
|
||||
console.log(this.my_sign)
|
||||
|
||||
$('#canvas').jSignature("importData", data)
|
||||
this.$nextTick(() => {
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getMySign()
|
||||
},
|
||||
async mounted() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<style scoped>
|
||||
.clearBtn {
|
||||
position: absolute !important;
|
||||
bottom: 5px;
|
||||
right: 5px;
|
||||
color: red;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
#canvas {
|
||||
height: calc(60vh - 100px);
|
||||
width: 100vw;
|
||||
}
|
||||
|
||||
.button-extra {
|
||||
height: 100px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.button-extra button {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,150 @@
|
||||
<template>
|
||||
<el-card class="box-card" shadow="never">
|
||||
|
||||
<div class="signature-body">
|
||||
<el-collapse-transition>
|
||||
<div v-show="showQrCode" class="qr-code-div">
|
||||
<el-link type="primary" :underline="false">{{ scan_title }}</el-link>
|
||||
<QrCode v-if="postAddress" :options="{ width: 126 }" :value="postAddress"></QrCode>
|
||||
</div>
|
||||
</el-collapse-transition>
|
||||
|
||||
<el-image fit="contain" v-show="!showQrCode" v-loading="loading"
|
||||
style="height: 100px;width: 100%" :src="qz">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline"></i>
|
||||
</div>
|
||||
</el-image>
|
||||
<el-link type="danger" style="font-size: 12px;margin-top: 20px" @click="refresh();clear()" icon="el-icon-edit"
|
||||
v-show="!showQrCode">重签
|
||||
</el-link>
|
||||
</div>
|
||||
|
||||
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
window.signatureInterval = null
|
||||
|
||||
module.exports = {
|
||||
name: "Signature",
|
||||
props: {
|
||||
scan_title: {
|
||||
type: String,
|
||||
default: '扫描下方二维码进行签字'
|
||||
},
|
||||
prefix: {
|
||||
type: String,
|
||||
default: 'DEFAULT'
|
||||
},
|
||||
qz: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
model: {
|
||||
prop: 'qz',
|
||||
event: 'change'
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
showQrCode: false,
|
||||
loading: true,
|
||||
postAddress: '',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
refresh() {
|
||||
this.qz = ''
|
||||
},
|
||||
startRequest() {
|
||||
this.qz = ''
|
||||
clearInterval(signatureInterval)
|
||||
const ts = new Date().getTime()
|
||||
this.postAddress = location.protocol + '//' + location.host + '/signature?prefix=' + this.prefix + '&id=' + ts
|
||||
|
||||
this.showQrCode = true
|
||||
|
||||
console.log(this.postAddress)
|
||||
window.signatureInterval = setInterval(() => {
|
||||
$.get(base + "/signature/getBase64?prefix=" + this.prefix + "&id=" + ts).then(res => {
|
||||
if (res != null) {
|
||||
this.$emit("change", res)
|
||||
this.$emit("update:qz", res)
|
||||
this.qz = res
|
||||
this.loading = false
|
||||
this.save()
|
||||
clearInterval(signatureInterval)
|
||||
}
|
||||
})
|
||||
}, 1000 * 3)
|
||||
},
|
||||
save() {
|
||||
localStorage.setItem("signature", this.qz)
|
||||
},
|
||||
clear() {
|
||||
localStorage.removeItem("signature")
|
||||
},
|
||||
getSignature() {
|
||||
return localStorage.getItem("signature")
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'qz': {
|
||||
handler(s) {
|
||||
this.loading = !s
|
||||
if (!s) {
|
||||
const qz = this.getSignature()
|
||||
|
||||
if (!qz) {
|
||||
this.$emit("change", '')
|
||||
this.$emit("update:qz", '')
|
||||
this.startRequest()
|
||||
} else {
|
||||
this.qz = qz
|
||||
this.$emit("change", qz)
|
||||
this.$emit("update:qz", qz)
|
||||
}
|
||||
|
||||
} else {
|
||||
this.qz = s
|
||||
this.showQrCode = false
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.el-card__body {
|
||||
position: relative !important;
|
||||
}
|
||||
|
||||
.signature-body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
min-height: 160px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.qr-code-div {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
z-index: 999;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,177 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-tabs tab-position="top" v-model="name" v-loading="loading">
|
||||
<el-tab-pane label="上报信息" name="1">
|
||||
<el-form label-suffix=":" label-position="left" style="padding: 20px 0">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="上报人工号">
|
||||
{{ viewData.loginname }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="上报人姓名">
|
||||
{{ viewData.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="上报人单位">
|
||||
{{ viewData.unitname }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="上报人工会">
|
||||
{{ viewData.unionname }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="入职时间">
|
||||
{{ viewData.rzsj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="子女姓名">
|
||||
{{ viewData.name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="子女性别">
|
||||
{{ viewData.sex }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="办证时间">
|
||||
{{ viewData.bzsj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="出生时间">
|
||||
{{ viewData.cssj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="独生子女父母光荣证">
|
||||
<file-upload v-if="viewData.files&&viewData.files.length"
|
||||
:files="viewData.files"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="user_name" label="备注">
|
||||
{{ viewData.bz }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="基层工会审核信息" name="2" v-if="hasPane(2)&&viewData.fghshr">
|
||||
<el-form label-suffix=":" label-position="left" style="padding: 20px 0">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人">
|
||||
{{ viewData.fuaername }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.fghshsj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ viewData.fghshyj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会审核信息" name="3" v-if="hasPane(3)&&viewData.xghshr">
|
||||
<el-form label-suffix=":" label-position="left" style="padding: 20px 0">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人">
|
||||
{{ viewData.xusername }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.xghshsj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ viewData.xghshyj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
name: "1",
|
||||
viewData: {},
|
||||
loading: true,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
this.loading = true
|
||||
const {data, code, msg} = await $.get("/platform/fw/singleChild/report/findOne", {id})
|
||||
console.log(data)
|
||||
this.loading = false
|
||||
if (data) {
|
||||
this.viewData.files = []
|
||||
this.name = this.handle ? "999" : "1"
|
||||
this.viewData = data
|
||||
if (this.viewData.files.length > 0) {
|
||||
this.viewData.files = JSON.parse(data.files)
|
||||
}
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$message({
|
||||
message: "获取信息失败",
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,113 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form style="padding: 20px 0" label-width="200px">
|
||||
|
||||
<el-form-item label="基础信息 " class="view-header"></el-form-item>
|
||||
|
||||
<el-row gutter="20">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="撰写人:">
|
||||
{{ viewData.createUserName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="撰写时间:">
|
||||
{{ viewData.applyTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属工会:">
|
||||
{{ viewData.createUserUnionName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="建议类型:">
|
||||
{{ viewData.typeName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="工作建议内容:">
|
||||
<div v-html="viewData.suggestionContent" class="h5-content"
|
||||
:style="{'max-height':viewData.state===2?'200px':'unset'}"></div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24" v-if="viewData.taxx">
|
||||
<el-form-item label="被引入提案:">
|
||||
建议被{{ viewData.tarusername }}写的“{{ viewData.taxx }}”提案采纳
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24" v-if="viewData.levelTwoJdhUser">
|
||||
<el-form-item label="二级教代会代表补充内容:">
|
||||
<div class="bold">代表:【{{
|
||||
viewData.twoLevelUserName }}-{{ viewData.twoLevelLoginName }}】
|
||||
{{ viewData.twoLevelUserUnionName }}
|
||||
</div>
|
||||
<div v-html="viewData.levelTwoJdhUserContent" class="h5-content" style="max-height: 200px"></div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24" v-if="viewData.depResult === '自行处理' && viewData.handleDescript">
|
||||
<el-form-item label="二级教代会代表补充内容:">
|
||||
<div v-html="viewData.handleDescript" class="h5-content" style="max-height: 200px"></div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24" v-if="viewData.levelJdhUser">
|
||||
<el-form-item label="一级教代会代表:">
|
||||
<div class="bold ">代表:【{{ viewData.oneLevelUserName }}-{{viewData.oneLevelLoginName}}】{{ viewData.oneLevelUserUnionName }}</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
</el-row>
|
||||
|
||||
|
||||
</el-form>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
data() {
|
||||
return {
|
||||
viewData: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getData(id) {
|
||||
const {data} = await $.get("/platform/suggestions/apply/getSuggestionInfoById", {id})
|
||||
if (data) {
|
||||
this.viewData = data
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.table-bordered {
|
||||
border-top: none !important;
|
||||
}
|
||||
|
||||
.su-title {
|
||||
font-weight: bold;
|
||||
font-size: 18px
|
||||
}
|
||||
|
||||
.h5-content {
|
||||
overflow: hidden;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,180 @@
|
||||
/**
|
||||
*Desc:
|
||||
*Create by: jug
|
||||
*Create time:2023/7/27/14:46
|
||||
*/
|
||||
<template>
|
||||
<div>
|
||||
<el-tabs v-model="tabActive">
|
||||
<el-tab-pane label="申请信息" name="1">
|
||||
<el-descriptions border class="descriptions-form">
|
||||
<el-descriptions-item label="姓名">
|
||||
{{ applyData.userName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">
|
||||
{{ applyData.sex }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="年龄">
|
||||
{{ applyData.age }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="所在部门">
|
||||
{{ applyData.unitName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="工号" :span="2">
|
||||
{{ applyData.loginName }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="联系电话">
|
||||
{{ applyData.mobile }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="家庭住址" :span="2">
|
||||
{{ applyData.homeAddress }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="申请补助类别" :span="3"
|
||||
v-if="projectInfo && projectInfo.length>0 && applyData.subsidyType!=null">
|
||||
<el-checkbox-group v-model="applyData.subsidyType" class="disabled-group">
|
||||
<el-checkbox v-for="item in projectInfo" :label="item.id" :key="item.id">
|
||||
{{ item.projectName }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="住院记录" :span="3">
|
||||
<el-table :data="applyData.hospitalRecords" border>
|
||||
<el-table-column label="就诊医院" prop="hospitalName"></el-table-column>
|
||||
<el-table-column label="入院时间" prop="startDate"></el-table-column>
|
||||
<el-table-column label="出院时间" prop="endDate"></el-table-column>
|
||||
<el-table-column label="自费金额" prop="selfFundedAmount"></el-table-column>
|
||||
|
||||
<el-table-column label="补助类型" prop="subsidyType">
|
||||
<template scope="{row,$index}">
|
||||
<span v-if="row.subsidyType">
|
||||
{{
|
||||
projectInfo.find(v => row.subsidyType === v.id)?.projectName
|
||||
}}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="疾病详情" prop="diseaseDetail">
|
||||
<template scope="{row,$index}">
|
||||
<el-tooltip placement="top">
|
||||
<div slot="content">
|
||||
<div
|
||||
v-for="(item,idx) in projectInfo.flatMap(v => v.diseaseTypeList).filter(v=>row.diseaseDetail.includes(v.id)).map(v => v.diseaseName)"
|
||||
class="mb10">
|
||||
{{ idx + 1 + '.' + item }}
|
||||
</div>
|
||||
</div>
|
||||
<span style="white-space: nowrap">{{
|
||||
projectInfo.flatMap(v => v.diseaseTypeList).filter(v => row.diseaseDetail.includes(v.id)).map(v => v.diseaseName).join('、')
|
||||
}}</span>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column label="备注" prop="notes"></el-table-column>
|
||||
</el-table>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="申请补助原因" :span="3">
|
||||
{{ applyData.reason }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="证明材料" :span="3">
|
||||
<file-upload :files.sync="applyData.files" view></file-upload>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="分工会审核信息" name="2" v-if="applyData.branchUnionAudit">
|
||||
<el-descriptions border class="descriptions-form" :column="2">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ applyData.branchUnionAudit.username }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ applyData.branchUnionAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="审核结果">
|
||||
<dict-tag :options="dict.type.auditType" :value="applyData.branchUnionAudit.auditType"></dict-tag>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="审核意见">
|
||||
{{ applyData.branchUnionAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="校工会审核信息" name="3" v-if="applyData.schoolAudit">
|
||||
<el-descriptions border class="descriptions-form" :column="2">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ applyData.schoolAudit.username }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="审核时间">
|
||||
{{ applyData.schoolAudit.auditTime }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="审核结果">
|
||||
<dict-tag :options="dict.type.auditType" :value="applyData.schoolAudit.auditType"></dict-tag>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="审核意见">
|
||||
{{ applyData.schoolAudit.auditOpinion }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="补助金额(元)">
|
||||
{{ applyData.subsidyAmount }}
|
||||
</el-descriptions-item>
|
||||
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
<slot></slot>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "processInfo",
|
||||
dicts: ['auditType'],
|
||||
data() {
|
||||
return {
|
||||
tabActive: '1',
|
||||
applyData: {},
|
||||
projectInfo: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getApplyInfo(id) {
|
||||
if (id) {
|
||||
const resp = await $.post('/platform/difficultSubsidy/common/findOne', {id})
|
||||
this.applyData = resp.data
|
||||
}
|
||||
},
|
||||
//补助类别
|
||||
async getProjectInfo() {
|
||||
const resp = await $.post('/platform/difficultSubsidy/common/projectInfo')
|
||||
if (resp.code === 0) {
|
||||
this.projectInfo = resp.data
|
||||
}
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.getProjectInfo()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.disabled-group .el-checkbox {
|
||||
pointer-events: none;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,877 @@
|
||||
<template>
|
||||
<el-tabs v-model="activeName" tab-position="top">
|
||||
<el-tab-pane label="基本信息" name="1" v-if="showPaneBeforePwJtPs">
|
||||
<el-card>
|
||||
<table class="table table-bordered" style="border-top: 0">
|
||||
<tr>
|
||||
<td class="text-center" colspan="6" style="font-size: 20px;">
|
||||
{{ kt.jbxx.xmmc }}
|
||||
<el-tooltip content="点我可以导出申报表" effect="dark" placement="top-start">
|
||||
<i class="el-icon-tickets text-primary pointer"
|
||||
@click="()=>{ window.open(base+'/platform/syr/common/exportlxsbs?id='+this.kt.jbxx.id)}">
|
||||
</i>
|
||||
</el-tooltip>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td-title" width="11.1%">姓名</td>
|
||||
<td class="td-content" width="22.2%">{{ kt.jbxx.username }}</td>
|
||||
<td class="td-title" width="11.1%">性别</td>
|
||||
<td td-content width="22.2%">{{ kt.jbxx.sex }}</td>
|
||||
<td class="td-title" width="11.1%">出生年月</td>
|
||||
<td td-content width="22.2%">{{ kt.jbxx.birthday }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td-title">职务/职称</td>
|
||||
<td td-content>{{ kt.jbxx.zwzc }}</td>
|
||||
<td class="td-title">所在单位</td>
|
||||
<td td-content>{{ kt.jbxx.dwname }}</td>
|
||||
<td class="td-title">手机</td>
|
||||
<td td-content>{{ kt.jbxx.mobile }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-center" colspan="6"
|
||||
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
|
||||
项目组成员
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6" style="padding:0!important;border-top: none">
|
||||
<table class="table table-bordered" style="border-top: 0;border-left: 0;border-right: 0">
|
||||
<tr>
|
||||
<td>姓名</td>
|
||||
<td>职称</td>
|
||||
<!-- <td>学历</td>-->
|
||||
<td>工作单位及职务</td>
|
||||
</tr>
|
||||
<tr v-for="o in kt.jbxx.xmzcy">
|
||||
<td>{{ o.username }}</td>
|
||||
<td>{{ o.zc }}</td>
|
||||
<!-- <td>{{ o.xl }}</td>-->
|
||||
<td>{{ o.gzdw }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="text-center" colspan="6"
|
||||
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
|
||||
项目研究基础及条件
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<div class="text-left" v-html="kt.jbxx.yjjctj"></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="text-center" colspan="6"
|
||||
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
|
||||
项目实施路径及方法
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<div class="text-left" v-html="kt.jbxx.xmssljff"></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="text-center" colspan="6"
|
||||
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
|
||||
项目预期成果及应用推广价值
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<div class="text-left" v-html="kt.jbxx.yqcgtgjz"></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="kt.jbxx.state>20 && showPaneBeforePwJtPs" label="院级工会初审信息" name="2">
|
||||
<el-card>
|
||||
<el-form label-width="120px" label-suffix=":">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人">
|
||||
{{ kt.jbxx.stbmghfzr }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ kt.jbxx.stbmghshsj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ kt.jbxx.stbmghyj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="签字">
|
||||
<div>
|
||||
<el-image :src="kt.jbxx.stbmghfzrqz" style="width: 200px;height:auto"
|
||||
v-if="kt.jbxx.stbmghfzrqz"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
|
||||
</el-form>
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="kt.jbxx.state>30 && showPaneBeforePwJtPs" label="校工会初审信息" name="3">
|
||||
<el-card>
|
||||
<el-form label-width="120px" label-suffix=":">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人">
|
||||
{{ kt.jbxx.stxghfzr }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ kt.jbxx.stxghshsj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ kt.jbxx.stxghyj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="签字">
|
||||
<div>
|
||||
<el-image :src="kt.jbxx.stxghfzrqz" style="width: 200px;height:auto"
|
||||
v-if="kt.jbxx.stxghfzrqz"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
|
||||
<!--# if(@shiro.hasRole('superadmin') || @shiro.hasRole('A06')){ #-->
|
||||
<el-tab-pane v-if="kt.jbxx.state>=40 && showPaneBeforePwJtPs" label="评委立项评审信息" name="4">
|
||||
<div>
|
||||
<el-card shadow="never">
|
||||
<el-table :data="kt.lxpsxx" border>
|
||||
<el-table-column label="评委姓名" prop="username"></el-table-column>
|
||||
<el-table-column label="评委工号" prop="loginname"></el-table-column>
|
||||
<el-table-column label="是否建议立项" prop="username">
|
||||
<template scope="{row}">
|
||||
{{ row.isjylx === 1 ? '√' : row.isjylx === 0 ? '×' : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="立项等次" prop="username">
|
||||
<template scope="{row}">
|
||||
{{ row.lxlevel ? row.lxlevel + '元' : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="评审意见" prop="psyj"></el-table-column>
|
||||
<el-table-column label="评审时间" prop="pssj"></el-table-column>
|
||||
<el-table-column label="是否评审" prop="username">
|
||||
<template scope="{row}">
|
||||
<i :class="row.pssj==null?'text-danger el-icon-circle-close':'text-success el-icon-circle-check'">
|
||||
{{ row.pssj == null ? '未审' : '已审' }}
|
||||
</i>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="签字" prop="pwlxqz">
|
||||
<template scope="{row}">
|
||||
<el-image v-if="row.pwlxqz" :src="row.pwlxqz"
|
||||
style="width: auto;height:50px;cursor:pointer"
|
||||
title="查看签字"
|
||||
@click="viewQz(row.pwlxqz)"></el-image>
|
||||
<div v-else>暂无</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<!--# } #-->
|
||||
|
||||
<el-tab-pane v-if="kt.jbxx.state>50 && showPaneBeforePwJtPs" label="校工会立项评审信息" name="5">
|
||||
<el-card>
|
||||
|
||||
<el-form label-width="120px" label-suffix=":">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人">
|
||||
{{ kt.jbxx.lxusername }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="立项审核时间">
|
||||
{{ kt.jbxx.lxsj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="立项结果">
|
||||
{{ kt.jbxx.lxresult ? '立项' : '不予立项' }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="立项等次">
|
||||
{{ kt.jbxx.lxlevel }}元
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="签字">
|
||||
<el-image :src="kt.jbxx.xghlxqz" style="width: 200px;height:auto"
|
||||
v-if="kt.jbxx.xghlxqz"></el-image>
|
||||
<div v-else>暂无</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
|
||||
</el-form>
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="kt.jbxx.state>60 && kt.jbxx.lxresult===1 && showPaneBeforePwJtPs" label="中期检查提醒" name="6">
|
||||
<el-card>
|
||||
<el-form label-width="120px" label-suffix=":">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="提醒时间">
|
||||
{{ kt.jbxx.zqtbtxsj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="截止时间">
|
||||
{{ kt.jbxx.zqtbjzsj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="kt.jbxx.state>70 && kt.jbxx.lxresult===1 && showPaneBeforePwJtPs" label="中期检查表" name="7">
|
||||
<el-card>
|
||||
|
||||
<el-form label-width="200px" label-suffix=":">
|
||||
<el-row gutter="20">
|
||||
<el-form-item label="项目的进展情况及存在的问题">
|
||||
{{ kt.jbxx.zqxmjzqk }}
|
||||
</el-form-item>
|
||||
<el-form-item label="经费预算明细">
|
||||
{{ kt.jbxx.zqjfysmx }}
|
||||
</el-form-item>
|
||||
<el-form-item label="备注">
|
||||
{{ kt.jbxx.zqbz }}
|
||||
</el-form-item>
|
||||
<el-form-item label="附件">
|
||||
<div class="pointer"
|
||||
@click="()=>{window.location.href=base+'/platform/syr/common/exportzqjcb?id='+this.kt.jbxx.id}">
|
||||
<svg id="icon-yunpanlogo-2" height="20" viewBox="0 0 1024 1024" width="20">
|
||||
<path
|
||||
d="M902.095238 314.514286V853.333333a97.52381 97.52381 0 0 1-97.523809 97.52381H219.428571a97.52381 97.52381 0 0 1-97.523809-97.52381V170.666667a97.52381 97.52381 0 0 1 97.523809-97.52381h441.295239z"
|
||||
fill="#4997D9"></path>
|
||||
<path d="M571.245714 720.944762h50.956191L707.047619 449.340952h-50.95619l-84.845715 271.60381z"
|
||||
fill="#FFFFFF"></path>
|
||||
<path
|
||||
d="M660.72381 265.752381V73.142857l241.371428 241.371429h-192.609524a48.761905 48.761905 0 0 1-48.761904-48.761905z"
|
||||
fill="#4B80CB"></path>
|
||||
<path d="M622.201905 720.944762h-50.956191l-84.601904-237.470476h50.71238l84.845715 237.470476z"
|
||||
fill="#FFFFFF"></path>
|
||||
<path d="M401.798095 720.944762h50.956191l84.601904-237.470476h-50.71238l-84.845715 237.470476z"
|
||||
fill="#FFFFFF"></path>
|
||||
<path d="M452.754286 720.944762h-50.956191L316.952381 449.340952h50.95619l84.845715 271.60381z"
|
||||
fill="#FFFFFF"></path>
|
||||
</svg>
|
||||
中期检查表.docx
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="kt.jbxx.state>80 && kt.jbxx.lxresult===1 && showPaneBeforePwJtPs" label="中期审核信息" name="8">
|
||||
<el-card>
|
||||
<el-form label-width="120px" label-suffix=":">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人">
|
||||
{{ kt.jbxx.zqxghfzr }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ kt.jbxx.zqxghshsj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ kt.jbxx.zqxghyj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="kt.jbxx.state>90 && kt.jbxx.lxresult===1" label="结题报告" name="9">
|
||||
<el-card>
|
||||
<table class="table table-bordered" style="border-top: 0">
|
||||
<tr>
|
||||
<td class="text-center" colspan="6" style="font-size: 20px;">
|
||||
{{ kt.jbxx.xmmc }}
|
||||
<!-- <el-tooltip content="点我可以导出申报表" effect="dark" placement="top-start">
|
||||
<i class="el-icon-tickets text-primary pointer"
|
||||
@click="()=>{ window.open(base+'/platform/syr/common/exportlxsbs?id='+this.kt.jbxx.id)}">
|
||||
</i>
|
||||
</el-tooltip>-->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td-title" width="11.1%">姓名</td>
|
||||
<td class="td-content" width="22.2%">{{ kt.jbxx.username }}</td>
|
||||
<td class="td-title" width="11.1%">性别</td>
|
||||
<td td-content width="22.2%">{{ kt.jbxx.sex }}</td>
|
||||
<td class="td-title" width="11.1%">立项资助金额</td>
|
||||
<td td-content width="22.2%">{{ kt.jbxx.lxlevel }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="td-title">职务/职称</td>
|
||||
<td td-content>{{ kt.jbxx.zwzc }}</td>
|
||||
<td class="td-title">所在单位</td>
|
||||
<td td-content>{{ kt.jbxx.dwname }}</td>
|
||||
<td class="td-title">手机</td>
|
||||
<td td-content>{{ kt.jbxx.mobile }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-center" colspan="6"
|
||||
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
|
||||
项目组成员
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6" style="padding:0!important;border-top: none">
|
||||
<table class="table table-bordered" style="border-top: 0;border-left: 0;border-right: 0">
|
||||
<tr>
|
||||
<td>姓名</td>
|
||||
<td>职称</td>
|
||||
<!-- <td>学历</td>-->
|
||||
<td>工作单位及职务</td>
|
||||
</tr>
|
||||
<tr v-for="o in kt.jbxx.xmzcy">
|
||||
<td>{{ o.username }}</td>
|
||||
<td>{{ o.zc }}</td>
|
||||
<!-- <td>{{ o.xl }}</td>-->
|
||||
<td>{{ o.gzdw }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="text-center" colspan="6"
|
||||
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
|
||||
项目研究实践的主要内容及方法
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<div class="text-left" v-html="kt.jtbgs.zynr"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-center" colspan="6"
|
||||
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
|
||||
成果自我评价及应用范围或取得的社会效益
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<div class="text-left" v-html="kt.jtbgs.zwpjshxy"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-center" colspan="6"
|
||||
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
|
||||
主要成果介绍
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<div class="text-left" v-html="kt.jtbgs.zycgjs"></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="text-center" colspan="6"
|
||||
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
|
||||
成果目录
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6" style="padding:0!important;border-top: none">
|
||||
<table class="table table-bordered" style="border-top: 0;border-left: 0;border-right: 0">
|
||||
<tr>
|
||||
<td>成果形式</td>
|
||||
<td>成果名称</td>
|
||||
<td>主要完成人</td>
|
||||
</tr>
|
||||
<tr v-for="o in JSON.parse(kt.jtbgs.cgml)">
|
||||
<td>{{ o.cgmc }}</td>
|
||||
<td>{{ o.cgxs }}</td>
|
||||
<td>{{ o.zywcr }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="text-center" colspan="6"
|
||||
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
|
||||
经费使用情况
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<div class="text-left" v-html="kt.jtbgs.jfsyqk"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-center" colspan="6"
|
||||
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
|
||||
研究成果及佐证材料文件
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<div v-for="o in kt.yjcgfj" class="pointer text-left"
|
||||
@click="dd3s.download(o.filepath,o.filename)">
|
||||
<svg id="icon-yunpanlogo-2" height="20" viewBox="0 0 1024 1024" width="20">
|
||||
<path
|
||||
d="M902.095238 314.514286V853.333333a97.52381 97.52381 0 0 1-97.523809 97.52381H219.428571a97.52381 97.52381 0 0 1-97.523809-97.52381V170.666667a97.52381 97.52381 0 0 1 97.523809-97.52381h441.295239z"
|
||||
fill="#4997D9"></path>
|
||||
<path d="M571.245714 720.944762h50.956191L707.047619 449.340952h-50.95619l-84.845715 271.60381z"
|
||||
fill="#FFFFFF"></path>
|
||||
<path
|
||||
d="M660.72381 265.752381V73.142857l241.371428 241.371429h-192.609524a48.761905 48.761905 0 0 1-48.761904-48.761905z"
|
||||
fill="#4B80CB"></path>
|
||||
<path d="M622.201905 720.944762h-50.956191l-84.601904-237.470476h50.71238l84.845715 237.470476z"
|
||||
fill="#FFFFFF"></path>
|
||||
<path d="M401.798095 720.944762h50.956191l84.601904-237.470476h-50.71238l-84.845715 237.470476z"
|
||||
fill="#FFFFFF"></path>
|
||||
<path d="M452.754286 720.944762h-50.956191L316.952381 449.340952h50.95619l84.845715 271.60381z"
|
||||
fill="#FFFFFF"></path>
|
||||
</svg>
|
||||
{{ o.filename }}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="kt.jbxx.state>91 && kt.jbxx.lxresult===1" label="结题院级工会初审" name="9.1">
|
||||
<el-card>
|
||||
<el-form label-width="120px" label-suffix=":">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人">
|
||||
{{ kt.jbxx.jtfghcsfzr }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ kt.jbxx.jtfghshcssj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否通过">
|
||||
<span v-if="kt.jbxx.jtfghcsispass==null"></span>
|
||||
<span v-else>
|
||||
{{ kt.jbxx.jtfghcsispass ? '是' : '否' }}
|
||||
</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ kt.jbxx.jtfghcsyj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="签字">
|
||||
<div>
|
||||
<el-image :src="kt.jbxx.jtfghcsqz" style="width: 200px;height:auto"
|
||||
v-if="kt.jbxx.jtfghcsqz"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="kt.jbxx.state>92 && kt.jbxx.lxresult===1" label="结题校工会初审" name="9.2">
|
||||
<el-card>
|
||||
<el-form label-width="120px" label-suffix=":">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人">
|
||||
{{ kt.jbxx.jtxghcsfzr }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ kt.jbxx.jtxghshcssj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否通过">
|
||||
{{ kt.jbxx.jtxghcsispass ? '是' : '否' }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
{{ kt.jbxx.jtxghcsyj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
|
||||
<!--# if(@shiro.hasRole('superadmin') || @shiro.hasRole('A06')){ #-->
|
||||
<el-tab-pane v-if="kt.jbxx.state>=100 && kt.jbxx.lxresult===1" label="评委结题评审信息"
|
||||
name="10">
|
||||
<div>
|
||||
<el-card shadow="never">
|
||||
<el-table :data="kt.jtpsxx" border>
|
||||
<el-table-column label="评委姓名" prop="username"></el-table-column>
|
||||
<el-table-column label="评委工号" prop="loginname"></el-table-column>
|
||||
<el-table-column label="是否同意结题">
|
||||
<template scope="{row}">
|
||||
{{ row.ispass === 1 ? '√' : row.ispass === 0 ? '×' : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否优秀" prop="isgood">
|
||||
<template scope="{row}">
|
||||
{{ row.isgood === 1 ? '√' : row.isgood === 0 ? '×' : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="评审意见" prop="psjy"></el-table-column>
|
||||
<el-table-column label="评审时间" prop="pssj"></el-table-column>
|
||||
<el-table-column label="是否评审">
|
||||
<template scope="{row}">
|
||||
<i :class="row.ispass==null?'text-danger el-icon-circle-close':'text-success el-icon-circle-check'">
|
||||
{{ row.ispass == null ? '未审' : '已审' }}
|
||||
</i>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="签字" prop="pwjtqz">
|
||||
<template scope="{row}">
|
||||
<el-image v-if="row.pwjtqz" :src="row.pwjtqz"
|
||||
style="width: auto;height:50px;cursor:pointer"
|
||||
title="查看签字"
|
||||
@click="viewQz(row.pwjtqz)"></el-image>
|
||||
<div v-else>暂无</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<!--# } #-->
|
||||
|
||||
<el-tab-pane v-if="kt.jbxx.state>110 && kt.jbxx.lxresult===1" label="校工会结题评审信息"
|
||||
name="11">
|
||||
<el-card>
|
||||
<el-form label-width="120px" label-suffix=":">
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="评审人">
|
||||
{{ kt.jbxx.jtxghfzr }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="评审时间">
|
||||
{{ kt.jbxx.jtxghshsj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否通过">
|
||||
{{ kt.jbxx.ispass ? '是' : '否' }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-if="kt.jbxx.ispass===1">
|
||||
<el-form-item label="是否优秀">
|
||||
{{ kt.jbxx.isgood ? '是' : '否' }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核意见">
|
||||
{{ kt.jbxx.jtxghyj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
|
||||
<!--handle 主要是审核操作-->
|
||||
<slot name="handle"></slot>
|
||||
</el-tabs>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
activeName: {
|
||||
type: String,
|
||||
default: '1'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
kt: {
|
||||
jbxx: {},
|
||||
lxpsxx: {},
|
||||
jtpsxx: {},
|
||||
jtbgs: {},
|
||||
yjcgfj: []
|
||||
},
|
||||
showPaneBeforePwJtPs: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async openView(id, activeName = '1') {
|
||||
/*if (activeName === 'pwjtps' || activeName === '9' || activeName === 'jtsq' || activeName === 'jtcsyjsh'
|
||||
|| activeName === 'jtcsxjsh' || activeName === 'xghpsjg') {
|
||||
this.showPaneBeforePwJtPs = false
|
||||
}*/
|
||||
|
||||
const resp = await $.get(base + '/platform/syr/common/findOne', {id})
|
||||
this.activeName = activeName
|
||||
/* if(activeName === 'pwjtps' || activeName === 'jtsq' || activeName === 'jtcsyjsh' || activeName === 'jtcsxjsh'
|
||||
|| activeName === 'xghpsjg') {
|
||||
this.activeName = '9'
|
||||
}*/
|
||||
if (resp.code === 0) {
|
||||
this.$set(this, 'kt', resp.data)
|
||||
if (resp.data.jbxx.state > 90 && resp.data.jbxx.state < 120 && resp.data.jbxx.lxresult === 1) {
|
||||
this.showPaneBeforePwJtPs = false
|
||||
}else if (resp.data.jbxx.state === 90 && resp.data.jbxx.lxresult === 1 && activeName !== 'jtsq'){
|
||||
this.showPaneBeforePwJtPs = true
|
||||
this.activeName = '1'
|
||||
}else if (resp.data.jbxx.state === 120 && resp.data.jbxx.lxresult === 1){
|
||||
this.showPaneBeforePwJtPs = false
|
||||
this.activeName = '9'
|
||||
}else {
|
||||
this.showPaneBeforePwJtPs = true
|
||||
}
|
||||
/*if (resp.data.jbxx.state === 120){
|
||||
this.showPaneBeforePwJtPs = false
|
||||
this.activeName='9'
|
||||
}*/
|
||||
this.kt.jbxx.xmzcy = JSON.parse(resp.data.jbxx.xmzcy)
|
||||
/*if (this.kt.jbxx.state >= 40) {
|
||||
this.initPwLxPsPlot()
|
||||
}
|
||||
if (this.kt.jbxx.state > 100 && this.kt.jbxx.lxresult === 1) {
|
||||
this.initPwJtPsPlot()
|
||||
}*/
|
||||
}
|
||||
},
|
||||
initPwLxPsPlot() {
|
||||
//已评审的
|
||||
let ypsList = this.kt.lxpsxx.filter(o => o.pssj !== null)
|
||||
if (ypsList.length > 0) {
|
||||
this.pwlxxxshow = true
|
||||
}
|
||||
//建议立项的
|
||||
let jylxList = this.kt.lxpsxx.filter(o => o.isjylx === 1)
|
||||
|
||||
this.$nextTick(() => {
|
||||
const jylxDiv = document.getElementById('jylxDiv')
|
||||
const jylxChart = echarts.init(jylxDiv)
|
||||
const value = (jylxList.length / ypsList.length) * 100;
|
||||
const option = {
|
||||
tooltip: {
|
||||
formatter: '{a} <br/>{b} : {c}%'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Pressure',
|
||||
type: 'gauge',
|
||||
progress: {
|
||||
show: true
|
||||
},
|
||||
detail: {
|
||||
valueAnimation: true,
|
||||
formatter: '{value}'
|
||||
},
|
||||
data: [
|
||||
{
|
||||
value: value,
|
||||
name: '建议立项率'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
jylxChart.setOption(option)
|
||||
|
||||
|
||||
const level2List = this.kt.lxpsxx.filter(o => {
|
||||
return o.lxlevel === '2000'
|
||||
})
|
||||
const level3List = this.kt.lxpsxx.filter(o => {
|
||||
return o.lxlevel === '3000'
|
||||
})
|
||||
const level5List = this.kt.lxpsxx.filter(o => {
|
||||
return o.lxlevel === '5000'
|
||||
})
|
||||
let roleData = [{name: '2000元', value: level2List.length}, {
|
||||
name: '3000元',
|
||||
value: level3List.length
|
||||
}, {name: '5000元', value: level5List.length}]
|
||||
|
||||
const lxlevelChart = echarts.init(document.getElementById('lxlevelDiv'))
|
||||
lxlevelChart.setOption({
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '立项等次',
|
||||
type: 'pie',
|
||||
radius: '50%',
|
||||
data: roleData,
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
})
|
||||
},
|
||||
initPwJtPsPlot() {
|
||||
//已评审的
|
||||
let ypsList = this.kt.jtpsxx.filter(o => o.pssj !== null)
|
||||
//通过的
|
||||
let passList = this.kt.jtpsxx.filter(o => o.ispass === 1)
|
||||
//优秀的
|
||||
let goodList = this.kt.jtpsxx.filter(o => o.isgood === 1)
|
||||
|
||||
this.$nextTick(() => {
|
||||
const passChart = echarts.init(document.getElementById('passDiv'))
|
||||
const passValue = (passList.length / ypsList.length) * 100
|
||||
passChart.setOption({
|
||||
tooltip: {
|
||||
formatter: '{a} <br/>{b} : {c}%'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Pressure',
|
||||
type: 'gauge',
|
||||
progress: {
|
||||
show: true
|
||||
},
|
||||
detail: {
|
||||
valueAnimation: true,
|
||||
formatter: '{value}'
|
||||
},
|
||||
data: [
|
||||
{
|
||||
value: passValue,
|
||||
name: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
const goodChart = echarts.init(document.getElementById('goodDiv'))
|
||||
const goodValue = (goodList.length / passList.length) * 100
|
||||
goodChart.setOption({
|
||||
tooltip: {
|
||||
formatter: '{a} <br/>{b} : {c}%'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Pressure',
|
||||
type: 'gauge',
|
||||
progress: {
|
||||
show: true
|
||||
},
|
||||
detail: {
|
||||
valueAnimation: true,
|
||||
formatter: '{value}'
|
||||
},
|
||||
data: [
|
||||
{
|
||||
value: goodValue,
|
||||
name: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
})
|
||||
|
||||
},
|
||||
viewQz(content) {
|
||||
let image = new Image();
|
||||
image.src = content
|
||||
let viewer = new Viewer(image);
|
||||
viewer.show();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.pwlxTable td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,354 @@
|
||||
<template>
|
||||
<transition name="el-zoom-in-center">
|
||||
<div class="transition-item" v-show="smm.status==='detail'">
|
||||
<el-card shadow="never" class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<el-button icon="el-icon-back" type="text" @click="changeStatus" style="font-size: 18px">返回</el-button>
|
||||
</div>
|
||||
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
let passPlot = null
|
||||
let goodPlot = null
|
||||
|
||||
let jylxPlot = null
|
||||
let lxlevelPlot = null
|
||||
|
||||
|
||||
module.exports = {
|
||||
data() {
|
||||
return {
|
||||
kt: {
|
||||
jbxx: {},
|
||||
lxpsxx: {},
|
||||
jtpsxx: {},
|
||||
jtbgs: {},
|
||||
yjcgfj: []
|
||||
},
|
||||
pwlxxxshow: false,
|
||||
pwjtxxshow: false
|
||||
}
|
||||
},
|
||||
props: {
|
||||
smm: {
|
||||
type: 'Object',
|
||||
default: () => {
|
||||
return {
|
||||
status: 'table',
|
||||
id: '',
|
||||
active: '1',
|
||||
showpane: [1],
|
||||
request: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
smm(o) {
|
||||
if (o.status === 'detail') {
|
||||
this.getData(o.id)
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
changeStatus() {
|
||||
this.smm.status = 'table'
|
||||
this.$emit('update:smm', this.smm)
|
||||
},
|
||||
getData(val) {
|
||||
$.get(base + '/platform/syr/common/findOne', {id: val}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.kt = res.data
|
||||
this.kt.jbxx.xmzcy = JSON.parse(res.data.jbxx.xmzcy)
|
||||
if (this.kt.jbxx.state >= 40 && this.smm.showpane.includes(4)) {
|
||||
this.initPwLxPsPlot()
|
||||
}
|
||||
if (this.kt.jbxx.state > 100 && this.kt.jbxx.lxresult === 1 && this.smm.showpane.includes(10)) {
|
||||
this.initPwJtPsPlot()
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
initPwLxPsPlot() {
|
||||
//已评审的
|
||||
let ypsList = this.kt.lxpsxx.filter(o => o.pssj !== null)
|
||||
if (ypsList.length > 0) {
|
||||
this.pwlxxxshow = true
|
||||
}
|
||||
//建议立项的
|
||||
let jylxList = this.kt.lxpsxx.filter(o => o.isjylx === 1)
|
||||
|
||||
this.$nextTick(() => {
|
||||
const jylxDiv = document.getElementById('jylxDiv')
|
||||
const jylxChart = echarts.init(jylxDiv)
|
||||
const value = (jylxList.length / ypsList.length) * 100;
|
||||
const option = {
|
||||
tooltip: {
|
||||
formatter: '{a} <br/>{b} : {c}%'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Pressure',
|
||||
type: 'gauge',
|
||||
progress: {
|
||||
show: true
|
||||
},
|
||||
detail: {
|
||||
valueAnimation: true,
|
||||
formatter: '{value}'
|
||||
},
|
||||
data: [
|
||||
{
|
||||
value: value,
|
||||
name: '建议立项率'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
jylxChart.setOption(option)
|
||||
|
||||
|
||||
const level2List = this.kt.lxpsxx.filter(o => {
|
||||
return o.lxlevel === '2000'
|
||||
})
|
||||
const level3List = this.kt.lxpsxx.filter(o => {
|
||||
return o.lxlevel === '3000'
|
||||
})
|
||||
const level5List = this.kt.lxpsxx.filter(o => {
|
||||
return o.lxlevel === '5000'
|
||||
})
|
||||
let roleData = [{name: '2000元', value: level2List.length}, {
|
||||
name: '3000元',
|
||||
value: level3List.length
|
||||
}, {name: '5000元', value: level5List.length}]
|
||||
|
||||
const lxlevelChart = echarts.init(document.getElementById('lxlevelDiv'))
|
||||
lxlevelChart.setOption({
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '立项等次',
|
||||
type: 'pie',
|
||||
radius: '50%',
|
||||
data: roleData,
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
})
|
||||
},
|
||||
initPwJtPsPlot() {
|
||||
//已评审的
|
||||
let ypsList = this.kt.jtpsxx.filter(o => o.pssj !== null)
|
||||
//通过的
|
||||
let passList = this.kt.jtpsxx.filter(o => o.ispass === 1)
|
||||
//优秀的
|
||||
let goodList = this.kt.jtpsxx.filter(o => o.isgood === 1)
|
||||
|
||||
this.$nextTick(() => {
|
||||
const passChart = echarts.init(document.getElementById('passDiv'))
|
||||
const passValue = (passList.length / ypsList.length) * 100
|
||||
passChart.setOption({
|
||||
tooltip: {
|
||||
formatter: '{a} <br/>{b} : {c}%'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Pressure',
|
||||
type: 'gauge',
|
||||
progress: {
|
||||
show: true
|
||||
},
|
||||
detail: {
|
||||
valueAnimation: true,
|
||||
formatter: '{value}'
|
||||
},
|
||||
data: [
|
||||
{
|
||||
value: passValue,
|
||||
name: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
const goodChart = echarts.init(document.getElementById('goodDiv'))
|
||||
const goodValue = (goodList.length / passList.length) * 100
|
||||
goodChart.setOption({
|
||||
tooltip: {
|
||||
formatter: '{a} <br/>{b} : {c}%'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Pressure',
|
||||
type: 'gauge',
|
||||
progress: {
|
||||
show: true
|
||||
},
|
||||
detail: {
|
||||
valueAnimation: true,
|
||||
formatter: '{value}'
|
||||
},
|
||||
data: [
|
||||
{
|
||||
value: goodValue,
|
||||
name: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
// if(passPlot){passPlot.destory()}
|
||||
// this.$nextTick(()=>{
|
||||
// passPlot = new G2Plot.Liquid(document.getElementById('passDiv'), {
|
||||
// forceFit: false,
|
||||
// width: 150,
|
||||
// height: 150,
|
||||
// min: 0,
|
||||
// max: ypsList.length,
|
||||
// value: passList.length,
|
||||
// statistic: {
|
||||
// formatter: (value) => ((100 * value) / ypsList.length).toFixed(1) + '%',
|
||||
// }
|
||||
// })
|
||||
// passPlot.render()
|
||||
// })
|
||||
|
||||
|
||||
// if(goodPlot){goodPlot.destory()}
|
||||
// this.$nextTick(()=>{
|
||||
// goodPlot = new G2Plot.Liquid(document.getElementById('goodDiv'), {
|
||||
// forceFit: false,
|
||||
// width: 150,
|
||||
// height: 150,
|
||||
// min: 0,
|
||||
// max: passList.length,
|
||||
// value: goodList.length,
|
||||
// statistic: {
|
||||
// formatter: (value) => ((100 * value) / passList.length).toFixed(1) + '%',
|
||||
// }
|
||||
// })
|
||||
// goodPlot.render()
|
||||
// })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.td-title {
|
||||
/*background-color: #EBEEF5;*/
|
||||
}
|
||||
|
||||
.td-content {
|
||||
color: gray;
|
||||
}
|
||||
|
||||
.table-bordered > tbody > tr > td {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.el-tab-pane {
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.el-collapse-item__header {
|
||||
background-color: #317fca !important;
|
||||
color: #fff !important;
|
||||
padding-left: 10px !important;
|
||||
height: 35px !important;
|
||||
line-height: 35px !important;
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.table {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.table-bordered {
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
.item-label {
|
||||
width: 150px;
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
float: left;
|
||||
font-size: 14px;
|
||||
color: #606266;
|
||||
line-height: 40px;
|
||||
padding: 0 12px 0 0;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.item-label:after {
|
||||
content: ':';
|
||||
}
|
||||
|
||||
.item-content {
|
||||
margin-left: 150px;
|
||||
line-height: 40px;
|
||||
position: relative;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.level-span {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
text-align: center;
|
||||
display: inline-block;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.level-1 {
|
||||
border: 1px solid #DC143C;
|
||||
color: #DC143C;
|
||||
}
|
||||
|
||||
.level-2 {
|
||||
border: 1px solid #FF69B4;
|
||||
color: #FF69B4;
|
||||
}
|
||||
|
||||
.level-3 {
|
||||
border: 1px solid #FF4500;
|
||||
color: #FF4500;
|
||||
}
|
||||
|
||||
.text-maxheight {
|
||||
max-height: 200px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.box-card-syr {
|
||||
/*width: 50%;*/
|
||||
/*margin: 10px;*/
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,262 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card shadow="never">
|
||||
<div class="search">
|
||||
<div class="search-item">
|
||||
<div class="search-item-label yearDatePickerItemLabel" style="width: 100%;margin-right: 0">
|
||||
<el-select v-model="yeartype" placeholder="年度类型"
|
||||
style="width: 100%">
|
||||
<el-option label="申报年度" value="sbyear"></el-option>
|
||||
<el-option label="结题年度" value="jtyear"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="search-item-option yearDatePickerItemOption"
|
||||
style="width: calc(100% - 160px);min-width:calc(100% - 160px)">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
v-model="page.year"
|
||||
type="year"
|
||||
value-format="yyyy">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">项目名称:</div>
|
||||
<div class="search-item-option">
|
||||
<el-input v-model="page.xmmc" clearable placeholder="请输入项目名称查询" style="width: 100%;" @keyup.enter.native="doSearch"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">申报人:</div>
|
||||
<div class="search-item-option">
|
||||
<el-input v-model="page.searchKeyword" clearable placeholder="请输入内容" @keyup.enter.native="doSearch">
|
||||
<el-select slot="prepend" v-model="page.searchName" placeholder="查询类型"
|
||||
style="width: 120px;">
|
||||
<el-option label="申报人姓名" value="u.username"></el-option>
|
||||
<el-option label="申报人工号" value="u.loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-item" v-show="!hasNotghdwUrl.includes(request)">
|
||||
<div class="search-item-label">院级工会:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select v-model="page.unionid" clearable filterable placeholder="请选择院级工会" @change="getUnitList()"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in unionList"
|
||||
:key="item.id"
|
||||
:label="item.unionname"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-item" v-show="!hasNotghdwUrl.includes(request)">
|
||||
<div class="search-item-label">单位:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select v-model="page.unitid" clearable filterable placeholder="请选择单位" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in unitList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<slot name="search-group">
|
||||
<!--不同页面的查询条件自定义-->
|
||||
</slot>
|
||||
<div class="search-query">
|
||||
<el-button icon="el-icon-search" type="primary" @click="doSearch"></el-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!--<template v-show="!hasNotghdwUrl.includes(request)">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-select v-model="page.unionid" clearable filterable placeholder="请选择院级工会" @change="getUnitList()">
|
||||
<el-option
|
||||
v-for="item in unionList"
|
||||
:key="item.id"
|
||||
:label="item.unionname"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-select v-model="page.unitid" clearable filterable placeholder="请选择单位">
|
||||
<el-option
|
||||
v-for="item in unitList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</template>-->
|
||||
|
||||
|
||||
</el-card>
|
||||
<el-card class="mt10" shadow="never">
|
||||
<vi-title2 title="选题列表">
|
||||
<template #func>
|
||||
<div v-if="!isshow" class="pull-right offscreen-right mt5">
|
||||
<el-radio-group v-model="page.isAudit" class="mr10" @change="doSearch" size="small">
|
||||
<el-radio-button :label="null">全部</el-radio-button>
|
||||
<el-radio-button :label="true">已{{ auditval }}</el-radio-button>
|
||||
<el-radio-button :label="false">未{{ auditval }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
<slot name="right"></slot>
|
||||
<!-- <el-button v-if="request==='/platfotm/syr/info/zqtb/pageData'"size="medium" @click="doDeleteUsers"><i class="ti-plus"></i> 一键提醒</el-button>-->
|
||||
</div>
|
||||
</template>
|
||||
</vi-title2>
|
||||
<el-table :data="data" @sort-change='pageOrder'>
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (page.pageNumber - 1) * page.pageSize + 1 }} </span></template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目名称" prop="xmmc" show-overflow-tooltip width="400"></el-table-column>
|
||||
<el-table-column v-if="request==='/platfotm/syr/info/zqtb/pageData'" label="中期检查截止时间" prop="zqtbjzsj"
|
||||
width="200"></el-table-column>
|
||||
<el-table-column label="申报人" prop="username"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex" sortable width="100"></el-table-column>
|
||||
<el-table-column label="申报单位" prop="dwname" show-overflow-tooltip sortable width="150"></el-table-column>
|
||||
<el-table-column label="院级工会" prop="ghname" show-overflow-tooltip sortable width="150"></el-table-column>
|
||||
<!-- <el-table-column label="职务职称" prop="zwzc" show-overflow-tooltip sortable width="100"></el-table-column>-->
|
||||
|
||||
<el-table-column label="立项资助金额(元)" prop="lxlevel" width="150"></el-table-column>
|
||||
|
||||
<el-table-column label="状态" prop="statename" sortable sortable width="200"></el-table-column>
|
||||
<el-table-column label="申报日期" prop="sbrq" sortable sortable width="100"></el-table-column>
|
||||
<slot name="operation"></slot>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
:current-page="page.pageNumber"
|
||||
:page-size="page.pageSize"
|
||||
:total="page.totalCount"
|
||||
layout="total, prev, pager, next, jumper"
|
||||
@current-change="pageNumberChange">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
data() {
|
||||
return {
|
||||
selection: [],
|
||||
hasNotghdwUrl: ['/platfotm/syr/info/jtsq/pageData', '/platfotm/syr/info/mykt/pageData', '/platfotm/syr/info/zqtb/pageData'],
|
||||
data: [],
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
page: {
|
||||
yearType: 'sbyear',
|
||||
year: moment().format('YYYY'),
|
||||
isAudit: false,
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: '',
|
||||
pageOrderBy: '',
|
||||
searchName: 'u.username',
|
||||
searchKeyword: '',
|
||||
xmmc: '',
|
||||
unitid: '',
|
||||
unionid: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
props: {
|
||||
yeartype: {
|
||||
type: String,
|
||||
default: 'sbyear'
|
||||
},
|
||||
smm: {
|
||||
type: 'Object',
|
||||
default: () => {
|
||||
return {
|
||||
status: '',
|
||||
request: '',
|
||||
rowsel: false,
|
||||
}
|
||||
}
|
||||
},
|
||||
request: {
|
||||
type: String
|
||||
},
|
||||
auditval: {
|
||||
type: String
|
||||
},
|
||||
isshow: {
|
||||
type: Boolean
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async pageData() {
|
||||
this.page.yearType = this.yeartype
|
||||
const {data} = await $.post(base + this.request, this.page, true)
|
||||
this.data = data.list
|
||||
this.page.totalCount = data.totalCount
|
||||
},
|
||||
pageOrder(column) {
|
||||
this.page.pageOrderName = column.prop
|
||||
this.page.pageOrderBy = column.order
|
||||
this.pageData()
|
||||
},
|
||||
pageNumberChange(val) {
|
||||
this.page.pageNumber = val
|
||||
this.pageData()
|
||||
},
|
||||
doSearch() {
|
||||
this.page.pageNumber = 1
|
||||
this.pageData()
|
||||
},
|
||||
async getUnitList() {
|
||||
this.page.unitid = ''
|
||||
this.unitList = await getUnits(this.page.unionid)
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
smm: {
|
||||
handler(o) {
|
||||
let that = this
|
||||
if (o.status === 'table') {
|
||||
that.pageData()
|
||||
}
|
||||
},
|
||||
deep: true,
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
await this.pageData()
|
||||
this.unionList = await getUnions(null)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.yearDatePickerItemLabel .el-select {
|
||||
background-color: #f5f7fa;
|
||||
color: #909399;
|
||||
}
|
||||
|
||||
.yearDatePickerItemLabel .el-input__inner {
|
||||
border-bottom-right-radius: unset;
|
||||
border-top-right-radius: unset;
|
||||
/*border-right: 0;*/
|
||||
}
|
||||
|
||||
.yearDatePickerItemOption .el-input__inner {
|
||||
border-bottom-left-radius: unset;
|
||||
border-top-left-radius: unset;
|
||||
border-left: 0;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,271 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
|
||||
@keyup.enter.native="doSearch">
|
||||
<el-select v-model="pageForm.searchName" slot="prepend"
|
||||
placeholder="查询类型"
|
||||
style="width: 120px;">
|
||||
<el-option label="角色" value="role.name"></el-option>
|
||||
<el-option label="姓名" value="u.username"></el-option>
|
||||
<el-option label="工号" value="u.loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-button type="primary" icon="el-icon-search"
|
||||
@click="pageData"></el-button>
|
||||
</div>
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<el-button size="medium" @click="openAdd"><i class="ti-plus"></i> 添加
|
||||
</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card class="mt10" shadow="never">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
size="medium"
|
||||
header-align="center"
|
||||
height="650"
|
||||
v-loading="tableLoading"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table-column
|
||||
prop="rolename"
|
||||
label="角色"
|
||||
header-align="center"
|
||||
align="center" show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="username"
|
||||
label="姓名"
|
||||
header-align="center"
|
||||
align="center" show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="loginname"
|
||||
label="工号"
|
||||
header-align="center"
|
||||
align="center" show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="mobile"
|
||||
label="联系方式"
|
||||
header-align="center"
|
||||
align="center" show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column
|
||||
prop="userOnline"
|
||||
label="操作"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="150">
|
||||
<template scope="{row}">
|
||||
<el-popconfirm
|
||||
title="确定要删除吗?"
|
||||
@confirm="doDelete(row)"
|
||||
>
|
||||
<el-button slot="reference" size="mini" :loading="row.delLoading" type="danger" icon="el-icon-delete">
|
||||
</el-button>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
|
||||
<el-dialog
|
||||
title="添加"
|
||||
:visible.sync="addDialogVisible" width="40%">
|
||||
|
||||
<el-form :model="formData" ref="addForm" :rules="formRules" label-width="80px">
|
||||
<el-form-item prop="roleCode" label="角色">
|
||||
|
||||
<el-select v-model="formData.roleCode"
|
||||
placeholder="角色" filterable
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in roleOptions"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code">
|
||||
</el-option>
|
||||
</el-select>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="userId" label="人员">
|
||||
|
||||
<el-select
|
||||
style="width: 100%"
|
||||
v-model="formData.userId"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请输入姓名或工号查找"
|
||||
:remote-method="(k)=>{userRemoteMethod(k)}"
|
||||
:loading="userLoading">
|
||||
<el-option
|
||||
v-for="i in userOptions"
|
||||
:key="i.id"
|
||||
:label="i.username+'('+i.loginname+')'"
|
||||
:value="i.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="addDialogVisible = false" :disabled="submitLoading">取 消</el-button>
|
||||
<el-button type="primary" :loading="submitLoading" @click="doAdd">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "UnionCadreange",
|
||||
props: {
|
||||
union: String,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
searchName: 'role.name'
|
||||
},
|
||||
|
||||
tableLoading: false,
|
||||
tableData: [],
|
||||
roleOptions: [],
|
||||
|
||||
addDialogVisible: false,
|
||||
userLoading: false,
|
||||
userOptions: [],
|
||||
formData: {},
|
||||
formRules: {
|
||||
roleCode: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
userId: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
},
|
||||
submitLoading: false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
union(val) {
|
||||
this.pageForm = {
|
||||
searchName: 'role.name'
|
||||
}
|
||||
this.userOptions = []
|
||||
this.pageData()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
doSearch(){
|
||||
this.pageData();
|
||||
},
|
||||
|
||||
openAdd() {
|
||||
this.formData = {};
|
||||
if (this.$refs["addForm"])
|
||||
this.$refs["addForm"].resetFields();
|
||||
this.addDialogVisible = true;
|
||||
},
|
||||
|
||||
async doAdd() {
|
||||
this.$refs["addForm"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
this.formData.type = 1
|
||||
this.formData.unionid = this.union
|
||||
|
||||
this.submitLoading = true
|
||||
|
||||
const {code} = await $.post(loc() + '/changeSchoolUnionRole', this.formData)
|
||||
|
||||
if (code == 0) {
|
||||
this.pageData()
|
||||
this.addDialogVisible = false;
|
||||
}
|
||||
|
||||
this.$notify({
|
||||
title: code == 0 ? '成功' : '失败',
|
||||
type: code == 0 ? 'success' : 'error'
|
||||
});
|
||||
|
||||
this.submitLoading = false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
async doDelete(row) {
|
||||
const {id, roleid} = row
|
||||
|
||||
this.$set(row, "delLoading", true)
|
||||
|
||||
const {code} = await $.post(loc() + '/changeSchoolUnionRole', {
|
||||
unionid: this.union,
|
||||
roleId: roleid,
|
||||
userId: id,
|
||||
type: 2
|
||||
})
|
||||
|
||||
if (code == 0) {
|
||||
this.pageData()
|
||||
}
|
||||
|
||||
this.$notify({
|
||||
title: code == 0 ? '成功' : '失败',
|
||||
type: code == 0 ? 'success' : 'error'
|
||||
});
|
||||
|
||||
this.$set(row, "delLoading", false)
|
||||
},
|
||||
|
||||
async userRemoteMethod(query) {
|
||||
if (!query) {
|
||||
this.userOptions = []
|
||||
return
|
||||
}
|
||||
this.userLoading = true
|
||||
const users = await searchUser(query, this.union)
|
||||
this.userOptions = users
|
||||
this.userLoading = false
|
||||
},
|
||||
|
||||
async pageData() {
|
||||
this.tableLoading = true
|
||||
this.pageForm.unionid = this.union
|
||||
const {code, data} = await $.get('/platform/sys/union/mange/schoolUnionRoles', this.pageForm)
|
||||
if (code == 0) {
|
||||
this.tableData = data
|
||||
} else {
|
||||
this.tableData = []
|
||||
}
|
||||
this.tableLoading = false
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
async created() {
|
||||
this.pageData()
|
||||
if (this.union) {
|
||||
this.roleOptions = await getDictOptions("GrassrootsCadres")
|
||||
} else {
|
||||
this.roleOptions = await getDictOptions("SchoolRoles")
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,135 @@
|
||||
<template>
|
||||
<div>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="基层干部" :app="this">
|
||||
<template #func>
|
||||
<el-button size="small" @click="audit(true)" :disabled="!multipleSelection.length" type="primary"
|
||||
icon="el-icon-check">通过
|
||||
</el-button>
|
||||
<el-button size="small" @click="audit(false)" :disabled="!multipleSelection.length" type="danger"
|
||||
icon="el-icon-check">拒绝
|
||||
</el-button>
|
||||
</template>
|
||||
</table-tool>
|
||||
|
||||
<el-table ref="table" :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
|
||||
v-loading="tableLoading" :size="tableSize" class="vi-table" height="70vh"
|
||||
@selection-change="handleSelectionChange">
|
||||
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55">
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号"
|
||||
width="80px"></el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in tableColumns"
|
||||
show-overflow-tooltip
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
>
|
||||
<template v-if="column.prop==='workersCongressSession'" scope="{row:{workersCongressSession}}">
|
||||
第{{ workersCongressSession }}届
|
||||
</template>
|
||||
<template v-else-if="column.prop==='joining'" scope="{row:{joining}}">
|
||||
<span v-if="joining" class="text-info">加入</span>
|
||||
<span v-else class="text-danger">退出</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-row class="el-pagination-container" style="margin-bottom: 0px">
|
||||
<el-pagination
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next"
|
||||
:total="pageForm.totalCount">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
mixins: [initTableMixins],
|
||||
props: {
|
||||
key: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableColumns: [
|
||||
{prop: 'username', label: '姓名'},
|
||||
{prop: 'loginname', label: '工号'},
|
||||
{prop: 'unionname', label: '所属工会'},
|
||||
{prop: 'mobile', label: '联系方式'},
|
||||
{prop: 'rolename', label: '职务'},
|
||||
{prop: 'workersCongressSession', label: '届次'},
|
||||
{prop: 'joining', label: '申请类型'},
|
||||
],
|
||||
multipleSelection: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val;
|
||||
},
|
||||
audit(pass) {
|
||||
this.$confirm('是否确认提交?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
const ids = JSON.stringify(this.multipleSelection.map(v => v.id))
|
||||
const resp = await $.post("/platform/union/cadre/audit", {ids, pass})
|
||||
if (resp.code === 0) {
|
||||
this.pageData()
|
||||
this.$refs.table.clearSelection();
|
||||
this.notifySuccess(resp.msg)
|
||||
}else{
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
pageData() {
|
||||
sublime.showLoadingbar();
|
||||
this.tableLoading = true
|
||||
$.post("/platform/union/cadre/audit/pageData", this.pageForm, (data) => {
|
||||
sublime.closeLoadingbar();
|
||||
this.tableLoading = false
|
||||
if (data.code === 0) {
|
||||
this.tableData = data.data.list;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
this.$message.error(data.msg);
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
key(val) {
|
||||
this.doSearch()
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.doSearch()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,338 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
|
||||
@keyup.enter.native="doSearch">
|
||||
<el-select v-model="pageForm.searchName" slot="prepend"
|
||||
placeholder="查询类型"
|
||||
style="width: 120px;">
|
||||
<el-option label="届次" value="uc.workersCongressSession"></el-option>
|
||||
<el-option label="分工" value="role.name"></el-option>
|
||||
<el-option label="姓名" value="u.username"></el-option>
|
||||
<el-option label="工号" value="u.loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-button type="primary" icon="el-icon-search"
|
||||
@click="doSearch"></el-button>
|
||||
</div>
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<el-button size="medium" @click="openAdd"><i class="ti-plus"></i> 添加
|
||||
</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
size="medium"
|
||||
header-align="center"
|
||||
v-loading="tableLoading"
|
||||
style="width: 100%"
|
||||
height="580"
|
||||
@sort-change="pageOrder"
|
||||
>
|
||||
|
||||
<el-table-column
|
||||
prop="username"
|
||||
label="姓名"
|
||||
header-align="center"
|
||||
align="center" show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="loginname"
|
||||
label="工号"
|
||||
header-align="center"
|
||||
align="center" show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="mobile"
|
||||
label="联系方式"
|
||||
header-align="center"
|
||||
align="center" show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
sortable
|
||||
prop="rolename"
|
||||
label="分工"
|
||||
header-align="center"
|
||||
align="center" show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
sortable
|
||||
prop="workersCongressSession"
|
||||
label="届次"
|
||||
header-align="center"
|
||||
align="center" show-overflow-tooltip
|
||||
>
|
||||
<template scope="{row:{workersCongressSession}}">
|
||||
第{{ workersCongressSession }}届
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="state"
|
||||
label="状态"
|
||||
header-align="center"
|
||||
align="center" show-overflow-tooltip
|
||||
>
|
||||
<template scope="{row}">
|
||||
<vi-table-state :state="row"></vi-table-state>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="userOnline"
|
||||
label="操作"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="150">
|
||||
<template scope="{row}">
|
||||
<el-popconfirm
|
||||
title="确定要移除吗?"
|
||||
@confirm="doDelete(row)"
|
||||
>
|
||||
<el-button slot="reference" :disabled="!row.can" size="mini" :loading="row.delLoading" type="danger"
|
||||
icon="el-icon-delete">
|
||||
</el-button>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next"
|
||||
:total="pageForm.totalCount">
|
||||
</el-pagination>
|
||||
</el-card>
|
||||
|
||||
<el-dialog
|
||||
title="添加"
|
||||
:visible.sync="addDialogVisible" width="40%">
|
||||
|
||||
<el-form :model="formData" ref="addForm" :rules="formRules" label-width="80px">
|
||||
|
||||
<el-form-item prop="workersCongressSession" label="届次">
|
||||
<dict-select v-model="formData.workersCongressSession" style="width: 100%"
|
||||
placeholder="届次"
|
||||
code="jc"></dict-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="roleCode" label="分工">
|
||||
|
||||
<el-select v-model="formData.roleCode"
|
||||
placeholder="分工" filterable
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in roleOptions"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code">
|
||||
</el-option>
|
||||
</el-select>
|
||||
|
||||
</el-form-item>
|
||||
<el-form-item prop="userId" label="人员">
|
||||
|
||||
<el-select
|
||||
style="width: 100%"
|
||||
v-model="formData.userId"
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请输入姓名或工号查找"
|
||||
:remote-method="(k)=>{userRemoteMethod(k)}"
|
||||
:loading="userLoading">
|
||||
<el-option
|
||||
v-for="i in userOptions"
|
||||
:key="i.id"
|
||||
:label="i.username+'('+i.loginname+')'"
|
||||
:value="i.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="addDialogVisible = false" :disabled="submitLoading">取 消</el-button>
|
||||
<el-button type="primary" :loading="submitLoading" @click="doAdd">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "UnionCadreange",
|
||||
components: {
|
||||
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0')
|
||||
},
|
||||
props: {
|
||||
union: String,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
searchName: 'uc.workersCongressSession',
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "",
|
||||
pageOrderBy: ""
|
||||
},
|
||||
|
||||
tableLoading: false,
|
||||
tableData: [],
|
||||
roleOptions: [],
|
||||
|
||||
addDialogVisible: false,
|
||||
userLoading: false,
|
||||
userOptions: [],
|
||||
formData: {},
|
||||
formRules: {
|
||||
workersCongressSession: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
roleCode: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
userId: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
},
|
||||
submitLoading: false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
union(val) {
|
||||
this.pageForm = {
|
||||
searchName: 'uc.workersCongressSession',
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "",
|
||||
pageOrderBy: ""
|
||||
}
|
||||
this.userOptions = []
|
||||
this.pageData()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
openAdd() {
|
||||
this.formData = {};
|
||||
if (this.$refs["addForm"]) this.$refs["addForm"].resetFields();
|
||||
this.addDialogVisible = true;
|
||||
},
|
||||
|
||||
async doAdd() {
|
||||
this.$refs["addForm"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
this.formData.type = 1
|
||||
this.formData.unionId = this.union
|
||||
|
||||
this.submitLoading = true
|
||||
|
||||
const {code, msg} = await $.post('/platform/union/cadre/createCadre', this.formData)
|
||||
|
||||
if (code === 0) {
|
||||
this.doSearch()
|
||||
this.addDialogVisible = false;
|
||||
}
|
||||
|
||||
this.$notify({
|
||||
title: code === 0 ? '成功' : '失败',
|
||||
type: code === 0 ? 'success' : 'error',
|
||||
message: msg,
|
||||
});
|
||||
|
||||
this.submitLoading = false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
async doDelete(row) {
|
||||
const {id} = row
|
||||
|
||||
this.$set(row, "delLoading", true)
|
||||
|
||||
const {code} = await $.post('/platform/union/cadre/removeCadre', {id})
|
||||
|
||||
if (code === 0) {
|
||||
this.pageData()
|
||||
}
|
||||
|
||||
this.$notify({
|
||||
title: code === 0 ? '成功' : '失败',
|
||||
type: code === 0 ? 'success' : 'error'
|
||||
});
|
||||
|
||||
this.$set(row, "delLoading", false)
|
||||
},
|
||||
|
||||
async userRemoteMethod(query) {
|
||||
if (!query) {
|
||||
this.userOptions = []
|
||||
return
|
||||
}
|
||||
this.userLoading = true
|
||||
const users = await searchUser(query, this.union)
|
||||
this.userOptions = users
|
||||
this.userLoading = false
|
||||
},
|
||||
|
||||
async pageData() {
|
||||
this.tableLoading = true
|
||||
this.pageForm.unionid = this.union
|
||||
const resp = await $.get('/platform/union/cadre/pageData', this.pageForm)
|
||||
this.tableLoading = false
|
||||
if (resp.code === 0) {
|
||||
this.tableData = resp.data.list
|
||||
this.pageForm.totalCount = resp.data.totalCount
|
||||
} else {
|
||||
this.tableData = []
|
||||
}
|
||||
},
|
||||
|
||||
doSearch() {
|
||||
this.tableKey = new Date().getTime()
|
||||
this.pageForm.pageNumber = 1
|
||||
this.pageData()
|
||||
},
|
||||
pageOrder(column) {
|
||||
this.pageForm.pageOrderName = column.prop;
|
||||
this.pageForm.pageOrderBy = column.order;
|
||||
this.pageData();
|
||||
},
|
||||
pageNumberChange(val) {
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageSizeChange(val) {
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
},
|
||||
|
||||
},
|
||||
async created() {
|
||||
this.doSearch()
|
||||
this.roleOptions = await getDictOptions("GrassrootsCadres")
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,104 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="panel panel-default mt20" style="border: none">
|
||||
<div class="panel-heading" style="background: #fafafa;border:1px solid #ebeef5;border-bottom: none">
|
||||
<h3 class="panel-title">
|
||||
基地信息
|
||||
</h3>
|
||||
</div>
|
||||
<el-descriptions :column="2" border class="viewTable">
|
||||
<el-descriptions-item label="年度">{{ viewData.year }}</el-descriptions-item>
|
||||
<el-descriptions-item label="排序编号">{{ viewData.sortNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="酒店名称">{{ viewData.baseName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="区域性质">{{ viewData.regionalNature }}</el-descriptions-item>
|
||||
<!-- (校工会创建AND自由模式) OR (分工会创建) -->
|
||||
<!-- <template v-if="(viewData.createMode === 2 && viewData.signUpMode === 2 ) || viewData.createMode === 1">-->
|
||||
<!--<el-descriptions-item label="出行天数">{{ viewData.regionalNature=5?"五天四夜":"三天两夜" }}</el-descriptions-item>-->
|
||||
<el-descriptions-item label="标段时间">
|
||||
<div v-for="item in modifyBdList">
|
||||
<span v-if="viewData.lotId===item.id">{{ item.lotName }}</span>
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="预计费用(元)">{{ viewData.estimatedCost }}</el-descriptions-item>
|
||||
<el-descriptions-item label="酒店联系人">{{ viewData.baseContactPerson }}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系人电话">{{ viewData.baseContactNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="报名开始时间">{{ viewData.signUpStartTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="报名结束时间">{{ viewData.signUpEndTime }}</el-descriptions-item>
|
||||
<el-descriptions-item :span="2" label="变更截至时间">{{ viewData.changeEndTime }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="活动开始时间">{{ viewData.activityStartTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="活动结束时间">{{ viewData.activityEndTime }}</el-descriptions-item>
|
||||
|
||||
|
||||
<!--</template>-->
|
||||
|
||||
</el-descriptions>
|
||||
</div>
|
||||
<div class="panel panel-default mt20" style="border: none">
|
||||
<div class="panel-heading" style="background: #fafafa;border:1px solid #ebeef5;border-bottom: none">
|
||||
<h3 class="panel-title">
|
||||
旅行社信息
|
||||
</h3>
|
||||
</div>
|
||||
<el-descriptions :column="2" border class="viewTable">
|
||||
<el-descriptions-item :span="2" label="旅行社名称">
|
||||
{{ viewData.travelAgency.travelAgencyName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="联系人">{{ viewData.travelAgency.contact }}</el-descriptions-item>
|
||||
<el-descriptions-item label="电话">{{ viewData.travelAgency.contactMobileNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="邮箱">{{ viewData.travelAgency.email }}</el-descriptions-item>
|
||||
<el-descriptions-item label="官网">
|
||||
<a :href="viewData.travelAgency.officialWebsite" class="text-primary" target="_blank">
|
||||
{{ viewData.travelAgency.officialWebsite }}
|
||||
</a>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
<div class="panel panel-default mt20" style="border-color: #ebeef5">
|
||||
<div class="panel-heading" style="background: #fafafa;border-color: #ebeef5">
|
||||
<h3 class="panel-title">
|
||||
详细信息
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div v-html="viewData.content"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "BaseManageInfo",
|
||||
data() {
|
||||
return {
|
||||
viewData: {
|
||||
travelAgency: {}
|
||||
},
|
||||
modifyBdList: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openView(id, obj) {
|
||||
this.modifyBdList = obj
|
||||
this.findOne(id)
|
||||
},
|
||||
async findOne(id) {
|
||||
const res = await $.get('/platform/theRapyRecuperation/baseManagement/selectBaseManageById/' + id)
|
||||
if (res.code === 0) {
|
||||
this.viewData = res.data
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.viewTable .el-descriptions__table {
|
||||
table-layout: fixed !important;
|
||||
}
|
||||
|
||||
.viewTable .el-descriptions-item__cell {
|
||||
text-align: center !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,178 @@
|
||||
<template>
|
||||
|
||||
<div>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading">
|
||||
<el-tab-pane label="报名信息" name="1">
|
||||
<div class="panel panel-default mt20" style="border: none">
|
||||
<div class="panel-heading" style="background: #fafafa;border:1px solid #ebeef5;border-bottom: none">
|
||||
<h3 class="panel-title">
|
||||
本人信息
|
||||
</h3>
|
||||
</div>
|
||||
<el-descriptions :column="2" border class="viewTable">
|
||||
<el-descriptions-item label="工号">{{ viewData.loginName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="姓名">{{ viewData.userName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">{{ viewData.sex }}</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号">{{ viewData.idCard }}</el-descriptions-item>
|
||||
<el-descriptions-item label="单位">{{ viewData.unitName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="工会">{{ viewData.unionName }}</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="是否转入转出">
|
||||
<span class="label label-primary">
|
||||
<sapn v-if="viewData.takePartInUnionId!=union_id">转出报名</sapn>
|
||||
<sapn v-else-if="viewData.selfUnionId!=union_id">转入报名</sapn>
|
||||
<sapn v-else>本公会报名</sapn>
|
||||
</span>
|
||||
</el-descriptions-item>-->
|
||||
|
||||
<el-descriptions-item label="报名时间">{{ viewData.signingUptime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="参加活动时间">{{
|
||||
viewData.specificTime ? viewData.specificTime : '暂未更新'
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="实际出行时间">{{
|
||||
viewData.takePartInTime ? viewData.takePartInTime : '暂未更新'
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
|
||||
|
||||
<el-descriptions-item label="线路名称">{{ viewData.lineName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="旅行社名称">{{ viewData.travelAgencyName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="是否携带家属">
|
||||
<span class="label label-primary">
|
||||
{{ viewData.isFamily ? '携带' : '未携带' }}
|
||||
</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="床型">{{ viewData.bedInfo.bedType }}</el-descriptions-item>
|
||||
<el-descriptions-item label="床位">{{
|
||||
viewData.bedInfo.bedNum ? viewData.bedInfo.bedNum : '暂无'
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="意向拼床人">
|
||||
{{ viewData.bedInfo.otherSleepUser ? viewData.bedInfo.otherSleepUser : '暂无' }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default mt20" style="border: none">
|
||||
<div class="panel-heading" style="background: #fafafa;border:1px solid #ebeef5;border-bottom: none">
|
||||
<h3 class="panel-title">
|
||||
同伴信息
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body" style="border: 1px solid rgb(235, 238, 245)">
|
||||
<el-table :data="viewData.companionList">
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex"></el-table-column>
|
||||
<el-table-column label="身份证号" prop="idCard"></el-table-column>
|
||||
<el-table-column label="年龄" prop="age"></el-table-column>
|
||||
<el-table-column label="床型" prop="bedType">
|
||||
<template scope="{row}">
|
||||
{{ row.bedInfo.bedType }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="床位" prop="bedNum">
|
||||
<template scope="{row}">
|
||||
{{ row.bedInfo.bedNum }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="意向拼床人" prop="otherSleepUser">
|
||||
<template scope="{row}">
|
||||
{{ row.bedInfo.otherSleepUser ? row.bedInfo.otherSleepUser : '暂无' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="关系" prop="relation"></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="所属分工会审核信息" name="2" v-if="viewData.selfUnionAuditId">
|
||||
<div class="panel panel-default mt20" style="border: none">
|
||||
<div class="panel-heading" style="background: #fafafa;border:1px solid #ebeef5;border-bottom: none">
|
||||
<h3 class="panel-title">
|
||||
审核信息
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<el-descriptions :column="2" border class="viewTable">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ viewData.selfUnionAudit.username }}({{ viewData.selfUnionAudit.loginname }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ viewData.selfUnionAudit.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见">{{ viewData.selfUnionAudit.auditOpinion }}</el-descriptions-item>
|
||||
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="意向线路分工会审核信息" name="3" v-if="viewData.joinLineUnionAuditId">
|
||||
<div class="panel panel-default mt20" style="border: none">
|
||||
<div class="panel-heading" style="background: #fafafa;border:1px solid #ebeef5;border-bottom: none">
|
||||
<h3 class="panel-title">
|
||||
审核信息
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<el-descriptions :column="2" border class="viewTable">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ viewData.joinLineUnionAudit.username }}({{ viewData.joinLineUnionAudit.loginname }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ viewData.joinLineUnionAudit.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见">{{ viewData.joinLineUnionAudit.auditOpinion }}</el-descriptions-item>
|
||||
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<slot name="handle"></slot>
|
||||
</el-tabs>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
union_id: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
},
|
||||
components: {
|
||||
'line-info': httpVueLoader('/components/theRapyRecuperation/LineInfo.vue')
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: "1",
|
||||
viewData: {
|
||||
companionList: [],
|
||||
bedInfo: {},
|
||||
},
|
||||
loading: false,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async findOne(id) {
|
||||
this.loading = true
|
||||
const resp = await $.get("/platform/theRapyRecuperation/TheRapyAudit/findOne", {id})
|
||||
this.loading = false
|
||||
if (resp.code === 0) {
|
||||
this.viewData = resp.data.viewData
|
||||
} else {
|
||||
this.viewData = {}
|
||||
this.$notify.warning({title: '警告', message: resp.data})
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
openView(id) {
|
||||
this.findOne(id)
|
||||
},
|
||||
openAudit(id, activeName) {
|
||||
this.findOne(id)
|
||||
this.activeName = activeName
|
||||
}
|
||||
},
|
||||
created() {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user