From 17efddc6a667670dca682bf36b51a43e99615e6d Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期三, 16 十月 2024 15:59:38 +0800 Subject: [PATCH] 代码初始化 --- admin/src/views/meeting/components/OperaRoomsWindow.vue | 229 ++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 152 insertions(+), 77 deletions(-) diff --git a/admin/src/views/meeting/components/OperaRoomsWindow.vue b/admin/src/views/meeting/components/OperaRoomsWindow.vue index f8d603a..46e53f5 100644 --- a/admin/src/views/meeting/components/OperaRoomsWindow.vue +++ b/admin/src/views/meeting/components/OperaRoomsWindow.vue @@ -1,68 +1,58 @@ <template> - <GlobalAlertWindow - v-loading="isUploading" - :title="title" - :visible.sync="visible" - :confirm-working="isWorking" - @confirm="confirm" - > + <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-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-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-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-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 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.companyId ? `${item.companyName}-${item.companyName}` : 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 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 label="绌洪棽灞曠ず鍐呭" prop="fileType"> + <el-radio v-model="form.fileType" @change="changeFile" :label="2">鏃�</el-radio> + <el-radio v-model="form.fileType" @change="changeFile" :label="0">鍥剧墖</el-radio> + <el-radio v-model="form.fileType" @change="changeFile" :label="1">瑙嗛</el-radio> + </el-form-item> + <el-form-item v-if="form.fileType == 0" label="灞曠ず鍥剧墖" prop="imgurl"> + <div class="upload_wrap"> + <el-upload class="avatar-uploader" accept=".png,.jpg,.jpeg" :action="uploadImgUrl" :data="uploadData" + :show-file-list="false" :on-success="handleImgSuccess"> + <div> + <i class="el-icon-plus avatar-uploader-icon"></i> + </div> + </el-upload> + <div v-for="item, i in form.multifileList" class="img_wrap"> + <img :src="item.fileurlFull" class="img"> + <i class="el-icon-error del" @click="imgDel(i)"></i> + </div> + </div> + </el-form-item> + <el-form-item v-if="form.fileType == 1" label="灞曠ず瑙嗛" prop="imgurl"> + <UploadAvatarVideo :file="{ 'videourlfull': form.videoFullUrl, 'videourl': form.videourl }" :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-input v-model="form.tips" type="textarea" placeholder="璇疯緭鍏ヤ娇鐢ㄩ』鐭�" v-trim /> </el-form-item> </el-form> </GlobalAlertWindow> @@ -71,14 +61,14 @@ <script> import BaseOpera from '@/components/base/BaseOpera' import GlobalAlertWindow from '@/components/common/GlobalAlertWindow' -import UploadAvatarImage from '@/components/common/UploadAvatarImage' +import UploadAvatarVideo from '@/components/common/UploadAvatarVideo' import { numRule } from '@/utils/form' -import { fetchList } from '@/views/meeting/api/projects' +import { fetchList } from '@/api/meeting/projects' export default { name: 'OperaRoomsWindow', extends: BaseOpera, - components: { GlobalAlertWindow, UploadAvatarImage }, - data () { + components: { GlobalAlertWindow, UploadAvatarVideo }, + data() { let timeRangeRule = (rule, value, callBack) => { if (!this.form.startTime) { callBack(new Error('璇烽�夋嫨寮�濮嬫椂闂�')) @@ -91,6 +81,7 @@ callBack() } return { + uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/upload', isUploading: false, uploadData: { folder: 'projects' @@ -100,21 +91,23 @@ form: { id: null, sysList: [], + multifileList: [], projectList: [], createDate: '', editor: '', - editDate: '', - isdeleted: '', + editDate: null, + isdeleted: 0, + fileType: 2, name: '', remark: '', startTime: '', endTime: '', - limitNum: '', + limitNum: 0, imgurl: '', imgFullUrl: '', tips: '', - status: '', - intervalTime: '' + status: 0, + intervalTime: 0 }, user: [], projectList: [], @@ -133,9 +126,9 @@ } }, inject: ['userList'], - created () { + created() { this.config({ - api: '@/views/meeting/api/rooms', + api: '/meeting/rooms', 'field.id': 'id' }) // realname: this.filterText @@ -154,12 +147,9 @@ * @title 绐楀彛鏍囬 * @target 缂栬緫鐨勫璞� */ - open (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) { @@ -174,26 +164,54 @@ for (const key in this.form) { this.form[key] = target[key] } + if(target.fileType == 1 && target.multifileList && target.multifileList.length > 0){ + this.$set(this.form, 'videoFullUrl', target.multifileList[0].fileurlFull) + this.$set(this.form, 'videourl', target.multifileList[0].fileurl) + } 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); }) }, + imgDel(i) { + this.form.multifileList.splice(i, 1) + }, + handleImgSuccess(res) { + const list = [...this.form.multifileList] + if (res.code == 200) { + let { data } = res + list.push({ + fileurl: data.imgaddr, + fileurlFull: data.url, + type: 0 + }) + this.$set(this.form, 'multifileList', list) + + } + }, selectRange(v) { // console.log(this.timeRange); - console.log(v); + console.log(v) this.form.startTime = v[0] this.form.endTime = v[1] - console.log(this.form.startTime, this.form.endTime); + console.log(this.form.startTime, this.form.endTime) }, - // 涓婁紶鍥剧墖 + changeFile() { + this.$set(this.form, 'multifileList', []) + }, uploadAvatarSuccess(file) { - this.form.imgurl = file.imgurl; - this.form.imgFullUrl = file.imgurlfull; + console.log('file', file) + this.form.multifileList.push({ + fileurl: file.imgurl, + fileurlFull: file.imgurlfull, + type: 1 + }) + this.$set(this.form, 'videourl', file.imgurl) + this.$set(this.form, 'videoFullUrl', file.imgurlfull) }, // 纭鏂板缓 - __confirmCreate () { + __confirmCreate() { this.$refs.form.validate((valid) => { // debugger if (!valid) { @@ -205,11 +223,11 @@ this.isWorking = true let sysList = [...this.form.sysList] sysList = sysList.map(item => { - return {userId: item} + return { userId: item } }) let projectList = [...this.form.projectList] projectList = projectList.map(item => { - return {projectId: item} + return { projectId: item } }) this.api.create({ ...this.form, @@ -222,7 +240,7 @@ this.$emit('success') }) .catch(e => { - this.$tip.apiFailed(e) + // this.$tip.apiFailed(e) }) .finally(() => { this.isWorking = false @@ -230,22 +248,22 @@ }) }, // 纭淇敼 - __confirmEdit () { + __confirmEdit() { this.$refs.form.validate((valid) => { if (!valid) { return } - console.log(this.form); + console.log(this.form) debugger // 璋冪敤鏂板缓鎺ュ彛 this.isWorking = true let sysList = [...this.form.sysList] sysList = sysList.map(item => { - return {userId: item} + return { userId: item } }) let projectList = [...this.form.projectList] projectList = projectList.map(item => { - return {projectId: item} + return { projectId: item } }) this.api.updateById({ ...this.form, @@ -258,7 +276,7 @@ this.$emit('success') }) .catch(e => { - this.$tip.apiFailed(e) + // this.$tip.apiFailed(e) }) .finally(() => { this.isWorking = false @@ -270,6 +288,63 @@ </script> <style lang="scss" scoped> -@import "@/assets/style/alertstyle.scss"; +$image-width: 90px; -</style> +.upload_wrap { + display: flex; + + .img_wrap { + margin-left: 10px; + border: 1px dashed #d9d9d9; + width: $image-width; + height: $image-width; + border-radius: 6px; + position: relative; + + .img { + width: $image-width; + height: $image-width; + } + + .del { + position: absolute; + top: -6px; + right: -6px; + cursor: pointer; + color: red; + } + } +} + +.avatar-uploader { + width: $image-width; + height: $image-width; +} + +::v-deep .el-upload { + border: 1px dashed #d9d9d9; + border-radius: 6px; + cursor: pointer; + position: relative; + overflow: hidden; +} + +.avatar-uploader .el-upload:hover { + border-color: #409EFF; +} + +.avatar-uploader-icon { + line-height: 90px; + font-size: 28px; + color: #8c939d; + width: $image-width; + height: $image-width; + text-align: center; +} + +.avatar { + width: 90px; + max-height: 90px; + display: block; +} +</style> \ No newline at end of file -- Gitblit v1.9.3