Files
UNION_NSI/target/classes/views/platform/proposal/basics/config.html
T
2026-09-08 19:49:21 +08:00

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">&emsp;</el-button>
<el-button type="primary" @click="operation" :loading="subLoading">&emsp;
</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>
<!--#
}
#-->