412 lines
18 KiB
HTML
412 lines
18 KiB
HTML
<!--#
|
|
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>
|
|
<!--#
|
|
}
|
|
#-->
|