From 69a1b3bf45738f048361ee4ccb6bdc64fce35720 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 12 三月 2025 11:31:46 +0800
Subject: [PATCH] 更新

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

diff --git a/admin/src/views/meeting/components/OperaBookingsDetailWindow.vue b/admin/src/views/meeting/components/OperaBookingsDetailWindow.vue
new file mode 100644
index 0000000..1b0553b
--- /dev/null
+++ b/admin/src/views/meeting/components/OperaBookingsDetailWindow.vue
@@ -0,0 +1,212 @@
+<template>
+  <GlobalAlertWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+    width="600px"
+  >
+    <div class="title-style">
+      <div class="header-title">{{ form.name }}</div>
+      <div class="item-value">{{ `${form.roomName} ${form.meetingTime}` }}</div>
+    </div>
+    <div class="content-style">
+      <div class="item">
+        <div class="item-title">鍙備細浜哄憳</div>
+        <div>
+          {{ form.sysList.map((item) => `${item.realName}`).join("锛�") }}
+        </div>
+      </div>
+      <div class="item">
+        <div class="item-title">浼氳鍐呭</div>
+        <div class="item-value">{{ form.content || "鏃�" }}</div>
+      </div>
+      <div v-if="form.projectList && form.projectList.length" class="item">
+        <div class="">鏈嶅姟椤�</div>
+        <div class="item-value">
+          {{ form.projectList.map((item) => item.projectName).join(" | ") }}
+        </div>
+      </div>
+      <div class="item" v-if="form.fileList && form.fileList.length">
+        <div class="item-title">闄勪欢</div>
+        <div>
+          <FileLink
+            :links="form.fileList"
+            linkName="fileurlFull"
+            :isUpload="false"
+          />
+        </div>
+      </div>
+      <div class="item" v-if="!!form.remark">
+        <div class="item-title">澶囨敞</div>
+        <div class="item-value">{{ form.remark }}</div>
+      </div>
+    </div>
+    <div class="bottom-style">
+      <div class="item-title">棰勭害浜�</div>
+      <div class="item-value">{{ form.managerInfo }}</div>
+    </div>
+    <div slot="footer">
+      <el-button type="primary" v-if="form.meetingStatus == 1" @click="openCancel('0')">鎾ら攢</el-button>
+      <el-button v-if="form.meetingStatus == 2" type="primary" @click="openCancel('1')">缁撴潫</el-button>
+      <el-button @click="visible = false">鍙栨秷</el-button>
+    </div>
+    <!-- 鍙栨秷/缁撴潫 -->
+    <el-dialog
+      :title="cancelParam.falg == '1' ? '缁撴潫浼氳' : '鎾ら攢浼氳'"
+      :visible.sync="isShowCancel"
+      append-to-body
+      width="500px"
+    >
+      <el-form style="padding: 30px">
+        <el-form-item label="鎾ゅ洖璇存槑">
+          <el-input
+            type="textarea"
+            :rows="4"
+            placeholder="璇疯緭鍏ヨ鏄庛��"
+            v-model="cancelParam.businessRemark"
+          >
+          </el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="isShowCancel = false">鍙栨秷</el-button>
+        <el-button type="primary" @click="onSubCancel()">纭畾</el-button>
+      </span>
+    </el-dialog>
+  </GlobalAlertWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+import FileLink from '@/views/meeting/components/common/FileLink'
+import { cancelById, overBookById } from '@/api/meeting/bookings'
+export default {
+  name: 'OperaBookingsDetailWindow',
+  extends: BaseOpera,
+  components: { GlobalAlertWindow, FileLink },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        name: '',
+        roomName: '',
+        meetingTime: '',
+        date: '',
+        editDate: '',
+        projectList: [],
+        remark: '',
+        roomId: '',
+        meetingStatus: '',
+        startTime: '',
+        endTime: '',
+        times: [],
+        content: '',
+        sysList: [],
+        fileList: [],
+        managerInfo: ''
+      },
+      // room: [],
+      sysList: [],
+      projectList: [],
+      timelist: [],
+
+      isShowCancel: false,
+      cancelParam: {
+        flag: '0'
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/meeting/bookings',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    openCancel (flag) {
+      this.isShowCancel = true
+      this.cancelParam.flag = flag
+    },
+    onSubCancel () {
+      const { id } = this.form
+      const fn = this.cancelParam.flag === '0' ? cancelById : overBookById
+      fn({ id, businessRemark: this.cancelParam.businessRemark }).then(res => {
+        this.$tip.success('鎻愪氦鎴愬姛')
+        this.visible = false
+        this.isShowCancel = false
+        this.$emit('success')
+      })
+    }
+    /**
+     * 鎵撳紑绐楀彛
+     * @title 绐楀彛鏍囬
+     * @target 缂栬緫鐨勫璞�
+     */
+    //  open (title, target) {
+    //   this.title = title
+    //   this.visible = true
+    //   this.timelist = []
+    //   // 鏂板缓
+    //   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.form.projectList = target.projectList ? target.projectList.map(item => item.projectId) : []
+    //     // this.form.sysList = this.form.sysList ? this.form.sysList.map(item => item.userId) : []
+    //     // this.form.date = target.startTime.split(' ')[0]
+
+    //   })
+    // },
+
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-dialog__body {
+  padding: 0;
+}
+.title-style {
+  padding: 20px;
+  border-bottom: 10px #f7f7f7 solid;
+}
+.content-style {
+  padding: 20px;
+  border-bottom: 10px #f7f7f7 solid;
+}
+.item {
+  padding: 5px 0;
+}
+.header-title {
+  font-size: 16px;
+  font-weight: 600;
+  padding-bottom: 5px;
+}
+.item-title {
+  font-size: 16px;
+  color: #999;
+  padding-bottom: 5px;
+}
+.item-value {
+  font-size: 14px;
+  color: #111;
+}
+.bottom-style {
+  padding: 20px;
+}
+</style>

--
Gitblit v1.9.3