From 0c357e90050d9d461c6ab0d85e1b9c2bac2f6f55 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期一, 19 一月 2026 17:50:36 +0800
Subject: [PATCH] Merge branch 'dev_new' of http://114.132.189.42:9002/r/product-inventory-APP-before into dev_new
---
src/pages/managementMeetings/meetSummary/index.vue | 352 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 352 insertions(+), 0 deletions(-)
diff --git a/src/pages/managementMeetings/meetSummary/index.vue b/src/pages/managementMeetings/meetSummary/index.vue
new file mode 100644
index 0000000..05f06d9
--- /dev/null
+++ b/src/pages/managementMeetings/meetSummary/index.vue
@@ -0,0 +1,352 @@
+// 瀹℃壒绠$悊涓婚〉闈�
+<template>
+ <view class="sales-account">
+ <!-- 浣跨敤閫氱敤椤甸潰澶撮儴缁勪欢 -->
+ <PageHeader title="浼氳鎬荤粨"
+ @back="goBack" />
+ <!-- 鎼滅储鍜岀瓫閫夊尯鍩� -->
+ <view class="search-section">
+ <view class="search-bar">
+ <view class="search-input">
+ <up-input class="search-text"
+ placeholder="璇疯緭鍏ヤ細璁富棰�"
+ v-model="searchForm.title"
+ clearable />
+ </view>
+ <view class="search-button"
+ @click="getList">
+ <up-icon name="search"
+ size="24"
+ color="#999"></up-icon>
+ </view>
+ </view>
+ </view>
+ <!-- 瀹℃壒鍒楄〃 -->
+ <view class="ledger-list"
+ v-if="ledgerList.length > 0">
+ <view v-for="(item, index) in ledgerList"
+ :key="index">
+ <view class="ledger-item">
+ <view class="item-header">
+ <view class="item-left">
+ <view class="document-icon">
+ <up-icon name="file-text"
+ size="16"
+ color="#ffffff"></up-icon>
+ </view>
+ <text class="item-id">{{ item.title }}</text>
+ </view>
+ <view class="item-tag">
+ <u-tag :type="getTagClass(item.status)">{{ formatReceiptType(item.status) }}</u-tag>
+ </view>
+ </view>
+ <up-divider></up-divider>
+ <view class="item-details">
+ <view class="detail-row">
+ <text class="detail-label">鐢宠浜�</text>
+ <text class="detail-value">{{ item.applicant }}</text>
+ </view>
+ <view class="detail-row">
+ <text class="detail-label">涓荤悊浜�</text>
+ <text class="detail-value">{{ item.host }}</text>
+ </view>
+ <view class="detail-row-approveReason">
+ <text class="detail-label">浼氳鏃堕棿</text>
+ <text class="detail-value highlightBlue">{{ formatDateTime(item.meetingTime) }}</text>
+ </view>
+ <view class="detail-row">
+ <text class="detail-label">浼氳鍦扮偣</text>
+ <text class="detail-value">{{ item.location }}</text>
+ </view>
+ <view class="detail-row">
+ <text class="detail-label">鍙備細浜烘暟</text>
+ <text class="detail-value">{{ item.participants.length }}</text>
+ </view>
+ <up-divider></up-divider>
+ <view class="actions">
+ <u-button type="primary"
+ size="small"
+ class="action-btn view"
+ @click="viewDetail(item)">
+ 璇︽儏
+ </u-button>
+ <u-button type="success"
+ size="small"
+ class="action-btn approve"
+ :disabled="item.status != 0"
+ @click="approve(item)">
+ 娣诲姞绾
+ </u-button>
+ </view>
+ <!-- <view class="detail-info"
+ style="align-items: flex-end;">
+ <view class="detail-row">
+
+ </view>
+ </view> -->
+ </view>
+ </view>
+ </view>
+ </view>
+ <view v-else
+ class="no-data">
+ <text>鏆傛棤鏁版嵁</text>
+ </view>
+ </view>
+</template>
+
+<script setup>
+ import { ref, toRefs, reactive } from "vue";
+ import PageHeader from "@/components/PageHeader.vue";
+ import {
+ getMeetingPublish,
+ getRoomEnum,
+ } from "@/api/managementMeetings/meetExamine";
+ import { getStaffOnJob } from "@/api/personnelManagement/onboarding";
+ import { onShow } from "@dcloudio/uni-app";
+ import useUserStore from "@/store/modules/user";
+ import dayjs from "dayjs";
+
+ const userStore = useUserStore();
+ // 鏁版嵁
+ const ledgerList = ref([]);
+ const data = reactive({
+ searchForm: {
+ title: "",
+ },
+ });
+ const { searchForm } = toRefs(data);
+
+ // 杩斿洖涓婁竴椤�
+ const goBack = () => {
+ uni.navigateBack();
+ };
+ // 鎴块棿鏋氫妇
+ const roomEnum = ref([]);
+ // 鎴块棿鏋氫妇鏌ヨ
+ const getRoomEnumList = () => {
+ return getRoomEnum()
+ .then(res => {
+ console.log(res.data, "res.data");
+ roomEnum.value = res.data;
+ })
+ .catch(() => {
+ closeToast();
+ });
+ };
+ // 鍛樺伐鍒楄〃
+ const staffList = ref([]);
+ // 鍛樺伐鍒楄〃鏌ヨ
+ const getStaffOnJobList = () => {
+ return getStaffOnJob()
+ .then(res => {
+ console.log(res.data, "res.data");
+ staffList.value = res.data;
+ })
+ .catch(() => {
+ closeToast();
+ });
+ };
+ // 鏌ヨ鍒楄〃
+ const getList = () => {
+ showLoadingToast("鍔犺浇涓�...");
+ const page = {
+ current: -1,
+ size: -1,
+ };
+ getMeetingPublish({
+ ...page,
+ ...searchForm.value,
+ })
+ .then(res => {
+ console.log(res.data.records, "res.data.records");
+ ledgerList.value = res.data.records.map(it => {
+ console.log(it, "it1");
+ let room = roomEnum.value.find(room => it.roomId === room.id);
+ it.location = `${room.name}(${room.location})`;
+ let staffs = JSON.parse(it.participants);
+ it.staffCount = staffs.size;
+ it.meetingTime = `${it.meetingDate} ${dayjs(it.startTime).format(
+ "HH:mm:ss"
+ )} ~ ${dayjs(it.endTime).format("HH:mm:ss")}`;
+ it.participants = staffList.value
+ .filter(staff => staffs.some(id => id == staff.id))
+ .map(staff => {
+ return {
+ id: staff.id,
+ name: `${staff.staffName}(${staff.postJob})`,
+ };
+ });
+ console.log(it, "it2");
+
+ return it;
+ });
+
+ closeToast();
+ })
+ .catch(() => {
+ closeToast();
+ });
+ };
+ // 鏄剧ず鍔犺浇鎻愮ず
+ const showLoadingToast = message => {
+ uni.showLoading({
+ title: message,
+ mask: true,
+ });
+ };
+ const formatDateTime = dateTime => {
+ if (!dateTime) return "";
+ return dateTime.replace(" ", "\n");
+ };
+
+ // 鍏抽棴鎻愮ず
+ const closeToast = () => {
+ uni.hideLoading();
+ };
+
+ // 鏍煎紡鍖栧洖娆炬柟寮�
+ const formatReceiptType = params => {
+ if (params == 0) {
+ return "寰呭鎵�";
+ } else if (params == 1) {
+ return "宸查�氳繃";
+ } else if (params == 2) {
+ return "鏈�氳繃";
+ } else if (params == 3) {
+ return "宸插彇娑�";
+ } else {
+ return "鏈煡";
+ }
+ };
+ // 鑾峰彇鏍囩鏍峰紡绫�
+ const getTagClass = type => {
+ if (type == 0) {
+ return "info";
+ } else if (type == 1) {
+ return "success";
+ } else if (type == 2) {
+ return "warning";
+ } else if (type == 3) {
+ return "danger";
+ } else {
+ return "info";
+ }
+ };
+
+ // 鐐瑰嚮瀹℃牳
+ const approve = item => {
+ // uni.setStorageSync("approveId", item.approveId);
+ uni.navigateTo({
+ url:
+ "/pages/managementMeetings/meetSummary/approve?item=" +
+ JSON.stringify(item) +
+ "&edit=true",
+ });
+ };
+ // 鏌ョ湅璇︽儏
+ const viewDetail = item => {
+ uni.navigateTo({
+ url:
+ "/pages/managementMeetings/meetSummary/approve?item=" +
+ JSON.stringify(item) +
+ "&edit=false",
+ });
+ };
+
+ onShow(async () => {
+ // 椤甸潰鍔犺浇瀹屾垚鍚庣殑鍒濆鍖栭�昏緫
+ try {
+ // 绛夊緟涓や釜寮傛鏂规硶鎵ц瀹屾垚
+ await Promise.all([getRoomEnumList(), getStaffOnJobList()]);
+ // 涓や釜鏂规硶鎵ц瀹屾垚鍚庡啀鎵ц getList()
+ getList();
+ } catch (error) {
+ console.error("鍒濆鍖栨暟鎹け璐�:", error);
+ // 鍗充娇鍑洪敊涔熸墽琛� getList()锛岀‘淇濋〉闈㈣兘姝e父鍔犺浇
+ getList();
+ }
+ });
+</script>
+
+<style scoped lang="scss">
+ @import "../../../styles/sales-common.scss";
+
+ .u-divider {
+ margin: 0 !important;
+ }
+
+ // 鏂囨。鍥炬爣鏍峰紡 - 瑕嗙洊鍏叡鏍峰紡涓殑鑳屾櫙鑹�
+ .document-icon {
+ background: #ed8d05;
+ }
+
+ // 娴姩鎸夐挳鏍峰紡 - 瑕嗙洊鍏叡鏍峰紡涓殑鑳屾櫙鑹�
+ .fab-button {
+ background: #ed8d05;
+ }
+
+ // 鐗规湁鏍峰紡
+ .detail-row-user {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ }
+
+ .detail-row-approveReason {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 8px;
+ }
+
+ .detail-value.highlightBlue {
+ color: #2979ff;
+ font-weight: 500;
+ }
+
+ .detail-value.highlightYellow {
+ color: #ed8d05;
+ font-weight: 500;
+ }
+
+ .approver-value {
+ display: flex;
+ justify-content: flex-end;
+ }
+
+ .approver-chip {
+ display: inline-flex;
+ align-items: center;
+ gap: 6px;
+ background: #f0f6ff;
+ color: #2b7cff;
+ border: 1px solid #e0efff;
+ border-radius: 999px;
+ padding: 4px 10px;
+ max-width: 100%;
+ }
+
+ .approver-name {
+ font-size: 12px;
+ color: #2b7cff;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+
+ .actions {
+ display: flex;
+ gap: 10px;
+ align-items: center;
+ justify-content: flex-end;
+ margin-top: 18rpx;
+ }
+
+ .action-btn {
+ border-radius: 16px;
+ height: 28px;
+ line-height: 28px;
+ padding: 0 12px;
+ }
+</style>
\ No newline at end of file
--
Gitblit v1.9.3