Files
2026-09-08 19:49:21 +08:00

410 lines
18 KiB
HTML

<!--#
layout("/layouts/platform.html"){
#-->
<style>
.item-button {
text-align: right;
}
.item-button .el-button {
padding: 12px 25px;
}
.el-dialog__title {
font-size: 18px; /* 修改标题字体大小 */
color: red; /* 修改标题字体颜色 */
border-bottom: none; /* 去掉标题底部边框线 */
}
</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="170px">
<vi-title title="基本配置"></vi-title>
<el-form-item label="配置名称" prop="configName">
<el-input v-model="formData.configName" placeholder="请输入配置名称"></el-input>
</el-form-item>
<el-form-item prop="activityGroupId" label="参加人员范围">
<el-select v-model="formData.activityGroupId" placeholder="请选择参加人员范围" filterable
clearable
style="width: 100%">
<el-option v-for="item in activityGroupList"
:value="item.groupId"
:key="item.groupId"
:label="item.groupName"></el-option>
</el-select>
</el-form-item>
<el-form-item label="省外名额分配" prop="outsideQuota">
<el-input v-model.number="formData.outsideQuota"
placeholder="请输入省外名额分配"></el-input>
</el-form-item>
<el-form-item label="省外名额分配比例" prop="outsideQuotaProportion">
<el-slider
show-input
v-model="formData.outsideQuotaProportion">
</el-slider>
</el-form-item>
<el-form-item label="省外几年去一次" prop="outsideNumber">
<el-input max="100"
placeholder="请输入省外几年去一次"
v-model.number="formData.outsideNumber"></el-input>
</el-form-item>
<el-form-item label="每年旅行频率" prop="travelFrequency">
<el-input max="100" disabled
placeholder="请输入每年旅行频率"
v-model.number="formData.travelFrequency"></el-input>
</el-form-item>
<el-form-item label="组团人数" prop="groupNumber">
<el-input max="100"
placeholder="请输入组团人数"
v-model.number="formData.groupNumber"></el-input>
</el-form-item>
<el-form-item label="不可取消修改天数" prop="modifyDays">
<el-input max="100"
placeholder="请输入不可取消修改天数"
v-model.number="formData.modifyDays"></el-input>
</el-form-item>
<el-form-item label="可以修改几次" prop="modifyNumber">
<el-input max="100"
placeholder="请输入可以修改几次"
v-model.number="formData.modifyNumber"></el-input>
</el-form-item>
<el-form-item label="省内线路是否需要审核" prop="isSnLine">
<el-radio-group v-model="formData.isSnLine">
<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="isSwLine">
<el-radio-group v-model="formData.isSwLine">
<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="allLineSignUpNumber">
<el-input max="100"
placeholder="请输入全批次最多报名人数"
v-model.number="formData.allLineSignUpNumber"></el-input>
</el-form-item>
<el-form-item label="省内起始年份" prop="provinceStartYear">
<el-input max="100"
placeholder="请输入省内起始年份"
v-model.number="formData.provinceStartYear"></el-input>
</el-form-item>
<vi-title title="标段管理"></vi-title>
<el-form-item label="标段">
<el-button type="primary" @click="formData.lots.push({})"
style="float: right;">增加一条
</el-button>
<el-table :data="formData.lots" stripe style="width: 100%">
<el-table-column prop="index" label="序号" width="180">
<template scope="scope">
{{scope.$index+1}}
</template>
</el-table-column>
<el-table-column prop="lotName" label="标段名称">
<template scope="{row}">
<el-input v-model="row.lotName" placeholder="请输入标段名称"></el-input>
</template>
</el-table-column>
<el-table-column prop="lotValue" label="标段值">
<template scope="{row}">
<el-input v-model="row.lotValue" placeholder="请输入标段值"></el-input>
</template>
</el-table-column>
<el-table-column prop="activityCost" label="标段费用">
<template scope="{row}">
<el-input v-model="row.activityCost" placeholder="请输入标段费用"></el-input>
</template>
</el-table-column>
<!--# if(@shiro.hasRole('sysadmin')){ #-->
<el-table-column prop="index" label="操作">
<template scope="scope">
<el-button type="danger" icon="el-icon-delete"
@click="deleteLotsRow(scope)"></el-button>
</template>
</el-table-column>
<!--# } #-->
</el-table>
</el-form-item>
<vi-title title="服务须知"></vi-title>
<el-form-item label="疗休养服务须知" prop="notice">
<div id="lineContent"></div>
</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>
<el-dialog
title="该标段被以下线路/目的地绑定,是否强制删除"
:visible.sync="centerDialogVisible"
width="50%"
center>
<template>
<el-card>
<div v-if="LineNameList.line!=null">
<el-descriptions class="margin-top" title="线路名称" :column="3">
<el-descriptions-item v-for="(o,index) in LineNameList.line">
<template slot="label">
{{o.index}}
</template>
{{o}}
</el-descriptions-item>
</el-descriptions>
<br/>
</div>
<div v-if="LineNameList.base!=null">
<el-descriptions class="margin-top" title="目的地名称" :column="3">
<el-descriptions-item v-for="o in LineNameList.base">
<template slot="label">
{{o.index}}
</template>
{{o}}
</el-descriptions-item>
</el-descriptions>
</div>
</el-card>
</template>
<span slot="footer" class="dialog-footer">
<el-button @click="closeDialog">取 消</el-button>
<el-button type="primary" @click="deleteLotById">确 定</el-button>
</span>
</el-dialog>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
data() {
return {
activityGroupList: [],
subLoading: false,
formData: {
isSnLine: 0,
isSwLine: 0,
lots: [],
configName: '智慧工会疗休养配置',
outsideQuota: null,
outsideQuotaProportion: 0,
outsideNumber: null,
travelFrequency: null,
groupNumber: null,
modifyDays: null,
modifyNumber: null,
allLineSignUpNumber: null,
notice: null,
provinceStartYear: null,
},
formRules: {
configName: [{required: true, message: '请填写配置名称', trigger: ['blur', 'change']}],
isSnLine: [{required: true, message: '请选择省内线路是否需要审核', trigger: ['blur', 'change']}],
isSwLine: [{required: true, message: '请选择省外线路是否需要审核', trigger: ['blur', 'change']}],
outsideQuota: [{
required: true,
message: '请填写省外名额分配',
trigger: ['blur', 'change']
}],
outsideNumber: [{
required: true,
message: '请填写省外几年去一次',
trigger: ['blur', 'change']
}],
travelFrequency: [{
required: true,
message: '请填写每年旅行频率',
trigger: ['blur', 'change']
}],
groupNumber: [{
required: true,
message: '请填写组团人数',
trigger: ['blur', 'change']
}],
modifyDays: [{
required: true,
message: '请填写不可取消修改天数',
trigger: ['blur', 'change']
}],
modifyNumber: [{
required: true,
message: '请填写可以修改几次',
trigger: ['blur', 'change']
}],
outsideQuotaProportion: [{
required: true,
message: '请填写比例',
trigger: ['blur', 'change']
}],
allLineSignUpNumber: [{
required: true,
message: '请输入全批次最多报名人数',
trigger: ['blur', 'change']
}],
notice: [{required: true, message: '请输入详细内容', trigger: ['change', 'blur']}],
provinceStartYear: [{required: true, message: '请输入省内起始年份', trigger: ['change', 'blur']}],
},
marks: [],
lotDeleteList: [],
LineNameList:{},
centerDialogVisible:false,
tableScopeId:'',
tableScopeIndex:'',
}
},
methods: {
async deleteLotsRow(scope) {
//this.lotDeleteList.push(scope.row.id);
//console.log(this.lotDeleteList)
const res = await $.get(loc() + '/getLotsById?lotId=' + scope.row.id)
if (res.code===0) {
this.LineNameList = res.data
}
if (!$.isEmptyObject(this.LineNameList)) {
this.centerDialogVisible = true;
this.tableScopeId=scope.row.id
this.tableScopeIndex=scope.$index;
}else {
const confirm = await this.$confirm('您确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm !== 'confirm') return
this.tableScopeId=scope.row.id
this.tableScopeIndex=scope.$index;
await this.deleteLotById();
}
//this.formData.lots.splice(scope.$index, 1)
},
resetForm() {
this.formData.lots = []
if (this.$refs['addForm']) {
this.$refs['addForm'].resetFields()
}
},
async operation() {
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 cloneData = clone(this.formData)
if (this.lotDeleteList && this.lotDeleteList.length > 0) {
cloneData.lotDeleteList = JSON.stringify(this.lotDeleteList)
}
if (this.formData.lots && this.formData.lots.length > 0) {
cloneData.lots = JSON.stringify(this.formData.lots)
}
cloneData.outsideQuotaProportion = cloneData.outsideQuotaProportion / 100
const resp = await $.post(loc() + "/operation", cloneData)
if (resp.code === 0){
this.$notify.success({title: '成功', message: resp.msg});
loading.close()
this.subLoading = false
}else {
this.$notify.error({title: '失败', message: resp.msg});
}
}
},
async findOne() {
await this.getActivityGroup()
const {data} = await $.get(loc() + "/findOne")
if (data.outsideQuotaProportion) {
data.outsideQuotaProportion = data.outsideQuotaProportion * 1000 / 10
}
if (!data.lots) {
data.lots = []
}
this.formData = data
this.initLineContentEditor(data.notice)
},
async getActivityGroup() {
const {data} = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
this.activityGroupList = data
},
initLineContentEditor(content) {
$("#lineContent").html("")
lineContentEditor = new wangEditor("#lineContent")
lineContentEditor.config.onchange = (html) => {
this.formData.notice = html.replace(/<p\><\/p>/g, '')
}
lineContentEditor.config.uploadImgShowBase64 = true
lineContentEditor.create()
if (content) {
lineContentEditor.txt.html(content)
}
},
async closeDialog() {
this.tableScopeIndex = '';
this.tableScopeId = '';
this.centerDialogVisible = false;
this.LineNameList = {};
},
async deleteLotById() {
if (this.tableScopeId == null || this.tableScopeId===''){
this.formData.lots.splice(this.tableScopeIndex, 1);
this.$notify.success({title: '成功', message: "操作成功"});
return;
}
const resp = await $.get(loc() + '/deleteLotById?lotId=' + this.tableScopeId)
if (resp.code===0){
this.$notify.success({title: '成功', message: resp.msg});
this.tableScopeId='';
this.centerDialogVisible = false;
this.formData.lots.splice(this.tableScopeIndex, 1)
await this.findOne();
}else {
this.$notify.error({title: '失败', message: resp.msg});
}
}
},
async created() {
this.findOne();
this.initLineContentEditor();
}
})
</script>
<!--#
}
#-->