| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalAlertWindow |
| | | v-loading="isUploading" |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="ï¼"> |
| | | <el-form-item label="ä¼è®®å®¤åç§°" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请è¾å
¥ä¼è®®å®¤åç§°" :maxlength="10" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="弿¾æ¶é´" prop="timeRange"> |
| | | <el-time-picker |
| | | is-range |
| | | value-format="HH:mm" |
| | | format="HH:mm" |
| | | v-model="timeRange" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | placeholder="éæ©æ¶é´èå´" |
| | | @change="selectRange" |
| | | ></el-time-picker> |
| | | </el-form-item> |
| | | <el-form-item label="ç²åº¦åé" prop="intervalTime"> |
| | | <el-input v-model="form.intervalTime" type="number" placeholder="请è¾å
¥æ¶é´ç²åº¦ï¼åéï¼" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="容纳人æ°" prop="limitNum"> |
| | | <el-input v-model="form.limitNum" type="number" placeholder="请è¾å
¥å®¹çº³äººæ°" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="管çå" prop="sysList"> |
| | | <el-select |
| | | v-model="form.sysList" |
| | | filterable |
| | | multiple |
| | | clearable |
| | | placeholder="è¯·éæ©é¨é¨" |
| | | > |
| | | <!-- :label="`${item.department.name}-${item.realname}`" --> |
| | | <el-option |
| | | v-for="item in userList()" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | |
| | | :label="item.department?`${item.department.name}-${item.realname}`:item.realname" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æä¾æå¡é¡¹ç®" prop="projectList"> |
| | | <el-checkbox-group v-model="form.projectList"> |
| | | <el-checkbox v-for="project in projectList" :label="project.id" :key="project.id">{{project.name}}</el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼è®®å®¤å¾ç" prop="imgurl"> |
| | | <UploadAvatarImage |
| | | :file="{ 'imgurlfull': form.imgFullUrl, 'imgurl': form.imgurl }" |
| | | :uploadData="uploadData" |
| | | @uploadSuccess="uploadAvatarSuccess" |
| | | @uploadEnd="isUploading = false" |
| | | @uploadBegin="isUploading = true" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="使ç¨é¡»ç¥" prop="tips"> |
| | | <el-input v-model="form.tips" type="textarea" placeholder="请è¾å
¥ä½¿ç¨é¡»ç¥" v-trim/> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalAlertWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalAlertWindow from '@/components/common/GlobalAlertWindow' |
| | | import UploadAvatarImage from '@/components/common/UploadAvatarImage' |
| | | import { numRule } from '@/utils/form' |
| | | import { fetchList } from '@/api/meeting/projects' |
| | | export default { |
| | | name: 'OperaRoomsWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalAlertWindow, UploadAvatarImage }, |
| | | data () { |
| | | let timeRangeRule = (rule, value, callBack) => { |
| | | if (!this.form.startTime) { |
| | | callBack(new Error('è¯·éæ©å¼å§æ¶é´')) |
| | | return |
| | | } |
| | | if (!this.form.endTime) { |
| | | callBack(new Error('è¯·éæ©ç»ææ¶é´')) |
| | | return |
| | | } |
| | | callBack() |
| | | } |
| | | return { |
| | | isUploading: false, |
| | | uploadData: { |
| | | folder: 'projects' |
| | | }, |
| | | timeRange: ['', ''], |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | sysList: [], |
| | | projectList: [], |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | isdeleted: '', |
| | | name: '', |
| | | remark: '', |
| | | startTime: '', |
| | | endTime: '', |
| | | limitNum: '', |
| | | imgurl: '', |
| | | imgFullUrl: '', |
| | | tips: '', |
| | | status: '', |
| | | intervalTime: '' |
| | | }, |
| | | user: [], |
| | | projectList: [], |
| | | // éªè¯è§å |
| | | rules: { |
| | | name: [ |
| | | { required: true, message: '请è¾å
¥ä¼è®®å®¤åç§°', tigger: 'blur' } |
| | | ], |
| | | intervalTime: [ |
| | | { required: true, validator: numRule, message: '请è¾å
¥æ¶é´ç²åº¦', tigger: 'blur' } |
| | | ], |
| | | timeRange: [ |
| | | { required: true, validator: timeRangeRule, tigger: 'change' } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | inject: ['userList'], |
| | | created () { |
| | | this.config({ |
| | | api: '/meeting/rooms', |
| | | 'field.id': 'id' |
| | | }) |
| | | // realname: this.filterText |
| | | fetchList({ |
| | | page: 1, |
| | | capacity: 9999, |
| | | model: {}, |
| | | }) |
| | | .then(res => { |
| | | this.projectList = res.records |
| | | }) |
| | | }, |
| | | methods: { |
| | | /** |
| | | * æå¼çªå£ |
| | | * @title çªå£æ é¢ |
| | | * @target ç¼è¾ç对象 |
| | | */ |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.form.imgFullUrl = '' |
| | | // this.timeRange = ['14:34:55', '14:34:55'] |
| | | // debugger |
| | | this.timeRange = ['', ''] |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | return |
| | | } |
| | | // ç¼è¾ |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | this.timeRange = [target.startTime, target.endTime] |
| | | this.form.projectList = this.form.projectList ? target.projectList.map(item => item.projectId) : [] |
| | | this.form.sysList = this.form.sysList ? this.form.sysList.map(item => item.userId) : [] |
| | | // console.log(this.form.imgFullUrl); |
| | | }) |
| | | }, |
| | | selectRange(v) { |
| | | // console.log(this.timeRange); |
| | | console.log(v); |
| | | this.form.startTime = v[0] |
| | | this.form.endTime = v[1] |
| | | console.log(this.form.startTime, this.form.endTime); |
| | | }, |
| | | // ä¸ä¼ å¾ç |
| | | uploadAvatarSuccess(file) { |
| | | this.form.imgurl = file.imgurl; |
| | | this.form.imgFullUrl = file.imgurlfull; |
| | | }, |
| | | // 确认æ°å»º |
| | | __confirmCreate () { |
| | | this.$refs.form.validate((valid) => { |
| | | // debugger |
| | | if (!valid) { |
| | | return |
| | | } |
| | | // console.log(this.form); |
| | | // debugger |
| | | // è°ç¨æ°å»ºæ¥å£ |
| | | this.isWorking = true |
| | | let sysList = [...this.form.sysList] |
| | | sysList = sysList.map(item => { |
| | | return {userId: item} |
| | | }) |
| | | let projectList = [...this.form.projectList] |
| | | projectList = projectList.map(item => { |
| | | return {projectId: item} |
| | | }) |
| | | this.api.create({ |
| | | ...this.form, |
| | | sysList, |
| | | projectList |
| | | }) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('æ°å»ºæå') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }) |
| | | }, |
| | | // ç¡®è®¤ä¿®æ¹ |
| | | __confirmEdit () { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | console.log(this.form); |
| | | debugger |
| | | // è°ç¨æ°å»ºæ¥å£ |
| | | this.isWorking = true |
| | | let sysList = [...this.form.sysList] |
| | | sysList = sysList.map(item => { |
| | | return {userId: item} |
| | | }) |
| | | let projectList = [...this.form.projectList] |
| | | projectList = projectList.map(item => { |
| | | return {projectId: item} |
| | | }) |
| | | this.api.updateById({ |
| | | ...this.form, |
| | | sysList, |
| | | projectList |
| | | }) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('ä¿®æ¹æå') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/style/alertstyle.scss"; |
| | | |
| | | </style> |