whx 3 ماه پیش
والد
کامیت
89b1c8bb67
48فایلهای تغییر یافته به همراه521 افزوده شده و 26 حذف شده
  1. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/index.html
  2. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/reset.css
  3. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/css/3195.5e96efa4.css
  4. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/4407.1e502bea.css
  5. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/css/app.b19bc643.css
  6. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/app.b7db26df.css
  7. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1080.bc9588a8.js
  8. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1909.24cbc2af.js
  9. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1985.dd43ce2c.js
  10. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2429.e7424d9e.js
  11. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2449.8536f6f1.js
  12. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2923.e348bf6c.js
  13. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/3195.8d3837a1.js
  14. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/3801.316fca8a.js
  15. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4264.12868caf.js
  16. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4264.5825b73f.js
  17. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4407.a7679f53.js
  18. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4729.aff434e2.js
  19. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4729.c87cc0c1.js
  20. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4951.9b8d8725.js
  21. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4951.b7675a1b.js
  22. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/516.10a066e7.js
  23. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/5353.63300c3e.js
  24. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/5353.edfa4d0b.js
  25. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6544.6833dd7f.js
  26. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6636.e3bed62e.js
  27. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8135.07ef004a.js
  28. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8278.eb2c55a2.js
  29. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8407.7e7aa604.js
  30. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8407.f7c04360.js
  31. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8806.06f8aa29.js
  32. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8806.5025a8e0.js
  33. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/90.20973775.js
  34. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9073.69e5873f.js
  35. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9607.67090f73.js
  36. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/app.41c21e82.js
  37. 2 2
      virgo.wzfrontend/workark/public/index.html
  38. 0 1
      virgo.wzfrontend/workark/public/reset.css
  39. 58 0
      virgo.wzfrontend/workark/src/api/organization.js
  40. 2 1
      virgo.wzfrontend/workark/src/assets/css/common.scss
  41. 15 1
      virgo.wzfrontend/workark/src/components/website/payOrder.vue
  42. 118 0
      virgo.wzfrontend/workark/src/components/work/organization/announcement/detail.vue
  43. 104 0
      virgo.wzfrontend/workark/src/components/work/organization/announcement/edit.vue
  44. 26 1
      virgo.wzfrontend/workark/src/config/field.js
  45. 7 0
      virgo.wzfrontend/workark/src/router/modules/work/organization.js
  46. 2 2
      virgo.wzfrontend/workark/src/views/work/index.vue
  47. 167 0
      virgo.wzfrontend/workark/src/views/work/organization/announcement.vue
  48. 1 1
      virgo.wzfrontend/workark/src/views/work/organization/seal.vue

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/index.html


+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/reset.css

@@ -5,7 +5,6 @@
 	box-sizing: border-box;
 	outline: none;
 	font-family: LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, Helvetica Neue, Tahoma, PingFang SC, Microsoft Yahei, Arial, Hiragino Sans GB, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
-	font-weight: 400;
 	-webkit-font-smoothing: antialiased;
 	user-select: none;
 }

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/css/3195.5e96efa4.css


virgo.wzfrontend/src/main/resources/static/workark/static/css/6544.1e502bea.css → virgo.wzfrontend/src/main/resources/static/workark/static/css/4407.1e502bea.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/css/app.b19bc643.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/css/app.b7db26df.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/1080.bc9588a8.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/1909.24cbc2af.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1985.dd43ce2c.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/2429.e7424d9e.js


virgo.wzfrontend/src/main/resources/static/workark/static/js/2449.c5f2ae49.js → virgo.wzfrontend/src/main/resources/static/workark/static/js/2449.8536f6f1.js


virgo.wzfrontend/src/main/resources/static/workark/static/js/2923.1f7f2599.js → virgo.wzfrontend/src/main/resources/static/workark/static/js/2923.e348bf6c.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/3195.8d3837a1.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/3801.316fca8a.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/4264.12868caf.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/4264.5825b73f.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/4407.a7679f53.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/4729.aff434e2.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/4729.c87cc0c1.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/4951.9b8d8725.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/4951.b7675a1b.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/516.10a066e7.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/5353.63300c3e.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/5353.edfa4d0b.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/6544.6833dd7f.js


