From c58ada7f49aac20b06ea2ebda2cb5c006decf122 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 10 五月 2024 17:01:55 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit

---
 admin/src/views/meeting/components/OperaRoomsWindow.vue |  275 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 275 insertions(+), 0 deletions(-)

diff --git a/admin/src/views/meeting/components/OperaRoomsWindow.vue b/admin/src/views/meeting/components/OperaRoomsWindow.vue
new file mode 100644
index 0000000..853154d
--- /dev/null
+++ b/admin/src/views/meeting/components/OperaRoomsWindow.vue
@@ -0,0 +1,275 @@
+<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>

--
Gitblit v1.9.3