|
@@ -3,36 +3,36 @@
|
|
|
<article>
|
|
|
<el-form ref="calendarform" :model="form" :rules="rules" label-position="left" label-width="90px">
|
|
|
<el-row>
|
|
|
- <el-col :span="18">
|
|
|
+ <el-col :span="24">
|
|
|
<el-form-item label="日程名称" prop="name">
|
|
|
- <el-input v-model="form.name" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-form-item prop="syncTeam">
|
|
|
- <el-checkbox v-model="form.syncTeam" :true-label="1" :false-label="0">同步到团队</el-checkbox>
|
|
|
+ <el-input v-model="form.name" placeholder="请输入日程标题" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="是否关联业务线" prop="isJoin" label-width="150px">
|
|
|
- <el-radio-group v-model="form.isJoin" style="margin-bottom: -8px">
|
|
|
- <el-radio :label="0">否</el-radio>
|
|
|
- <el-radio :label="1">是</el-radio>
|
|
|
- </el-radio-group>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="日程类型" prop="type">
|
|
|
+ <el-select v-model="form.type" placeholder="请选择" style="width: 100%">
|
|
|
+ <el-option
|
|
|
+ v-for="item in selfScheduleType"
|
|
|
+ :key="'selfScheduleType'+item.code"
|
|
|
+ :label="item.msg"
|
|
|
+ :value="item.code"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item v-if="form.isJoin" label="业务线" prop="bizId">
|
|
|
- <el-select v-model="form.bizId" style="width: 100%">
|
|
|
- <el-option v-for="item in businesslines" :key="item.code" :label="item.name" :value="item.code" />
|
|
|
- </el-select>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="日程模式" prop="syncTeam">
|
|
|
+ <el-radio v-model="form.syncTeam" :label="1">公开</el-radio>
|
|
|
+ <el-radio v-model="form.syncTeam" :label="0">私密(仅参与人员可见)</el-radio>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <el-form-item label="参与人" prop="people">
|
|
|
- {{ form.people }}
|
|
|
+ <el-form-item label="参与人员" prop="peopleList">
|
|
|
+ <search-people :value.sync="form.peopleList" :multiple="true" style="width: 100%" :size="'medium'" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="时间" prop="dayList">
|
|
|
<div v-show="form.dayList.length > 0 ">{{ schedule }}(用时<span class="blue">{{ detailDayList.length }}</span>天)</div>
|
|
@@ -50,17 +50,17 @@
|
|
|
</template>
|
|
|
<script>
|
|
|
const _ = require('lodash')
|
|
|
-import moment from 'moment'
|
|
|
-import { settingGetBizList } from '@/api/defectManage'
|
|
|
-import { createSelfSchedule, updateSelfSchedule } from '@/api/workSchedule.js'
|
|
|
+import { createSelfSchedule, updateSelfSchedule, showWorkbenchEnum } from '@/api/workSchedule.js'
|
|
|
import { getSeprateDayInfo } from '@/api/projectViewDetails'
|
|
|
import normalDialog from '@/components/dialog/normalDialog'
|
|
|
import selDatePicker from '@/components/picker/SelDatePicker'
|
|
|
+import searchPeople from '@/components/select/searchPeople'
|
|
|
|
|
|
export default {
|
|
|
components: {
|
|
|
normalDialog,
|
|
|
- selDatePicker
|
|
|
+ selDatePicker,
|
|
|
+ searchPeople
|
|
|
},
|
|
|
props: {
|
|
|
title: {
|
|
@@ -79,25 +79,23 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
refresh: true,
|
|
|
- businesslines: [],
|
|
|
isVisible: this.visible,
|
|
|
form: {
|
|
|
- name: '',
|
|
|
+ name: null,
|
|
|
dayList: [],
|
|
|
- isJoin: 0, // 是否关联业务线
|
|
|
- syncTeam: 1, // 是否同步 0 不同步 1同步
|
|
|
- bizId: null,
|
|
|
+ syncTeam: 1, // 0 私密 1 公开
|
|
|
desc: '',
|
|
|
- people: localStorage.getItem('realname')
|
|
|
+ peopleList: [],
|
|
|
+ type: null
|
|
|
},
|
|
|
+ selfScheduleType: [], // 类型列表
|
|
|
detailDayList: [], // 详细的日期
|
|
|
schedule: '',
|
|
|
rules: {
|
|
|
name: [{ required: true, message: '请输入日程名称', trigger: 'blur' }],
|
|
|
- isJoin: [
|
|
|
- { required: true, message: '请选择是否关联业务线', trigger: 'change' }
|
|
|
- ],
|
|
|
people: [{ required: true, message: '请输入负责人', trigger: 'blur' }],
|
|
|
+ syncTeam: [{ required: true, message: '请选择日程模式', trigger: 'blur' }],
|
|
|
+ peopleList: [{ required: true, message: '请选择参与人', trigger: 'blur' }],
|
|
|
dayList: [
|
|
|
{
|
|
|
type: 'array',
|
|
@@ -105,26 +103,28 @@ export default {
|
|
|
message: '请选择日程时间',
|
|
|
trigger: 'change'
|
|
|
}
|
|
|
- ],
|
|
|
- bizId: [{ required: true, message: '请选择业务线', trigger: 'change' }]
|
|
|
+ ]
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
watch: {
|
|
|
- visible(newVal, olfVal) {
|
|
|
- this.isVisible = newVal
|
|
|
- if (this.data && this.data.id) {
|
|
|
- this.isEditData()
|
|
|
- } else {
|
|
|
- this.isExistDetail()
|
|
|
- }
|
|
|
+ visible: {
|
|
|
+ handler(newV) {
|
|
|
+ this.isVisible = newV
|
|
|
+ this.data && this.data.id ? this.isEditData() : this.isExistDetail()
|
|
|
+ },
|
|
|
+ immediate: true,
|
|
|
+ deep: true
|
|
|
},
|
|
|
- data(newVal, olfVal) {
|
|
|
- this.data = newVal
|
|
|
+ data: {
|
|
|
+ handler(newV) {
|
|
|
+ this.data = newV
|
|
|
+ },
|
|
|
+ deep: true
|
|
|
}
|
|
|
},
|
|
|
- mounted() {
|
|
|
- this.settingGetBizList()
|
|
|
+ created() {
|
|
|
+ this.showWorkbenchEnum()
|
|
|
},
|
|
|
methods: {
|
|
|
confirmForm() {
|
|
@@ -144,24 +144,29 @@ export default {
|
|
|
},
|
|
|
isEditData() {
|
|
|
// 编辑状态下处理数据
|
|
|
- this.form = _.cloneDeep(this.data)
|
|
|
- this.detailDayList = _.cloneDeep(this.form.detailDayList)
|
|
|
- this.schedule = this.form.schedule
|
|
|
- this.schedule = `${this.form.dayList[0]}-${this.form.dayList[1]}`
|
|
|
- delete this.form.detailDayList
|
|
|
- delete this.form.schedule
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.form = _.cloneDeep(this.data)
|
|
|
+ this.detailDayList = _.cloneDeep(this.form.detailDayList)
|
|
|
+ this.schedule = this.form.schedule
|
|
|
+ this.schedule = `${this.form.dayList[0]}-${this.form.dayList[1]}`
|
|
|
+ delete this.form.detailDayList
|
|
|
+ delete this.form.schedule
|
|
|
+ })
|
|
|
},
|
|
|
isExistDetail() {
|
|
|
// 当新建的时候存在详细日期时候的数据处理
|
|
|
if (this.data) {
|
|
|
- this.form.dayList = Array.from(
|
|
|
- new Set([this.data.startStr, this.data.endStr])
|
|
|
- )
|
|
|
- this.getDetailDayByDayList(this.data.startStr, this.data.endStr)
|
|
|
+ const obj = _.cloneDeep(this.data)
|
|
|
+ const len = obj.dayList.length
|
|
|
+ this.form = {
|
|
|
+ ...this.form,
|
|
|
+ dayList: [obj.dayList[0], obj.dayList[len - 1]]
|
|
|
+ }
|
|
|
+ this.detailDayList = obj.dayList || []
|
|
|
this.schedule =
|
|
|
- this.data.startStr === this.data.endStr
|
|
|
- ? `${this.data.startStr}`
|
|
|
- : `${this.data.startStr}-${this.data.endStr}`
|
|
|
+ obj.dayList[0] === obj.dayList[len - 1]
|
|
|
+ ? `${obj.dayList[0]}`
|
|
|
+ : `${obj.dayList[0]}-${obj.dayList[len - 1]}`
|
|
|
} else {
|
|
|
this.form.dayList = []
|
|
|
}
|
|
@@ -171,6 +176,10 @@ export default {
|
|
|
this.detailDayList = e
|
|
|
this.getSeprateDayInfo(e)
|
|
|
},
|
|
|
+ async showWorkbenchEnum() {
|
|
|
+ const res = await showWorkbenchEnum()
|
|
|
+ if (res.code === 200) this.selfScheduleType = res.data.selfScheduleType
|
|
|
+ },
|
|
|
async getSeprateDayInfo(dataArr) {
|
|
|
// 获取选中时间中的工作日时间
|
|
|
const res = await getSeprateDayInfo(dataArr)
|
|
@@ -186,10 +195,6 @@ export default {
|
|
|
},
|
|
|
// 新建日程
|
|
|
async createSelfSchedule(params) {
|
|
|
- console.log(params)
|
|
|
- if (params.isJoin === 0) {
|
|
|
- params.bizId = null
|
|
|
- }
|
|
|
const res = await createSelfSchedule(params)
|
|
|
if (res.code === 200) {
|
|
|
this.$emit('confirm')
|
|
@@ -198,28 +203,11 @@ export default {
|
|
|
},
|
|
|
// 编辑日程
|
|
|
async updateSelfSchedule(params) {
|
|
|
- console.log(params)
|
|
|
const res = await updateSelfSchedule(params)
|
|
|
if (res.code === 200) {
|
|
|
this.$emit('confirm')
|
|
|
this.cancel()
|
|
|
}
|
|
|
- },
|
|
|
- async settingGetBizList() {
|
|
|
- const res = await settingGetBizList({})
|
|
|
- res.code === 200
|
|
|
- ? (this.businesslines = res.data)
|
|
|
- : (this.businesslines = [])
|
|
|
- },
|
|
|
- getDetailDayByDayList(start, end) {
|
|
|
- let nextDate = moment(_.cloneDeep(start))
|
|
|
- end = moment(end).add(1, 'day')
|
|
|
- const NewArr = []
|
|
|
- while (nextDate.isBefore(end)) {
|
|
|
- NewArr.push(nextDate.format('YYYY.MM.DD'))
|
|
|
- nextDate = nextDate.add(1, 'day')
|
|
|
- }
|
|
|
- this.detailDayList = NewArr
|
|
|
}
|
|
|
}
|
|
|
}
|