first commit
This commit is contained in:
@@ -0,0 +1,411 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
|
||||
.item-button {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.item-button .el-button {
|
||||
padding: 12px 25px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<h3 style="color: rgb(24, 103, 176);font-family: Microsoft YaHei;">提案配置</h3>
|
||||
</div>
|
||||
<el-form ref="addForm" :model="formData" :rules="formRules" label-width="150px">
|
||||
<el-form-item label="配置名称" prop="configName">
|
||||
<el-input v-model="formData.configName" placeholder="请输入配置名称"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="附议人数量" prop="seconderNum">
|
||||
<el-input v-model="formData.seconderNum"
|
||||
oninput="value=value.replace(/[^\d]/g,'')"
|
||||
placeholder="请输入附议人数量" maxlength="1"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="提交模式" prop="submitMode">
|
||||
<el-radio-group v-model="formData.submitMode">
|
||||
<el-radio-button :label="item.code"
|
||||
v-for="item in submitModeList">{{item.description}}
|
||||
</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="开始撰写时间" prop="startWriteTime">
|
||||
<el-date-picker
|
||||
v-model="formData.startWriteTime"
|
||||
type="datetime"
|
||||
format="yyyy-MM-dd HH:mm:ss"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="开始撰写时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="结束撰写时间" prop="endWriteTime">
|
||||
<el-date-picker
|
||||
v-model="formData.endWriteTime"
|
||||
type="datetime"
|
||||
format="yyyy-MM-dd HH:mm:ss"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="结束撰写时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="超时自动提交天数" prop="timeoutDays">
|
||||
<el-input v-model="formData.timeoutDays"
|
||||
oninput="value=value.replace(/[^\d]/g,'')"
|
||||
placeholder="协办单位超时自动提交天数" maxlength="3"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="提醒日期" prop="remindProposalCreatorDate">
|
||||
<el-date-picker
|
||||
:picker-options="remindProposalCreatorDatepickerOptions"
|
||||
placeholder="选择提醒日期"
|
||||
type="datetime"
|
||||
v-model="formData.remindProposalCreatorDate"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="办理提醒设置(多选)" prop="reminder">
|
||||
<el-checkbox-group v-model="formData.reminder">
|
||||
<el-checkbox-button v-for="item in reminderList" :label="item.code"
|
||||
:key="item.id">{{item.name}}
|
||||
</el-checkbox-button>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="撰写提案方式(多选)" prop="manner">
|
||||
<el-checkbox-group v-model="formData.manner">
|
||||
<el-checkbox-button :key="item.id" :label="item.code"
|
||||
v-for="item in allMannerList">
|
||||
{{item.name}}
|
||||
</el-checkbox-button>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<!-- <el-form-item label="是否自动提交" prop="isAutoSubmit">-->
|
||||
<!-- <el-radio-group v-model="formData.isAutoSubmit">-->
|
||||
<!-- <el-radio-button :label="true">是</el-radio-button>-->
|
||||
<!-- <el-radio-button :label="false">否</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
<!-- <el-form-item label="个人是否看审核环节" prop="isSeeAudit">-->
|
||||
<!-- <el-radio-group v-model="formData.isSeeAudit">-->
|
||||
<!-- <el-radio-button :label="true">是</el-radio-button>-->
|
||||
<!-- <el-radio-button :label="false">否</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
<!-- <el-form-item label="团长审核方式" prop="headAuditMethod">-->
|
||||
<!-- <el-radio-group v-model="formData.headAuditMethod">-->
|
||||
<!-- <el-radio-button label="TRADITION">传统方式</el-radio-button>-->
|
||||
<!-- <el-radio-button label="UNITE">联合方式</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
<el-form-item label="提案最少字数" prop="words">
|
||||
<el-input-number v-model="formData.words" :step="1" :min="1" :max="5000"
|
||||
:precision="0"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="校领导单位代码" prop="schoolLeaderUnitCode">
|
||||
<el-input v-model="formData.schoolLeaderUnitCode"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="不予立案理由">
|
||||
<template v-for="(o,i) in formData.noFilingReason">
|
||||
<el-row type="flex" style="margin-bottom: 10px">
|
||||
<el-col :span="20">
|
||||
<el-input v-model="formData.noFilingReason[i]" maxlength="100">
|
||||
<template slot="prepend">{{i+1}}.</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col :span="4" class="pl5">
|
||||
<el-button type="danger" icon="el-icon-delete"
|
||||
@click="deleteReasonRow(i)"></el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<el-button type="primary" @click="formData.noFilingReason.push('')">增加一条
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="二次答复需要校领导审批" prop="secondReplyAfterNeedLeaderAudit">
|
||||
<el-radio-group v-model="formData.secondReplyAfterNeedLeaderAudit">
|
||||
<el-radio-button :label="true">是</el-radio-button>
|
||||
<el-radio-button :label="false">否</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-row>
|
||||
<p style="width: 150px;text-align: right;padding-right: 12px">主办配置</p>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="需要答复" prop="masterUnitConfig.isNeedReply">
|
||||
<el-switch
|
||||
v-model="formData.masterUnitConfig.isNeedReply"
|
||||
active-text="需要"
|
||||
inactive-text="不需要">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="答复顺序" prop="masterUnitConfig.isFirstReply">
|
||||
<el-switch
|
||||
v-model="formData.masterUnitConfig.isFirstReply"
|
||||
:disabled="!formData.masterUnitConfig.isNeedReply"
|
||||
active-text="首先答复"
|
||||
inactive-text="第二答复">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="需要二次答复" prop="masterUnitConfig.isNeedSecondReply">
|
||||
<el-switch
|
||||
v-model="formData.masterUnitConfig.isNeedSecondReply"
|
||||
:disabled="!formData.masterUnitConfig.isFirstReply"
|
||||
active-text="需要"
|
||||
inactive-text="不需要">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<p style="width: 150px;text-align: right;padding-right: 12px">协办配置</p>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="需要答复" prop="slaveUnitConfig.isNeedReply">
|
||||
<el-switch
|
||||
v-model="formData.slaveUnitConfig.isNeedReply"
|
||||
active-text="需要"
|
||||
inactive-text="不需要">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="答复顺序" prop="slaveUnitConfig.isFirstReply">
|
||||
<el-switch
|
||||
v-model="formData.slaveUnitConfig.isFirstReply"
|
||||
:disabled="!formData.slaveUnitConfig.isNeedReply"
|
||||
active-text="首先答复"
|
||||
inactive-text="第二答复">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="需要二次答复" prop="slaveUnitConfig.isNeedSecondReply">
|
||||
<el-switch
|
||||
v-model="formData.slaveUnitConfig.isNeedSecondReply"
|
||||
:disabled="!formData.slaveUnitConfig.isFirstReply"
|
||||
active-text="需要"
|
||||
inactive-text="不需要">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="撰写须知" prop="writeRemind">
|
||||
<el-input
|
||||
:autosize="{ minRows: 5, maxRows: 10}"
|
||||
maxlength="10000"
|
||||
placeholder="请输入撰写须知"
|
||||
type="textarea"
|
||||
v-model="formData.writeRemind">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item class="item-button">
|
||||
<el-button type="danger" @click="resetForm">重 置</el-button>
|
||||
<el-button type="primary" @click="operation" :loading="subLoading">提 交
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</el-card>
|
||||
</guava>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
data() {
|
||||
return {
|
||||
subLoading: false,
|
||||
reminderList: [],
|
||||
allMannerList: [],
|
||||
openMannerList: [],
|
||||
submitModeList: [],
|
||||
formData: {
|
||||
configName: '智慧工会提案配置',
|
||||
seconderNum: '',
|
||||
reminder: ['SMS'],
|
||||
manner: ['W01'],
|
||||
isAutoSubmit: true,
|
||||
isSeeAudit: false,
|
||||
headAuditMethod: null,
|
||||
words: 1,
|
||||
noFilingReason: [],
|
||||
masterUnitConfig: {},
|
||||
slaveUnitConfig: {},
|
||||
submitMode: 'AMT'
|
||||
},
|
||||
formRules: {
|
||||
configName: [{
|
||||
required: true,
|
||||
message: '请填写配置名称',
|
||||
trigger: ['blur', 'change']
|
||||
}],
|
||||
seconderNum: [{
|
||||
required: true,
|
||||
message: '请填写附议人数量',
|
||||
trigger: ['blur', 'change']
|
||||
}],
|
||||
reminder: [{
|
||||
required: true,
|
||||
message: '请选择办理提醒设置',
|
||||
trigger: ['blur', 'change']
|
||||
}],
|
||||
manner: [{
|
||||
required: true,
|
||||
message: '请选择撰写提案方式',
|
||||
trigger: ['blur', 'change']
|
||||
}],
|
||||
isAutoSubmit: [{
|
||||
required: true,
|
||||
message: '请选择是否自动提交',
|
||||
trigger: ['blur', 'change']
|
||||
}],
|
||||
isSeeAudit: [{
|
||||
required: true,
|
||||
message: '请选择个人是否能看审核环节',
|
||||
trigger: ['blur', 'change']
|
||||
}],
|
||||
headAuditMethod: [{
|
||||
required: true,
|
||||
message: '请选择团长审核方式',
|
||||
trigger: ['blur', 'change']
|
||||
}],
|
||||
words: [{
|
||||
required: true,
|
||||
message: '请输入提案内容要求字数',
|
||||
trigger: ['blur', 'change']
|
||||
}],
|
||||
submitMode: [{
|
||||
required: true,
|
||||
message: '请选择提交模式',
|
||||
trigger: ['blur', 'change']
|
||||
}]
|
||||
},
|
||||
remindProposalCreatorDatepickerOptions: {
|
||||
disabledDate(time) {
|
||||
return time.getTime() < Date.now()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'formData.masterUnitConfig.isNeedReply'(val) {
|
||||
if (!val) {
|
||||
this.$set(this.formData.masterUnitConfig, 'isFirstReply', false)
|
||||
this.$set(this.formData.masterUnitConfig, 'isNeedSecondReply', false)
|
||||
}
|
||||
},
|
||||
'formData.masterUnitConfig.isFirstReply'(val) {
|
||||
if (!val) {
|
||||
this.$set(this.formData.masterUnitConfig, 'isNeedSecondReply', false)
|
||||
}
|
||||
},
|
||||
'formData.slaveUnitConfig.isNeedReply'(val) {
|
||||
if (!val) {
|
||||
this.$set(this.formData.slaveUnitConfig, 'isFirstReply', false)
|
||||
this.$set(this.formData.slaveUnitConfig, 'isNeedSecondReply', false)
|
||||
}
|
||||
},
|
||||
'formData.slaveUnitConfig.isFirstReply'(val) {
|
||||
if (!val) {
|
||||
this.$set(this.formData.slaveUnitConfig, 'isNeedSecondReply', false)
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
deleteReasonRow(i) {
|
||||
if (i === 0) {
|
||||
return
|
||||
}
|
||||
this.formData.noFilingReason.splice(i, 1)
|
||||
},
|
||||
async getDictByCode() {
|
||||
const {data} = await $.get(loc() + "/getDictByCode", {code: "proposal_manner"})
|
||||
return data
|
||||
},
|
||||
async pageData() {
|
||||
const {data} = await $.get(loc() + "/findOne")
|
||||
if (data) {
|
||||
data.noFilingReason = data.noFilingReason ? data.noFilingReason : ['']
|
||||
if (!data.masterUnitConfig) {
|
||||
data.masterUnitConfig = {}
|
||||
}
|
||||
if (!data.slaveUnitConfig) {
|
||||
data.slaveUnitConfig = {}
|
||||
}
|
||||
this.formData = data
|
||||
}
|
||||
/*this.$set(this.formData, "manner", this.openMannerList.map(v => {
|
||||
return v.id
|
||||
}))*/
|
||||
},
|
||||
resetForm() {
|
||||
if (this.$refs['addForm']) {
|
||||
this.$refs['addForm'].resetFields()
|
||||
}
|
||||
},
|
||||
async operation() {
|
||||
let method = this.formData.id ? "/doEdit" : "/doAdd"
|
||||
const valid = await this.$refs["addForm"].validate()
|
||||
if (valid) {
|
||||
this.subLoading = true
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '正在提交...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: COVER_LAYER_COLOR
|
||||
});
|
||||
const resp = await $.post(loc() + method, {
|
||||
"data": JSON.stringify(this.formData),
|
||||
"mannerList": JSON.stringify(this.formData.manner)
|
||||
})
|
||||
loading.close()
|
||||
this.subLoading = false
|
||||
if (resp.code === 0) {
|
||||
this.$notify.success(resp.msg)
|
||||
this.pageData()
|
||||
} else {
|
||||
this.$notify.warning(resp.msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.allMannerList = await this.getDictByCode("proposal_manner");
|
||||
this.reminderList = await getDictByCode("proposal_remind");
|
||||
this.openMannerList = await getDictByCode("proposal_manner");
|
||||
this.submitModeList = await getEnumOptions("ProposalSubmitMode")
|
||||
this.pageData();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,312 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.dialog-footer .el-button {
|
||||
padding: 12px 30px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
|
||||
@keyup.enter.native="doSearch">
|
||||
<el-select v-model="pageForm.searchName" slot="prepend" style="width: 80px;">
|
||||
<el-option label="名称" value="stateName"></el-option>
|
||||
<el-option label="编码" value="stateCode"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button">
|
||||
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
|
||||
</div>
|
||||
|
||||
<div class="pull-right offscreen-right">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="openAdd">添加状态</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt20">
|
||||
<el-table :data="tableData" row-key="id" @sort-change="pageOrder" v-loading="tableLoading">
|
||||
<el-table-column type="expand">
|
||||
<template slot-scope="{row}">
|
||||
<el-form style="margin-left: 108px">
|
||||
<el-form-item label="关联角色">
|
||||
{{row.roleNames}}
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="序号" width="120px">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态名称" prop="stateName" header-align="center" align="center"></el-table-column>
|
||||
<el-table-column label="状态编码" prop="stateCode" header-align="center" align="center"></el-table-column>
|
||||
<el-table-column label="状态颜色" prop="stateColor" header-align="center" align="center">
|
||||
<template scope="{row}">
|
||||
<el-tag style="border-radius: 50%;height: 22px;" :key="row.stateCode"
|
||||
:color="row.stateColor"></el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否需要签字" prop="isSign" header-align="center" align="center">
|
||||
<template scope="{row}">
|
||||
<el-switch @change="switchChange(row)" v-model="row.isSign"
|
||||
active-color="#13ce66" inactive-color="#ff4949">
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否开启" prop="stateColor" header-align="center" align="center">
|
||||
<template scope="{row}">
|
||||
<el-tag :key="row.isEnable" :type="row.isEnable?'':'danger'">
|
||||
{{row.isEnable?'已开启':'已关闭'}}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="关联菜单" prop="menuName" header-align="center" align="center"></el-table-column>
|
||||
<el-table-column label="关联角色" prop="roleNames" header-align="center" align="center"
|
||||
show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="前置节点" prop="prevState" header-align="center" align="center"
|
||||
show-overflow-tooltip>
|
||||
<template scope="{row}">
|
||||
{{row.prevState && row.prevState.stateName}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="后置节点" prop="nextState" header-align="center" align="center"
|
||||
show-overflow-tooltip>
|
||||
<template scope="{row}">
|
||||
{{row.nextState && row.nextState.stateName}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="操作" fixed="right"
|
||||
width="120px">
|
||||
<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:'edit',data:row}">
|
||||
编辑
|
||||
</el-dropdown-item>
|
||||
<!-- <el-dropdown-item :command="{type:'delete',data:row}">
|
||||
删除
|
||||
</el-dropdown-item>-->
|
||||
<el-dropdown-item :command="{type:'enable',data:row}">
|
||||
{{row.isEnable?'关闭':'开启'}}
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
</guava>
|
||||
|
||||
|
||||
<el-dialog title="提案状态" :visible.sync="dialogVisible" width="50%">
|
||||
<el-form ref="addForm" :model="formData" :rules="formRules" label-width="120px">
|
||||
<el-form-item label="状态编码" prop="stateCode">
|
||||
<el-input v-model="formData.stateCode" oninput="value=value.replace(/[^\d]/g,'')"
|
||||
placeholder="请输入状态编码" maxlength="4"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="状态名称" prop="stateName">
|
||||
<el-input v-model="formData.stateName" placeholder="请输入状态名称"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="状态颜色" prop="stateColor">
|
||||
<el-input v-model="formData.stateColor" placeholder="请输入状态颜色"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="是否需要签字" prop="isSign">
|
||||
<el-radio-group v-model="formData.isSign">
|
||||
<el-radio-button :label="true">是</el-radio-button>
|
||||
<el-radio-button :label="false">否</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否启用" prop="isEnable">
|
||||
<el-switch v-model="formData.isEnable" active-color="#13ce66" inactive-color="#ff4949"></el-switch>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="前置节点" prop="prevId">
|
||||
<el-select v-model="formData.prevId" placeholder="请选择前置节点" clearable>
|
||||
<!-- :disabled="item.stateCode>=formData.stateCode"-->
|
||||
<el-option v-for="item in allState"
|
||||
:label="item.stateName"
|
||||
:value="item.id"
|
||||
:key="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="后置节点" prop="nextId">
|
||||
<el-select v-model="formData.nextId" placeholder="请选择前置节点" clearable>
|
||||
<!-- :disabled="item.stateCode<=formData.stateCode"-->
|
||||
<el-option v-for="item in allState"
|
||||
:label="item.stateName"
|
||||
:value="item.id"
|
||||
:key="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="关联菜单" prop="menuId">
|
||||
<el-select v-model="formData.menuId" placeholder="请选择前置节点">
|
||||
<el-option v-for="item in proposalMenu"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
:key="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="operation" :loading="subLoading">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
subLoading: false,
|
||||
dialogVisible: false,
|
||||
pageForm: {
|
||||
searchName: "stateName",
|
||||
pageSize: 20
|
||||
},
|
||||
formRules: {
|
||||
stateCode: [{required: true, message: '请填写状态编码', trigger: ['blur', 'change']}],
|
||||
stateName: [{required: true, message: '请填写状态名称', trigger: ['blur', 'change']}],
|
||||
stateColor: [{required: true, message: '请填写状态颜色', trigger: ['blur', 'change']}],
|
||||
isSign: [{required: true, message: '请选择是否需要签字', trigger: ['blur', 'change']}],
|
||||
isEnable: [{required: true, message: '请选择是否启用', trigger: ['blur', 'change']}],
|
||||
},
|
||||
allState: [],
|
||||
proposalMenu: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
dropdownCommand(command) {
|
||||
const {type, data} = command
|
||||
if (type === 'edit') {
|
||||
this.openEdit(data)
|
||||
} else if (type === 'delete') {
|
||||
this.doDelete(data.id)
|
||||
} else if (type === 'enable') {
|
||||
data.isEnable = !data.isEnable
|
||||
this.switchChange(data)
|
||||
}
|
||||
},
|
||||
openAdd() {
|
||||
this.formData = {}
|
||||
const newStateCode = this.tableData && this.tableData.length > 0 ? this.tableData[this.tableData.length - 1].stateCode + 100 : 100
|
||||
this.$set(this.formData, "stateCode", newStateCode)
|
||||
this.$set(this.formData, "stateColor", '#1D8CE0')
|
||||
this.$set(this.formData, "isSign", false)
|
||||
this.$set(this.formData, "isEnable", true)
|
||||
this.$set(this.formData, "prevId", null)
|
||||
this.$set(this.formData, "nextId", null)
|
||||
this.resetForm()
|
||||
},
|
||||
openEdit(data) {
|
||||
this.formData = JSON.parse(JSON.stringify(data))
|
||||
this.resetForm()
|
||||
},
|
||||
resetForm() {
|
||||
this.dialogVisible = true
|
||||
if (this.$refs['addForm']) {
|
||||
this.$refs['addForm'].resetFields()
|
||||
}
|
||||
},
|
||||
async switchChange(data) {
|
||||
this.formData = data
|
||||
const resp = await $.post(loc() + "/doEdit", {"data": JSON.stringify(this.formData)})
|
||||
if(resp.code===0){
|
||||
this.notifySuccess(resp.msg)
|
||||
await proposal.getProposalEnableStateCode()
|
||||
await proposal.getProposalNeedSignStateCode()
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
this.pageData()
|
||||
},
|
||||
async operation() {
|
||||
let method = this.formData.id ? "/doEdit" : "/doAdd"
|
||||
const valid = this.$refs["addForm"].validate
|
||||
if (valid) {
|
||||
this.subLoading = true
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '正在提交...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: COVER_LAYER_COLOR
|
||||
});
|
||||
const cloneFormData = clone(this.formData)
|
||||
delete cloneFormData.prevState
|
||||
delete cloneFormData.nextState
|
||||
const resp = await $.post(loc() + '/doHandler', cloneFormData)
|
||||
|
||||
if(resp.code===0){
|
||||
this.dialogVisible = false
|
||||
this.pageData()
|
||||
this.notifySuccess(resp.msg)
|
||||
await proposal.getProposalAllStateCode()
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
loading.close()
|
||||
this.subLoading = false
|
||||
}
|
||||
},
|
||||
doDelete(id) {
|
||||
let self = this
|
||||
this.$confirm('确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: async (a, b) => {
|
||||
if ("confirm" === a) {
|
||||
const resp = await $.post(loc() + "/doDelete", {id})
|
||||
if(resp.code===0){
|
||||
self.notifySuccess(resp.msg)
|
||||
self.pageData()
|
||||
}else{
|
||||
self.notifyWarning(resp.msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
async listAll() {
|
||||
const resp = await $.post(loc() + "/listAll")
|
||||
if (resp.code === 0) {
|
||||
this.allState = resp.data
|
||||
}
|
||||
},
|
||||
async menuInProposal() {
|
||||
const resp = await $.post(loc() + "/menuInProposal")
|
||||
if (resp.code === 0) {
|
||||
this.proposalMenu = resp.data
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pageData();
|
||||
this.listAll()
|
||||
this.menuInProposal()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,177 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.dialog-footer .el-button {
|
||||
padding: 12px 30px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
|
||||
@keyup.enter.native="doSearch">
|
||||
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
|
||||
style="width: 80px;">
|
||||
<el-option label="名称" value="typeName"></el-option>
|
||||
<el-option label="编码" value="typeCode"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button">
|
||||
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
|
||||
</div>
|
||||
|
||||
<div class="pull-right offscreen-right">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="openAdd">添加类型</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card shadow="never" class="mt20">
|
||||
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
|
||||
v-loading="tabLoading">
|
||||
<el-table-column align="center" header-align="center" label="序号" width="120px">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="类型编号" prop="typeCode" header-align="center"
|
||||
align="center"></el-table-column>
|
||||
<el-table-column label="类型名称" prop="typeName" header-align="center"
|
||||
align="center"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="操作" fixed="right"
|
||||
width="120px">
|
||||
<template slot-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:'edit',data:row}">
|
||||
编辑
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item :command="{type:'delete',data:row}">
|
||||
删除
|
||||
</el-dropdown-item>
|
||||
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</guava>
|
||||
|
||||
|
||||
<el-dialog :title="title" :visible.sync="DialogVisible" :close-on-click-modal="false" width="40%">
|
||||
<el-form :model="formData" ref="addForm" :rules="formRules"
|
||||
label-width="100px">
|
||||
<el-form-item label="类型编号" prop="typeCode">
|
||||
<el-input type="text" v-model="formData.typeCode" maxlength="50" placeholder="类型编号"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="类型名称" prop="typeName">
|
||||
<el-input type="text" v-model="formData.typeName" maxlength="50" placeholder="请填写类型名称"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="DialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" :disabled="subDis" @click="operation">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
title: "",
|
||||
subDis: false,
|
||||
DialogVisible: false,
|
||||
tabLoading: false,
|
||||
pageForm: {
|
||||
searchName: "typeName",
|
||||
},
|
||||
formRules: {
|
||||
typeName: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
typeCode: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
dropdownCommand(command) {
|
||||
const {type, data} = command
|
||||
if (type == 'edit') {
|
||||
this.openEdit(data)
|
||||
} else if (type == 'delete') {
|
||||
this.doDelete(data.id)
|
||||
}
|
||||
},
|
||||
openAdd() {
|
||||
this.title = "添加类型"
|
||||
this.formData = {}
|
||||
this.DialogVisible = true;
|
||||
if (this.$refs['addForm']) {
|
||||
this.$refs['addForm'].resetFields()
|
||||
}
|
||||
},
|
||||
openEdit(data) {
|
||||
this.title = "编辑类型"
|
||||
this.formData = data
|
||||
this.DialogVisible = true;
|
||||
},
|
||||
async operation() {
|
||||
let method = this.formData.id ? "/doEdit" : "/doAdd"
|
||||
this.$refs["addForm"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '正在提交...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: COVER_LAYER_COLOR
|
||||
});
|
||||
const resp = await $.post(loc() + method, {proposalType: JSON.stringify(this.formData)})
|
||||
loading.close()
|
||||
if(resp.code===0){
|
||||
this.DialogVisible = false;
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData();
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
async doDelete(id) {
|
||||
let self = this
|
||||
this.$confirm('确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: async (a, b) => {
|
||||
if ("confirm" === a) {
|
||||
const resp = await $.get(loc() + "/doDelete", {id: id})
|
||||
if(resp.code===0){
|
||||
self.notifySuccess(resp.msg)
|
||||
self.pageData()
|
||||
}else{
|
||||
self.notifyWarning(resp.msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.pageData();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,458 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.el-transfer {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.el-transfer-panel {
|
||||
text-align: left;
|
||||
width: 35%;
|
||||
height: 400px;
|
||||
}
|
||||
|
||||
.el-transfer-panel__list.is-filterable {
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
.v-tree-layout-left {
|
||||
overflow: unset !important;
|
||||
}
|
||||
|
||||
.v-tree-layout-left .v-tree {
|
||||
width: 100%;
|
||||
height: calc(100vh - 170px);
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.v-tree:hover::-webkit-scrollbar {
|
||||
width: 3px;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.v-tree-layout-left .custom-tree-node {
|
||||
width: 90%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.v-tree-layout-left .v-tree .v-node {
|
||||
width: 100%;
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
/*width: 3px;*/
|
||||
/*background-color: transparent;*/
|
||||
display: none;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
border-radius: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never" style="height: calc(100vh - 70px)">
|
||||
<tree-layout>
|
||||
<template #tree>
|
||||
<div style="padding:0 20px 20px;">
|
||||
<el-input placeholder="输入单位名称进行过滤" v-model="filterText"></el-input>
|
||||
</div>
|
||||
<el-tree class="v-tree" :data="treeData" :props="defaultProps"
|
||||
:expand-on-click-node="false"
|
||||
default-expand-all :filter-node-method="filterNode" ref="tree"
|
||||
highlight-current accordion @node-click="handleNodeClick">
|
||||
<div class="custom-tree-node" slot-scope="{ node, data }">
|
||||
|
||||
<div v-if="node.level==1" style="font-size: 16px;" class="v-node">
|
||||
<i class="el-icon-office-building"></i> {{ data.unitName }}
|
||||
</div>
|
||||
|
||||
<div v-if="node.level==2" style="font-size: 14px" class="v-node">
|
||||
<i class="el-icon-s-help" v-if="checkData.unitName==data.unitName"></i>
|
||||
<i class="el-icon-help" v-else></i>
|
||||
 {{ data.unitName }}
|
||||
</div>
|
||||
</div>
|
||||
</el-tree>
|
||||
</template>
|
||||
|
||||
<template>
|
||||
<div v-if="node.level==1" style="padding:0 10px">
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button">
|
||||
<el-input placeholder="根据承办单位名称进行查询" clearable v-model="pageForm.unitName"
|
||||
@keyup.enter.native="doSearch">
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button">
|
||||
<el-button slot="append" icon="el-icon-search" type="primary" @click="doSearch()"></el-button>
|
||||
</div>
|
||||
<!-- <div class="pull-right offscreen-right">
|
||||
<el-button type="primary" @click="openAdd"><i class="ti-plus"></i>增补承办单位</el-button>
|
||||
</div>-->
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<el-table ref="underTakeTable" highlight-current-row :data="tableData"
|
||||
@sort-change="(column)=>{pageForm.pageOrderName = column.prop;pageForm.pageOrderBy = column.order;pageData()}"
|
||||
height="673px">
|
||||
<el-table-column label="序号" width="60px">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="承办单位编码" prop="unitCode" header-align="center"
|
||||
align="center"
|
||||
width="130px" sortable></el-table-column>
|
||||
<el-table-column label="承办单位名称" prop="unitName" header-align="center"
|
||||
align="center"
|
||||
width="250px"></el-table-column>
|
||||
<el-table-column label="分管校领导及联系电话" prop="leader" header-align="center"
|
||||
align="center" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="负责人及联系电话" prop="principal" header-align="center"
|
||||
align="center" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="是否启用" prop="isEnable" header-align="center" align="center"
|
||||
width="100px">
|
||||
<template scope="{row}">
|
||||
<el-switch @change="switchChange(row)" v-model="row.isEnable"
|
||||
active-color="#13ce66" inactive-color="#ff4949">
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="120px">
|
||||
<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:'leader',data:row}">设置分管校领导</el-dropdown-item>
|
||||
<el-dropdown-item :command="{type:'principal',data:row}">设置负责人
|
||||
</el-dropdown-item>
|
||||
<!-- <el-dropdown-item :command="{type:'edit',data:row}">编辑</el-dropdown-item>
|
||||
<el-dropdown-item v-if="!row.isEnable" :command="{type:'delete',data:row}">删除
|
||||
</el-dropdown-item>-->
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<div v-if="node.level==2" style="padding:0 10px">
|
||||
<el-card shadow="never">
|
||||
<div class="text-right">
|
||||
<el-button size="medium" type="primary" @click="openAdmin(adminPageForm,adminPageForm.flag)">
|
||||
{{butTitle}}
|
||||
</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-tabs v-model="activeName" type="card" @tab-click="handleTabClick" class="mt10">
|
||||
<el-tab-pane label="分管校领导" name="one"></el-tab-pane>
|
||||
<el-tab-pane label="负责人" name="two"></el-tab-pane>
|
||||
</el-tabs>
|
||||
<el-card shadow="never">
|
||||
<el-table highlight-current-row :data="adminTableData" style="width: 100%;" height="661px">
|
||||
<el-table-column label="序号" width="60px">
|
||||
<template scope="scope"><span>{{scope.$index+1}}</span></template>
|
||||
</el-table-column>
|
||||
<el-table-column label="职工号" prop="loginname" align="center"></el-table-column>
|
||||
<el-table-column label="姓名" prop="username" align="center"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex" align="center"></el-table-column>
|
||||
<el-table-column label="联系方式" prop="mobile" align="center"></el-table-column>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template scope="{row}">
|
||||
<el-button type="danger" size="mini" @click="removeAdmin(row)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
</tree-layout>
|
||||
</el-card>
|
||||
</guava>
|
||||
|
||||
|
||||
<el-dialog title="增补承办单位" :visible.sync="dialogVisible" width="50%">
|
||||
<el-form ref="addForm" :model="formData" :rules="formRules" label-width="120px">
|
||||
<el-form-item label="承办单位编码" prop="unitCode">
|
||||
<el-input v-model="formData.unitCode" placeholder="请输入承办单位编码"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="承办单位名称" prop="unitName">
|
||||
<el-input v-model="formData.unitName" placeholder="请输入承办单位名称"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="是否启用" prop="isEnable">
|
||||
<el-radio-group v-model="formData.isEnable">
|
||||
<el-radio-button :label="true">是</el-radio-button>
|
||||
<el-radio-button :label="false">否</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="operation" :loading="subLoading">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :title="title" :visible.sync="adminDialogVisible" width="55%">
|
||||
<div style="width: 100%;">
|
||||
<el-transfer :titles="['单位成员', '管理员']" filterable
|
||||
:props="{key: 'id',label: 'name'}"
|
||||
:filter-method="adminFilterMethod"
|
||||
v-model="adminFormData.adminValue"
|
||||
:data="adminData">
|
||||
</el-transfer>
|
||||
</div>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="adminDialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="doAdmin" :loading="adminSubLoading">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'tree-layout': httpVueLoader('/components/plugins/TreeLayout.vue')
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
title: '',
|
||||
butTitle: '添加分管校领导',
|
||||
filterText: '',
|
||||
activeName: 'one',
|
||||
subLoading: false,
|
||||
dialogVisible: false,
|
||||
treeData: [],
|
||||
node: {
|
||||
level: 1
|
||||
},
|
||||
formData: {
|
||||
isEnable: true
|
||||
},
|
||||
checkData: {},
|
||||
adminSubLoading: false,
|
||||
adminDialogVisible: false,
|
||||
adminFormData: {
|
||||
adminValue: [],
|
||||
flag: true
|
||||
},
|
||||
adminData: [],
|
||||
adminTableData: [],
|
||||
adminPageForm: {
|
||||
flag: true
|
||||
},
|
||||
defaultProps: {
|
||||
children: 'childrens',
|
||||
label: 'unitName',
|
||||
disabled: 'disabled'
|
||||
},
|
||||
formRules: {
|
||||
unitCode: [{required: true, message: '请输入承办单位编码', trigger: ['blur', 'change']}],
|
||||
unitName: [{required: true, message: '请输入承办单位名称', trigger: ['blur', 'change']}],
|
||||
isEnable: [{required: true, message: '请选择是否启用', trigger: ['blur', 'change']}],
|
||||
},
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
filterText(val) {
|
||||
this.$refs.tree.filter(val);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
dropdownCommand(command) {
|
||||
const {type, data} = command
|
||||
if (type === 'leader') {
|
||||
this.title = '设置分管校领导'
|
||||
this.openAdmin(data, true)
|
||||
} else if (type === 'principal') {
|
||||
this.title = '设置负责人'
|
||||
this.openAdmin(data, false)
|
||||
} else if (type === 'edit') {
|
||||
this.openEdit(data)
|
||||
} else if (type === 'delete') {
|
||||
this.doDelete(data.id)
|
||||
}
|
||||
},
|
||||
filterNode(value, data) {
|
||||
if (!value) return true;
|
||||
return data.unitName.indexOf(value) !== -1
|
||||
return false
|
||||
},
|
||||
adminFilterMethod(query, item) {
|
||||
return item.username.indexOf(query) > -1;
|
||||
},
|
||||
handleNodeClick(data, node) {
|
||||
this.node = node
|
||||
this.checkData = data
|
||||
this.adminPageForm.id = data.id
|
||||
this.adminPageForm.unitCode = data.unitCode
|
||||
this.adminPageForm.flag = this.activeName === 'one'
|
||||
this.adminPageData()
|
||||
},
|
||||
handleTabClick(tab) {
|
||||
this.butTitle = tab.name === 'one' ? '添加分管校领导' : '添加负责人'
|
||||
this.adminPageForm.flag = tab.name === 'one'
|
||||
this.adminPageData()
|
||||
},
|
||||
removeAdmin(row) {
|
||||
this.$confirm('确定要移除该管理员吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: async (a, b) => {
|
||||
if ("confirm" === a) {
|
||||
const resp = await $.post(loc() + "/removeAdmin", {
|
||||
unitId: this.adminPageForm.id,
|
||||
userId: row.id,
|
||||
roleId: row.roleid
|
||||
})
|
||||
if(resp.code===0){
|
||||
this.notifySuccess({title: '成功', message: resp.msg});
|
||||
this.adminPageData()
|
||||
}else{
|
||||
this.notifySuccess('审核失败')
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
async adminPageData() {
|
||||
const resp = await $.post(loc() + "/adminPageData", this.adminPageForm)
|
||||
if(resp.code===0){
|
||||
this.adminTableData = resp.data;
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
openAdd() {
|
||||
this.formData = {}
|
||||
this.$set(this.formData, "isEnable", true)
|
||||
this.resetForm()
|
||||
},
|
||||
openEdit(data) {
|
||||
this.formData = data
|
||||
this.resetForm()
|
||||
},
|
||||
async openAdmin(row, flag) {
|
||||
const {id, unitCode} = row
|
||||
this.adminFormData.unitId = id
|
||||
this.adminFormData.flag = flag
|
||||
|
||||
const {data} = await $.get(loc() + "/findUserAndAdmin", {id, unitCode, flag})
|
||||
if (data) {
|
||||
this.adminData = data.data
|
||||
this.adminFormData.adminValue = data.value.map(v => {
|
||||
return v.id
|
||||
})
|
||||
}
|
||||
this.adminDialogVisible = true
|
||||
},
|
||||
async doAdmin() {
|
||||
this.adminSubLoading = true
|
||||
const data = clone(this.adminFormData)
|
||||
data.adminValue = JSON.stringify(data.adminValue)
|
||||
const resp = await $.post(loc() + "/setAdmin", data)
|
||||
this.adminSubLoading = false
|
||||
if(resp.code===0){
|
||||
this.adminDialogVisible = false
|
||||
this.pageData()
|
||||
this.adminPageData()
|
||||
this.notifySuccess(resp.msg)
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
resetForm() {
|
||||
this.dialogVisible = true
|
||||
if (this.$refs['addForm']) {
|
||||
this.$refs['addForm'].resetFields()
|
||||
}
|
||||
},
|
||||
async switchChange(data) {
|
||||
this.formData = data
|
||||
const resp = await $.post(loc() + "/doEdit", {"data": JSON.stringify(this.formData)})
|
||||
if(resp.code===0){
|
||||
this.notifySuccess(resp.msg)
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
this.undertakeUnitTree()
|
||||
},
|
||||
async operation() {
|
||||
let method = this.formData.id ? "/doEdit" : "/doAdd"
|
||||
this.$refs["addForm"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
this.subLoading = true
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '正在提交...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: COVER_LAYER_COLOR
|
||||
});
|
||||
const resp = await $.post(loc() + method, {"data": JSON.stringify(this.formData)})
|
||||
loading.close()
|
||||
this.subLoading = false
|
||||
if(resp.code===0){
|
||||
this.dialogVisible = false
|
||||
this.pageData()
|
||||
this.notifySuccess(resp.msg)
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
doDelete(id) {
|
||||
this.$confirm('确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: async (a, b) => {
|
||||
if ("confirm" == a) {
|
||||
const resp = await $.post(loc() + "/doDelete", {id})
|
||||
if(resp.code===0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.undertakeUnitTree()
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
async undertakeUnitTree() {
|
||||
const {data} = await $.get(loc() + "/undertakeUnitTree")
|
||||
this.treeData = [data]
|
||||
this.pageData()
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
await this.undertakeUnitTree()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
Reference in New Issue
Block a user