Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -249,7 +249,7 @@ layout("/layouts/platform.html"){
|
||||
|
||||
</el-row>
|
||||
|
||||
<el-row style="padding: 30px 0;border-bottom: 10px solid rgb(240, 240, 240)">
|
||||
<!-- <el-row style="padding: 30px 0;border-bottom: 10px solid rgb(240, 240, 240)">
|
||||
<el-col :span="24" style="padding: 0 20px"
|
||||
v-loading="knbfnum_loading">
|
||||
<div class="chartTitle" style="margin-bottom: 50px">困难帮扶申请趋势</div>
|
||||
@@ -286,9 +286,9 @@ layout("/layouts/platform.html"){
|
||||
<div class="chartTitle" style="margin-bottom: 50px">教职工子女入学登记申请趋势</div>
|
||||
<div id="rxnumChart" style="width: 100%;height: 300px;"></div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-row>-->
|
||||
|
||||
<el-row style="padding: 30px 0;border-bottom: 10px solid rgb(240, 240, 240)">
|
||||
<!--<el-row style="padding: 30px 0;border-bottom: 10px solid rgb(240, 240, 240)">
|
||||
<div style="position: absolute;top: 25px;right: 40px">
|
||||
<el-date-picker
|
||||
class="year"
|
||||
@@ -359,7 +359,7 @@ layout("/layouts/platform.html"){
|
||||
<el-row v-if="stNone" class="none-data">
|
||||
<span class="none-data-title">暂无社团</span>
|
||||
</el-row>
|
||||
</el-row>
|
||||
</el-row>-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@@ -122,6 +122,10 @@ layout("/layouts/platform.html"){
|
||||
v-if="[1020].includes(row.state_id)">
|
||||
审核
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item :command="{type:'revoke',data:row}"
|
||||
v-if="[1030].includes(row.state_id)">
|
||||
撤回
|
||||
</el-dropdown-item>
|
||||
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
@@ -287,6 +291,26 @@ layout("/layouts/platform.html"){
|
||||
this.openView(data)
|
||||
} else if (type == 'primary') {
|
||||
this.openReview(data)
|
||||
} else if (type == 'revoke') {
|
||||
this.doRevoke(data)
|
||||
}
|
||||
},
|
||||
async doRevoke(row) {
|
||||
const confirm = await this.$confirm('确定要撤回吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === "confirm") {
|
||||
const resp = await $.post("/platform/jf/activity_bx/accounting/doRevoke", {id: row.id})
|
||||
if (resp.code === 0) {
|
||||
this.doSearch()
|
||||
this.$notify({
|
||||
title: '成功',
|
||||
message: resp.msg,
|
||||
type: 'success'
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
blur() {
|
||||
|
||||
@@ -0,0 +1,229 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.cus_icon {
|
||||
font-size: 34px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.el-icon-circle-plus {
|
||||
color: #236eb4;
|
||||
}
|
||||
|
||||
.el-icon-remove {
|
||||
color: #f56c6c;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never">
|
||||
|
||||
<template #header>
|
||||
<h3 style="color: #1867b0">发起会议</h3>
|
||||
</template>
|
||||
|
||||
<el-tabs type="card" v-model="activeName">
|
||||
|
||||
<el-tab-pane label="会议基础信息" name="first">
|
||||
<template>
|
||||
<vi-title title="会议基础信息"></vi-title>
|
||||
<el-form :model="formData" :rules="formRules" label-width="120px" ref="addForm">
|
||||
<el-row :gutter="20" type="flex">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议名称" prop="meetingName">
|
||||
<el-input placeholder="请填写会议名称" type="text"
|
||||
v-model.trim="formData.meetingName"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议地点" prop="meetingAddress">
|
||||
<el-input placeholder="请填写会议地点" type="text"
|
||||
v-model.trim="formData.meetingAddress"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20" type="flex">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议类型" prop="typeId">
|
||||
<el-select filterable placeholder="请选择会议类型" style="width: 100%"
|
||||
v-model="formData.typeId">
|
||||
<el-option :label="item.meetingTypeName" :value="item.id"
|
||||
v-for="item in meetingTypeList"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议时间" prop="meetingTime">
|
||||
<el-date-picker end-placeholder="结束日期"
|
||||
format="yyyy-MM-dd"
|
||||
range-separator="至" start-placeholder="开始日期" style="width: 100%"
|
||||
type="daterange"
|
||||
v-model="formData.meetingTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20" type="flex">
|
||||
<el-col :span="formData.isMsgNotify === '1' ? '6' : '12'">
|
||||
<el-form-item label="是否消息通知" prop="isMsgNotify">
|
||||
<el-radio border label="1" size="medium" v-model="formData.isMsgNotify">是
|
||||
</el-radio>
|
||||
<el-radio border label="2" size="medium" v-model="formData.isMsgNotify">否
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" v-if="formData.isMsgNotify === '1'">
|
||||
<el-form-item label="发送方式" prop="sendType">
|
||||
<el-checkbox-group size="medium" v-model="formData.sendType">
|
||||
<el-checkbox border label="msg">短信发送</el-checkbox>
|
||||
<el-checkbox border label="WeChat">微信发送</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="是否可以请假" prop="isCanLeave">
|
||||
<el-radio border label="yes" size="medium" v-model="formData.isCanLeave">允许
|
||||
</el-radio>
|
||||
<el-radio border label="no" size="medium" v-model="formData.isCanLeave">不允许
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" v-if="formData.isCanLeave === 'yes'">
|
||||
<el-form-item label="请假截止时间" prop="leaveDeadline">
|
||||
<el-date-picker format="yyyy-MM-dd" placeholder="请选择日期" style="width: 100%"
|
||||
type="date"
|
||||
v-model="formData.leaveDeadline"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20" type="flex" v-if="formData.isMsgNotify === '1'">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="消息内容" prop="msgContent">
|
||||
<el-input :rows="4" placeholder="请输入消息内容" type="textarea"
|
||||
v-model="formData.msgContent"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20" type="flex">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="会议描述" prop="meetingDescribe">
|
||||
<el-input :rows="4" placeholder="请输入会议描述" type="textarea"
|
||||
v-model="formData.meetingDescribe"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
</el-form>
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="参与人员信息" name="second">
|
||||
<template>
|
||||
<vi-title title="参与人员信息"></vi-title>
|
||||
<el-table :data="userTableData" style="width: 100%; margin-bottom: 20px">
|
||||
<el-table-column label="用户名" prop="stateName"></el-table-column>
|
||||
<el-table-column label="姓名" prop="reviewer"></el-table-column>
|
||||
<el-table-column label="性别" prop="reviewer"></el-table-column>
|
||||
<el-table-column label="所属单位" prop="reviewer"></el-table-column>
|
||||
<el-table-column label="院级工会" prop="reviewer"></el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
|
||||
</el-tabs>
|
||||
|
||||
<el-row justify="end" style="margin-top: 20px" type="flex">
|
||||
<el-button @click="doSubmit" type="primary">提交</el-button>
|
||||
</el-row>
|
||||
|
||||
</el-card>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--# include("/platform/meeting/includeJs/meetingUtil.js"){} #-->
|
||||
const meetUtil = new meetingUtil()
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
meetingTypeList: [],
|
||||
activeName: 'first',
|
||||
formData: {isMsgNotify: '2', sendType: [], isCanLeave: 'no'},
|
||||
userTableData: [],
|
||||
tableData: [{stateName: '', auditStateUserList: []}],
|
||||
formRules: {
|
||||
meetingName: [{required: true, message: '请填写会议名称', trigger: ['blur', 'change']}],
|
||||
meetingAddress: [{required: true, message: '请填写会议地点', trigger: ['blur', 'change']}],
|
||||
typeId: [{required: true, message: '请选择会议类型', trigger: ['blur', 'change']}],
|
||||
meetingTime: [{required: true, message: '请选择会议时间', trigger: ['blur', 'change']}],
|
||||
sendType: [{required: true, message: '请选择发送方式', trigger: ['blur', 'change']}],
|
||||
msgContent: [{required: true, message: '请填写消息内容', trigger: ['blur', 'change']}],
|
||||
leaveDeadline: [{required: true, message: '请选择请假截止时间', trigger: ['blur', 'change']}],
|
||||
},
|
||||
userList: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async doSubmit() {
|
||||
const valid = await this.$refs["addForm"].validate()
|
||||
if (valid) {
|
||||
if (this.formData.isCanLeave === 'yes') {
|
||||
for (const [index, item] of this.tableData.entries()) {
|
||||
if (item.stateName === '' || item.stateName === undefined) {
|
||||
this.$notify({title: '警告', message: '第' + (index + 1) + '条审核节点名称不能为空', type: 'warning'})
|
||||
return
|
||||
}
|
||||
if (item.auditStateUserList.length === 0) {
|
||||
console.log(item.auditStateUserList)
|
||||
this.$notify({title: '警告', message: '第' + (index + 1) + '条审核人不能为空', type: 'warning'})
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//开始提交
|
||||
const submitFormData = clone(this.formData)
|
||||
submitFormData.startTime = this.formData.meetingTime && this.formData.meetingTime.length > 0 ? this.formData.meetingTime[0] : ''
|
||||
submitFormData.endTime = this.formData.meetingTime && this.formData.meetingTime.length > 1 ? this.formData.meetingTime[1] : ''
|
||||
delete submitFormData.meetingTime
|
||||
|
||||
submitFormData.meetingUserList = this.userTableData
|
||||
|
||||
const {code} = await $.post(loc() + "/doAdd", {
|
||||
meetingInfo: JSON.stringify(submitFormData)
|
||||
})
|
||||
if (code === 0) {
|
||||
this.$notify({title: '成功', message: '提交成功', type: 'success'})
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.meetingTypeList = await meetUtil.getAllMeetingType()
|
||||
},
|
||||
watch: {
|
||||
'tableData': {
|
||||
handler: function (newValue, oldValue) {
|
||||
|
||||
},
|
||||
deep: true,
|
||||
}
|
||||
},
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,422 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.audit-userids-select .el-select__tags {
|
||||
flex-wrap: unset;
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<table-tool :app="this" label="类型列表">
|
||||
<template #func>
|
||||
<el-button @click="openAdd" size="small" type="primary">新增类型</el-button>
|
||||
</template>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize"
|
||||
@sort-change="pageOrder" class="vi-table"
|
||||
row-key="id" style="width: 100%">
|
||||
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index"
|
||||
width="80px"></el-table-column>
|
||||
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
align="center"
|
||||
header-align="center"
|
||||
min-width="50"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作">
|
||||
<template scope="{row}">
|
||||
<el-button @click="openEdit(row)" size="mini" type="primary">编辑</el-button>
|
||||
<el-button @click="doDelete(row.id)" size="mini" type="danger">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
</el-card>
|
||||
|
||||
<template #edit>
|
||||
<vi-title title="基础信息"></vi-title>
|
||||
<el-form :model="formData" :rules="formRules" label-width="80px" ref="form">
|
||||
<el-form-item label="名称" prop="meetingTypeName">
|
||||
<el-input v-model="formData.meetingTypeName"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="模块名称" prop="moduleName">
|
||||
<el-input v-model="formData.moduleName"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="序号" prop="sortNum">
|
||||
<el-input-number :max="tableData.length + 1" :min="1" :precision="0"
|
||||
v-model="formData.sortNum"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
<vi-title title="审核节点信息(温馨提醒:如审核节点没有限制,审核节点类型不选即可)"></vi-title>
|
||||
<el-table :data="formData.auditStateList">
|
||||
<el-table-column label="节点ID" prop="stateId" width="100px">
|
||||
<template slot-scope="scope">
|
||||
<el-input readonly v-model="scope.row.stateId"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="审核节点名称" prop="stateName">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="scope.row.stateName"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="审核节点类型" prop="auditAfterType" width="150px">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-model="scope.row.auditAfterType" clearable>
|
||||
<el-option :label="item.desc"
|
||||
:value="item.value"
|
||||
v-for="item in customAuditTypeList"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="审核人" prop="selectUserId">
|
||||
<template slot-scope="scope">
|
||||
<el-select :remote-method="userRemoteMethod"
|
||||
class="audit-userids-select" filterable
|
||||
multiple placeholder="请输入姓名或工号查找"
|
||||
remote style="width: 100%"
|
||||
v-model="scope.row.selectUserId">
|
||||
<el-option :key="item.id"
|
||||
:label="item.username + '(' + item.loginname + ')'"
|
||||
:value="item.id"
|
||||
v-for="item in userList"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="筛选审核人" width="100px">
|
||||
<template scope="scope">
|
||||
<el-button @click="openUserSelect(scope.$index)" type="text">筛选用户</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="通过下个节点" pro="afterPassStateId" width="120px">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-model="scope.row.afterPassStateId">
|
||||
<el-option :label="item"
|
||||
:value="item"
|
||||
v-for="item in stateIdList"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="拒绝下个节点" pro="afterRejectStateId" width="120px">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-model="scope.row.afterRejectStateId">
|
||||
<el-option :label="item"
|
||||
:value="item"
|
||||
v-for="item in stateIdList"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="审核类型" prop="stateAuditType" width="150px">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-model="scope.row.stateAuditType">
|
||||
<el-option :label="item.desc"
|
||||
:value="item.value"
|
||||
v-for="item in stateAuditTypeList"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column width="100px">
|
||||
<template scope="scope" slot="header">
|
||||
<el-button @click="addState"
|
||||
icon="el-icon-circle-plus-outline"
|
||||
size="mini"
|
||||
type="primary"></el-button>
|
||||
</template>
|
||||
<template scope="scope">
|
||||
<el-button @click="formData.auditStateList.splice(scope.$index, 1)"
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
type="danger"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form>
|
||||
<el-row class="mt10" justify="end" type="flex">
|
||||
<el-button @click="$refs.guava.index()">取消</el-button>
|
||||
<el-button @click="doConfirm" type="primary">确定</el-button>
|
||||
</el-row>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
<condition :fields="fields"
|
||||
:show_filter_result="true"
|
||||
@confirm="cndConfirm"
|
||||
ref="cnd"
|
||||
v-model="cnd"></condition>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--# include("/platform/meeting/includeJs/meetingUtil.js"){} #-->
|
||||
const meetUtil = new meetingUtil()
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'condition': httpVueLoader('/components/plugins/ConditionStructure.vue?v=1.0.0'),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableColumns: [
|
||||
{prop: 'meetingTypeName', label: '类型名称'},
|
||||
{prop: 'moduleName', label: '模块名称'},
|
||||
{prop: 'sortNum', label: '排序编号'}],
|
||||
stateAuditTypeList: [],
|
||||
customAuditTypeList: [],
|
||||
formData: {
|
||||
auditStateList: []
|
||||
},
|
||||
formRules: {
|
||||
meetingTypeName: [{
|
||||
required: true,
|
||||
message: '请输入类型名称',
|
||||
trigger: ['blur', 'change']
|
||||
}],
|
||||
moduleName: [{
|
||||
required: true,
|
||||
message: '请输入模块名称,英文命名',
|
||||
trigger: ['blur', 'change']
|
||||
}],
|
||||
sortNum: [{required: true, message: '请输入排序编号', trigger: ['blur', 'change']}]
|
||||
},
|
||||
userList: [],
|
||||
maxStateId: 0,
|
||||
userSelectDialogVisible: false,
|
||||
cnd: {},
|
||||
fields: [],
|
||||
nodeIndex: null
|
||||
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
async 'formData.auditStateList'(val) {
|
||||
const {id} = this.formData
|
||||
for (let i = 0; i < val.length; i++) {
|
||||
let item = val[i]
|
||||
if (id) {
|
||||
if (item.isAddRow) {
|
||||
//当前行是新增的第几行
|
||||
const addIndex = i + 1 - val.filter(v => !v.isAddRow).length
|
||||
|
||||
const stateId = val[0].stateId + i * 10
|
||||
const licitStateCode = await this.checkStateId(stateId, addIndex)
|
||||
item['stateId'] = licitStateCode
|
||||
}
|
||||
} else {
|
||||
item['stateId'] = this.maxStateId + (i + 1) * 10
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
// this.$set(this.formData,'auditStateList',val)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
dialogTitle() {
|
||||
if (this.formData.id) {
|
||||
return '编辑'
|
||||
}
|
||||
return '新增'
|
||||
},
|
||||
stateIdList() {
|
||||
return this.formData.auditStateList.map(v => v.stateId)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async checkStateId(stateId, stateIndex) {
|
||||
const resp = await $.get(loc() + '/checkStateId', {stateId, stateIndex})
|
||||
if (resp.code === 0) {
|
||||
return resp.data
|
||||
} else {
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
},
|
||||
|
||||
addState() {
|
||||
this.formData.auditStateList.push({
|
||||
stateId: null,
|
||||
stateName: null,
|
||||
selectUserId: [],
|
||||
auditStateUserList: [],
|
||||
afterPassStateId: null,
|
||||
afterRejectStateId: null,
|
||||
isAddRow: true
|
||||
})
|
||||
},
|
||||
|
||||
async findAll() {
|
||||
const resp_data = await $.get(loc() + '/findAll')
|
||||
if (resp_data.code === 0) {
|
||||
resp_data.data.forEach(v => {
|
||||
v.auditStateList.forEach(x => {
|
||||
if (x.matchCnd) {
|
||||
x.matchCnd = JSON.parse(x.matchCnd)
|
||||
}
|
||||
})
|
||||
})
|
||||
this.tableData = resp_data.data
|
||||
}
|
||||
},
|
||||
openAdd() {
|
||||
this.formData = {
|
||||
meetingName: null,
|
||||
sortNum: this.tableData.length + 1,
|
||||
auditStateList: [{}]
|
||||
}
|
||||
this.$refs.guava.edit()
|
||||
},
|
||||
async doConfirm() {
|
||||
try {
|
||||
const valid = await this.$refs['form'].validate()
|
||||
if (valid) {
|
||||
this.formData.auditStateList.forEach(v => {
|
||||
v['auditStateUserList'] = v.selectUserId.map(x => {
|
||||
return {userId: x}
|
||||
})
|
||||
v['matchCnd'] = JSON.stringify(v['matchCnd'])
|
||||
})
|
||||
const resp = await $.post(loc() + '/doHandle', {data: JSON.stringify(this.formData)})
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.findAll()
|
||||
} else {
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
}
|
||||
},
|
||||
async openEdit(row) {
|
||||
const d = clone(row)
|
||||
let u = []
|
||||
d.auditStateList.forEach(v => {
|
||||
v['selectUserId'] = v.auditStateUserList.map(x => x.userId)
|
||||
u = u.concat(v['selectUserId'])
|
||||
})
|
||||
this.userList = await queryUserByIds(u)
|
||||
|
||||
this.formData = d
|
||||
this.$refs.guava.edit()
|
||||
},
|
||||
async doDelete(id) {
|
||||
try {
|
||||
const confirm = await this.$confirm('您确定要删除吗', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === 'confirm') {
|
||||
const resp = await $.post(loc() + '/delete/' + id)
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.findAll()
|
||||
} else {
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
},
|
||||
async userRemoteMethod(query) {
|
||||
if (query) {
|
||||
this.userList = await searchUser(query)
|
||||
}
|
||||
},
|
||||
openUserSelect(node_index) {
|
||||
this.nodeIndex = node_index
|
||||
const node = this.formData.auditStateList[node_index]
|
||||
if (node.matchCnd) {
|
||||
this.cnd = node.matchCnd
|
||||
console.log('......')
|
||||
} else {
|
||||
this.cnd = {method: "AND", conditions: [{}]}
|
||||
}
|
||||
this.$refs.cnd.open(false)
|
||||
},
|
||||
async initCndFields() {
|
||||
this.cnd = {
|
||||
method: "AND",
|
||||
conditions: [{}],
|
||||
}
|
||||
const meet_data = await getOpenMeeting()
|
||||
const meet_options = meet_data.map(v => {
|
||||
return {"label": v.jdhallname, "value": v.id}
|
||||
})
|
||||
this.fields.push(
|
||||
{label: '教代会', value: 'jdhid', type: "select", options: meet_options}
|
||||
)
|
||||
const {data: role_data} = await $.get('/platform/sys/role/getAllRoles')
|
||||
const role_options = role_data.map(v => {
|
||||
return {"label": v.name, "value": v.id}
|
||||
})
|
||||
this.fields.push(
|
||||
{label: '角色', value: 'roleId', type: "select", options: role_options}
|
||||
)
|
||||
this.fields.push(
|
||||
{label: '姓名', value: 'username', options: null}
|
||||
)
|
||||
|
||||
|
||||
},
|
||||
async cndConfirm(val) {
|
||||
if (val) {
|
||||
const matchCnd = clone(val)
|
||||
if (matchCnd.conditions && matchCnd.conditions.length > 0) {
|
||||
this.formData.auditStateList[this.nodeIndex].matchCnd = matchCnd
|
||||
const resp = await $.post('/platform/userFilter/findUserByCnd', {cnd: JSON.stringify(matchCnd)})
|
||||
if (resp.code === 0) {
|
||||
if (resp.data) {
|
||||
const d = this.formData.auditStateList[this.nodeIndex]
|
||||
d.matchCnd = matchCnd
|
||||
d.selectUserId = [...new Set(d.selectUserId.concat(resp.data.map(v => v.id)))]
|
||||
|
||||
this.$set(this.formData.auditStateList, this.nodeIndex, d)
|
||||
let u = []
|
||||
this.formData.auditStateList.forEach(v => {
|
||||
u = u.concat(v.selectUserId.map(x => x))
|
||||
})
|
||||
this.userList = await queryUserByIds([...new Set(u)])
|
||||
}
|
||||
}
|
||||
console.log(resp)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.findAll()
|
||||
this.initCndFields()
|
||||
this.maxStateId = await meetUtil.findMaxStateId()
|
||||
this.stateAuditTypeList = await getEnumOptions('AuditTypeEnum')
|
||||
this.customAuditTypeList = await getEnumOptions('CustomAuditTypeEnum')
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,40 @@
|
||||
// const meetingUtil = {
|
||||
//
|
||||
//
|
||||
//
|
||||
// async getMeetingType(){
|
||||
// $.get()
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
class meetingUtil {
|
||||
|
||||
constructor() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取全部会议类型
|
||||
* @returns {Promise<*[]|*>}
|
||||
*/
|
||||
async getAllMeetingType() {
|
||||
const resp = await $.get('/platform/meeting/basic/type/findAll')
|
||||
if (resp.code === 0) {
|
||||
resp.data.forEach(v => {
|
||||
v['text'] = v['meetingTypeName']
|
||||
v['value'] = v['id']
|
||||
})
|
||||
return resp.data
|
||||
}
|
||||
return []
|
||||
}
|
||||
|
||||
async findMaxStateId() {
|
||||
const resp = await $.get('/platform/meeting/basic/type/findMaxStateId')
|
||||
if (resp.code === 0) {
|
||||
return resp.data
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never">
|
||||
<div class="search">
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">年度:</div>
|
||||
<div class="search-item-option">
|
||||
<el-date-picker
|
||||
placeholder="选择年份"
|
||||
style="width: 100%" type="year"
|
||||
v-model="pageForm.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 clearable
|
||||
placeholder="可输入会议名称、地点进行查询"
|
||||
v-model="pageForm.searchKeyword"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-query">
|
||||
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="会议信息">
|
||||
<template #func>
|
||||
</template>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
align="center" header-align="center">
|
||||
<el-table-column align="center" header-align="center" 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="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
align="center"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
<template scope="{row}" v-if="column.prop=='isCanLeave'">
|
||||
<span class="text-muted" v-if="row.isCanLeave==null">未设置</span>
|
||||
<span class="text-success" v-if="row.isCanLeave==true">能</span>
|
||||
<span class="text-danger" v-if="row.isCanLeave==false">否</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" width="300px">
|
||||
<template scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini">查看</el-button>
|
||||
<el-button @click="openEdit(row)" size="mini" type="primary">编辑</el-button>
|
||||
<el-button @click="doDelete(row.id)" size="mini" type="danger">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
</el-card>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--# include("/platform/meeting/includeJs/meetingUtil.js"){} #-->
|
||||
const meetUtil = new meetingUtil()
|
||||
window['vue'] = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
hold: false,
|
||||
tableColumns: [
|
||||
{prop: 'meetingName', label: '会议名称', sortable: true},
|
||||
{prop: 'meetingTypeName', label: '会议类型', sortable: true},
|
||||
{prop: 'startTime', label: '会议时间', sortable: true},
|
||||
/*{prop: 'endTime', label: '结束时间', sortable: true},*/
|
||||
{prop: 'location', label: '会议地点', sortable: true},
|
||||
{prop: 'isCanLeave', label: '能否请假', sortable: true},
|
||||
],
|
||||
pageForm: {
|
||||
year: new Date().getFullYear().toString()
|
||||
},
|
||||
meetingTypeList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
openView(row) {
|
||||
const {id, notifyId, hold} = row
|
||||
window.location.href = '/platform/meeting/manage/createMeeting?notifyId=' + notifyId + "&hold=" + true + "&id=" + id
|
||||
},
|
||||
openEdit(row) {
|
||||
const {id, notifyId, hold} = row
|
||||
window.location.href = '/platform/meeting/manage/createMeeting?notifyId=' + notifyId + "&hold=" + false + "&id=" + id
|
||||
},
|
||||
async doDelete(id) {
|
||||
try {
|
||||
const confirm = await this.$confirm('您确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === 'confirm') {
|
||||
const resp = await $.post(loc() + '/doDelete', {id})
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.meetingTypeList = await meetUtil.getAllMeetingType()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,263 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<el-row type="flex">
|
||||
<el-col :span="12" v-if="id">
|
||||
<el-button @click="location.replace('/platform/meeting/manage')"
|
||||
icon="el-icon-back"
|
||||
style="font-size: 16px" type="text">返回
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="12" class="text-right">
|
||||
<h3 style="color: rgb(24, 103, 176);">{{h3Title}}</h3>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<!--<template #header>
|
||||
<h3 style="color: #1867b0">发起会议</h3>
|
||||
</template>-->
|
||||
|
||||
<el-form :model="formData" :rules="formRules" label-width="120px" ref="addForm">
|
||||
<vi-title title="会议基础信息"></vi-title>
|
||||
|
||||
<el-row :gutter="20" type="flex">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议名称" prop="meetingName">
|
||||
<el-input :disabled="hold" @input="meetingNameInput"
|
||||
placeholder="请填写会议名称" type="text"
|
||||
v-model.trim="formData.meetingName"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议地点" prop="location">
|
||||
<el-input :disabled="hold" placeholder="请填写会议地点"
|
||||
type="text" v-model.trim="formData.location"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20" type="flex">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议类型" prop="typeId">
|
||||
<el-select :disabled="hold" filterable placeholder="请选择会议类型"
|
||||
style="width: 100%" v-model="formData.typeId">
|
||||
<el-option :label="item.meetingTypeName" :value="item.id"
|
||||
v-for="item in meetingTypeList"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<!--<el-form-item label="会议时间" prop="meetingTime">
|
||||
<el-date-picker end-placeholder="结束日期"
|
||||
format="yyyy-MM-dd HH:mm:ss"
|
||||
range-separator="至" start-placeholder="开始日期"
|
||||
style="width: 100%"
|
||||
:disabled="hold"
|
||||
type="datetimerange"
|
||||
v-model="formData.meetingTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>-->
|
||||
<el-form-item label="会议时间" prop="meetTime">
|
||||
<el-date-picker :disabled="hold"
|
||||
format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="请选择会议时间"
|
||||
style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="formData.meetTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20" type="flex">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="是否可以请假" prop="isCanLeave">
|
||||
<el-radio :disabled="hold" :label="true" border size="medium" v-model="formData.isCanLeave">
|
||||
允许
|
||||
</el-radio>
|
||||
<el-radio :disabled="hold" :label="false" border size="medium"
|
||||
v-model="formData.isCanLeave">不允许
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="是否多次签到">
|
||||
<el-checkbox v-model="formData.manySign"></el-checkbox>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-if="formData.isCanLeave">
|
||||
<el-form-item label="请假截止时间" prop="leaveDeadline">
|
||||
<el-date-picker :disabled="hold" format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="请选择日期" style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="formData.leaveDeadline"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20" type="flex">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="会议描述" prop="meetingDescription">
|
||||
<el-input :disabled="hold" :rows="4" maxlength="400" placeholder="请输入会议描述"
|
||||
type="textarea" v-model="formData.meetingDescription"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20" type="flex" v-show="formData.manySign">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="场次">
|
||||
<!--# include("/platform/meeting/manage/add_time_period.html"){} #-->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!--# include("/platform/meeting/manage/add_users.html"){} #-->
|
||||
|
||||
</el-form>
|
||||
|
||||
<el-row justify="end" style="margin-top: 20px" type="flex" v-if="!hold">
|
||||
<el-button @click="doSubmit" type="primary">提交</el-button>
|
||||
</el-row>
|
||||
|
||||
</el-card>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
<!--# include("/platform/meeting/includeJs/meetingUtil.js"){} #-->
|
||||
const meetUtil = new meetingUtil()
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'msg-notify': httpVueLoader('/components/msgNotify/msgNotify.vue'),
|
||||
},
|
||||
data() {
|
||||
const that = this
|
||||
return {
|
||||
h3Title: "发起会议",
|
||||
id: "",
|
||||
notify_id: "",
|
||||
hold: false,
|
||||
meetingTypeList: [],
|
||||
formData: {
|
||||
isCanLeave: false,
|
||||
meetingTimePeriods: [{timePeriodName: '', startTime: '', endTime: ''}],
|
||||
sendTypes: [],
|
||||
meetingTime: [],
|
||||
meetTime: '',
|
||||
},
|
||||
pickerOptions: {
|
||||
disabledDate(time) {
|
||||
return (
|
||||
moment(time.getTime()).format("YYYY-MM-DD HH:mm:ss") > that.formData.meetingTime[1] || moment(time.getTime()).format("YYYY-MM-DD HH:mm:ss") < that.formData.meetingTime[0]
|
||||
);
|
||||
}
|
||||
},
|
||||
formRules: {
|
||||
meetingName: [{required: true, message: '请填写会议名称', trigger: ['blur', 'change']}],
|
||||
location: [{required: true, message: '请填写会议地点', trigger: ['blur', 'change']}],
|
||||
typeId: [{required: true, message: '请选择会议类型', trigger: ['blur', 'change']}],
|
||||
meetingTime: [{required: true, message: '请选择会议时间', trigger: ['blur', 'change']}],
|
||||
meetTime: [{required: true, message: '请选择会议时间', trigger: ['blur', 'change']}],
|
||||
sendType: [{required: true, message: '请选择发送方式', trigger: ['blur', 'change']}],
|
||||
msgContent: [{required: true, message: '请填写消息内容', trigger: ['blur', 'change']}],
|
||||
leaveDeadline: [{required: true, message: '请选择请假截止时间', trigger: ['blur', 'change']}],
|
||||
isCanLeave: [{required: true, message: '请选择', trigger: ['blur', 'change']}],
|
||||
},
|
||||
msgData: {
|
||||
type: "",
|
||||
sendTypes: []
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
meetingNameInput(val) {
|
||||
this.$set(this.msgData, "title", val)
|
||||
this.formData.meetingTimePeriods[0].timePeriodName = val
|
||||
},
|
||||
async doSubmit() {
|
||||
|
||||
const valid = await this.$refs["addForm"].validate()
|
||||
if (valid) {
|
||||
const submitFormData = clone(this.formData)
|
||||
submitFormData.startTime = this.formData.meetingTime && this.formData.meetingTime.length > 0 ? this.formData.meetingTime[0] : ''
|
||||
submitFormData.endTime = this.formData.meetingTime && this.formData.meetingTime.length > 1 ? this.formData.meetingTime[1] : ''
|
||||
|
||||
if (this.msgData.sendTypes.length > 0) {
|
||||
const confirm = await this.$confirm('下一步需要到消息管理系统中择机发送短信通知', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
showCancelButton: false,
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
const resp = await $.post("/platform/meeting/manage" + (this.formData.id ? "/doEdit" : "/doAdd"), {
|
||||
meetingInfo: JSON.stringify(submitFormData),
|
||||
msgNotify: JSON.stringify(this.msgData),
|
||||
users: JSON.stringify(this.msgData.users.length > 0 ? this.msgData.users.map(v => v.id) : this.msgData.users),
|
||||
})
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
sublime.jumpPagePjax('/platform/meeting/manage')
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
async findOne(id) {
|
||||
const {data} = await $.post("/platform/meeting/manage/findOne", {id})
|
||||
data.meetingTime = [data.startTime, data.endTime]
|
||||
data.meetTime = data.startTime
|
||||
this.formData = data
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.meetingTypeList = await meetUtil.getAllMeetingType()
|
||||
this.id = GetQueryString("id")
|
||||
|
||||
this.notify_id = GetQueryString("notifyId")
|
||||
if (this.id) {
|
||||
this.hold = GetQueryString("hold")
|
||||
this.findOne(this.id)
|
||||
this.h3Title = this.hold === "true" ? "查看会议" : "编辑会议"
|
||||
this.hold = this.hold !== 'false'
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'formData.meetingTime'(val) {
|
||||
if (val) {
|
||||
this.formData.meetingTimePeriods[0].startTime = val[0]
|
||||
this.formData.meetingTimePeriods[0].endTime = val[1]
|
||||
}
|
||||
},
|
||||
'formData.meetTime'(val) {
|
||||
if (val) {
|
||||
//结束时间往后加30分钟
|
||||
const endTime = moment(val).add(30, 'm').format('YYYY-MM-DD HH:mm:ss')
|
||||
this.formData.meetingTime = [val, endTime]
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,49 @@
|
||||
<!-- 会议时间段 -->
|
||||
|
||||
<el-table :data="formData.meetingTimePeriods" border style="width: 100%">
|
||||
<el-table-column label="名称" prop="timePeriodName">
|
||||
<template slot-scope="scope">
|
||||
<el-input :disabled="hold" maxlength="20" v-model="scope.row.timePeriodName"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="开始时间" prop="startTime" sortable>
|
||||
<template slot-scope="scope">
|
||||
<el-date-picker
|
||||
:disabled="hold"
|
||||
:picker-options="pickerOptions"
|
||||
placeholder="选择开始时间"
|
||||
type="datetime"
|
||||
v-model="scope.row.startTime"
|
||||
value-format="yyyy-MM-dd HH:mm">
|
||||
</el-date-picker>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="结束时间" prop="endTime">
|
||||
<template slot-scope="scope">
|
||||
<el-date-picker
|
||||
:disabled="hold"
|
||||
:picker-options="pickerOptions"
|
||||
placeholder="选择结束时间"
|
||||
type="datetime"
|
||||
v-model="scope.row.endTime"
|
||||
value-format="yyyy-MM-dd HH:mm">
|
||||
</el-date-picker>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="100px">
|
||||
<template scope="scope" slot="header">
|
||||
<el-button :disabled="hold"
|
||||
@click="formData.meetingTimePeriods.push({timePeriodName:null,startTime:null,endTime:null})"
|
||||
icon="el-icon-circle-plus-outline"
|
||||
size="small"
|
||||
type="primary"></el-button>
|
||||
</template>
|
||||
<template scope="scope">
|
||||
<el-button :disabled="hold"
|
||||
@click="formData.meetingTimePeriods.splice(scope.$index, 1)"
|
||||
icon="el-icon-delete"
|
||||
size="small"
|
||||
type="danger"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -0,0 +1,3 @@
|
||||
<vi-title title="参与人员信息"></vi-title>
|
||||
|
||||
<msg-notify :hold="hold" :notify_id="notify_id" :title_disabled="true" v-model="msgData"></msg-notify>
|
||||
@@ -0,0 +1,128 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never">
|
||||
<div class="search">
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">年度:</div>
|
||||
<div class="search-item-option">
|
||||
<el-date-picker
|
||||
placeholder="选择年份"
|
||||
type="year"
|
||||
v-model="pageForm.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 clearable
|
||||
placeholder="可输入会议名称、地点进行查询"
|
||||
v-model="pageForm.searchKeyword"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-query">
|
||||
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="会议信息">
|
||||
<template #func>
|
||||
</template>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
align="center" header-align="center">
|
||||
<el-table-column align="center" header-align="center" 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="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
align="center"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
<template scope="{row}" v-if="column.prop=='isCanLeave'">
|
||||
<span class="text-muted" v-if="row.isCanLeave==null">未设置</span>
|
||||
<span class="text-success" v-if="row.isCanLeave==true">能</span>
|
||||
<span class="text-danger" v-if="row.isCanLeave==false">否</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="primary">编辑</el-button>
|
||||
<el-button @click="doDelete(row.id)" size="mini" type="danger">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
</el-card>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--# include("/platform/meeting/includeJs/meetingUtil.js"){} #-->
|
||||
const meetUtil = new meetingUtil()
|
||||
window['vue'] = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
tableColumns: [
|
||||
{prop: 'meetingName', label: '会议名称', sortable: true},
|
||||
{prop: 'meetingTypeName', label: '会议类型', sortable: true},
|
||||
{prop: 'startTime', label: '开始时间', sortable: true},
|
||||
{prop: 'endTime', label: '结束时间', sortable: true},
|
||||
{prop: 'location', label: '会议地点', sortable: true},
|
||||
{prop: 'isCanLeave', label: '能否请假', sortable: true},
|
||||
],
|
||||
pageForm: {
|
||||
year: new Date().getFullYear().toString()
|
||||
},
|
||||
meetingTypeList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async doDelete(id) {
|
||||
try {
|
||||
const confirm = await this.$confirm('您确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === 'confirm') {
|
||||
const resp = await $.post(loc() + '/doDelete', {id: id})
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.meetingTypeList = await meetUtil.getAllMeetingType()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,377 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.qrcode {
|
||||
min-width: 240px;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.real-data {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.real-data .data-card {
|
||||
border-radius: 10px;
|
||||
width: calc((100% - 80px) / 4);
|
||||
min-width: 100px;
|
||||
/*height: 150px;*/
|
||||
/*min-height: 100px;*/
|
||||
/*max-height: 150px;*/
|
||||
/*background: #3CB371;*/
|
||||
/*background: #000;*/
|
||||
background-image: linear-gradient(141deg, #9fb8ad 0%, #1fc8db 51%, #2cb5e8 75%);
|
||||
margin: 10px 0 10px 20px;
|
||||
padding: 10px;
|
||||
color: #ffffff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.real-data .data-card .data-card-title {
|
||||
font-size: 20px;
|
||||
max-width: 100%;
|
||||
text-overflow: ellipsis;
|
||||
word-break: keep-all;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
flex: 1;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.real-data .data-card .data-card-num {
|
||||
font-size: 90px;
|
||||
flex: auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.real-data .data-card .flow-border {
|
||||
position: absolute;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.timePeriod_card {
|
||||
border-top: 5px solid #106898;
|
||||
}
|
||||
|
||||
.timePeriod_card .el-form-item {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
img {
|
||||
height: 100% !important;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.operation {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 1111;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava" v-model="guavaIndex">
|
||||
<el-card shadow="never">
|
||||
<div class="search">
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">年度:</div>
|
||||
<div class="search-item-option">
|
||||
<el-date-picker
|
||||
placeholder="选择年份"
|
||||
style="width: 100%" type="year"
|
||||
v-model="pageForm.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 clearable
|
||||
placeholder="可输入会议名称、地点进行查询"
|
||||
v-model="pageForm.searchKeyword"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">会议类型:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select clearable style="width: 100%" v-model="pageForm.typeId">
|
||||
<el-option :label="item.meetingTypeName"
|
||||
:value="item.id"
|
||||
v-for="item in meetingTypeList"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="search-query">
|
||||
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="会议信息">
|
||||
<template #func>
|
||||
</template>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
align="center"
|
||||
header-align="center" ref="meetingTable">
|
||||
<el-table-column type="expand">
|
||||
<template scope="scope">
|
||||
<el-row :gutter="20" justify="start" style="flex-wrap: wrap" type="flex"
|
||||
v-if="scope.row.timePeriods && scope.row.timePeriods.length>0">
|
||||
<el-col span="5" v-for="tp in scope.row.timePeriods">
|
||||
<el-card class="mb10 timePeriod_card" shadow="hover">
|
||||
<el-form label-width="80px">
|
||||
<el-form-item label="名称">{{tp.timePeriodName}}</el-form-item>
|
||||
<el-form-item label="会议时间">{{tp.startTime}}</el-form-item>
|
||||
<!--<el-form-item label="结束时间">{{tp.endTime}}</el-form-item>-->
|
||||
</el-form>
|
||||
<el-row justify="space-around"
|
||||
style="border-top: 1px solid #ebeef5;padding: 20px 0 0 0"
|
||||
type="flex">
|
||||
<el-button @click="exportSignature(tp.id)" size="medium" type="text">
|
||||
导出签字表
|
||||
</el-button>
|
||||
<el-button @click="title = tp.timePeriodName; openOnline(tp.id,scope.row.id)"
|
||||
size="medium" type="text">
|
||||
扫描二维码
|
||||
</el-button>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-else>
|
||||
<el-empty description="没有时间段"></el-empty>
|
||||
</el-row>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" 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="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
align="center"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
<template scope="{row}" v-if="column.prop=='isCanLeave'">
|
||||
<span class="text-muted" v-if="row.isCanLeave==null">未设置</span>
|
||||
<span class="text-success" v-if="row.isCanLeave==true">能</span>
|
||||
<span class="text-danger" v-if="row.isCanLeave==false">否</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button @click="toggleRowTimePeriod(row)" size="mini" type="primary">展开</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
|
||||
<template #view>
|
||||
<div style="min-width: 500px;height: 100%;position: relative">
|
||||
<el-row type="flex">
|
||||
<el-col :span="4" class="qrcode">
|
||||
<div @click="downLoadQrCode" title="点击二维码可下载">
|
||||
<qrcode :value="qrCodeUrl" ref="qrCode"
|
||||
tag="img"></qrcode>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="20" class="real-data">
|
||||
<template v-for="rd of realTimeData">
|
||||
<div class="data-card">
|
||||
<div class="data-card-title">
|
||||
{{rd.label}}
|
||||
</div>
|
||||
<div class="data-card-num">
|
||||
<count-to :end-val="rd.value"
|
||||
:start-val="getLastValue(rd.key)"></count-to>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- <el-row class="mt20">-->
|
||||
<el-table :data="userData" :max-height="signTableHeight" class="mt20" ref="signTable">
|
||||
<el-table-column label="姓名" prop="username"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginname"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex"></el-table-column>
|
||||
<el-table-column label="单位" prop="unitname"></el-table-column>
|
||||
<el-table-column label="签到时间" prop="signInDateTime"></el-table-column>
|
||||
<el-table-column label="签到名次">
|
||||
<template scope="scope">
|
||||
{{userData.length - scope.$index}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- </el-row>-->
|
||||
</div>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--# include("/platform/meeting/includeJs/meetingUtil.js"){} #-->
|
||||
const meetUtil = new meetingUtil()
|
||||
let pollingInterval = null
|
||||
const intervalTime = 3500
|
||||
window['vue'] = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
title: '',
|
||||
tableColumns: [
|
||||
{prop: 'meetingName', label: '会议名称', sortable: true},
|
||||
{prop: 'meetingTypeName', label: '会议类型', sortable: true},
|
||||
{prop: 'startTime', label: '会议时间', sortable: true},
|
||||
/*{prop: 'endTime', label: '结束时间', sortable: true},*/
|
||||
{prop: 'location', label: '会议地点', sortable: true},
|
||||
{prop: 'isCanLeave', label: '能否请假', sortable: true},
|
||||
],
|
||||
pageForm: {
|
||||
year: new Date().getFullYear().toString()
|
||||
},
|
||||
meetingTypeList: [],
|
||||
lastTimeData: [],
|
||||
realTimeData: [],
|
||||
userData: [],
|
||||
meetingId: null,
|
||||
timePeriodId: null,
|
||||
qrcodeVisible: false,
|
||||
qrCodeUrl: null,
|
||||
signTableHeight: 600
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
guavaIndex(val) {
|
||||
if (val === 'index') {
|
||||
this.toggleFullScreen()
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
//导出签字表
|
||||
exportSignature(timePeriodId) {
|
||||
window.open(loc() + '/exportSignature/' + timePeriodId)
|
||||
},
|
||||
//打开在线
|
||||
async openOnline(timePeriodId, meetingId) {
|
||||
this.meetingId = meetingId
|
||||
this.timePeriodId = timePeriodId
|
||||
this.$refs.guava.view()
|
||||
this.toggleFullScreen()
|
||||
this.calcSignTableHeight()
|
||||
this.generateQrCodeUrl(timePeriodId, meetingId)
|
||||
this.stopInterval()
|
||||
pollingInterval = this.startPolling(this.getRealTimeData)
|
||||
},
|
||||
calcSignTableHeight() {
|
||||
this.$nextTick(() => {
|
||||
setTimeout(() => {
|
||||
console.log(window.innerHeight)
|
||||
const offsetTop = this.$refs.signTable.$el.offsetTop
|
||||
const th = window.innerHeight - 54 - 40 - offsetTop
|
||||
console.log(th)
|
||||
this.$set(this, 'signTableHeight', th)
|
||||
})
|
||||
})
|
||||
},
|
||||
async generateQrCodeUrl(tpId, meetingId) {
|
||||
const resp = await $.get(loc() + '/generateQrCodeUrl', {tpId, meetingId})
|
||||
if (resp.code === 0) {
|
||||
this.qrCodeUrl = resp.data
|
||||
} else {
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
},
|
||||
async getRealTimeData() {
|
||||
this.lastTimeData = clone(this.realTimeData)
|
||||
const resp = await $.get(loc() + '/getRealTimeData/' + this.timePeriodId)
|
||||
if (resp.code === 0) {
|
||||
this.lastTimeData = clone(this.realTimeData)
|
||||
this.$set(this, 'realTimeData', resp.data.countData)
|
||||
//去重
|
||||
let ud = clone(this.userData)
|
||||
ud.unshift(...resp.data.userData)
|
||||
let uMap = new Map()
|
||||
for (let u of ud) {
|
||||
if (!uMap.has(u.loginname)) {
|
||||
uMap.set(u.loginname, u)
|
||||
}
|
||||
}
|
||||
this.$set(this, 'userData', [...uMap.values()])
|
||||
} else {
|
||||
|
||||
}
|
||||
},
|
||||
startPolling(func) {
|
||||
this.lastTimeData = []
|
||||
this.realTimeData = []
|
||||
this.userData = []
|
||||
func()
|
||||
return setInterval(func, intervalTime)
|
||||
},
|
||||
stopInterval() {
|
||||
if (pollingInterval) {
|
||||
clearInterval(pollingInterval)
|
||||
}
|
||||
},
|
||||
getLastValue(key) {
|
||||
if (this.lastTimeData && this.lastTimeData.length > 0) {
|
||||
return this.lastTimeData.find(v => v.key === key).value
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
},
|
||||
downLoadQrCode() {
|
||||
if (this.$refs['qrCode']) {
|
||||
const src = this.$refs['qrCode'].$el.currentSrc
|
||||
const aEle = document.createElement('a')
|
||||
aEle.setAttribute("download", '签到二维码')
|
||||
aEle.setAttribute("href", src)
|
||||
aEle.click()
|
||||
}
|
||||
},
|
||||
toggleRowTimePeriod(row) {
|
||||
this.$refs['meetingTable'].toggleRowExpansion(row)
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.meetingTypeList = await meetUtil.getAllMeetingType()
|
||||
this.pageData()
|
||||
// this.openOnline('2bb2b18a053b4c8ca00e27d30e8f4573')
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.stopInterval()
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,321 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.timeTable {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<template>
|
||||
<el-card class="mt10" shadow="never">
|
||||
<div class="btn-group tool-button mr10">
|
||||
<el-date-picker @change="getMeetingList(pageForm.meetingTime)" clearable
|
||||
end-placeholder="结束日期"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
type="daterange"
|
||||
v-model="pageForm.meetingTime"
|
||||
value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="btn-group tool-button mr10">
|
||||
<el-select @change="doSearch" clearable
|
||||
filterable="true"
|
||||
placeholder="请输入会议名称"
|
||||
style="width: 100%;" v-model="pageForm.meetingId">
|
||||
<el-option :label="item.meetingName" :value="item.id" v-for="item in meetingList"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<div class="btn-group tool-button mr10">
|
||||
<el-select @change="doSearch" clearable placeholder="请选择会议类型" v-model="pageForm.typeId">
|
||||
<el-option :label="item.meetingTypeName"
|
||||
:value="item.id"
|
||||
v-for="item in meetingTypeList"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
</el-card>
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="会议时间段列表">
|
||||
<template #func>
|
||||
</template>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize"
|
||||
@sort-change="pageOrder"
|
||||
row-key="id">
|
||||
<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 type="expand">
|
||||
<template scope="{row}">
|
||||
<el-table :data="row.meetingTimeData" :header-cell-style="{color:'#1867b0'}" row-key="id">
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
align="center"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in ((row.moduleName === 'teacherMeeting'||row.moduleName === 'gdh') ? jdhTimeTableColumns : timeTableColumns)">
|
||||
|
||||
<template scope="{row}" v-if="column.prop==='total'">
|
||||
<el-link @click="openView(row,'total')" type="primary">{{row.total}}</el-link>
|
||||
</template>
|
||||
<template scope="{row}" v-else-if="column.prop==='signJoinNum'">
|
||||
<el-link @click="openView(row,'signJoinNum')" type="primary">
|
||||
{{row.signJoinNum}}
|
||||
</el-link>
|
||||
</template>
|
||||
<template scope="{row}" v-else-if="column.prop==='notJoinNum'">
|
||||
<el-link @click="openView(row,'notJoinNum')" type="primary">{{row.notJoinNum}}
|
||||
</el-link>
|
||||
</template>
|
||||
<template scope="{row}" v-else-if="column.prop==='notJoinNullNum'">
|
||||
<el-link @click="openView(row,'notJoinNullNum')" type="primary">
|
||||
{{row.notJoinNullNum}}
|
||||
</el-link>
|
||||
</template>
|
||||
<template scope="{row}" v-else-if="column.prop==='zsdbNum'">
|
||||
<el-link @click="openView(row,'zsdbNum')" type="primary">
|
||||
{{row.zsdbNum}}
|
||||
</el-link>
|
||||
</template>
|
||||
<template scope="{row}" v-else-if="column.prop==='lxdbNum'">
|
||||
<el-link @click="openView(row,'lxdbNum')" type="primary">
|
||||
{{row.lxdbNum}}
|
||||
</el-link>
|
||||
</template>
|
||||
<template scope="{row}" v-else-if="column.prop==='proportionNum'">
|
||||
{{proportionNum(row.joinNum,row.total)}}
|
||||
</template>
|
||||
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="right" header-align="center" label="操作">
|
||||
<template scope="{row}">
|
||||
<el-button @click="exportUser(row)" size="mini" type="primary">导出人员</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
align="center"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns">
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
|
||||
<el-dialog :close-on-click-modal="false" :visible.sync="dialogTableVisible" title="人数详情">
|
||||
<div class="btn-group tool-button mr10">
|
||||
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入内容"
|
||||
style="width: 100%"
|
||||
v-model="pageFormUser.searchKeyword">
|
||||
<el-select placeholder="查询类型" slot="prepend" style="width: 80px;"
|
||||
v-model="pageFormUser.searchName">
|
||||
<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 mr10"
|
||||
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}">
|
||||
<el-select @change="flushUnits" @clear="flushUnits" clearable="true"
|
||||
filterable="true"
|
||||
placeholder="所属工会" style="width: 100%;"
|
||||
v-model="pageFormUser.unionId">
|
||||
<el-option :label="item.unionname" :value="item.id" v-for="item in unions"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<div class="btn-group tool-button mr10">
|
||||
<el-select clearable="true" filterable="true" placeholder="所属单位"
|
||||
style="width: 100%;"
|
||||
v-model="pageFormUser.unitId">
|
||||
<el-option :label="item.name" :value="item.id" v-for="item in units"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="btn-group tool-button ">
|
||||
<el-button @click="doSearchUser" icon="el-icon-search" type="primary">搜索</el-button>
|
||||
</div>
|
||||
<el-table :data="userTableData" :row-key="(row)=>{row.id}"
|
||||
:size="tableSize">
|
||||
<el-table-column label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (pageFormUser.pageNumber - 1) * pageFormUser.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="unitName"></el-table-column>
|
||||
<el-table-column label="院级工会" prop="unionName"></el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
:current-page="pageFormUser.pageNumber"
|
||||
:page-size="pageFormUser.pageSize"
|
||||
:page-sizes="[5,10, 20, 30, 50]"
|
||||
:total="pageFormUser.totalCount"
|
||||
@current-change="pageNumberUserChange"
|
||||
@size-change="pageSizeUserChange"
|
||||
layout="total, sizes, prev, pager, next">
|
||||
</el-pagination>
|
||||
|
||||
</el-dialog>
|
||||
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--# include("/platform/meeting/includeJs/meetingUtil.js"){} #-->
|
||||
const meetUtil = new meetingUtil()
|
||||
window.vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
meetingTypeList: [],
|
||||
unions: [],
|
||||
units: [],
|
||||
pageFormUser: {
|
||||
searchName: "u.username",
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "",
|
||||
pageOrderBy: ""
|
||||
},
|
||||
meetingTimeData: {},
|
||||
meetingNumType: "",
|
||||
userTableData: [],
|
||||
meetingList: [],
|
||||
dialogTableVisible: false,
|
||||
oldSignNum: 0,
|
||||
newSignNum: 0,
|
||||
timeTableColumns: [
|
||||
{prop: 'timePeriodName', label: '时间段名称'},
|
||||
{prop: 'startTime', label: '会议时间'},
|
||||
/*{prop: 'endTime', label: '结束时间'},*/
|
||||
{prop: 'total', label: '应到人数'},
|
||||
{prop: 'signJoinNum', label: '实到人数'},
|
||||
{prop: 'notJoinNum', label: '请假人数'},
|
||||
{prop: 'notJoinNullNum', label: '未到人数'},
|
||||
{prop: 'proportionNum', label: '人数比例'},
|
||||
],
|
||||
jdhTimeTableColumns: [
|
||||
{prop: 'timePeriodName', label: '时间段名称'},
|
||||
{prop: 'startTime', label: '会议时间'},
|
||||
/*{prop: 'endTime', label: '结束时间'},*/
|
||||
{prop: 'total', label: '应到人数'},
|
||||
{prop: 'signJoinNum', label: '实到人数'},
|
||||
{prop: 'zsdbNum', label: '正式代表'},
|
||||
{prop: 'lxdbNum', label: '列席代表'},
|
||||
{prop: 'notJoinNum', label: '请假人数'},
|
||||
{prop: 'notJoinNullNum', label: '未到人数'},
|
||||
{prop: 'proportionNum', label: '人数比例'},
|
||||
],
|
||||
tableColumns: [
|
||||
{prop: 'meetingName', label: '会议名称'},
|
||||
{prop: 'meetingTypeName', label: '会议类型'},
|
||||
{prop: 'startTime', label: '会议时间'},
|
||||
/*{prop: 'endTime', label: '结束时间'},*/
|
||||
{prop: 'leaveDeadline', label: '请假截至时间'},
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
proportionNum(joinNum, total) {
|
||||
console.log(joinNum, total)
|
||||
return ((joinNum ? joinNum : 0) / total * 100).toFixed(2) + "%"
|
||||
},
|
||||
exportUser(row) {
|
||||
|
||||
window.open(loc() + '/exportUser?id=' + row.id + "&meetingId=" + row.meetingId)
|
||||
},
|
||||
doSearchUser() {
|
||||
this.pageFormUser.pageNumber = 1
|
||||
this.getUserData(this.meetingTimeData, this.meetingNumType)
|
||||
},
|
||||
pageNumberUserChange(val) {
|
||||
this.pageFormUser.pageNumber = val;
|
||||
this.getUserData(this.meetingTimeData, this.meetingNumType)
|
||||
},
|
||||
pageSizeUserChange(val) {
|
||||
this.pageFormUser.pageSize = val;
|
||||
this.getUserData(this.meetingTimeData, this.meetingNumType)
|
||||
},
|
||||
async getMeetingList(meetingTime) {
|
||||
const {data} = await $.post(loc() + "/getMeetingList", {meetingTime: JSON.stringify(meetingTime)})
|
||||
this.meetingList = data
|
||||
/*if (this.meetingList.length > 0) {
|
||||
this.$set(this.pageForm, "meetingId", this.meetingList[0].id)
|
||||
this.pageData()
|
||||
}*/
|
||||
},
|
||||
async openView(row, type) {
|
||||
this.meetingTimeData = row
|
||||
this.meetingNumType = type
|
||||
await this.getUserData(row, type)
|
||||
this.unions = await getUnions(null)
|
||||
await this.flushUnits()
|
||||
this.dialogTableVisible = true
|
||||
},
|
||||
async flushUnits() {
|
||||
this.$set(this.pageForm, "unitId", "")
|
||||
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
|
||||
this.units = await getUnits(this.pageForm.unionId)
|
||||
} else {
|
||||
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
|
||||
}
|
||||
},
|
||||
async getUserData(row, type) {
|
||||
const {id, meetingId} = row
|
||||
const pageForm = clone(this.pageFormUser)
|
||||
pageForm.id = id
|
||||
pageForm.meetingId = meetingId
|
||||
pageForm.type = type
|
||||
const resp = await $.post(loc() + "/getUserData", pageForm)
|
||||
if (resp.code === 0) {
|
||||
this.userTableData = resp.data.list
|
||||
this.pageFormUser.totalCount = resp.data.totalCount
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
async created() {
|
||||
this.meetingTypeList = await meetUtil.getAllMeetingType()
|
||||
let format = moment().add(-1, 'year').format('YYYY-MM-DD HH:mm:ss');
|
||||
let format1 = moment().format('YYYY-MM-DD HH:mm:ss');
|
||||
this.$set(this.pageForm, "meetingTime", [format, format1])
|
||||
await this.getMeetingList(this.pageForm.meetingTime)
|
||||
await this.pageData()
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -51,10 +51,10 @@ layout("/layouts/platform.html"){
|
||||
<el-card shadow="never" class="mt20">
|
||||
<el-table :data="tableData" header-align="center" style="width: 100%">
|
||||
<el-table-column align="center" label="序号" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table-column align="center" label="标题" prop="qtitle" show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column align="center" label="标题" prop="qtitle"></el-table-column>
|
||||
<el-table-column align="center" label="说明" prop="qsm" show-overflow-tooltip="true">
|
||||
<template scope="scope">
|
||||
<div v-if="scope.row.qsm">{{removeHTMLTag(scope.row.qsm)}}</div>
|
||||
<div v-html="scope.row.qsm" v-if="scope.row.qsm">{{scope.row.qsm}}</div>
|
||||
<span v-else>暂无</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -90,14 +90,13 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<template #edit_func>
|
||||
<el-button @click="doExport" icon="el-icon-printer" type="primary">导出</el-button>
|
||||
<el-button @click="doExportByUnion" icon="el-icon-printer" type="primary">按分工会导出</el-button>
|
||||
</template>
|
||||
<template #edit>
|
||||
<div class="pl10 pr10">
|
||||
<el-row class="text-center">
|
||||
<h2 style="margin: 0">{{viewData.q.qtitle}}</h2>
|
||||
</el-row>
|
||||
<el-row class="mb20" style="width: 96%; margin: 20px auto 0;">
|
||||
<el-row class="mb20">
|
||||
<div v-html="viewData.q.qsm"></div>
|
||||
</el-row>
|
||||
|
||||
@@ -165,7 +164,7 @@ layout("/layouts/platform.html"){
|
||||
:visible.sync="tkViewDialogVisible"
|
||||
custom-class="ViewDialogClass"
|
||||
title="详细信息"
|
||||
width="60%"
|
||||
width="50%"
|
||||
>
|
||||
<el-row>
|
||||
<div class="btn-group tool-button mt5">
|
||||
@@ -178,56 +177,43 @@ layout("/layouts/platform.html"){
|
||||
</div>
|
||||
</el-row>
|
||||
|
||||
<el-table
|
||||
:data="tkTableData"
|
||||
header-align="center"
|
||||
size="medium"
|
||||
style="width: 100%; margin-top: 20px"
|
||||
>
|
||||
<el-table-column
|
||||
align="center"
|
||||
<el-row class="el-table-container" style="margin-top: 20px;">
|
||||
<el-table
|
||||
:data="tkTableData"
|
||||
header-align="center"
|
||||
label="序号"
|
||||
type="index"
|
||||
size="medium"
|
||||
style="width: 100%"
|
||||
>
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(tkPageForm.pageNumber - 1) * tkPageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="提交时间"
|
||||
prop="rtime"
|
||||
width="180px">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="提交人"
|
||||
show-overflow-tooltip
|
||||
prop="username">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="所属工会"
|
||||
show-overflow-tooltip
|
||||
prop="unionname">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
header-align="center"
|
||||
label="文本"
|
||||
prop="rval"
|
||||
width="600px">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="序号"
|
||||
type="index"
|
||||
>
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(tkPageForm.pageNumber - 1) * tkPageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="提交时间"
|
||||
prop="rtime"
|
||||
width="200px">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
header-align="center"
|
||||
label="文本"
|
||||
prop="rval">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-row>
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
:current-page="tkPageForm.pageNumber"
|
||||
:page-size="tkPageForm.pageSize"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:total="tkPageForm.totalCount"
|
||||
:total="pageForm.totalCount"
|
||||
@current-change="(val)=>{tkPageForm.pageNumber = val;tkPageData();}"
|
||||
@size-change="(val)=>{tkPageForm.pageSize = val;tkPageData();}"
|
||||
layout="total, prev, pager, next">
|
||||
@@ -271,9 +257,6 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
doExportByUnion() {
|
||||
location.href = loc() + '/doExportByUnion?questionId=' + this.questionId
|
||||
},
|
||||
doExport() {
|
||||
location.href = loc() + '/doExport?questionId=' + this.questionId
|
||||
},
|
||||
|
||||
@@ -34,10 +34,6 @@ layout("/layouts/platform.html"){
|
||||
color: red;
|
||||
}
|
||||
|
||||
#qsmEditor .w-e-text-container {
|
||||
height: 200px !important;
|
||||
}
|
||||
|
||||
.btDiv {
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -158,11 +154,13 @@ layout("/layouts/platform.html"){
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="标题"
|
||||
show-overflow-tooltip prop="qtitle"></el-table-column>
|
||||
prop="qtitle"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="说明" prop="qsm"
|
||||
show-overflow-tooltip>
|
||||
<template scope="scope">
|
||||
<div v-if="scope.row.qsm">{{removeHTMLTag(scope.row.qsm)}}</div>
|
||||
<div v-html="scope.row.qsm" v-if="!isNull(scope.row.qsm)">
|
||||
{{scope.row.qsm}}
|
||||
</div>
|
||||
<span v-else>暂无</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -223,7 +221,7 @@ layout("/layouts/platform.html"){
|
||||
<template #edit>
|
||||
<div v-if="editMode==='basicInfo'">
|
||||
<el-form :model="formData" :rules="formRules" label-position="right"
|
||||
label-width="120px" ref="addform">
|
||||
label-width="120px" ref="addForm">
|
||||
<vi-title2 title="基础设置"></vi-title2>
|
||||
|
||||
<el-form-item label="问卷类型" prop="qlx">
|
||||
@@ -232,90 +230,12 @@ layout("/layouts/platform.html"){
|
||||
<el-radio :label="1" border>投票调查</el-radio>
|
||||
<el-radio :label="2" border>答题</el-radio>
|
||||
<!-- <el-radio :label="3" border>购物调查</el-radio>-->
|
||||
<el-radio :label="4" border>意向选择</el-radio>
|
||||
<!-- <el-radio :label="4" border>意向选择</el-radio>-->
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item class="is-required" label="标题" prop="qtitle">
|
||||
<el-input placeholder="请填写标题" v-model="formData.qtitle"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-row v-show="![1,3,4].includes(formData.qlx)" :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item class="is-required" label="每日可答次数" label-width="120px"
|
||||
prop="qrkdcs">
|
||||
<el-input-number :max="100" :min="0"
|
||||
controls-position="right"
|
||||
placeholder="设0则不限制次数"
|
||||
style="width: 100%"
|
||||
v-model="formData.qrkdcs"></el-input-number>
|
||||
<div class="text-primary">设0则不限制次数</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="每日答题时间" prop="qdtkssj">
|
||||
<el-time-picker
|
||||
end-placeholder="结束时间"
|
||||
is-range
|
||||
placeholder="选择时间范围"
|
||||
range-separator="-"
|
||||
start-placeholder="开始时间"
|
||||
style="width: 100%"
|
||||
v-model="formData.qdtsj"
|
||||
value-format="HH:mm:ss">
|
||||
</el-time-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row v-show="![1,3,4].includes(formData.qlx)" :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item class="is-required" label="回答总次数" label-width="120px"
|
||||
prop="answerTotalSum">
|
||||
<el-input-number :max="100" :min="0"
|
||||
controls-position="right"
|
||||
placeholder="设0则不限制次数"
|
||||
style="width: 100%"
|
||||
v-model="formData.answerTotalSum"></el-input-number>
|
||||
<div class="text-primary">设0则不限制次数</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="开始时间" prop="startTime">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="formData.startTime"
|
||||
value-format="timestamp">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="结束时间" prop="endTime">
|
||||
<el-date-picker
|
||||
:picker-options="endTimeOptions"
|
||||
style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="formData.endTime"
|
||||
value-format="timestamp">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8" v-show="formData.qlx===4">
|
||||
<el-form-item label="自动选择默认项" label-width="150px" prop="autoSelect">
|
||||
<el-switch
|
||||
v-model="formData.autoSelect"
|
||||
>
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="说明" prop="qsm">
|
||||
<div id="qsmEditor"></div>
|
||||
<el-input placeholder="请填写标题" v-model="formData.qtitle" maxlength="200"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="参加人员" prop="activityUserScopeId">
|
||||
@@ -334,52 +254,236 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="出题模式" prop="ctMode">
|
||||
<el-radio-group v-model="formData.ctMode" size="small">
|
||||
<el-radio :label="1" border>定时定题</el-radio>
|
||||
<el-radio :label="2" border>随机题目</el-radio>
|
||||
</el-radio-group>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="开始时间" prop="startTime"
|
||||
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="formData.startTime"
|
||||
value-format="timestamp">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" v-if="formData.ctMode===2">
|
||||
<el-form-item label="单次出题数量" prop="ctNum">
|
||||
<!--:max="formData.issues.length"-->
|
||||
<el-input-number :min="1"
|
||||
controls-position="right"
|
||||
style="width: 100%"
|
||||
v-model="formData.ctNum"></el-input-number>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="结束时间" prop="endTime"
|
||||
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
|
||||
<el-date-picker
|
||||
:picker-options="endTimeOptions"
|
||||
style="width: 100%"
|
||||
type="datetime"
|
||||
v-model="formData.endTime"
|
||||
value-format="timestamp">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-form-item label="说明" prop="qsm">
|
||||
<text-editor v-model="formData.qsm"></text-editor>
|
||||
</el-form-item>
|
||||
|
||||
<vi-title2 title="出题设置"></vi-title2>
|
||||
|
||||
<el-form-item label="出题模式" prop="ctMode"
|
||||
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
|
||||
<el-radio-group v-model="formData.ctMode" size="small">
|
||||
<el-radio :label="1" border>定时定题</el-radio>
|
||||
<el-radio :label="2" border>随机题目</el-radio>
|
||||
<el-radio :label="3" border>常规模式</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="题目顺序打乱" prop="disruptingOrder"
|
||||
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
|
||||
<el-radio-group v-model="formData.disruptingOrder" size="small">
|
||||
<el-radio :label="true" border>打乱</el-radio>
|
||||
<el-radio :label="false" border>不变</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-row :gutter="20" v-if="formData.ctMode==2">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="是否抽奖" prop="isRaffle">
|
||||
<el-radio-group v-model="formData.isRaffle" size="small">
|
||||
<el-form-item label="单次随机题数" prop="ranDomSingleIssueNum"
|
||||
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
|
||||
<el-input-number :min="1"
|
||||
controls-position="right"
|
||||
style="width: 100%"
|
||||
v-model="formData.ranDomSingleIssueNum"></el-input-number>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="总共随机数" prop="ranDomSum"
|
||||
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
|
||||
<el-input-number :min="1"
|
||||
controls-position="right"
|
||||
style="width: 100%"
|
||||
v-model="formData.ranDomSum"></el-input-number>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20"
|
||||
v-if="formData.ctMode!=2 || (formData.ctMode==2 && formData.startTime && formData.endTime && moment(formData.endTime).diff(formData.startTime,'days') >= 1)">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="是否可重复答" prop="canRepeatedAnswer"
|
||||
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
|
||||
<el-radio-group v-model="formData.canRepeatedAnswer" size="small">
|
||||
<el-radio :label="true" border>是</el-radio>
|
||||
<el-radio :label="false" border>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" v-if="formData.isRaffle">
|
||||
<el-form-item label="抽奖分数" prop="raffleScore">
|
||||
<el-input-number :min="1"
|
||||
<el-col :span="24">
|
||||
<el-form-item label="可重复答次数"
|
||||
prop="canRepeatedAnswerNum"
|
||||
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]"
|
||||
v-if="formData.canRepeatedAnswer">
|
||||
<el-input-number :min="0"
|
||||
controls-position="right"
|
||||
style="width: 100%"
|
||||
v-model="formData.raffleScore"></el-input-number>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" v-if="formData.isRaffle">
|
||||
<el-form-item label="获奖人数" prop="raffleWinnerUserNum">
|
||||
<el-input-number :max="10000" :min="1"
|
||||
controls-position="right"
|
||||
style="width: 100%"
|
||||
v-model="formData.raffleWinnerUserNum"></el-input-number>
|
||||
style="width: 300px"
|
||||
v-model="formData.canRepeatedAnswerNum"></el-input-number>
|
||||
<div class="text-primary">设0则为不限制</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<template>
|
||||
<vi-title2 title="分数统计设置"></vi-title2>
|
||||
<el-form-item label="分数统计" prop="calcScoreMode"
|
||||
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
|
||||
<el-radio-group v-model="formData.calcScoreMode" size="small">
|
||||
<el-radio :label="1" border>最高得分</el-radio>
|
||||
<el-radio :label="2" border>最新得分</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</template>
|
||||
|
||||
<vi-title2 title="抽奖设置"></vi-title2>
|
||||
<el-form-item label="是否抽奖" prop="isRaffle"
|
||||
:rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">
|
||||
<el-radio-group v-model="formData.isRaffle" 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 label="抽奖规则" prop="raffleRule" v-if="formData.isRaffle">
|
||||
<el-table :data="formData.raffleRule" border size="small">
|
||||
<el-table-column label="开始答题时间" prop="startAnswerDate">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'raffleRule.'+$index+'.startAnswerDate'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-date-picker
|
||||
v-model="row.startAnswerDate"
|
||||
type="datetime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="选择开始答题时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="结束答题时间" prop="endAnswerDate">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'raffleRule.'+$index+'.endAnswerDate'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-date-picker
|
||||
v-model="row.endAnswerDate"
|
||||
type="datetime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="选择结束答题时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="抽奖时间" prop="raffleTime">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'raffleRule.'+$index+'.raffleTime'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-date-picker
|
||||
v-model="row.raffleTime"
|
||||
type="datetime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="选择抽奖时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="抽奖分数" prop="raffleScore">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'raffleRule.'+$index+'.raffleScore'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input-number :min="1"
|
||||
controls-position="right"
|
||||
style="width: 300px"
|
||||
placeholder="抽奖分数"
|
||||
v-model="row.raffleScore"></el-input-number>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="获奖人数" prop="raffleWinnerUserNum">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'raffleRule.'+$index+'.raffleWinnerUserNum'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input-number :min="1"
|
||||
controls-position="right"
|
||||
style="width: 300px"
|
||||
placeholder="获奖人数"
|
||||
v-model="row.raffleWinnerUserNum"></el-input-number>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="100px">
|
||||
<template scope="{row}" slot="header">
|
||||
<el-button icon="el-icon-plus"
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="formData.raffleRule.push({})"
|
||||
></el-button>
|
||||
</template>
|
||||
<template scope="{$index}">
|
||||
<el-button size="mini"
|
||||
icon="el-icon-delete"
|
||||
type="danger"
|
||||
@click="formData.raffleRule.splice($index,1)"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
|
||||
<!-- <el-form-item label="抽奖时间" prop="raffleTime"-->
|
||||
<!-- v-if="formData.isRaffle"-->
|
||||
<!-- :rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">-->
|
||||
<!-- <el-date-picker-->
|
||||
<!-- v-model="formData.raffleTime"-->
|
||||
<!-- type="datetime"-->
|
||||
<!-- value-format="yyyy-MM-dd HH:mm:ss"-->
|
||||
<!-- placeholder="选择抽奖时间">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="抽奖分数" prop="raffleScore"-->
|
||||
<!-- v-if="formData.isRaffle"-->
|
||||
<!-- :rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">-->
|
||||
<!-- <el-input-number :min="1"-->
|
||||
<!-- controls-position="right"-->
|
||||
<!-- style="width: 300px"-->
|
||||
<!-- v-model="formData.raffleScore"></el-input-number>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="获奖人数" prop="raffleWinnerUserNum"-->
|
||||
<!-- v-if="formData.isRaffle"-->
|
||||
<!-- :rules="[{required: true, message: '必填', trigger: ['blur', 'change']}]">-->
|
||||
<!-- <el-input-number :max="10000" :min="1"-->
|
||||
<!-- controls-position="right"-->
|
||||
<!-- style="width: 300px"-->
|
||||
<!-- v-model="formData.raffleWinnerUserNum"></el-input-number>-->
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="$refs.guava.index()" size="medium">取消</el-button>
|
||||
<el-button @click="modifyBasicInfo" type="primary">确定</el-button>
|
||||
@@ -718,7 +822,7 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-row>
|
||||
<span>
|
||||
标题、提示
|
||||
标题提示:
|
||||
</span>
|
||||
|
||||
<el-button @click="openIssueName('iname')" plain size="small">
|
||||
@@ -732,7 +836,7 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-row type="flex" style="flex-flow: row wrap;column-gap: 10px;margin:20px 0">
|
||||
<div>
|
||||
<span>题目类型</span>
|
||||
<span>题目类型:</span>
|
||||
<el-select
|
||||
@change="if(currentModifyIssue.itx==2){issueData[currentModifyIssueIndex].iplfs=1;issueData[currentModifyIssueIndex].iisdx=true;issueData[currentModifyIssueIndex].wors=[{}]}else{issueData[currentModifyIssueIndex].wors=[{wtxt:'选项1'},{wtxt:'选项2'}]}"
|
||||
placeholder="题型" size="small"
|
||||
@@ -795,8 +899,9 @@ layout("/layouts/platform.html"){
|
||||
</div>
|
||||
</el-row>
|
||||
|
||||
<el-row class="mb20">
|
||||
<span>显示日期</span>
|
||||
<!--定时定题模式下才需要设置显示日期-->
|
||||
<el-row class="mb20" v-if="questionData.ctMode==1">
|
||||
<span>显示日期:</span>
|
||||
<el-date-picker placeholder="请选择显示日期"
|
||||
size="small"
|
||||
type="date"
|
||||
@@ -806,16 +911,6 @@ layout("/layouts/platform.html"){
|
||||
</el-date-picker>
|
||||
</el-row>
|
||||
|
||||
<el-row class="mb20">
|
||||
<span>排序编号</span>
|
||||
<el-input
|
||||
v-if="questionData.ctMode==1"
|
||||
v-model="issueData[currentModifyIssueIndex].ipxbh"
|
||||
place="请输入排序编号"
|
||||
style="width: 80px"
|
||||
size="small"></el-input>
|
||||
</el-row>
|
||||
|
||||
<template v-if="issueData[currentModifyIssueIndex].itx===1">
|
||||
<vi-title2 title="选项设置"></vi-title2>
|
||||
<el-row v-if="currentModifyIssue.itx==1">
|
||||
@@ -958,7 +1053,6 @@ layout("/layouts/platform.html"){
|
||||
|
||||
</div>
|
||||
<script>
|
||||
let qsmEditor
|
||||
let upTxtEditor
|
||||
let cakeEditor
|
||||
let vue = new Vue({
|
||||
@@ -983,7 +1077,7 @@ layout("/layouts/platform.html"){
|
||||
year: new Date().getFullYear() + ''
|
||||
},
|
||||
viewData: {issue: [{word: []}]},
|
||||
formData: {issues: [{wors: [{}]}]},
|
||||
formData: {issues: [{wors: [{}]}], raffleRule: []},
|
||||
setTitleDialogVisible: false,
|
||||
formRules: {
|
||||
qtitle: [{required: true, message: '请填写标题', trigger: ['blur', 'change']}],
|
||||
@@ -1217,14 +1311,7 @@ layout("/layouts/platform.html"){
|
||||
this.$refs.guava.edit()
|
||||
this.editMode = 'basicInfo'
|
||||
setTimeout(() => {
|
||||
$('#qsmEditor').html("")
|
||||
qsmEditor = new wangEditor('#qsmEditor')
|
||||
qsmEditor.config.uploadImgShowBase64 = true
|
||||
qsmEditor.config.onchange = (html) => {
|
||||
this.$set(this.formData, "qsm", html)
|
||||
}
|
||||
qsmEditor.create()
|
||||
this.formData = {issues: [], qlx: 2, qrkdcs: 0}
|
||||
this.formData = {issues: [], qlx: 2, qrkdcs: 0, raffleRule: []}
|
||||
}, 300)
|
||||
|
||||
},
|
||||
@@ -1233,18 +1320,15 @@ layout("/layouts/platform.html"){
|
||||
async openEditBasicInfo(qid) {
|
||||
const {code, data, msg} = await $.get(loc() + "/findBasicInfo", {qid: qid})
|
||||
if (code === 0) {
|
||||
this.$nextTick(() => {
|
||||
$('#qsmEditor').html(data.qsm)
|
||||
qsmEditor = new wangEditor('#qsmEditor')
|
||||
qsmEditor.config.onchange = (html) => {
|
||||
this.$set(this.formData, "qsm", html)
|
||||
setTimeout(() => {
|
||||
if (data.raffleRule == null) {
|
||||
data.raffleRule = []
|
||||
}
|
||||
qsmEditor.create()
|
||||
this.formData = data
|
||||
if (!this.isNull(this.formData.qdtkssj) && !this.isNull(this.formData.qdtjssj)) {
|
||||
this.$set(this.formData, 'qdtsj', [this.formData.qdtkssj, this.formData.qdtjssj])
|
||||
}
|
||||
})
|
||||
}, 300)
|
||||
this.editMode = 'basicInfo'
|
||||
this.$refs.guava.edit()
|
||||
} else {
|
||||
@@ -1252,6 +1336,7 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
async modifyBasicInfo() {
|
||||
|
||||
if (this.formData.qlx === 4) {
|
||||
if (this.formData.autoSelect && this.formData.endTime < new Date().getTime()) {
|
||||
this.$message.warning('结束时间必须要大于当前时间')
|
||||
@@ -1259,22 +1344,25 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
}
|
||||
|
||||
//答题 并且是 定时定题
|
||||
// if (this.formData.qlx === 2 && this.formData.ctMode === 1) {
|
||||
// if (this.formData.issues.some(v => v.displayDate != null) && this.formData.issues.some(v => v.displayDate == null)) {
|
||||
// this.$message.warning('显示日期只能全为空或者全不为空')
|
||||
// return
|
||||
// }
|
||||
// }
|
||||
this.$refs['addForm'].validate(async valid => {
|
||||
if (valid) {
|
||||
// if (this.formData.isRaffle && moment(this.formData.raffleTime).isBefore(moment(this.formData.endTime))) {
|
||||
// this.$message.warning('抽奖时间必须要大于活动结束时间')
|
||||
// return
|
||||
// }
|
||||
|
||||
const {code, msg} = await $.post(loc() + '/modifyBasicInfo', this.formData)
|
||||
if (code === 0) {
|
||||
this.notifySuccess(msg)
|
||||
this.$refs.guava.index()
|
||||
this.pageData()
|
||||
} else {
|
||||
this.notifyWarning(msg)
|
||||
}
|
||||
const {code, msg} = await $.post(loc() + '/modifyBasicInfo', {
|
||||
question: JSON.stringify(this.formData)
|
||||
})
|
||||
if (code === 0) {
|
||||
this.$message.success(msg)
|
||||
this.$refs.guava.index()
|
||||
this.pageData()
|
||||
} else {
|
||||
this.$message.warning(msg)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//打开题目设置
|
||||
@@ -1303,14 +1391,23 @@ layout("/layouts/platform.html"){
|
||||
|
||||
//修改题目
|
||||
async doModifyIssues() {
|
||||
//答题 并且是 定时定题
|
||||
if (this.questionData.qlx === 2 && this.questionData.ctMode === 1) {
|
||||
if (this.issueData.some(v => v.displayDate != null) && this.issueData.some(v => v.displayDate == null)) {
|
||||
this.notifyWarning('显示日期只能全为空或者全不为空')
|
||||
//答题
|
||||
if (this.questionData.qlx === 2) {
|
||||
if (this.issueData.some(v => v.fraction == null || v.fraction === '')) {
|
||||
this.$message.warning('每题都需要设置分数')
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
//定时定题需要设置时间
|
||||
if (this.questionData.ctMode === 1) {
|
||||
if (this.issueData.some(v => v.displayDate == null || v.displayDate === '')) {
|
||||
this.$message.warning('每题都需要设置显示日期')
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const confirm = await this.$confirm('您确定要提交吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
|
||||
@@ -40,7 +40,8 @@ layout("/layouts/platform.html"){
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">工号姓名:</div>
|
||||
<div class="search-item-option">
|
||||
<el-input placeholder="输入关键字" v-model="pageForm.searchKeyword" maxlength="10"></el-input>
|
||||
<el-input placeholder="输入关键字" v-model="pageForm.searchKeyword"
|
||||
maxlength="10"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -113,6 +114,7 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:key="column.key"
|
||||
:sortable="column.sortable"
|
||||
align="center"
|
||||
header-align="center"
|
||||
@@ -122,6 +124,10 @@ layout("/layouts/platform.html"){
|
||||
<span @click="showDays(row)" style="color: #236eb4; cursor: pointer">{{ row.dayCount ? row.dayCount : 0 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="每轮得分" prop="everyRandomScore"
|
||||
v-if="questionCtMode==2 && isSameDay"></el-table-column>
|
||||
|
||||
</el-table>
|
||||
|
||||
<!--# include("/layouts/pagination.html"){}#-->
|
||||
@@ -167,8 +173,8 @@ layout("/layouts/platform.html"){
|
||||
{prop: 'unionname', label: '工会'},
|
||||
{prop: 'mobile', label: '联系方式'},
|
||||
// {prop: 'answerTotal', label: '答题次数(第几回答题)', sortable: true},
|
||||
{prop: 'max_score', label: '得分'},
|
||||
{prop: 'answerDate', label: '答题日期'},
|
||||
{prop: 'score', label: '得分'},
|
||||
],
|
||||
pageForm: {
|
||||
unionId: '',
|
||||
@@ -179,8 +185,29 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue')
|
||||
computed: {
|
||||
//判断是否为同一天
|
||||
isSameDay() {
|
||||
if (this.pageForm.questionId) {
|
||||
const currentQuestion = this.questions.find(v => v.qid === this.pageForm.questionId)
|
||||
if (currentQuestion) {
|
||||
const {startTime, endTime} = currentQuestion
|
||||
return moment(startTime).isSame(moment(endTime), 'day')
|
||||
}
|
||||
return false
|
||||
}
|
||||
return false
|
||||
},
|
||||
questionCtMode(){
|
||||
if (this.pageForm.questionId) {
|
||||
const currentQuestion = this.questions.find(v => v.qid === this.pageForm.questionId)
|
||||
if (currentQuestion) {
|
||||
return currentQuestion.ctMode
|
||||
}
|
||||
return null
|
||||
}
|
||||
return null
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
showDays(row) {
|
||||
@@ -209,7 +236,7 @@ layout("/layouts/platform.html"){
|
||||
this.doSearch()
|
||||
},
|
||||
async getQuestion() {
|
||||
const {data} = await $.get(loc()+"/getQuestion", {year: this.pageForm.year})
|
||||
const {data} = await $.get(loc() + "/getQuestion", {year: this.pageForm.year})
|
||||
return data
|
||||
},
|
||||
async flushUnits() {
|
||||
|
||||
@@ -1,222 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.el-tabs__content {
|
||||
padding-top: 20px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<el-card shadow="never">
|
||||
<div class="search">
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">年度:</div>
|
||||
<div class="search-item-option">
|
||||
<el-date-picker
|
||||
:clearable="false"
|
||||
@change="yearChange"
|
||||
placeholder="选择年"
|
||||
style="width: 100%"
|
||||
type="year"
|
||||
v-model="pageForm.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-select filterable="true" placeholder="所属问卷" style="width: 100%;" @change="doSearch"
|
||||
v-model="pageForm.questionId">
|
||||
<el-option :label="item.qtitle" :value="item.qid" v-for="item in questions"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">工号姓名:</div>
|
||||
<div class="search-item-option">
|
||||
<el-input placeholder="输入关键字" v-model="pageForm.searchKeyword" maxlength="10"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search-item"
|
||||
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}">
|
||||
<div class="search-item-label">所属工会:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select @change="flushUnits" @clear="flushUnits" clearable="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>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">所属单位:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select 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>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search-query">
|
||||
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="参加人员">
|
||||
<template #func>
|
||||
<el-button :disabled="!pageForm.questionId" @click="doExportInventory" icon="el-icon-printer"
|
||||
size="small"
|
||||
type="primary">导出名单
|
||||
</el-button>
|
||||
<!--<el-button :disabled="!pageForm.questionId" @click="doExportAll" icon="el-icon-printer"
|
||||
size="small"
|
||||
type="primary">导出分工会阶段得分
|
||||
</el-button>-->
|
||||
</template>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" class="vi-table"
|
||||
ref="table" row-key="id" style="width: 100%" v-loading="tableLoading">
|
||||
<el-table-column
|
||||
align="center" header-align="center" label="名次" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</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">
|
||||
<template v-if="column.prop=='dayCount'" scope="{row}">
|
||||
<span @click="showDays(row)" style="color: #236eb4; cursor: pointer">{{ row.dayCount ? row.dayCount : 0 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!--# include("/layouts/pagination.html"){}#-->
|
||||
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
</guava>
|
||||
|
||||
<!-- <el-dialog title="答题次数" :visible.sync="dayDialogVisible" width="40%">-->
|
||||
<!-- <el-table :data="dayTableData" style="width: 100%;" max-height="400">-->
|
||||
<!-- <el-table-column align="center" header-align="center" show-overflow-tooltip label="姓名"-->
|
||||
<!-- prop="username"></el-table-column>-->
|
||||
<!-- <el-table-column align="center" header-align="center" show-overflow-tooltip label="工号"-->
|
||||
<!-- prop="loginname"></el-table-column>-->
|
||||
<!-- <el-table-column align="center" header-align="center" show-overflow-tooltip label="答题时间"-->
|
||||
<!-- prop="day"></el-table-column>-->
|
||||
<!-- </el-table>-->
|
||||
<!-- <span slot="footer" class="dialog-footer">-->
|
||||
<!-- <el-button type="primary" @click="dayDialogVisible = false">确 定</el-button>-->
|
||||
<!-- </span>-->
|
||||
<!-- </el-dialog>-->
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
dayDialogVisible: false,
|
||||
dayTableData: [],
|
||||
unions: [],
|
||||
units: [],
|
||||
questions: [],
|
||||
tableLoading: false,
|
||||
tableKey: '',
|
||||
tableColumns: [
|
||||
{prop: 'username', label: '姓名'},
|
||||
{prop: 'loginname', label: '工号'},
|
||||
{prop: 'sex', label: '性别'},
|
||||
{prop: 'unitname', label: '单位'},
|
||||
{prop: 'unionname', label: '工会'},
|
||||
{prop: 'mobile', label: '联系方式'},
|
||||
// {prop: 'answerTotal', label: '答题次数(第几回答题)', sortable: true},
|
||||
{prop: 'max_score', label: '得分'},
|
||||
// {prop: 'answerDate', label: '答题日期'},
|
||||
],
|
||||
pageForm: {
|
||||
unionId: '',
|
||||
unitId: '',
|
||||
year: new Date().getFullYear() + '',
|
||||
keyWord: '',
|
||||
answerDate: moment().format("YYYY-MM-DD")
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue')
|
||||
},
|
||||
methods: {
|
||||
showDays(row) {
|
||||
if (!row.days || row.dayCount === 0) {
|
||||
return
|
||||
}
|
||||
this.dayTableData = []
|
||||
row.days.split(',').map(o => {
|
||||
this.dayTableData.push({username: row.username, loginname: row.loginname, day: o})
|
||||
})
|
||||
this.dayDialogVisible = true
|
||||
},
|
||||
doExportInventory() {
|
||||
let {questionId, unionId, unitId, answerDate} = this.pageForm
|
||||
answerDate = answerDate == null ? '' : answerDate
|
||||
window.open(loc() + "/export?questionId=" + questionId + "&unionId=" + unionId + "&unitId=" + unitId + "&answerDate=" + answerDate)
|
||||
},
|
||||
doExportAll() {
|
||||
const {questionId, unionId, unitId} = this.pageForm
|
||||
window.open(loc() + "/doExportAll?questionId=" + questionId)
|
||||
},
|
||||
async yearChange() {
|
||||
this.questions = await this.getQuestion()
|
||||
this.questions = this.questions.filter(v => v.qlx === 2)
|
||||
this.$set(this.pageForm, "questionId", this.questions.length > 0 ? this.questions[0].qid : '')
|
||||
this.doSearch()
|
||||
},
|
||||
async getQuestion() {
|
||||
const {data} = await $.get("/platform/question/answer/ranking/getQuestion", {year: this.pageForm.year})
|
||||
return data
|
||||
},
|
||||
async flushUnits() {
|
||||
this.$set(this.pageForm, "unitId", "")
|
||||
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
|
||||
this.units = await getUnits(this.pageForm.unionId)
|
||||
} else {
|
||||
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
|
||||
}
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.questions = await this.getQuestion()
|
||||
this.questions = this.questions.filter(v => v.qlx === 2)
|
||||
this.$set(this.pageForm, "questionId", this.questions.length > 0 ? this.questions[0].qid : '')
|
||||
this.pageData();
|
||||
this.unions = await getUnions(null)
|
||||
this.flushUnits();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -91,11 +91,6 @@ layout("/layouts/platform.html"){
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="中奖名单">
|
||||
<template #func>
|
||||
<el-button :disabled="!pageForm.questionId" @click="doRaffle" icon="el-icon-printer"
|
||||
size="small"
|
||||
type="primary">立即抽奖
|
||||
</el-button>
|
||||
|
||||
<el-button :disabled="!pageForm.questionId" @click="exportWinners" icon="el-icon-printer"
|
||||
size="small"
|
||||
type="primary">导出中奖名单
|
||||
@@ -152,9 +147,8 @@ layout("/layouts/platform.html"){
|
||||
{prop: 'unitname', label: '单位'},
|
||||
{prop: 'unionname', label: '工会'},
|
||||
{prop: 'mobile', label: '联系方式'},
|
||||
{prop: 'score', label: '得分'},
|
||||
// {prop: 'winDate', label: '中奖日期'},
|
||||
// {prop: 'maxScore', label: '抽奖分数(最高分)'},
|
||||
{prop: 'winDate', label: '中奖日期'},
|
||||
{prop: 'score', label: '抽奖分数'},
|
||||
],
|
||||
pageForm: {
|
||||
unionId: '',
|
||||
@@ -188,12 +182,6 @@ layout("/layouts/platform.html"){
|
||||
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
|
||||
}
|
||||
},
|
||||
async doRaffle() {
|
||||
const {code} = await $.get('/platform/question/answer/statistics/doRaffle', {questionId: this.pageForm.questionId})
|
||||
if (code === 0) {
|
||||
this.doSearch()
|
||||
}
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.questions = await this.getQuestion()
|
||||
|
||||
@@ -89,7 +89,7 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column label="报名状态" prop="bmzt" header-align="center" align="center">
|
||||
<template scope="scope">
|
||||
<span style="color: #E6A23C" v-if="scope.row.bmzt==6">待填写报名资料</span>
|
||||
<span style="color: #E6A23C" v-if="scope.row.bmzt==1">待院级工会审核</span>
|
||||
<span style="color: #E6A23C" v-if="scope.row.bmzt==1">待分工会审核</span>
|
||||
<span style="color: #F56C6C" v-if="scope.row.bmzt==2">分工会审核未通过</span>
|
||||
<span style="color: #E6A23C" v-if="scope.row.bmzt==3">待校工会审核</span>
|
||||
<span style="color: #F56C6C" v-if="scope.row.bmzt==4">校工会审核未通过</span>
|
||||
@@ -354,4 +354,4 @@ display: -webkit-box;
|
||||
<!--#layout("/platform/zgfw/lxy/dialogView.html"){}#-->
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
#-->
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -42,111 +42,122 @@ layout("/layouts/platform.html"){
|
||||
<guava>
|
||||
<el-row class="transition-row">
|
||||
<transition name="el-zoom-in-center">
|
||||
<div v-show="v=='index'" class="transition-item">
|
||||
<div class="transition-item" v-show="v=='index'">
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-date-picker
|
||||
v-model="pageForm.year"
|
||||
placeholder="选择年度"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="选择年度">
|
||||
v-model="pageForm.year"
|
||||
value-format="yyyy">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-select class="d-select" v-model="pageForm.pastQuota" filterable clearable
|
||||
width="300px"
|
||||
placeholder="请选择活动">
|
||||
<el-select class="d-select" clearable filterable
|
||||
placeholder="请选择活动"
|
||||
v-model="pageForm.pastQuota"
|
||||
width="300px">
|
||||
<el-option
|
||||
v-for="item in lxyHd"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
:value="item.id"
|
||||
v-for="item in lxyHd">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-select class="d-select" v-model="pageForm.hdcd" filterable clearable
|
||||
width="300px"
|
||||
placeholder="请选择场地">
|
||||
<el-select class="d-select" clearable filterable placeholder="请选择场地"
|
||||
v-model="pageForm.hdcd"
|
||||
width="300px">
|
||||
<el-option
|
||||
v-for="item in lxyHdCd"
|
||||
:key="item.id"
|
||||
:label="item.hdcd"
|
||||
:value="item.id">
|
||||
:value="item.id"
|
||||
v-for="item in lxyHdCd">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
|
||||
<el-button @click="doSearch" icon="el-icon-search"
|
||||
type="primary"></el-button>
|
||||
</div>
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<el-button icon="el-icon-plus" @click="openAdd">创建活动</el-button>
|
||||
<el-button @click="openAdd" icon="el-icon-plus">创建活动</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
|
||||
<el-card class="mt10" shadow="never">
|
||||
<el-table :data="tableData" @sort-change="pageOrder" row-key="id"
|
||||
style="width: 100%"
|
||||
v-loading="tabLoading">
|
||||
<el-table-column align="center" header-align="center" label="序号" width="100px">
|
||||
<el-table-column align="center" header-align="center" label="序号"
|
||||
width="100px">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="活动名称" prop="name" header-align="center" width="300px"
|
||||
align="center">
|
||||
<el-table-column align="center" header-align="center" label="活动名称"
|
||||
prop="name"
|
||||
width="300px">
|
||||
<template scope="scope">
|
||||
<el-link type="primary" @click="lxy_app.openView(scope.row.id)">
|
||||
<el-link @click="lxy_app.openView(scope.row.id)" type="primary">
|
||||
{{scope.row.name}}
|
||||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="活动场地" prop="hdcd" header-align="center" show-overflow-tooltip
|
||||
align="center"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="活动场地"
|
||||
prop="hdcd"
|
||||
show-overflow-tooltip></el-table-column>
|
||||
|
||||
<el-table-column label="活动时间" prop="hdkssj" header-align="center" sortable
|
||||
align="center">
|
||||
<el-table-column align="center" header-align="center" label="活动时间"
|
||||
prop="hdkssj"
|
||||
sortable>
|
||||
<template scope="scope">
|
||||
{{scope.row.hdkssj}} 至 {{scope.row.hdjssj}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="报名时间" prop="bmsj" header-align="center" sortable
|
||||
align="center" width="330px">
|
||||
<el-table-column align="center" header-align="center" label="报名时间"
|
||||
prop="bmsj"
|
||||
sortable width="330px">
|
||||
|
||||
<template scope="scope">
|
||||
{{scope.row.bmkssj}} 至 {{scope.row.bmjzsj}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="状态" prop="name" header-align="center"
|
||||
align="center">
|
||||
<el-table-column align="center" header-align="center" label="状态"
|
||||
prop="name">
|
||||
<template scope="scope">
|
||||
<span :class="lxy_app.getStatus(scope.row).class">{{lxy_app.getStatus(scope.row).name}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="操作" fixed="right"
|
||||
<el-table-column align="center" fixed="right" header-align="center"
|
||||
label="操作"
|
||||
width="250px">
|
||||
<template scope="scope">
|
||||
<!-- <el-button size="mini" @click="openView(scope.row.id)">查看</el-button>-->
|
||||
<el-button size="mini" type="primary" @click="openEdit(scope.row.id)" plain>编辑
|
||||
<el-button @click="openEdit(scope.row.id)" plain
|
||||
size="mini" type="primary">编辑
|
||||
</el-button>
|
||||
<el-button size="mini" type="danger" @click="doDelete(scope.row.id)" plain>删除
|
||||
<el-button @click="doDelete(scope.row.id)" plain
|
||||
size="mini" type="danger">删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container">
|
||||
<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">
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:total="pageForm.totalCount"
|
||||
@current-change="pageNumberChange"
|
||||
@size-change="pageSizeChange"
|
||||
layout="total, sizes, prev, pager, next">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
@@ -155,44 +166,51 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<!-- 新增 -->
|
||||
<transition name="el-zoom-in-center">
|
||||
<div v-show="v=='add'" class="transition-item">
|
||||
<div class="transition-item" v-show="v=='add'">
|
||||
<el-card class="box-card v-box" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<el-button icon="el-icon-back" type="text" @click="v='index'" style="font-size: 18px">返回
|
||||
<div class="clearfix" slot="header">
|
||||
<el-button @click="v='index'" icon="el-icon-back"
|
||||
style="font-size: 18px"
|
||||
type="text">返回
|
||||
</el-button>
|
||||
</div>
|
||||
<el-row style="padding: 0 10%;" v-loading="loading">
|
||||
|
||||
<el-steps :active="stepActive" simple finish-status="success">
|
||||
<el-step title="活动信息" description="">
|
||||
<el-steps :active="stepActive" finish-status="success" simple>
|
||||
<el-step description="" title="活动信息">
|
||||
|
||||
</el-step>
|
||||
<el-step title="名额分配" description="">
|
||||
<el-step description="" title="名额分配">
|
||||
|
||||
</el-step>
|
||||
</el-steps>
|
||||
|
||||
|
||||
<transition name="el-zoom-in-top">
|
||||
<div v-show="stepActive==0" class="transition-box" style="margin-top: 20px;">
|
||||
<el-form :model="formData" ref="form" :rules="formRules"
|
||||
label-width="120px">
|
||||
<el-form-item label="填写活动信息 " label-width="135px" class="view-header">
|
||||
<div class="transition-box" style="margin-top: 20px;"
|
||||
v-show="stepActive==0">
|
||||
<el-form :model="formData" :rules="formRules"
|
||||
label-width="120px"
|
||||
ref="form">
|
||||
<el-form-item class="view-header" label="填写活动信息 "
|
||||
label-width="135px">
|
||||
</el-form-item>
|
||||
<el-form-item label="活动名称" prop="name">
|
||||
<el-input type="text" v-model="formData.name" maxlength="100"
|
||||
placeholder="请填写活动名称"></el-input>
|
||||
<el-input maxlength="100" placeholder="请填写活动名称"
|
||||
type="text"
|
||||
v-model="formData.name"></el-input>
|
||||
</el-form-item>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报名时间" label-width="120px" prop="bmsj">
|
||||
<el-form-item label="报名时间" label-width="120px"
|
||||
prop="bmsj">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
v-model="formData.bmsj"
|
||||
type="datetimerange"
|
||||
align="right"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
start-placeholder="开始日期"
|
||||
style="width: 100%"
|
||||
type="datetimerange"
|
||||
v-model="formData.bmsj"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
@@ -200,12 +218,12 @@ layout("/layouts/platform.html"){
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动时间" prop="hdsj">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
v-model="formData.hdsj"
|
||||
type="daterange"
|
||||
align="right"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
start-placeholder="开始日期"
|
||||
style="width: 100%"
|
||||
type="daterange"
|
||||
v-model="formData.hdsj"
|
||||
value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
@@ -213,13 +231,15 @@ layout("/layouts/platform.html"){
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="活动场地" prop="hdcd">
|
||||
<el-input type="text" v-model="formData.hdcd" maxlength="100"
|
||||
placeholder="请填写活动场地"></el-input>
|
||||
<el-input maxlength="100" placeholder="请填写活动场地"
|
||||
type="text"
|
||||
v-model="formData.hdcd"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="报名条件" prop="hdzysx">
|
||||
<el-input type="textarea" rows="4" v-model="formData.hdzysx" maxlength="500"
|
||||
placeholder="请填写报名条件"></el-input>
|
||||
<el-input maxlength="500" placeholder="请填写报名条件"
|
||||
rows="4" type="textarea"
|
||||
v-model="formData.hdzysx"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<div class="hdnr">
|
||||
@@ -229,67 +249,76 @@ layout("/layouts/platform.html"){
|
||||
</div>
|
||||
|
||||
|
||||
<el-form-item prop="accessory" label="附件上传">
|
||||
<el-form-item label="附件上传" prop="accessory">
|
||||
<el-upload
|
||||
name="file"
|
||||
ref="upload"
|
||||
action="**"
|
||||
:on-remove="handleRemove"
|
||||
:on-change="handleChange"
|
||||
:auto-upload="false"
|
||||
:file-list="fileList"
|
||||
:on-change="handleChange"
|
||||
:on-remove="handleRemove"
|
||||
action="**"
|
||||
limit="5"
|
||||
:file-list="fileList">
|
||||
<el-button size="small" type="primary">选择文件</el-button>
|
||||
name="file"
|
||||
ref="upload">
|
||||
<el-button size="small" type="primary">选择文件
|
||||
</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<div style="float: right;margin: 20px 0">
|
||||
<el-button type="primary" @click="next">下一步</el-button>
|
||||
<el-button @click="next" type="primary">下一步</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</transition>
|
||||
<transition name="el-zoom-in-bottom">
|
||||
<div v-show="stepActive==1" class="transition-box" style="margin-top: 20px;">
|
||||
<div class="transition-box" style="margin-top: 20px;"
|
||||
v-show="stepActive==1">
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<span style="color:#409EFF">沿用之前活动名额 </span>
|
||||
<el-select class="d-select" v-model="pastQuota" filterable clearable
|
||||
width="300px"
|
||||
placeholder="请选择活动" @change="mefpChange">
|
||||
<el-select @change="mefpChange" class="d-select" clearable
|
||||
filterable
|
||||
placeholder="请选择活动"
|
||||
v-model="pastQuota" width="300px">
|
||||
<el-option
|
||||
v-for="item in lxyHd"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
:value="item.id"
|
||||
v-for="item in lxyHd">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<el-table :data="unions_" size="medium" height="70vh">
|
||||
<el-table-column align="center" type="index" header-align="center"
|
||||
label="序号"></el-table-column>
|
||||
<el-table :data="unions_" height="70vh" size="medium">
|
||||
<el-table-column align="center" header-align="center"
|
||||
label="序号"
|
||||
type="index"></el-table-column>
|
||||
|
||||
<el-table-column label="院级工会" prop="unionname" sortable>
|
||||
<el-table-column label="分工会" prop="unionname" sortable>
|
||||
<template scope="{row}">
|
||||
{{isDisPlayCode?'('+row.unioncode+')':null}}{{row.unionname}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="会员人数" prop="membercount" sortable></el-table-column>
|
||||
<el-table-column label="会员人数" prop="membercount"
|
||||
sortable></el-table-column>
|
||||
|
||||
<el-table-column label="名额" prop="number" header-align="center" width="200px"
|
||||
align="center">
|
||||
<el-table-column align="center" header-align="center"
|
||||
label="名额" prop="number"
|
||||
width="200px">
|
||||
<template scope="scope">
|
||||
<el-input-number v-model="scope.row.number" placeholder="请填写名额数"
|
||||
controls-position="right" :min="0"
|
||||
:max="1000"></el-input-number>
|
||||
<el-input-number :max="1000"
|
||||
:min="0"
|
||||
controls-position="right"
|
||||
placeholder="请填写名额数"
|
||||
v-model="scope.row.number"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div style="float: right;margin: 20px 0">
|
||||
<el-button @click="stepActive=0">上一步</el-button>
|
||||
<el-button type="primary" :disabled="subDis" @click="doAdd()">提
|
||||
<el-button :disabled="subDis" @click="doAdd()"
|
||||
type="primary">提
|
||||
交
|
||||
</el-button>
|
||||
</div>
|
||||
@@ -302,33 +331,38 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<!-- 编辑 -->
|
||||
<transition name="el-zoom-in-center">
|
||||
<div v-show="v=='edit'" class="transition-item">
|
||||
<div class="transition-item" v-show="v=='edit'">
|
||||
<el-card class="box-card v-box" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<el-button icon="el-icon-back" type="text" @click="v='index'" style="font-size: 18px">返回
|
||||
<div class="clearfix" slot="header">
|
||||
<el-button @click="v='index'" icon="el-icon-back"
|
||||
style="font-size: 18px"
|
||||
type="text">返回
|
||||
</el-button>
|
||||
</div>
|
||||
<el-row style="padding: 0 10%;" v-loading="loading">
|
||||
|
||||
<el-tabs v-model="tabs_active" stretch>
|
||||
<el-tabs stretch v-model="tabs_active">
|
||||
<el-tab-pane label="活动信息" name="1">
|
||||
<el-form :model="formData" ref="form" :rules="formRules"
|
||||
label-width="120px">
|
||||
<el-form :model="formData" :rules="formRules"
|
||||
label-width="120px"
|
||||
ref="form">
|
||||
<vi-title title="修改活动信息"></vi-title>
|
||||
<el-form-item label="活动名称" prop="name">
|
||||
<el-input type="text" v-model="formData.name" maxlength="100"
|
||||
placeholder="请填写活动名称"></el-input>
|
||||
<el-input maxlength="100" placeholder="请填写活动名称"
|
||||
type="text"
|
||||
v-model="formData.name"></el-input>
|
||||
</el-form-item>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报名时间" label-width="120px" prop="bmsj">
|
||||
<el-form-item label="报名时间" label-width="120px"
|
||||
prop="bmsj">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
v-model="formData.bmsj"
|
||||
type="datetimerange"
|
||||
align="right"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
start-placeholder="开始日期"
|
||||
style="width: 100%"
|
||||
type="datetimerange"
|
||||
v-model="formData.bmsj"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
@@ -336,12 +370,12 @@ layout("/layouts/platform.html"){
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动时间" prop="hdsj">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
v-model="formData.hdsj"
|
||||
type="daterange"
|
||||
align="right"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
start-placeholder="开始日期"
|
||||
style="width: 100%"
|
||||
type="daterange"
|
||||
v-model="formData.hdsj"
|
||||
value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
@@ -349,36 +383,41 @@ layout("/layouts/platform.html"){
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="活动场地" prop="hdcd">
|
||||
<el-input type="text" v-model="formData.hdcd" maxlength="100"
|
||||
placeholder="请填写活动场地"></el-input>
|
||||
<el-input maxlength="100" placeholder="请填写活动场地"
|
||||
type="text"
|
||||
v-model="formData.hdcd"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="报名条件" prop="hdzysx">
|
||||
<el-input type="textarea" rows="4" v-model="formData.hdzysx" maxlength="500"
|
||||
placeholder="请填写报名条件"></el-input>
|
||||
<el-input maxlength="500" placeholder="请填写报名条件"
|
||||
rows="4" type="textarea"
|
||||
v-model="formData.hdzysx"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="活动内容" prop="hdnr">
|
||||
<div v-if="v=='edit'" id="lrEditor"></div>
|
||||
<div id="lrEditor" v-if="v=='edit'"></div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="accessory" label="附件上传">
|
||||
<el-form-item label="附件上传" prop="accessory">
|
||||
<el-upload
|
||||
name="file"
|
||||
ref="upload"
|
||||
action="**"
|
||||
:on-remove="handleRemove"
|
||||
:on-change="handleChange"
|
||||
:auto-upload="false"
|
||||
:file-list="fileList"
|
||||
:on-change="handleChange"
|
||||
:on-remove="handleRemove"
|
||||
action="**"
|
||||
limit="5"
|
||||
:file-list="fileList">
|
||||
<el-button size="small" type="primary">选择文件</el-button>
|
||||
name="file"
|
||||
ref="upload">
|
||||
<el-button size="small" type="primary">选择文件
|
||||
</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<div style="float: right;margin: 20px 0">
|
||||
<el-button type="primary" :disabled="subDis" @click="doEdit()">修 改</el-button>
|
||||
<el-button :disabled="subDis" @click="doEdit()"
|
||||
type="primary">修 改
|
||||
</el-button>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="名额分配" name="2">
|
||||
@@ -386,43 +425,51 @@ layout("/layouts/platform.html"){
|
||||
<vi-title title="修改名额分配"></vi-title>
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<span style="color:#409EFF">沿用之前活动名额 </span>
|
||||
<el-select class="d-select" v-model="pastQuota" filterable clearable
|
||||
width="300px"
|
||||
placeholder="请选择活动" @change="mefpChange">
|
||||
<el-select @change="mefpChange" class="d-select"
|
||||
clearable filterable
|
||||
placeholder="请选择活动"
|
||||
v-model="pastQuota" width="300px">
|
||||
<el-option
|
||||
v-for="item in lxyHd"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
:value="item.id"
|
||||
v-for="item in lxyHd">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</el-form>
|
||||
<el-table :data="unions_" size="medium" height="70vh">
|
||||
<el-table-column align="center" type="index" header-align="center"
|
||||
label="序号"></el-table-column>
|
||||
<el-table :data="unions_" height="70vh" size="medium">
|
||||
<el-table-column align="center" header-align="center"
|
||||
label="序号"
|
||||
type="index"></el-table-column>
|
||||
|
||||
<el-table-column label="院级工会" prop="unionname" sortable>
|
||||
<el-table-column label="分工会" prop="unionname" sortable>
|
||||
<template scope="{row}">
|
||||
{{isDisPlayCode?'('+row.unioncode+')':null}}{{row.unionname}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="会员人数" prop="membercount" sortable></el-table-column>
|
||||
<el-table-column label="会员人数" prop="membercount"
|
||||
sortable></el-table-column>
|
||||
|
||||
<el-table-column label="名额" prop="number" header-align="center" width="200px"
|
||||
align="center">
|
||||
<el-table-column align="center" header-align="center"
|
||||
label="名额" prop="number"
|
||||
width="200px">
|
||||
<template scope="scope">
|
||||
<el-input-number v-model="scope.row.number" placeholder="请填写名额数"
|
||||
controls-position="right" :min="0"
|
||||
:max="1000"></el-input-number>
|
||||
<el-input-number :max="1000"
|
||||
:min="0"
|
||||
controls-position="right"
|
||||
placeholder="请填写名额数"
|
||||
v-model="scope.row.number"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div style="float: right;margin: 20px 0">
|
||||
|
||||
<el-button type="primary" :disabled="subDis" @click="doEditMefp">提 交</el-button>
|
||||
<el-button :disabled="subDis" @click="doEditMefp"
|
||||
type="primary">提 交
|
||||
</el-button>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
@@ -671,11 +718,20 @@ layout("/layouts/platform.html"){
|
||||
if (data.code == 0) {
|
||||
data.data.hdsj = [data.data.hdkssj, data.data.hdjssj]
|
||||
data.data.bmsj = [data.data.bmkssj, data.data.bmjzsj]
|
||||
data.data.mefp.map(m => {
|
||||
const union = this.unions.find(un => un.id === m.ghid)
|
||||
m.membercount = union.membercount
|
||||
})
|
||||
this.unions_ = data.data.mefp
|
||||
this.formData = data.data
|
||||
//files
|
||||
data.data.files.forEach(v => {
|
||||
this.fileList.push({id: v.id, name: v.filename, url: v.filepath, status: 'success'})
|
||||
this.fileList.push({
|
||||
id: v.id,
|
||||
name: v.filename,
|
||||
url: v.filepath,
|
||||
status: 'success'
|
||||
})
|
||||
})
|
||||
|
||||
this.$nextTick(() => {
|
||||
@@ -865,4 +921,4 @@ layout("/layouts/platform.html"){
|
||||
<!--#layout("/platform/zgfw/lxy/dialogView.html"){}#-->
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
#-->
|
||||
|
||||
@@ -135,7 +135,7 @@ layout("/layouts/platform.html"){
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="院级工会" prop="unionname" header-align="center"
|
||||
<el-table-column label="分工会" prop="unionname" header-align="center"
|
||||
align="center"></el-table-column>
|
||||
|
||||
<el-table-column label="总名额" prop="number" header-align="center"
|
||||
@@ -660,4 +660,4 @@ layout("/layouts/platform.html"){
|
||||
<!--#layout("/platform/zgfw/lxy/dialogView.html"){}#-->
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
#-->
|
||||
|
||||
@@ -12,6 +12,10 @@ layout("/layouts/platform.html"){
|
||||
bottom: -100px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.viewFile {
|
||||
height: 150px;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
@@ -60,7 +64,10 @@ layout("/layouts/platform.html"){
|
||||
</div>
|
||||
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<el-button @click="doExport" icon="el-icon-download" plain type="primary">导 出</el-button>
|
||||
<el-button :disabled="!pageForm.hdid" @click="$refs.customMessage.open()"
|
||||
type="primary">一键发送
|
||||
</el-button>
|
||||
<el-button @click="doExport" icon="el-icon-download" type="primary">导 出</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
@@ -87,11 +94,10 @@ layout("/layouts/platform.html"){
|
||||
prop="unionname" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="单位"
|
||||
prop="unitname" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="职务"
|
||||
prop="zw" sortable></el-table-column>
|
||||
|
||||
|
||||
<el-table-column align="center" fixed="right" header-align="center" label="操作" width="120px">
|
||||
<el-table-column align="center" fixed="right" header-align="center" label="操作"
|
||||
width="120px">
|
||||
<template scope="scope">
|
||||
<el-button @click="openView(scope.row)" size="mini" type="primary">查看
|
||||
</el-button>
|
||||
@@ -130,11 +136,6 @@ layout("/layouts/platform.html"){
|
||||
{{viewData.username}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="职务:">
|
||||
{{viewData.zw}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="人事编制:">
|
||||
{{viewData.rsbz}}
|
||||
@@ -160,46 +161,22 @@ layout("/layouts/platform.html"){
|
||||
{{viewData.mobile}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份证号:">
|
||||
{{viewData.idcard}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="获奖名称:">
|
||||
{{viewData.zyhj}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注:">
|
||||
{{viewData.bz}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<vi-title title="曾获荣誉"></vi-title>
|
||||
<el-table :data="viewData.chry" show-header="false" size="mini" style="width: 100%">
|
||||
<el-table-column align="center" header-align="center" label="获得时间" prop="hdsj"
|
||||
width="250px">
|
||||
<template slot-scope="{row}">
|
||||
<el-date-picker format="yyyy-MM-dd" readonly type="date"
|
||||
v-model="row.hdsj"></el-date-picker>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="曾获荣誉" prop="shry">
|
||||
<template slot-scope="{row}">
|
||||
<el-input readonly v-model="row.shry"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="附件" width="120px">
|
||||
<template slot-scope="{row}">
|
||||
<div @click="dd3s.download(row.filepath,row.filename)"
|
||||
class="file-down-span">
|
||||
<i class="el-icon-download"></i>
|
||||
</div>
|
||||
<el-image :src="'${AppFileDomain!}'+row.filepath" @click="dd3s.showpic(row.filepath)"
|
||||
fit="cover"
|
||||
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
|
||||
v-if="dd3s.isPic(row.filepath)">
|
||||
</el-image>
|
||||
<el-image src="***"
|
||||
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
|
||||
v-else>
|
||||
<div class="image-slot" slot="error"
|
||||
style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">
|
||||
<span style="font-size: 12px;color: rgb(180,180,180);width: 100%;text-align: center;overflow: hidden;padding: 0 10px;
|
||||
text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical">{{row.filename}}</span>
|
||||
</div>
|
||||
</el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<template v-if="viewData.files&&viewData.files.length">
|
||||
<vi-title title="身份证复印件"></vi-title>
|
||||
<div style="text-align: left;">
|
||||
@@ -209,7 +186,8 @@ layout("/layouts/platform.html"){
|
||||
class="file-down-span">
|
||||
<i class="el-icon-download"></i>
|
||||
</div>
|
||||
<el-image :src="'${AppFileDomain!}'+item.filepath" @click="dd3s.showpic(item.filepath)"
|
||||
<el-image :src="'${AppFileDomain!}'+item.filepath"
|
||||
@click="dd3s.showpic(item.filepath)"
|
||||
fit="cover"
|
||||
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
|
||||
v-if="dd3s.isPic(item.filepath)">
|
||||
@@ -230,10 +208,17 @@ display: -webkit-box;
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<vi-title title="个人材料"></vi-title>
|
||||
<file-upload :files="viewData.bmFiles"
|
||||
:view="true"
|
||||
v-if="viewData.bmFiles && viewData.bmFiles.length > 0"></file-upload>
|
||||
<span v-else>暂无个人材料</span>
|
||||
</el-form>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<custom-message @confirm="confirmMsg" ref="customMessage"></custom-message>
|
||||
|
||||
</guava>
|
||||
|
||||
|
||||
@@ -275,6 +260,26 @@ display: -webkit-box;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async confirmMsg(val) {
|
||||
const confirm = await this.$confirm('确定要给报名人员发送消息吗', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === "confirm") {
|
||||
const {
|
||||
data,
|
||||
code,
|
||||
msg
|
||||
} = await $.get(base + "/platform/zgfw/lxy/hdtj/openSendMessage", {hdid: this.pageForm.hdid, ...val})
|
||||
if (code === 0) {
|
||||
this.$message.success(msg)
|
||||
this.$refs.customMessage.close()
|
||||
} else {
|
||||
this.$message.warning(msg)
|
||||
}
|
||||
}
|
||||
},
|
||||
doExport() {
|
||||
let obj = this.lxyHd.find(o => {
|
||||
return o.id === this.pageForm.hdid
|
||||
@@ -327,7 +332,6 @@ display: -webkit-box;
|
||||
return data
|
||||
},
|
||||
async openView(row) {
|
||||
this.v = "view"
|
||||
this.$refs.guava.view()
|
||||
this.viewData = await this.getLxyBmInfo(row.id)
|
||||
this.viewData.unitname = row.unitname
|
||||
@@ -358,4 +362,4 @@ display: -webkit-box;
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
#-->
|
||||
|
||||
@@ -2,35 +2,8 @@
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.w-e-text-container {
|
||||
height: 250px !important;
|
||||
}
|
||||
|
||||
.v-box .el-card__header {
|
||||
padding: 5px 15px;
|
||||
}
|
||||
|
||||
.el-select-dropdown {
|
||||
z-index: 99999999 !important;
|
||||
}
|
||||
|
||||
.el-loading-mask {
|
||||
z-index: 99999999 !important;
|
||||
}
|
||||
|
||||
.el-picker-panel {
|
||||
z-index: 99999999 !important;
|
||||
}
|
||||
|
||||
.demo-table-expand .el-form-item {
|
||||
margin-right: 0;
|
||||
margin-bottom: 0;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.el-textarea__inner {
|
||||
width: 600px;
|
||||
text-align: center;
|
||||
.viewFile {
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -41,13 +14,13 @@ layout("/layouts/platform.html"){
|
||||
<el-date-picker
|
||||
placeholder="选择年度"
|
||||
type="year"
|
||||
v-model="ghPageForm.year"
|
||||
v-model="pageForm.year"
|
||||
value-format="yyyy">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-select @change="pageData" clearable filterable placeholder="请选择活动"
|
||||
v-model="ghPageForm.hdid">
|
||||
v-model="pageForm.hdid">
|
||||
<el-option
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
@@ -57,25 +30,36 @@ layout("/layouts/platform.html"){
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入工会名称"
|
||||
v-model="ghPageForm.searchKeyword"></el-input>
|
||||
<el-select clearable="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>
|
||||
</div>
|
||||
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-button @click="doSearchGh" icon="el-icon-search" type="primary"></el-button>
|
||||
</div>
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<el-radio-group @change="doSearchGh" v-model="ghPageForm.isAudit">
|
||||
<el-radio-group @change="doSearchGh" v-model="pageForm.isAudit">
|
||||
<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>
|
||||
|
||||
<el-button @click="yjTg" type="primary">一键通过</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card class="mt10" shadow="never">
|
||||
<el-table :data="ghTableData" @selection-change="handleSelectionChangeGh" @sort-change="pageOrder"
|
||||
<vi-title2 title="审核列表">
|
||||
<template #func>
|
||||
<el-button @click="yjTg" size="small" type="primary">一键通过</el-button>
|
||||
|
||||
<el-button @click="downLoadAll" size="small" type="primary">
|
||||
一键下载材料
|
||||
</el-button>
|
||||
</template>
|
||||
</vi-title2>
|
||||
<el-table :data="ghTableData" @selection-change="handleSelectionChangeGh"
|
||||
@sort-change="pageOrder"
|
||||
ref="multipleTableGh" row-key="ghid"
|
||||
style="width: 100%" v-loading="tabLoading">
|
||||
|
||||
@@ -93,13 +77,14 @@ layout("/layouts/platform.html"){
|
||||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="院级工会"
|
||||
<el-table-column align="center" header-align="center" label="分工会"
|
||||
prop="unionname"></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="活动场地" prop="hdcd"
|
||||
show-overflow-tooltip></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="联系人及联系方式" prop="fglyname"
|
||||
<el-table-column align="center" header-align="center" label="联系人及联系方式"
|
||||
prop="fglyname"
|
||||
show-overflow-tooltip></el-table-column>
|
||||
|
||||
|
||||
@@ -124,6 +109,9 @@ layout("/layouts/platform.html"){
|
||||
<span style="color: tomato">{{scope.row.number}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="已报名成功人数"
|
||||
prop="ysh">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="审核状态" prop="dsh"
|
||||
show-overflow-tooltip>
|
||||
@@ -136,72 +124,92 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column align="center" header-align="center" label="报名人员" prop="username"
|
||||
show-overflow-tooltip></el-table-column>
|
||||
|
||||
<el-table-column align="center" fixed="right" header-align="center" label="操作" width="120px">
|
||||
<el-table-column align="center" fixed="right" header-align="center" label="操作"
|
||||
width="120px">
|
||||
<template scope="scope">
|
||||
<el-button @click="openSh(scope.row)" plain size="mini" type="primary">查看人员</el-button>
|
||||
<el-button @click="openSh(scope.row)" size="mini" type="primary">
|
||||
查看人员
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:total="pageForm.totalCount"
|
||||
@current-change="pageNumberChange"
|
||||
@size-change="pageSizeChange"
|
||||
layout="total, sizes, prev, pager, next">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<template #edit_func>
|
||||
<el-button @click="sh(5)" size="small" type="primary">批量审核</el-button>
|
||||
</template>
|
||||
<template #edit>
|
||||
<el-row justify="end" type="flex">
|
||||
<el-button @click="sh(5)" plain type="primary">批量审核</el-button>
|
||||
<!--<el-button type="danger" @click="sh(4)" plain>不通过</el-button>-->
|
||||
</el-row>
|
||||
<el-table :data="bmTableData" @selection-change="handleSelectionChange"
|
||||
ref="multipleTableRy"
|
||||
row-key="id"
|
||||
style="width: 100%" tooltip-effect="dark">
|
||||
|
||||
<el-row class="el-table-container">
|
||||
<el-table :data="bmTableData" @selection-change="handleSelectionChange" ref="multipleTableRy"
|
||||
row-key="id"
|
||||
style="width: 100%" tooltip-effect="dark">
|
||||
<el-table-column :reserve-selection="true" :selectable='checkboxT' disabled
|
||||
type="selection"
|
||||
width="55"></el-table-column>
|
||||
|
||||
<el-table-column :reserve-selection="true" :selectable='checkboxT' disabled type="selection"
|
||||
width="55"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="工号"
|
||||
prop="loginname"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="姓名"
|
||||
prop="username"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="性别" prop="sex"
|
||||
sortable width="80"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="年龄" prop="age"
|
||||
sortable width="80"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="手机号码"
|
||||
prop="mobile"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="身份证号"
|
||||
prop="idcard"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="获奖名称"
|
||||
prop="zyhj"
|
||||
show-overflow-tooltip></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="备注"
|
||||
prop="bz"
|
||||
show-overflow-tooltip></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="报名状态" prop="bmzt">
|
||||
<template scope="scope">
|
||||
<span style="color: #E6A23C" v-if="scope.row.bmzt==1">待分工会审核</span>
|
||||
<span style="color: #F56C6C" v-if="scope.row.bmzt==2">分工会审核未通过</span>
|
||||
<span style="color: #E6A23C" v-if="scope.row.bmzt==3">待校工会审核</span>
|
||||
<span style="color: #F56C6C" v-if="scope.row.bmzt==4">校工会审核未通过</span>
|
||||
<span style="color: #67C23A" v-if="scope.row.bmzt==5">报名成功</span>
|
||||
<span style="color: #E6A23C" v-if="scope.row.bmzt==6">待填写个人资料</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="工号"
|
||||
prop="loginname"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="姓名"
|
||||
prop="username"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="性别" prop="sex"
|
||||
sortable></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="年龄" prop="age"
|
||||
sortable></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="联系电话"
|
||||
prop="mobile"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="报名状态" prop="bmzt">
|
||||
<template scope="scope">
|
||||
<span style="color: #E6A23C" v-if="scope.row.bmzt==1">待分工会审核</span>
|
||||
<span style="color: #F56C6C" v-if="scope.row.bmzt==2">分工会审核未通过</span>
|
||||
<span style="color: #E6A23C" v-if="scope.row.bmzt==3">待校工会审核</span>
|
||||
<span style="color: #F56C6C" v-if="scope.row.bmzt==4">校工会审核未通过</span>
|
||||
<span style="color: #67C23A" v-if="scope.row.bmzt==5">报名成功</span>
|
||||
<span style="color: #E6A23C" v-if="scope.row.bmzt==6">待填写个人资料</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="right" header-align="center" label="操作"
|
||||
width="150px">
|
||||
<template scope="{row}">
|
||||
|
||||
<el-table-column align="center" fixed="right" header-align="center" label="操作" width="150px">
|
||||
<template scope="{row}">
|
||||
|
||||
<el-dropdown @command="dropdownCommand">
|
||||
<el-button plain size="mini">
|
||||
<i class="ti-settings"></i>
|
||||
<span class="ti-angle-down"></span>
|
||||
</el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item :command="{type:'view',data:row}">
|
||||
查看
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item :command="{type:'Review',data:row}" :disabled="row.bmzt==5">
|
||||
审核
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
</el-table>
|
||||
</el-row>
|
||||
<el-dropdown @command="dropdownCommand">
|
||||
<el-button plain size="mini">
|
||||
<i class="ti-settings"></i>
|
||||
<span class="ti-angle-down"></span>
|
||||
</el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item :command="{type:'view',data:row}">
|
||||
查看
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item :command="{type:'Review',data:row}"
|
||||
:disabled="row.bmzt==5">
|
||||
审核
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
@@ -216,9 +224,12 @@ layout("/layouts/platform.html"){
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
|
||||
|
||||
</guava>
|
||||
|
||||
<el-dialog :close-on-click-modal="false" :visible.sync="viewDialogSh" custom-class="ViewDialogClass"
|
||||
<el-dialog :close-on-click-modal="false" :visible.sync="viewDialogSh"
|
||||
custom-class="ViewDialogClass"
|
||||
top="3%" width="60%">
|
||||
<el-form label-position="right" label-width="120px" style="padding: 20px 0">
|
||||
<vi-title title="个人信息"></vi-title>
|
||||
@@ -263,55 +274,34 @@ layout("/layouts/platform.html"){
|
||||
{{ viewData.mobile }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="身份证号:">
|
||||
{{ viewData.idcard }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="获奖名称:">
|
||||
{{ viewData.zyhj }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注:">
|
||||
{{ viewData.bz }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<vi-title title="曾获荣誉"></vi-title>
|
||||
<el-table :data="viewData.chry" show-header="false" size="mini" style="width: 100%">
|
||||
<el-table-column align="center" header-align="center" label="获得时间" prop="hdsj"
|
||||
width="250px">
|
||||
<template slot-scope="{row}">
|
||||
<el-date-picker format="yyyy-MM-dd" readonly type="date"
|
||||
v-model="row.hdsj"></el-date-picker>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="曾获荣誉" prop="shry">
|
||||
<template slot-scope="{row}">
|
||||
<el-input readonly v-model="row.shry"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="附件" width="120px">
|
||||
<template slot-scope="{row}">
|
||||
<div @click="dd3s.download(row.ryfj,row.ryfj)" class="file-down-span">
|
||||
<i class="el-icon-download"></i>
|
||||
</div>
|
||||
<el-image :src="'${AppFileDomain!}'+row.ryfj" @click="dd3s.showpic(row.ryfj)"
|
||||
fit="cover"
|
||||
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
|
||||
v-if="dd3s.isPic(row.ryfj)">
|
||||
</el-image>
|
||||
<el-image src="***"
|
||||
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
|
||||
v-else>
|
||||
<div class="image-slot" slot="error"
|
||||
style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">
|
||||
<span style="font-size: 12px;color: rgb(180,180,180);width: 100%;text-align: center;overflow: hidden;padding: 0 10px;
|
||||
text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical">{{row.ryfj}}</span>
|
||||
</div>
|
||||
</el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<template v-if="viewData.files&&viewData.files.length">
|
||||
<vi-title title="身份证复印件"></vi-title>
|
||||
<div style="text-align: left;">
|
||||
<div style="display: inline-block;width: 100px;margin-right:10px"
|
||||
v-for="item in viewData.files">
|
||||
<div @click="dd3s.download(item.filepath,item.filename)" class="file-down-span">
|
||||
<div @click="dd3s.download(item.filepath,item.filename)"
|
||||
class="file-down-span">
|
||||
<i class="el-icon-download"></i>
|
||||
</div>
|
||||
<el-image :src="'${AppFileDomain!}'+item.filepath" @click="dd3s.showpic(item.filepath)"
|
||||
<el-image :src="'${AppFileDomain!}'+item.filepath"
|
||||
@click="dd3s.showpic(item.filepath)"
|
||||
fit="cover"
|
||||
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
|
||||
v-if="dd3s.isPic(item.filepath)">
|
||||
@@ -332,16 +322,26 @@ display: -webkit-box;
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<vi-title style="margin-top: 10px" title="个人材料"></vi-title>
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="附件">
|
||||
<file-upload :files="viewData.bmFiles"
|
||||
:view="true"
|
||||
v-if="viewData.bmFiles && viewData.bmFiles.length > 0"></file-upload>
|
||||
<span v-else>暂无个人材料</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-form>
|
||||
<span class="dialog-footer" slot="footer" v-if="this.viewData.num==2">
|
||||
<el-button type="danger" @click="grsh(4)" plain>不通过</el-button>
|
||||
<el-button type="success" @click="grsh(5)" plain>通 过</el-button>
|
||||
<el-button @click="grsh(4)" type="danger">不通过</el-button>
|
||||
<el-button @click="grsh(5)" type="primary">通 过</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
tabKey: new Date().getTime(),
|
||||
@@ -361,14 +361,16 @@ display: -webkit-box;
|
||||
bmTableData: [],
|
||||
ghTableData: [],
|
||||
pageForm: {
|
||||
|
||||
searchName: "name",
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "",
|
||||
pageOrderBy: ""
|
||||
pageOrderBy: "",
|
||||
isAudit: 1,
|
||||
year: new Date().getFullYear() + "",
|
||||
hdid: ""
|
||||
},
|
||||
ghPageForm: {
|
||||
isAudit: 1,
|
||||
@@ -385,6 +387,12 @@ display: -webkit-box;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
downLoadAll() {
|
||||
location.href = '/platform/zgfw/lxy/xghsh/downLoadAll?year=' + this.pageForm.year +
|
||||
'&hdid=' + this.pageForm.hdid + '&searchKeyword=' + this.pageForm.searchKeyword +
|
||||
'&isAudit=' + this.pageForm.isAudit
|
||||
},
|
||||
checkboxT(row) {
|
||||
if (row.bmzt == 5) {
|
||||
return false;
|
||||
@@ -405,22 +413,21 @@ display: -webkit-box;
|
||||
return data
|
||||
},
|
||||
async openView(row, num) {
|
||||
|
||||
this.viewData = await this.getLxyBmInfo(row.id)
|
||||
this.viewData.num = num
|
||||
this.pageForm.hdid = row.hdid
|
||||
this.pageForm.uid = row.uid
|
||||
this.ghPageForm.hdid = row.hdid
|
||||
this.ghPageForm.uid = row.uid
|
||||
this.viewData.unitname = row.unitname
|
||||
this.viewDialogSh = true
|
||||
},
|
||||
openShGh(row) {
|
||||
this.ghPageForm.hdid = row.id
|
||||
$.post(base + "/platform/zgfw/lxy/xghsh/pageData", this.ghPageForm, (data) => {
|
||||
this.pageForm.hdid = row.id
|
||||
$.post(base + "/platform/zgfw/lxy/xghsh/pageData", this.pageForm, (data) => {
|
||||
sublime.closeLoadingbar();
|
||||
this.tabLoading = false
|
||||
if (data.code == 0) {
|
||||
this.ghTableData = data.data.list;
|
||||
this.ghPageForm.totalCount = data.data.totalCount;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
@@ -431,14 +438,14 @@ display: -webkit-box;
|
||||
},
|
||||
|
||||
openSh(row) {
|
||||
this.pageForm.hdid = row.hdid
|
||||
this.pageForm.ghid = row.ghid
|
||||
this.ghPageForm.hdid = row.hdid
|
||||
this.ghPageForm.ghid = row.ghid
|
||||
this.$refs.guava.edit()
|
||||
this.showGh = false
|
||||
this.$nextTick(() => {
|
||||
this.toggleSelection()
|
||||
})
|
||||
this.refresh(this.pageForm.ghid, this.pageForm.hdid)
|
||||
this.refresh(this.ghPageForm.ghid, this.ghPageForm.hdid)
|
||||
|
||||
},
|
||||
refresh(ghid, hdid) {
|
||||
@@ -460,13 +467,21 @@ display: -webkit-box;
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
yjTg() {
|
||||
async yjTg() {
|
||||
if (this.multipleSelectionGh.length == 0) {
|
||||
this.$message({
|
||||
message: '请选择工会!',
|
||||
type: 'warning'
|
||||
});
|
||||
return
|
||||
}
|
||||
const confirm = await this.$confirm('确定要给报名人员发送消息吗', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === "confirm") {
|
||||
|
||||
}
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
@@ -478,22 +493,22 @@ display: -webkit-box;
|
||||
this.multipleSelectionGh.map(v => {
|
||||
arr.push({ghid: v.ghid, hdid: v.hdid})
|
||||
})
|
||||
$.post(base + "/platform/zgfw/lxy/xghsh/yjSh", {maps: JSON.stringify(arr)}, (data) => {
|
||||
loading.close()
|
||||
if (data.code == 0) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
});
|
||||
this.toggleSelectionGh()
|
||||
this.openShGh({id: this.ghPageForm.hdid});
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
const data = await $.post(base + "/platform/zgfw/lxy/xghsh/yjSh", {maps: JSON.stringify(arr)})
|
||||
|
||||
if (data.code == 0) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
});
|
||||
this.toggleSelectionGh()
|
||||
this.openShGh({id: this.pageForm.hdid});
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
loading.close()
|
||||
},
|
||||
sh(zt) {
|
||||
if (this.multipleSelection.length == 0) {
|
||||
@@ -503,39 +518,41 @@ display: -webkit-box;
|
||||
});
|
||||
return
|
||||
}
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据提交中...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
});
|
||||
|
||||
let arr = []
|
||||
this.multipleSelection.map(v => {
|
||||
arr.push(v.uid)
|
||||
})
|
||||
$.post(base + "/platform/zgfw/lxy/xghsh/sh", {
|
||||
hdid: this.pageForm.hdid,
|
||||
ghid: this.pageForm.ghid,
|
||||
bmzt: zt,
|
||||
users: JSON.stringify(arr)
|
||||
}, (data) => {
|
||||
loading.close()
|
||||
if (data.code == 0) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
});
|
||||
this.viewDialogSh = false
|
||||
this.pageData()
|
||||
this.toggleSelection()
|
||||
this.refresh(this.pageForm.ghid, this.pageForm.hdid)
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
|
||||
this.$confirm('此操作将全部审核通过,确认通过吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
$.post(base + "/platform/zgfw/lxy/xghsh/sh", {
|
||||
hdid: this.ghPageForm.hdid,
|
||||
ghid: this.ghPageForm.ghid,
|
||||
bmzt: zt,
|
||||
users: JSON.stringify(arr)
|
||||
}, (data) => {
|
||||
if (data.code == 0) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
});
|
||||
this.viewDialogSh = false
|
||||
this.pageData()
|
||||
this.toggleSelection()
|
||||
this.refresh(this.ghPageForm.ghid, this.ghPageForm.hdid)
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
grsh(zt) {
|
||||
const loading = this.$loading({
|
||||
@@ -545,8 +562,8 @@ display: -webkit-box;
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
});
|
||||
$.post(base + "/platform/zgfw/lxy/xghsh/grsh", {
|
||||
hdid: this.pageForm.hdid,
|
||||
ghid: this.pageForm.ghid,
|
||||
hdid: this.ghPageForm.hdid,
|
||||
ghid: this.ghPageForm.ghid,
|
||||
userid: this.viewData.userid,
|
||||
bmzt: zt,
|
||||
}, (data) => {
|
||||
@@ -559,7 +576,7 @@ display: -webkit-box;
|
||||
this.viewDialogSh = false
|
||||
this.pageData()
|
||||
this.toggleSelection()
|
||||
this.refresh(this.pageForm.ghid, this.pageForm.hdid)
|
||||
this.refresh(this.ghPageForm.ghid, this.ghPageForm.hdid)
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
@@ -612,44 +629,31 @@ display: -webkit-box;
|
||||
},
|
||||
doSearchGh() {
|
||||
this.tabKey = new Date().getTime()
|
||||
this.ghPageForm.pageNumber = 1
|
||||
this.openShGh({id: this.ghPageForm.hdid});
|
||||
},
|
||||
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();
|
||||
this.pageForm.pageNumber = 1
|
||||
this.openShGh({id: this.pageForm.hdid});
|
||||
},
|
||||
ghPageOrder(column) {//按字段排序
|
||||
this.ghPageForm.pageOrderName = column.prop;
|
||||
this.ghPageForm.pageOrderBy = column.order;
|
||||
this.openShGh({id: this.ghPageForm.hdid});
|
||||
this.refresh(this.ghPageForm.ghid, this.ghPageForm.hdid)
|
||||
},
|
||||
ghPageNumberChange(val) {//页码更新操作
|
||||
this.ghPageForm.pageNumber = val;
|
||||
this.openShGh({id: this.ghPageForm.hdid});
|
||||
this.refresh(this.ghPageForm.ghid, this.ghPageForm.hdid)
|
||||
},
|
||||
ghPageSizeChange(val) {//分页大小更新操作
|
||||
this.ghPageForm.pageSize = val;
|
||||
this.openShGh({id: this.ghPageForm.hdid});
|
||||
this.refresh(this.ghPageForm.ghid, this.ghPageForm.hdid)
|
||||
},
|
||||
pageData() {
|
||||
sublime.showLoadingbar();
|
||||
this.tabLoading = true
|
||||
$.post(base + "/platform/zgfw/lxy/xghsh/pageData", this.ghPageForm, (data) => {
|
||||
$.post(base + "/platform/zgfw/lxy/xghsh/pageData", this.pageForm, (data) => {
|
||||
sublime.closeLoadingbar();
|
||||
this.tabLoading = false
|
||||
if (data.code == 0) {
|
||||
this.ghTableData = data.data.list;
|
||||
this.ghPageForm.totalCount = data.data.totalCount;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
@@ -662,7 +666,7 @@ display: -webkit-box;
|
||||
async created() {
|
||||
this.unions = await getUnions()
|
||||
this.lxyHd = await getNowLxyHd()
|
||||
this.ghPageForm.hdid = this.lxyHd[0].id
|
||||
this.pageForm.hdid = this.lxyHd[0].id
|
||||
this.pageData();
|
||||
}
|
||||
})
|
||||
@@ -670,4 +674,4 @@ display: -webkit-box;
|
||||
<!--#layout("/platform/zgfw/lxy/dialogView.html"){}#-->
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
#-->
|
||||
|
||||
@@ -38,6 +38,12 @@
|
||||
.el-tabs__item {
|
||||
color: rgb(120, 120, 120)
|
||||
}
|
||||
|
||||
.ViewDialogClass .el-tabs__content{
|
||||
height: calc(100vh - 350px);
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
</style>
|
||||
<div id="v-app" v-cloak>
|
||||
<el-dialog
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<el-table :data="viewData.mefp" size="medium" height="70vh">
|
||||
<el-table :data="viewData.mefp" size="medium">
|
||||
<el-table-column align="center" type="index" header-align="center"
|
||||
label="序号"></el-table-column>
|
||||
|
||||
<el-table-column label="院级工会" prop="unionname" header-align="center"
|
||||
<el-table-column label="分工会" prop="unionname" header-align="center"
|
||||
align="center"></el-table-column>
|
||||
|
||||
<el-table-column label="名额" prop="number" header-align="center" width="200px"
|
||||
|
||||
@@ -30,28 +30,29 @@
|
||||
<template v-if="viewData.files&&viewData.files.length">
|
||||
<vi-title title="附件"></vi-title>
|
||||
<div style="text-align: left;">
|
||||
<div v-for="item in viewData.files"
|
||||
style="display: inline-block;width: 100px;margin-right:10px">
|
||||
<div class="file-down-span" @click="dd3s.download(item.filepath,item.filename)">
|
||||
<i class="el-icon-download"></i>
|
||||
</div>
|
||||
<el-image fit="cover" v-if="dd3s.isPic(item.filepath)"
|
||||
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
|
||||
:src="'${AppFileDomain!}'+item.filepath" @click="dd3s.showpic(item.filepath)">
|
||||
</el-image>
|
||||
<el-image v-else
|
||||
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
|
||||
src="***">
|
||||
<div slot="error" class="image-slot"
|
||||
style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">
|
||||
<span style="font-size: 12px;color: rgb(180,180,180);width: 100%;text-align: center;overflow: hidden;padding: 0 10px;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical">{{item.filename}}</span>
|
||||
</div>
|
||||
</el-image>
|
||||
</div>
|
||||
<file-upload :files="viewData.files" view></file-upload>
|
||||
<!-- <div v-for="item in viewData.files"-->
|
||||
<!-- style="display: inline-block;width: 100px;margin-right:10px">-->
|
||||
<!-- <div class="file-down-span" @click="dd3s.download(item.filepath,item.filename)">-->
|
||||
<!-- <i class="el-icon-download"></i>-->
|
||||
<!-- </div>-->
|
||||
<!-- <el-image fit="cover" v-if="dd3s.isPic(item.filepath)"-->
|
||||
<!-- style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"-->
|
||||
<!-- :src="'${AppFileDomain!}'+item.filepath" @click="dd3s.showpic(item.filepath)">-->
|
||||
<!-- </el-image>-->
|
||||
<!-- <el-image v-else-->
|
||||
<!-- style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"-->
|
||||
<!-- src="***">-->
|
||||
<!-- <div slot="error" class="image-slot"-->
|
||||
<!-- style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">-->
|
||||
<!-- <span style="font-size: 12px;color: rgb(180,180,180);width: 100%;text-align: center;overflow: hidden;padding: 0 10px;-->
|
||||
<!--text-overflow: ellipsis;-->
|
||||
<!--display: -webkit-box;-->
|
||||
<!-- -webkit-line-clamp: 2;-->
|
||||
<!-- -webkit-box-orient: vertical">{{item.filename}}</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- </el-image>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</template>
|
||||
</el-form>
|
||||
|
||||
Reference in New Issue
Block a user