virgo.wzfrontend/src/main/resources/static/workark/static/js/6636.9746e25e.js → virgo.wzfrontend/src/main/resources/static/workark/static/js/6636.e3bed62e.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/8135.07ef004a.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/8278.eb2c55a2.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/8407.7e7aa604.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/8407.f7c04360.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/8806.06f8aa29.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/8806.5025a8e0.js


virgo.wzfrontend/src/main/resources/static/workark/static/js/90.357ef0e5.js → virgo.wzfrontend/src/main/resources/static/workark/static/js/90.20973775.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/9073.69e5873f.js


virgo.wzfrontend/src/main/resources/static/workark/static/js/9607.97e58b6e.js → virgo.wzfrontend/src/main/resources/static/workark/static/js/9607.67090f73.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/app.41c21e82.js


+ 2 - 2
virgo.wzfrontend/workark/public/index.html

@@ -6,11 +6,11 @@
 		<meta name="viewport" content="width=device-width,initial-scale=1.0">
 		<link rel="icon" href="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/2f7b4bfaf9e64817bc2cb46f3a632b01">
 		<title>WORKARK</title>
-		<link rel="stylesheet" type="text/css" href="<%= BASE_URL %>reset.css" />
+		<link rel="stylesheet" type="text/css" href="<%= BASE_URL %>reset.css" />
 		<link rel="stylesheet" type="text/css" href="<%= BASE_URL %>/font/font.css" />
 		<link rel="stylesheet" href="//at.alicdn.com/t/c/font_4358860_x6rz68eryv.css">
 		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/5.4.5/css/swiper.min.css">
-		<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/5.4.5/js/swiper.min.js"></script>
+		<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/5.4.5/js/swiper.min.js"></script>
 		<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/5.4.3/echarts.min.js"></script>
 	</head>
 	<body>

+ 0 - 1
virgo.wzfrontend/workark/public/reset.css

@@ -5,7 +5,6 @@
 	box-sizing: border-box;
 	outline: none;
 	font-family: LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, Helvetica Neue, Tahoma, PingFang SC, Microsoft Yahei, Arial, Hiragino Sans GB, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
-	font-weight: 400;
 	-webkit-font-smoothing: antialiased;
 	user-select: none;
 }

+ 58 - 0
virgo.wzfrontend/workark/src/api/organization.js

@@ -286,4 +286,62 @@ export function isPassRequestUseSeal(documentIds) {
 		url: `/file/sealRequest/document/${documentIds}`,
 		method: 'get'
 	})
