From 65972957e56a31778cc1633b1032ac16627665f3 Mon Sep 17 00:00:00 2001 From: gaoshp <291585735@qq.com> Date: 星期六, 05 十月 2024 21:28:25 +0800 Subject: [PATCH] update --- src/views/console/base/Add.vue | 198 ++++++++++++++++++++++++++++++++++++------------- 1 files changed, 144 insertions(+), 54 deletions(-) diff --git a/src/views/console/base/Add.vue b/src/views/console/base/Add.vue index d8636e0..196d6a2 100644 --- a/src/views/console/base/Add.vue +++ b/src/views/console/base/Add.vue @@ -1,7 +1,7 @@ <!-- * @Date: 2024-05-04 16:37:48 * @LastEditors: gaoshp - * @LastEditTime: 2024-10-01 20:03:40 + * @LastEditTime: 2024-10-02 17:15:08 * @FilePath: /cps-web/src/views/console/base/Add.vue --> <template> @@ -13,17 +13,20 @@ <el-row> <el-col :span="8"> <el-form-item label="鐢熶骇鏃ュ巻缂栧彿" prop="code"> - <el-input v-model="form.code" placeholder="璇疯緭鍏ョ敓浜ф棩鍘嗙紪鍙�" clearable></el-input> + <el-input :disabled="disabled" v-model="form.code" placeholder="璇疯緭鍏ョ敓浜ф棩鍘嗙紪鍙�" + clearable></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="鐢熶骇鏃ュ巻鍚嶇О" prop="name"> - <el-input v-model="form.name" placeholder="璇疯緭鍏ョ敓浜ф棩鍘嗗悕绉�" clearable></el-input> + <el-input :disabled="disabled" v-model="form.name" placeholder="璇疯緭鍏ョ敓浜ф棩鍘嗗悕绉�" + clearable></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="搴旂敤骞翠唤" prop="year"> - <el-select v-model="form.year" placeholder="" size="" @change="changeYear"> + <el-select :disabled="disabled" v-model="form.year" placeholder="" size="" + @change="changeYear"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select> @@ -32,17 +35,17 @@ <el-col :span="8"> <el-form-item label="搴旂敤鏃ユ湡" prop="date"> <el-date-picker v-model="form.date" type="daterange" value-format="YYYY-MM-DD" - start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" /> + start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" @change="changeDate" /> </el-form-item> </el-col> <el-col :span="8" :offset="1"> - <el-button-group> + <!-- <el-button-group> <el-button :type="activeBtn == 0 ? 'primary' : ''" @click="activeBtn = 0">鎸夎寰嬮�変腑鏃ユ湡</el-button> <el-button :type="activeBtn == 1 ? 'primary' : ''" @click="activeBtn = 1"> 鎸夐棿闅旈�変腑鏃ユ湡 </el-button> - </el-button-group> + </el-button-group> --> </el-col> <el-col :offset="1"> <el-radio-group v-model="holiday"> @@ -116,6 +119,7 @@ <script> import moment from 'moment' import { Calendar, DatePicker } from 'v-calendar'; +import color from '@/utils/color' export default { components: { Calendar, @@ -127,10 +131,17 @@ default: () => { return [] } - } + }, + drawerInfo: { + type: Object, + default: () => { + return {} + } + }, }, data() { return { + disabled: false, modelId: '', isHighPriority: false, dateDTOList: [], @@ -203,16 +214,6 @@ checkboxGroup1() { this.setDay() }, - dateDTOList(val) { - this.months.forEach(month => { - if (val.length > 0) { - month.attributes[1].highlight = 'yellow' - } else { - month.attributes[1].highlight = true - } - - }) - }, 'form.year'(val) { this.months = [] let currentYear = moment(val, 'YYYY').format('YYYY') - 0 @@ -260,7 +261,6 @@ }) } - console.log(this.months, '?/') }) }, shiftList() { @@ -268,23 +268,52 @@ } }, created() { - this.init() }, methods: { init() { - let len = 15 - let currentYear = moment().format('YYYY') - 0 - this.form.year = currentYear + if (!this.drawerInfo.id) { + let len = 15 + let currentYear = moment().format('YYYY') - 0 + this.form.year = currentYear + for (let i = 0; i < len; i++) { + this.options.push({ + label: currentYear + i, + value: currentYear + i + }) + } + this.form.date = [moment().format('YYYY-MM-DD'), moment(`${currentYear}-12-31`).format('YYYY-MM-DD')] + } else { + console.log('>>>>>>>>>>', this.drawerInfo) + this.disabled = true + this.form.code = this.drawerInfo.code + this.form.name = this.drawerInfo.name + this.form.year = moment(this.drawerInfo.calendarDayVOList[0].calendarDate, 'YYYY-MM-DD').format('YYYY') - 0 + setTimeout(() => { + let currentYear = moment().format('YYYY') - 0 + this.form.date = [`${currentYear}-01-01`, `${currentYear}-12-31`] + if (currentYear == this.form.year) { + this.form.date[0] = moment().format('YYYY-MM-DD') + } + [...new Set(this.drawerInfo.calendarDayVOList.map(v => v.modelId))].forEach(item => { + let list = this.drawerInfo.calendarDayVOList.filter(v => v.modelId === item) + let ext = { + modelId: item, + isHighPriority: list[0].isHighPriority, + } + console.log(list) + this.setDayRange(list, ext) + }) + }, 1000) - for (let i = 0; i < len; i++) { - this.options.push({ - label: currentYear + i, - value: currentYear + i - }) } - this.form.date = [moment().format('YYYY-MM-DD'), moment(`${currentYear}-12-31`).format('YYYY-MM-DD')] - // console.log(this.form) + }, + changeDate() { + if (this.checkboxGroup1.length > 0) { + this.setDay() + } else { + + } }, change(val) { this.checkboxGroup1 = [] @@ -296,12 +325,12 @@ } }, setDay() { + console.log('setDay1') let currentYear = moment(this.form.year, 'YYYY').format('YYYY') - 0 this.months.forEach((item, i) => { let start = moment(`${currentYear}-${i + 1}-01`) let end = i == 11 ? moment(`${currentYear + 1}-${i + 1}-01`) : moment(`${currentYear}-${i + 2}-01`) let dates = [] - console.log(start.format('YYYY-MM-DD'), start.unix() >= moment(this.form.date[0]).unix() && start.unix() <= moment(this.form.date[1]).unix()) while (start.unix() < end.unix()) { if (this.checkboxGroup1.includes(start.day()) && this.holiday === 0) { this.pushDate(start) && dates.push(start.format('YYYY-MM-DD')) @@ -317,8 +346,35 @@ start.add(1, 'd') } this.months[i].attributes[1].dates = dates - console.log(this.months, 'jieguo') }) + console.log(this.months, 'rll') + }, + setDayRange(list, ext) { + let currentYear = moment(this.form.year, 'YYYY').format('YYYY') - 0 + this.months.forEach((item, i) => { + let start = moment(`${currentYear}-${i + 1}-01`) + let end = i == 11 ? moment(`${currentYear + 1}-${i + 1}-01`) : moment(`${currentYear}-${i + 2}-01`) + let dates = [] + list.forEach(v => { + if (moment(v.calendarDate).unix() >= start.unix() && moment(v.calendarDate).unix() < end.unix()) { + dates.push(v) + } + }) + if (dates.length > 0) { + this.months[i].attributes.push({ + dates: dates.map(v => v.calendarDate), + ...ext, + highlight: color.stringToColor(ext.modelId) + }) + this.months[i].attributes[1] = { + highlight: true, + dates: [] + } + } + + + }) + console.log(this.months, 'rll') }, pushDate(start) { if (start.unix() >= moment(this.form.date[0]).unix() && start.unix() <= moment(this.form.date[1]).unix()) { @@ -329,20 +385,17 @@ dayclick(day, item) { let index = item.attributes[1].dates.findIndex(v => v === day.id) - console.log(index) if (index >= 0) { item.attributes[1].dates.splice(index, 1) } else { item.attributes[1].dates.push(day.id) } - console.log(index, item.attributes[1].dates) }, plan() { if (!this.modelId) { return this.$message.warning('璇烽�夋嫨鐝鏂规'); } let dateDTOList = this.months.map(item => item.attributes[1].dates) - console.log(this.months, '>>>>>>>>>>', dateDTOList.flat(2)) let list = dateDTOList.flat(2).map(v => { return { modelId: this.modelId, @@ -351,8 +404,11 @@ ...this.setOffDay(v) } }) - console.log(list) - this.dateDTOList = list + let ext = { + modelId: this.modelId, + isHighPriority: this.isHighPriority ? 1 : 0, + } + this.setDayRange(list, ext) }, setOffDay(time) { let { id: offDayId } = this.offDays.find(v => moment(time).unix() >= moment(v.startOffDay).unix() && moment(time).unix() <= moment(v.endOffDay).unix()) || {} @@ -363,30 +419,64 @@ } }, planCancel() { - this.dateDTOList = [] + this.months.forEach((item, i) => { + item.attributes = item.attributes.slice(0, 2) + }) }, save() { + let list = [] + this.months.forEach(item => { + item.attributes.forEach((v, i) => { + if (i > 1) { + v.dates.forEach(child => { + list.push({ + modelId: v.modelId, + isHighPriority: v.isHighPriority, + calendarDate: child, + ...this.setOffDay(child) + }) + }) + + } + }) + }) this.$refs.dialogForm.validate(async (valid) => { if (valid) { - if (this.dateDTOList.length == 0) { + if (list.length == 0) { return this.$message.warning('鏈帓鐝�'); } - let data = { - codeRuleId: '', - code: this.form.code, - name: this.form.name, - year: this.form.year, - status: 1, - dateDTOList: this.dateDTOList - } - this.$HTTP.post('/api/blade-cps/calendar', data).then(res => { - if (res.code === 200) { - this.$emit('success') - } else { - this.$message.warning(res.msg); + if (!this.drawerInfo.id) { + let data = { + codeRuleId: '', + code: this.form.code, + name: this.form.name, + year: this.form.year, + status: 1, + dateDTOList: list } - }) - console.log(this.form, this.dateDTOList) + this.$HTTP.post('/api/blade-cps/calendar', data).then(res => { + if (res.code === 200) { + this.$emit('success') + } else { + this.$message.warning(res.msg); + } + }) + } else { + let data = { + id: this.drawerInfo.id, + dateDTOList: list + } + this.$HTTP.put('/api/blade-cps/calendar', data).then(res => { + if (res.code === 200) { + this.$emit('success') + } else { + this.$message.warning(res.msg); + } + }) + } + + } else { + this.$message.warning('璇锋鏌ュ繀濉」'); } }) } -- Gitblit v1.9.3