|
@@ -1,12 +1,13 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
<el-dialog
|
|
|
- width="520px"
|
|
|
+ class="dialog"
|
|
|
+ width="630px"
|
|
|
:title="title"
|
|
|
:visible.sync="lookVisible"
|
|
|
:before-close="onClose"
|
|
|
>
|
|
|
- <el-form :model="formes" label-width="100px" ref="eidtCamp">
|
|
|
+ <el-form class="elForm" label-position="top" :model="formes" label-width="100px" ref="eidtCamp">
|
|
|
<el-form-item
|
|
|
label="训练营标题"
|
|
|
:rules="[{ required: true, message: '请输入发送内容' }]"
|
|
@@ -14,46 +15,84 @@
|
|
|
>
|
|
|
<el-input class="w100" v-model="formes.name"></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item
|
|
|
- prop="applyTime"
|
|
|
- label="报名时间"
|
|
|
- :rules="[{ required: true, message: '请选择报名时间' }]"
|
|
|
- >
|
|
|
- <el-date-picker
|
|
|
- v-model.trim="formes.applyTime"
|
|
|
- class="w100"
|
|
|
- type="daterange"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- @change="
|
|
|
- () => {
|
|
|
- formes.trainTime = [];
|
|
|
- }
|
|
|
- "
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="报名开始日期"
|
|
|
- end-placeholder="报名结束日期"
|
|
|
- :picker-options="payDate()"
|
|
|
- >
|
|
|
- </el-date-picker>
|
|
|
+ <el-form-item label="适用分部" prop="organIds" :rules="[{ required: true, message: '请选择分部' }]">
|
|
|
+ <el-select style="width: 100% !important;" v-model="formes.organIds" multiple clearable @change="handleChangeOrgan">
|
|
|
+ <el-option :label="o.name" :value="o.id + ''" v-for="(o) in organs" :key="o.id"></el-option>
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item
|
|
|
- prop="trainTime"
|
|
|
- label="训练时间"
|
|
|
- :rules="[{ required: true, message: '请选择训练时间' }]"
|
|
|
- >
|
|
|
- <el-date-picker
|
|
|
- v-model.trim="formes.trainTime"
|
|
|
- type="daterange"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- class="w100"
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="训练开始日期"
|
|
|
- end-placeholder="训练结束日期"
|
|
|
- :picker-options="payendTimer"
|
|
|
- >
|
|
|
- </el-date-picker>
|
|
|
+ <el-form-item label="适用乐团" prop="musicGroupIds" :rules="[{ required: true, message: '请选择乐团' }]">
|
|
|
+ <el-select style="width: 100% !important;" v-model="formes.musicGroupIds" multiple clearable>
|
|
|
+ <el-option :label="o.musicGroupName" :value="o.musicGroupId" v-for="(o) in musicGroups" :key="o.musicGroupId"></el-option>
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item
|
|
|
+ <div class="wrap">
|
|
|
+ <el-form-item
|
|
|
+ prop="applyTime"
|
|
|
+ label="报名时间"
|
|
|
+ :rules="[{ required: true, message: '请选择报名时间' }]"
|
|
|
+ >
|
|
|
+ <el-date-picker
|
|
|
+ v-model.trim="formes.applyTime"
|
|
|
+ class="w100"
|
|
|
+ type="daterange"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ @change="
|
|
|
+ () => {
|
|
|
+ formes.trainTime = [];
|
|
|
+ }
|
|
|
+ "
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="报名开始日期"
|
|
|
+ end-placeholder="报名结束日期"
|
|
|
+ :picker-options="payDate()"
|
|
|
+ >
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ prop="trainTime"
|
|
|
+ label="训练时间"
|
|
|
+ :rules="[{ required: true, message: '请选择训练时间' }]"
|
|
|
+ >
|
|
|
+ <el-date-picker
|
|
|
+ v-model.trim="formes.trainTime"
|
|
|
+ type="daterange"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ class="w100"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="训练开始日期"
|
|
|
+ end-placeholder="训练结束日期"
|
|
|
+ :picker-options="payendTimer"
|
|
|
+ >
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="wrap">
|
|
|
+ <el-form-item label="打卡标准"
|
|
|
+ prop="signStandard"
|
|
|
+ :rules="[
|
|
|
+ { required: true, message: '请选择训练时间' },
|
|
|
+ { pattern: /^[1-9][0-9]*$/, message: '请输入大于0的正整数',}
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ <el-input placeholder="请输入打卡标准" v-model="formes.signStandard">
|
|
|
+ <template slot="append">分钟/天</template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="达标天数"
|
|
|
+ prop="standardDays"
|
|
|
+ :rules="[
|
|
|
+ { required: true, message: '请选择训练时间' },
|
|
|
+ { pattern: /^[1-9][0-9]*$/, message: '请输入大于0的正整数',}
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ <el-input placeholder="请输入最低打卡天数" v-model="formes.standardDays">
|
|
|
+ <template slot="append">天</template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- <el-form-item
|
|
|
label="封面图"
|
|
|
prop="picUrl"
|
|
|
:rules="[
|
|
@@ -64,15 +103,13 @@
|
|
|
},
|
|
|
]"
|
|
|
>
|
|
|
- <!-- v-show="!form.coverImg" -->
|
|
|
<upload
|
|
|
class="uploadImg"
|
|
|
v-model="formes.picUrl"
|
|
|
ref="uploadImg"
|
|
|
></upload>
|
|
|
- <!-- <img v-show="form.coverImg" :src="form.coverImg" alt="" width="105px" height="134px" @click="uploadImg"/> -->
|
|
|
<p style="color: red">格式为jpg、png、gif图片</p>
|
|
|
- </el-form-item>
|
|
|
+ </el-form-item> -->
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button @click="onClose">取 消</el-button>
|
|
@@ -85,6 +122,8 @@
|
|
|
import Upload from "@/components/Upload/index";
|
|
|
import { addTrainingCamp, resetTrainingCamp } from "../api";
|
|
|
import { getTimes } from "@/utils";
|
|
|
+import { queryEmployeeOrganByUser } from "@/api/systemManage";
|
|
|
+import { queryOrganMusicInfos } from "@/api/zeroManager";
|
|
|
let that;
|
|
|
export default {
|
|
|
name: "eidtCamp",
|
|
@@ -94,12 +133,19 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
title: "",
|
|
|
+ organs: [], // 当前员工分部列表
|
|
|
+ musicGroups: [], // 所选分部的乐团列表
|
|
|
+ timer: '',
|
|
|
formes: {
|
|
|
id: "",
|
|
|
name: "",
|
|
|
picUrl: "",
|
|
|
applyTime: [],
|
|
|
trainTime: [],
|
|
|
+ organIds: [], // 分部,多选
|
|
|
+ musicGroupIds: [], // 适用乐团
|
|
|
+ signStandard: null, // 打开标准
|
|
|
+ standardDays: null, // 达标天数
|
|
|
},
|
|
|
lookVisible: false,
|
|
|
chioseIdList: null,
|
|
@@ -112,7 +158,32 @@ export default {
|
|
|
this.init();
|
|
|
},
|
|
|
methods: {
|
|
|
- init() {},
|
|
|
+ async init() {
|
|
|
+ const res = await queryEmployeeOrganByUser()
|
|
|
+ if (Array.isArray(res?.data)){
|
|
|
+ this.organs = res.data
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ /** 获取分部乐团列表 */
|
|
|
+ async getOrganMusicInfos(){
|
|
|
+ const organId = (this.formes?.organIds || []).join(',')
|
|
|
+ console.log("🚀 ~ organId:", organId)
|
|
|
+ if (!organId) return;
|
|
|
+ const res = await queryOrganMusicInfos({organId})
|
|
|
+ if (Array.isArray(res?.data)){
|
|
|
+ this.musicGroups = res.data
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ /** 分部选项改变 */
|
|
|
+ handleChangeOrgan(){
|
|
|
+ this.formes.musicGroupIds = []
|
|
|
+ clearTimeout(this.timer)
|
|
|
+ this.timer = setTimeout(() => {
|
|
|
+ this.getOrganMusicInfos()
|
|
|
+ }, 1000)
|
|
|
+ },
|
|
|
|
|
|
openDioag(row) {
|
|
|
if (row && row.id) {
|
|
@@ -120,9 +191,12 @@ export default {
|
|
|
this.title = "修改训练营";
|
|
|
this.formes = {
|
|
|
...row,
|
|
|
+ organIds: row.organIds?.split(','),
|
|
|
+ musicGroupIds: row.musicGroupIds?.split(','),
|
|
|
applyTime: [row.applyStartDate, row.applyEndDate],
|
|
|
trainTime: [row.trainStartDate, row.trainEndDate],
|
|
|
};
|
|
|
+ this.getOrganMusicInfos()
|
|
|
} else {
|
|
|
this.title = "新建训练营";
|
|
|
}
|
|
@@ -144,9 +218,11 @@ export default {
|
|
|
if (flag) {
|
|
|
try {
|
|
|
if (this.activeRow && this.activeRow.id) {
|
|
|
- let { applyTime, trainTime, ...rest } = this.formes;
|
|
|
+ let { applyTime, trainTime, organIds,musicGroupIds, ...rest } = this.formes;
|
|
|
let params = {
|
|
|
...rest,
|
|
|
+ organIds: organIds?.join(','),
|
|
|
+ musicGroupIds: musicGroupIds?.join(','),
|
|
|
...getTimes(applyTime, ["applyStartDate", "applyEndDate"]),
|
|
|
...getTimes(trainTime, ["trainStartDate", "trainEndDate"]),
|
|
|
};
|
|
@@ -155,9 +231,11 @@ export default {
|
|
|
this.onClose();
|
|
|
this.$emit("getList");
|
|
|
} else {
|
|
|
- let { applyTime, trainTime, ...rest } = this.formes;
|
|
|
+ let { applyTime, trainTime, organIds,musicGroupIds, ...rest } = this.formes;
|
|
|
let params = {
|
|
|
...rest,
|
|
|
+ organIds: organIds?.join(','),
|
|
|
+ musicGroupIds: musicGroupIds?.join(','),
|
|
|
...getTimes(applyTime, ["applyStartDate", "applyEndDate"]),
|
|
|
...getTimes(trainTime, ["trainStartDate", "trainEndDate"]),
|
|
|
};
|
|
@@ -205,7 +283,25 @@ export default {
|
|
|
};
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
|
+@import '@/styles/custom.scss';
|
|
|
.w100 {
|
|
|
width: 100%;
|
|
|
}
|
|
|
+
|
|
|
+.wrap{
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ ::v-deep .el-form-item:not(:last-child){
|
|
|
+ margin-right: 20px;
|
|
|
+
|
|
|
+ }
|
|
|
+ .el-form-item{
|
|
|
+ flex: 1;
|
|
|
+ }
|
|
|
+ ::v-deep{
|
|
|
+ .el-range-separator{
|
|
|
+ padding: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|