+}
+/* 
+ * 分页获取公告列表
+ * 
+ * 
+ */
+export function getAnnouncementListByQueryAndPage(currPage, pageSize, data) {
+	return request({
+		url: `/manager/announcement/${currPage}/${pageSize}`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 获取公告详情
+ * 
+ * 
+ */
+export function getAnnouncementDetail(id) {
+	return request({
+		url: `/manager/announcement/details/${id}`,
+		method: 'get'
+	})
+}
+/* 
+ * 新增公告
+ * 
+ * 
+ */
+export function insertAnnouncement(data) {
+	return request({
+		url: `/manager/announcement`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 编辑公告
+ * 
+ * 
+ */
+export function updateAnnouncement(data) {
+	return request({
+		url: `/manager/announcement/update`,
+		method: 'put',
+		data: data
+	})
+}
+/* 
+ * 删除公告
+ * 
+ * 
+ */
+export function deleteAnnouncementById(id) {
+	return request({
+		url: `/manager/announcement/delete/${id}`,
+		method: 'delete'
+	})
 }

+ 2 - 1
virgo.wzfrontend/workark/src/assets/css/common.scss

@@ -226,7 +226,8 @@
 	
 	.el-input-number,
 	.el-select,
-	.el-cascader{
+	.el-cascader,
+	.el-date-editor.el-input{
 		width: 100%;
 	}
 }

+ 15 - 1
virgo.wzfrontend/workark/src/components/website/payOrder.vue

@@ -3,6 +3,8 @@
 		<div class="pay-order-item"><span class="label">订单编号:</span><span>{{orderNo}}</span></div>
 		<div class="pay-order-item"><span class="label">支付方式:</span><span>微信支付</span></div>
 		<div v-if="state === 'NOTPAY'">
+			<el-statistic :value="codeUrlFailureTime" format="HH:mm:ss" time-indices title="订单将过期"
+				@finish="finish"></el-statistic>
 			<el-skeleton :loading="loading" animated>
 				<template slot="template">
 					<div class="pay-img">
@@ -38,7 +40,8 @@
 				payUrl: '',
 				timer: null,
 				state: 'NOTPAY',
-				loading: false
+				loading: false,
+				codeUrlFailureTime: ''
 			}
 		},
 		mounted() {
@@ -53,6 +56,7 @@
 				createPayQR(this.orderNo).then(res => {
 					if (res.state) {
 						this.payUrl = res.data.base64;
+						this.codeUrlFailureTime = new Date(res.data.codeUrlFailureTime).getTime();
 						this.findState();
 					}
 					this.loading = false;
@@ -73,6 +77,10 @@
 				if (!this.timer) return;
 				clearTimeout(this.timer);
 				this.timer = null;
+			},
+			finish() {
+				this.stopTimer();
+				this.$emit('callback', 'payState');
 			}
 		},
 	}
@@ -82,6 +90,12 @@
 	.pay-order-box {
 		padding: 20px;
 
+		.el-statistic {
+			.number {
+				color: $--color-danger;
+			}
+		}
+
 		.pay-order-item {
 			margin-bottom: 10px;
 

+ 118 - 0
virgo.wzfrontend/workark/src/components/work/organization/announcement/detail.vue

@@ -0,0 +1,118 @@
+<template>
+	<div class="hui-flex">
+		<div class="hui-flex-box">
+			<div class="hui-detail">
+				<div class="hui-detail-box">
+					<div class="hui-detail-title">基础信息</div>
+					<div class="hui-detail-content">
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">公告标题</div>
+							<div class="hui-detail-value">{{detail.title}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">公告分类</div>
+							<div class="hui-detail-value">
+								{{$field.findTypeName('announcementType',detail.category)}}
+							</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">优先级</div>
+							<div class="hui-detail-value">
+								{{$field.findTypeName('announcementPriority',detail.priority)}}
+							</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">生效时间</div>
+							<div class="hui-detail-value">{{detail.startTime}}</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">状态</div>
+							<div class="hui-detail-value">
+								<div class="hui-state" v-if="!detail.status">
+									<div class="hui-state-bage hui-state-info"></div>
+									<div class="hui-state-label">待发布</div>
+								</div>
+								<div class="hui-state" v-else-if="detail.status === 1">
+									<div class="hui-state-bage hui-state-success"></div>
+									<div class="hui-state-label">已发布</div>
+								</div>
+								<div class="hui-state" v-else-if="detail.status === 2">
+									<div class="hui-state-bage hui-state-waiting"></div>
+									<div class="hui-state-label">已过期</div>
+								</div>
+							</div>
+						</div>
+						<div class="hui-detail-item">
+							<div class="hui-detail-label">公告内容</div>
+							<div class="hui-detail-value"> {{detail.content}}</div>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<div class="hui-drawer-submit" v-if="activeList.length > 0">
+			<el-button size="small" :type="item.type" v-for="item in activeList" :key="item.id" @click="action(item)">
+				{{item.name}}
+			</el-button>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		getAnnouncementDetail,
+		updateAnnouncement
+	} from '@/api/organization'
+	export default {
+		props: ['detailId'],
+		data() {
+			return {
+				detail: {},
+				activeList: []
+			}
+		},
+		mounted() {
+			this.init();
+		},
+		methods: {
+			init() {
+				this.activeList = [];
+				getAnnouncementDetail(this.detailId).then(res => {
+					if (res.state) {
+						this.detail = res.data;
+						if (!this.detail.status) {
+							this.activeList = [{
+								id: 1,
+								name: '发布公告',
+								type: 'primary'
+							}]
+						} else if (this.detail.status === 1) {
+							this.activeList = [{
+								id: 2,
+								name: '设置过期',
+								type: 'warning'
+							}]
+						}
+					}
+				})
+			},
+			action(item) {
+				this.$confirm(`确定${item.name}?`, () => {
+					updateAnnouncement({
+						id: this.detail.id,
+						status: item.id
+					}).then(res => {
+						if (res.state) {
+							this.$message.success('操作成功');
+							this.init();
+							this.$emit('callback', 'init');
+						}
+					})
+				});
+			}
+		},
+	}
+</script>
+<style lang="scss">
+
+</style>

+ 104 - 0
virgo.wzfrontend/workark/src/components/work/organization/announcement/edit.vue

@@ -0,0 +1,104 @@
+<template>
+	<div class="hui-flex hui-dialog">
+		<div class="hui-flex-box hui-dialog-content">
+			<el-form ref="form" :model="form" label-position="top">
+				<el-form-item label="公告标题" prop="title" :rules="[{required: true, message: '请选择请输入公告标题'}]">
+					<el-input type="text" v-model="form.title" placeholder="请输入公告标题"></el-input>
+				</el-form-item>
+				<el-form-item label="公告分类" prop="category" :rules="[{required: true, message: '请选择公告分类'}]">
+					<el-select v-model="form.category" placeholder="请选择公告分类">
+						<el-option :label="item.name" :value="item.id"
+							v-for="(item,index) in $field.field.announcementType" :key="item.id">
+						</el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="优先级" prop="priority" :rules="[{required: true, message: '请选择优先级'}]">
+					<el-select v-model="form.priority" placeholder="请选择优先级">
+						<el-option :label="item.name" :value="item.id"
+							v-for="(item,index) in $field.field.announcementPriority" :key="item.id">
+						</el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="生效时间" prop="startTime" :rules="[{required: true, message: '请选择生效时间'}]">
+					<el-date-picker v-model="form.startTime" type="datetime" placeholder="生效时间"
+						value-format="yyyy-MM-dd HH:mm:ss">
+					</el-date-picker>
+				</el-form-item>
+				<el-form-item label="公告内容" class="hui-textarea">
+					<el-input type="textarea" v-model="form.content" placeholder="请输入公告内容" resize="none" rows="6">
+					</el-input>
+				</el-form-item>
+			</el-form>
+		</div>
+		<div class="hui-dialog-submit">
+			<el-button size="small" @click="$emit('callback')">取 消</el-button>
+			<el-button size="small" type="primary" @click="submit" :loading="loading">保 存</el-button>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		insertAnnouncement,
+		updateAnnouncement,
+		getAnnouncementDetail
+	} from '@/api/organization'
+	export default {
+		props: ['isUpdate', 'detailId'],
+		data() {
+			return {
+				form: {
+					title: '',
+					content: '',
+					organizationId: '',
+					projectId: '',
+					category: '',
+					status: 1,
+					priority: 0,
+					publishTime: '',
+					startTime: '',
+					endTime: '',
+					platform: 'all'
+				},
+				loading: false
+			}
+		},
+		mounted() {
+			if (this.isUpdate) {
+				getAnnouncementDetail(this.detailId).then(res => {
+					if (res.state) {
+						this.form = res.data;
+					}
+				})
+			} else {
+				this.form['organizationId'] = this.$store.getters.organization.id;
+				this.form['publiSherId'] = this.$store.getters.user.userId;
+				this.form['projectId'] = this.$store.getters.project.id;
+			}
+		},
+		methods: {
+			submit() {
+				this.$refs.form.validate(valid => {
+					if (valid) {
+						this.loading = true;
+						if (this.isUpdate) {
+							updateAnnouncement(this.form).then(this.successFunc)
+						} else {
+							insertAnnouncement(this.form).then(this.successFunc)
+						}
+					}
+				});
+			},
+			successFunc(res) {
+				this.loading = false;
+				if (res.state) {
+					this.$message.success('操作成功');
+					this.$emit('callback', 'init');
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+</style>

+ 26 - 1
virgo.wzfrontend/workark/src/config/field.js

@@ -24,6 +24,29 @@ const invoiceType = [{
 	id: 2,
 	name: '增值税电子普通发票'
 }];
+const announcementType = [{
+	id: 1,
+	name: '基本通知'
+}, {
+	id: 2,
+	name: '活动公告'
+}, {
+	id: 3,
+	name: '政策变更'
+}, {
+	id: 4,
+	name: '紧急公告'
+}];
+const announcementPriority = [{
+	id: 0,
+	name: '普通'
+}, {
+	id: 1,
+	name: '重要'
+}, {
+	id: 2,
+	name: '紧急'
+}]
 const findItem = (type, id) => {
 	return eval(type).find(node => node.id == id) || {
 		id: 0,
@@ -34,7 +57,9 @@ const findItem = (type, id) => {
 export default {
 	field: {
 		sealType,
-		invoiceType
+		invoiceType,
+		announcementType,
+		announcementPriority
 	},
 	findTypeName(type, id) {
 		return findItem(type, id).name;

+ 7 - 0
virgo.wzfrontend/workark/src/router/modules/work/organization.js

@@ -26,5 +26,12 @@ const organization = [{
 	meta: {
 		title: '印章管理'
 	}
+}, {
+	path: 'organization/announcement',
+	component: () => import('@/views/work/organization/announcement'),
+	name: '公告管理',
+	meta: {
+		title: '公告管理'
+	}
 }]
 export default organization;

+ 2 - 2
virgo.wzfrontend/workark/src/views/work/index.vue

@@ -30,7 +30,7 @@
 			</div>
 			<div class="work-box">
 				<div class="title">
-					<div class="label">公告</div>
+					<div class="label">公司公告</div>
 				</div>
 				<div class="content notice-content">
 					<div class="notice-item">
@@ -85,7 +85,7 @@
 			</div>
 			<div class="work-box message-work-box">
 				<div class="title">
-					<div class="label">通知</div>
+					<div class="label">消息通知</div>
 				</div>
 				<div class="content message-content">
 					<div class="message-item hui-ellipsis">【资产登记】vincent在2025-03-15 07:19:14提交了测试3号楼-2层的资产登记流程</div>

+ 167 - 0
virgo.wzfrontend/workark/src/views/work/organization/announcement.vue

@@ -0,0 +1,167 @@
+<template>
+	<div class="hui-flex hui-content border-box">
+		<div class="hui-content-title">
+			<div class="hui-title-item active">公告管理</div>
+		</div>
+		<div class="hui-flex-box hui-flex hui-table">
+			<div class="hui-content-insert">
+				<el-button type="primary" size="small" @click="insert">
+					新增公告
+				</el-button>
+			</div>
+			<div class="hui-flex-box">
+				<el-table :data="tableData" row-key="id" height="100%" v-loading="loading">
+					<el-table-column label="序号" width="50">
+						<template slot-scope="scope">
+							<div style="text-align: center;">{{scope.$index + 1}}</div>
+						</template>
+					</el-table-column>
+					<el-table-column label="公告标题" prop="title"></el-table-column>
+					<el-table-column label="公告分类">
+						<template slot-scope="scope">
+							<span>{{$field.findTypeName('announcementType',scope.row.category)}}</span>
+						</template>
+					</el-table-column>
+					<el-table-column label="优先级">
+						<template slot-scope="scope">
+							<span>{{$field.findTypeName('announcementPriority',scope.row.priority)}}</span>
+						</template>
+					</el-table-column>
+					<el-table-column label="生效时间" prop="startTime"></el-table-column>
+					<el-table-column label="状态" align="center" width="150">
+						<template slot-scope="scope">
+							<div class="hui-state" v-if="!scope.row.status">
+								<div class="hui-state-bage hui-state-info"></div>
+								<div class="hui-state-label">待发布</div>
+							</div>
+							<div class="hui-state" v-else-if="scope.row.status === 1">
+								<div class="hui-state-bage hui-state-success"></div>
+								<div class="hui-state-label">已发布</div>
+							</div>
+							<div class="hui-state" v-else-if="scope.row.status === 2">
+								<div class="hui-state-bage hui-state-waiting"></div>
+								<div class="hui-state-label">已过期</div>
+							</div>
+						</template>
+					</el-table-column>
+					<el-table-column label="操作" width="150">
+						<template slot-scope="scope">
+							<div class="hui-table-operation">
+								<span class="table-operation" @click="lookItem(scope.row)">
+									详情
+								</span>
+								<span class="table-operation" @click="updateItem(scope.row)">
+									编辑
+								</span>
+								<span class="table-operation" @click="deleteItem(scope.row)">
+									删除
+								</span>
+							</div>
+						</template>
+					</el-table-column>
+					<template slot="empty">
+						<el-empty description="暂无数据"></el-empty>
+					</template>
+				</el-table>
+			</div>
+			<div class="hui-content-pagination">
+				<el-pagination :pager-count="9" layout="prev, pager, next" :page-size="pageSize" :total="totalCount"
+					@current-change="currentChange" background>
+				</el-pagination>
+			</div>
+		</div>
+		<el-dialog :close-on-click-modal="false" :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<edit v-if="visible" :isUpdate="isUpdate" @callback="callback" :detailId="detailId">
+			</edit>
+		</el-dialog>
+		<el-drawer title="公告详情" :visible.sync="drawer" :size="400" :append-to-body="true">
+			<detail v-if="drawer" :detailId="detailId" @callback="callback"></detail>
+		</el-drawer>
+	</div>
+</template>
+
+<script>
+	const edit = () => import('@/components/work/organization/announcement/edit');
+	const detail = () => import('@/components/work/organization/announcement/detail');
+
+	import {
+		getAnnouncementListByQueryAndPage,
+		deleteAnnouncementById
+	} from '@/api/organization'
+	export default {
+		data() {
+			return {
+				titleName: '',
+				tableData: [],
+				currPage: 1,
+				pageSize: 10,
+				totalCount: 0,
+				isUpdate: false,
+				visible: false,
+				detailId: '',
+				filterOption: {},
+				loading: false,
+				drawer: false
+			}
+		},
+		mounted() {
+			this.init();
+		},
+		methods: {
+			init() {
+				let filterOption = {
+					organizationId: this.$store.getters.organization.id,
+					projectId: this.$store.getters.id
+				};
+				filterOption = Object.assign(filterOption, this.filterOption);
+				this.loading = true;
+				getAnnouncementListByQueryAndPage(this.currPage, this.pageSize, filterOption).then(res => {
+					if (res.state) {
+						this.tableData = res.data.dataList;
+						this.totalCount = res.data.totalCount;
+					}
+					this.loading = false;
+				})
+			},
+			currentChange(currPage) {
+				this.currPage = currPage;
+				this.init();
+			},
+			insert() {
+				this.visible = true;
+				this.isUpdate = false;
+			},
+			lookItem(val) {
+				this.detailId = val.id;
+				this.drawer = true;
+			},
+			updateItem(val) {
+				this.detailId = val.id;
+				this.isUpdate = true;
+				this.visible = true;
+			},
+			deleteItem(val) {
+				this.$confirm('确定要删除公告?', () => {
+					deleteAnnouncementById(val.id).then(res => {
+						if (res.state) {
+							this.$message.success('操作成功');
+							this.init();
+						}
+					})
+				});
+			},
+			callback(type) {
+				this.visible = false;
+				if (type === 'init') this.init();
+			}
+		},
+		components: {
+			edit,
+			detail
+		}
+	}
+</script>
+
+<style>
+</style>

+ 1 - 1
virgo.wzfrontend/workark/src/views/work/organization/seal.vue

@@ -16,7 +16,7 @@
 						</template>
 					</el-table-column>
 					<el-table-column label="印章名称" prop="name"></el-table-column>
-					<el-table-column label="印章类型" prop="name">
+					<el-table-column label="印章类型">
 						<template slot-scope="scope">
 							<span>{{$field.findTypeName('sealType',scope.row.type)}}</span>
 						</template>