|
|
@@ -7,11 +7,16 @@
|
|
|
label-width="90px"
|
|
|
label-position="right"
|
|
|
size="small"
|
|
|
- style="max-width: 570px;"
|
|
|
+ style="max-width: 700px;"
|
|
|
>
|
|
|
<el-form-item prop="name" label="名称">
|
|
|
<el-input v-model="formData.name" :readonly="!display"></el-input>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item prop="year" label="年度">
|
|
|
+ <el-select v-model="formData.year">
|
|
|
+ <el-option v-for="item in years" :key="item" :label="item" :value="item"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="报名时间">
|
|
|
<el-date-picker
|
|
|
v-model="dateRange"
|
|
|
@@ -25,53 +30,93 @@
|
|
|
>
|
|
|
</el-date-picker>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="活动时间">
|
|
|
- <el-date-picker
|
|
|
- v-model="formData.eventStartDate"
|
|
|
- type="date"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- placeholder="选择日期"
|
|
|
- style="width: 100%"
|
|
|
- :readonly="!display"
|
|
|
- >
|
|
|
- </el-date-picker>
|
|
|
+ <el-form-item prop="online" label="展演形式">
|
|
|
+ <el-radio-group v-model="formData.online">
|
|
|
+ <el-radio :label="true">线上</el-radio>
|
|
|
+ <el-radio :label="false">线下</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="上午">
|
|
|
- <el-time-picker
|
|
|
- is-range
|
|
|
- v-model="eventTimeRange"
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="开始时间"
|
|
|
- end-placeholder="结束时间"
|
|
|
- placeholder="选择时间范围"
|
|
|
- style="width: 100%"
|
|
|
- value-format="HH:mm:ss"
|
|
|
- :readonly="!display"
|
|
|
- >
|
|
|
- </el-time-picker>
|
|
|
+ <el-form-item label="计划安排">
|
|
|
+ <el-button type="primary" size="mini" @click="onAddOtherForm()">添加计划</el-button>
|
|
|
+ <div class="add-con" v-for="(item, index) in schedules" :key="index">
|
|
|
+ <div v-if="!item.del">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="11">
|
|
|
+ <el-form-item prop="content" label="活动内容">
|
|
|
+ <el-input v-model="item.content"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="11">
|
|
|
+ <el-form-item prop="date" label="活动时间">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="item.date"
|
|
|
+ type="date"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ placeholder="选择日期"
|
|
|
+ >
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="20">
|
|
|
+ <el-form-item label="活动地点">
|
|
|
+ <el-input v-model="item.address"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="3">
|
|
|
+ <el-form-item>
|
|
|
+ <el-button
|
|
|
+ class="del"
|
|
|
+ type="danger"
|
|
|
+ size="small"
|
|
|
+ icon="el-icon-delete"
|
|
|
+ @click="onDeleteOtherForm(item, index)"
|
|
|
+ ></el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="下午">
|
|
|
- <el-time-picker
|
|
|
- v-model="formData.afternoonStartTime"
|
|
|
- :picker-options="{
|
|
|
- selectableRange: '12:30:00 - 20:30:00'
|
|
|
- }"
|
|
|
- placeholder="任意时间点"
|
|
|
- value-format="HH:mm:ss"
|
|
|
- :readonly="!display"
|
|
|
- >
|
|
|
- </el-time-picker>
|
|
|
+ <el-form-item label="咨询电话">
|
|
|
+ <el-button type="primary" size="mini" @click="onAddPhoneForm()">添加电话</el-button>
|
|
|
+ <div class="add-con" v-for="(item, index) in phones" :key="index">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="联系人">
|
|
|
+ <el-input v-model="item.name"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-form-item label="电话">
|
|
|
+ <el-input v-model="item.phone"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="3">
|
|
|
+ <el-form-item>
|
|
|
+ <el-button
|
|
|
+ class="del"
|
|
|
+ type="danger"
|
|
|
+ size="small"
|
|
|
+ icon="el-icon-delete"
|
|
|
+ @click="onDeletePhoneForm(item, index)"
|
|
|
+ ></el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
</el-form-item>
|
|
|
- <el-form-item prop="address" label="活动地点">
|
|
|
- <el-input type="textarea" :rows="3" v-model="formData.address" :readonly="!display"></el-input>
|
|
|
+ <el-form-item prop="email" label="活动邮箱">
|
|
|
+ <el-input v-model="formData.email"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="programme" label="活动方案">
|
|
|
+ <file-upload v-model="formData.programme"></file-upload>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="codeImg" label="活动工作群">
|
|
|
+ <single-upload v-model="formData.codeImg"></single-upload>
|
|
|
</el-form-item>
|
|
|
- <!-- <el-form-item prop="status" label="状态">
|
|
|
- <el-radio-group v-model="formData.status">
|
|
|
- <el-radio v-for="item in statusOptions" :key="item.value" :label="item.value"
|
|
|
- >{{ item.label }}
|
|
|
- </el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item> -->
|
|
|
<el-form-item>
|
|
|
<el-button @click="onSave" :loading="saving" type="primary" v-if="display">保存</el-button>
|
|
|
<el-button @click="onDelete" :loading="saving" type="danger" v-if="formData.id && display">
|
|
|
@@ -88,12 +133,25 @@ export default {
|
|
|
name: 'PerformanceEdit',
|
|
|
created() {
|
|
|
if (this.$route.query.id) {
|
|
|
+ this.performanceId = Number(this.$route.query.id);
|
|
|
this.$http
|
|
|
.get('performance/get/' + this.$route.query.id)
|
|
|
.then(res => {
|
|
|
this.formData = res;
|
|
|
+ if (typeof res.performanceEnquiries != 'undefined') {
|
|
|
+ this.phones = res.performanceEnquiries;
|
|
|
+ }
|
|
|
this.dateRange = [res.startDate, res.endDate];
|
|
|
- this.eventTimeRange = [res.morningStartTime, res.morningEndTime];
|
|
|
+
|
|
|
+ this.$http
|
|
|
+ .post(
|
|
|
+ '/performanceSchedule/all',
|
|
|
+ { size: 100, query: { performanceId: this.$route.query.id } },
|
|
|
+ { body: 'json' }
|
|
|
+ )
|
|
|
+ .then(res => {
|
|
|
+ this.schedules = res.content;
|
|
|
+ });
|
|
|
})
|
|
|
.catch(e => {
|
|
|
console.log(e);
|
|
|
@@ -113,11 +171,28 @@ export default {
|
|
|
],
|
|
|
dateRange: [],
|
|
|
eventTimeRange: '',
|
|
|
- display: false
|
|
|
+ display: false,
|
|
|
+ years: ['2021', '2022', '2023', '2024', '2025'],
|
|
|
+ schedules: [],
|
|
|
+ phones: [],
|
|
|
+ performanceId: ''
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
- ...mapState(['userInfo'])
|
|
|
+ ...mapState(['userInfo']),
|
|
|
+ saveOtherJson() {
|
|
|
+ const schedules = [...this.schedules]
|
|
|
+ .filter(item => {
|
|
|
+ return !!item.content || !!item.date || !!item.address;
|
|
|
+ })
|
|
|
+ .map(item => {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ performanceId: this.performanceId
|
|
|
+ };
|
|
|
+ });
|
|
|
+ return JSON.stringify(schedules);
|
|
|
+ }
|
|
|
},
|
|
|
methods: {
|
|
|
onSave() {
|
|
|
@@ -133,13 +208,17 @@ export default {
|
|
|
let data = { ...this.formData };
|
|
|
data.startDate = this.dateRange[0];
|
|
|
data.endDate = this.dateRange[1];
|
|
|
- data.morningStartTime = this.eventTimeRange[0];
|
|
|
- data.morningEndTime = this.eventTimeRange[1];
|
|
|
+ data.performanceEnquiries = this.phones;
|
|
|
this.saving = true;
|
|
|
this.$http
|
|
|
.post('/performance/save', data, { body: 'json' })
|
|
|
.then(res => {
|
|
|
this.saving = false;
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$http.post('/performanceSchedule/batchSave', {
|
|
|
+ schedules: this.saveOtherJson
|
|
|
+ });
|
|
|
+ });
|
|
|
this.$message.success('成功');
|
|
|
this.$router.go(-1);
|
|
|
})
|
|
|
@@ -172,8 +251,56 @@ export default {
|
|
|
this.display = true;
|
|
|
}
|
|
|
});
|
|
|
+ },
|
|
|
+ onAddOtherForm() {
|
|
|
+ this.schedules.push({
|
|
|
+ content: '',
|
|
|
+ date: '',
|
|
|
+ address: ''
|
|
|
+ });
|
|
|
+ },
|
|
|
+ onAddPhoneForm() {
|
|
|
+ this.phones.push({
|
|
|
+ name: '',
|
|
|
+ phone: ''
|
|
|
+ });
|
|
|
+ },
|
|
|
+ onDeleteOtherForm(info, index) {
|
|
|
+ this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'warning' })
|
|
|
+ .then(() => {
|
|
|
+ const schedules = [...this.schedules];
|
|
|
+ if (info.id) {
|
|
|
+ info.del = true;
|
|
|
+ schedules[index] = info;
|
|
|
+ } else {
|
|
|
+ schedules.splice(index, 1);
|
|
|
+ }
|
|
|
+ this.schedules = schedules;
|
|
|
+ this.$message.success('删除成功');
|
|
|
+ })
|
|
|
+ .catch(e => {});
|
|
|
+ },
|
|
|
+ onDeletePhoneForm(info, index) {
|
|
|
+ this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'warning' })
|
|
|
+ .then(() => {
|
|
|
+ const phones = [...this.phones];
|
|
|
+ phones.splice(index, 1);
|
|
|
+ this.phones = phones;
|
|
|
+ this.$message.success('删除成功');
|
|
|
+ })
|
|
|
+ .catch(e => {});
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
</script>
|
|
|
-<style lang="less" scoped></style>
|
|
|
+<style lang="less" scoped>
|
|
|
+.add-con {
|
|
|
+ background-color: #f7f7f7;
|
|
|
+ width: 100%;
|
|
|
+ margin: 7px 0;
|
|
|
+ padding-top: 14px;
|
|
|
+}
|
|
|
+.del {
|
|
|
+ float: right;
|
|
|
+}
|
|
|
+</style>
|