whx пре 11 месеци
родитељ
комит
d3b8e0a05c
33 измењених фајлова са 756 додато и 42 уклоњено
  1. 140 0
      virgo.wzfrontend/console/src/components/work/operation/meeting/content.vue
  2. 86 0
      virgo.wzfrontend/console/src/components/work/operation/meeting/detail.vue
  3. 139 0
      virgo.wzfrontend/console/src/components/work/operation/meeting/edit.vue
  4. 144 0
      virgo.wzfrontend/console/src/httpApi/operation.js
  5. 6 0
      virgo.wzfrontend/console/src/views/system/log.vue
  6. 82 7
      virgo.wzfrontend/console/src/views/work/operation/meeting/organization.vue
  7. 83 7
      virgo.wzfrontend/console/src/views/work/operation/meeting/project.vue
  8. 61 17
      virgo.wzfrontend/console/src/views/work/operation/meeting/set.vue
  9. 1 1
      virgo.wzfrontend/src/main/resources/static/index.html
  10. 1 0
      virgo.wzfrontend/src/main/resources/static/static/css/4180.f275a232.css
  11. 0 0
      virgo.wzfrontend/src/main/resources/static/static/css/6496.c91856b9.css
  12. 1 0
      virgo.wzfrontend/src/main/resources/static/static/css/9334.f275a232.css
  13. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/1569-legacy.25b70a0a.js
  14. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/1569.123ff589.js
  15. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/159-legacy.4635690a.js
  16. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/159.2ab37294.js
  17. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/2758-legacy.026dc0b8.js
  18. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/2758.8c3c5351.js
  19. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/4180.8fd82760.js
  20. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/6061-legacy.05cda2b5.js
  21. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/6061.b9ca4072.js
  22. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/6061.d13ecb47.js
  23. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/6496-legacy.1684f1c3.js
  24. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/6496.05a640e1.js
  25. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/6980-legacy.792dce14.js
  26. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/6980.6a430222.js
  27. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/7995-legacy.d56ddcf7.js
  28. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/7995.5a6cf35e.js
  29. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/9334-legacy.ffc475a9.js
  30. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/app-legacy.30f7145a.js
  31. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/app-legacy.93add9e8.js
  32. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/app.5d668f35.js
  33. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/app.be4ab912.js

+ 140 - 0
virgo.wzfrontend/console/src/components/work/operation/meeting/content.vue

@@ -0,0 +1,140 @@
+<template>
+	<div class="custom-data">
+		<table border="1" cellspacing="0" cellpadding="0">
+			<tr class="th-title">
+				<th style="width: 50px;">序号</th>
+				<th>会议内容</th>
+			</tr>
+			<tr v-for="(item,index) in listData" :key="index">
+				<td>
+					{{index+1}}
+				</td>
+				<td>
+					<div class="td-input">
+						<el-input v-model="item.value"></el-input>
+						<div class="td-icon" @click="deleteRow(index)">
+							<i class="iconfont huifont-guanbi"></i>
+						</div>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td colspan="2">
+					<div class="insert-icon color-primary" @click="insertRow()">
+						<i class="iconfont huifont-xinzeng"></i>
+						新增
+					</div>
+				</td>
+			</tr>
+		</table>
+	</div>
+</template>
+
+<script>
+	export default {
+		props: {
+			list: {
+				type: Array,
+				default: () => {
+					return []
+				}
+			},
+		},
+		data() {
+			return {
+				listData: []
+			}
+		},
+		created() {
+			this.listData = this.list;
+		},
+		methods: {
+			insertRow() {
+				this.listData.push({
+					value: ''
+				});
+			},
+			deleteRow(index) {
+				this.$confirm('确定要删除该项内容?', () => {
+					this.listData.splice(index, 1);
+				});
+			}
+		},
+		watch: {
+			list() {
+				this.listData = this.list;
+			}
+		},
+	}
+</script>
+
+<style lang="scss">
+	.custom-data {
+		table {
+			width: 100%;
+			border: 1px solid $--color-border;
+			border-collapse: collapse;
+			table-layout: fixed;
+		}
+
+		table th {
+			padding: 5px 0;
+			border: 1px solid $--color-border;
+			font-weight: 500;
+		}
+
+
+		table td {
+			border: 1px solid $--color-border;
+			padding: 6px 20px;
+		}
+
+		.insert-icon {
+			text-align: center;
+			cursor: pointer;
+			border-radius: 2px;
+			border: 1px dashed $--color-border;
+			line-height: 26px;
+			font-size: 13px;
+
+			.huifont-xinzeng {
+				font-size: 13px;
+			}
+		}
+
+		.td-input {
+			display: flex;
+			align-items: center;
+
+			.el-input {
+				flex: 1;
+				width: 0;
+				overflow: hidden;
+			}
+
+			.td-icon {
+				width: 20px;
+				height: 20px;
+				background: #171F2D;
+				border-radius: 10px;
+				border: 1px solid #8596B0;
+				opacity: 0.6;
+				text-align: center;
+				line-height: 16px;
+				margin-left: 12px;
+				color: #8596B0;
+				cursor: pointer;
+			}
+
+			.td-icon:hover {
+				color: $--color-red;
+				border-color: $--color-red;
+			}
+
+			.iconfont {
+				font-size: 10px;
+				margin-left: 1px;
+			}
+		}
+	}
+</style>

+ 86 - 0
virgo.wzfrontend/console/src/components/work/operation/meeting/detail.vue

@@ -0,0 +1,86 @@
+<template>
+	<div class="hui-detail">
+		<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.name}}</div>
+			</div>
+			<div class="hui-detail-item">
+				<div class="hui-detail-label">会议日期</div>
+				<div class="hui-detail-value">{{detail.date}}</div>
+			</div>
+			<div class="hui-detail-item">
+				<div class="hui-detail-label">会议时长</div>
+				<div class="hui-detail-value">{{detail.duration}}</div>
+			</div>
+			<div class="hui-detail-item">
+				<div class="hui-detail-label">会议类型</div>
+				<div class="hui-detail-value">{{detail.typeName}}</div>
+			</div>
+			<div class="hui-detail-item">
+				<div class="hui-detail-label">会议场所</div>
+				<div class="hui-detail-value">{{detail.placeName}}</div>
+			</div>
+		</div>
+		<div v-if="detail.joinUserList.length > 0">
+			<div class="hui-detail-title">参与人员</div>
+			<div class="hui-detail-content hui-detail-image">
+				<cc ref="cc" type="look" :ccList="detail.joinUserList" label="会议人员"></cc>
+			</div>
+		</div>
+		<div v-if="detail.content && detail.content != '[]'">
+			<div class="hui-detail-title">会议内容</div>
+			<div class="hui-detail-content">
+				<div class="hui-detail-item" v-for="(item,index) in JSON.parse(detail.content)">
+					<div class="hui-detail-value">{{index+1}}、{{item.value}}</div>
+				</div>
+			</div>
+		</div>
+		<div class="hui-detail-title">会议附件</div>
+		<div class="hui-detail-content hui-detail-image">
+			<upload ref="upload" :list="detail.attachment ? JSON.parse(detail.attachment) : []" type="preview">
+			</upload>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		getMeetingDetailById
+	} from '@/httpApi/operation'
+	import cc from '@/components/common/cc'
+	import upload from '@/components/common/upload'
+	export default {
+		props: ['detailId'],
+		data() {
+			return {
+				detail: {
+					name: '',
+					duration: '',
+					placeId: '',
+					typeId: '',
+				}
+			}
+		},
+		created() {
+			if (this.detailId) this.init();
+		},
+		methods: {
+			init() {
+				getMeetingDetailById(this.detailId).then(res => {
+					if (res.state) {
+						this.detail = res.data;
+					}
+				})
+			},
+		},
+		components: {
+			cc,
+			upload
+		}
+	}
+</script>
+<style lang="scss">
+
+</style>

+ 139 - 0
virgo.wzfrontend/console/src/components/work/operation/meeting/edit.vue

@@ -0,0 +1,139 @@
+<template>
+	<div class="hui-flex hui-dialog">
+		<div class="hui-flex-box hui-dialog-content">
+			<el-form ref="form" label-position="top" :model="form">
+				<el-form-item label="会议名称" prop="name" :rules="[{required: true, message: '请输入会议名称'}]">
+					<el-input type="text" v-model="form.name" placeholder="请输入会议名称"></el-input>
+				</el-form-item>
+
+				<el-form-item label="会议日期" prop="date" :rules="[{required: true, message: '请选择会议日期'}]">
+					<el-date-picker v-model="form.date" value-format="yyyy-MM-dd" type="date" placeholder="请选择会议日期">
+					</el-date-picker>
+				</el-form-item>
+				<el-form-item label="会议时长" prop="duration" :rules="[{required: true, message: '请输入会议时长'}]">
+					<el-input type="text" v-model="form.duration" placeholder="请输入会议时长"></el-input>
+				</el-form-item>
+				<el-form-item label="会议类型" prop="typeId" :rules="[{required: true, message: '请选择企业'}]">
+					<el-select v-model="form.typeId" placeholder="请选择企业">
+						<el-option :label="item.name" :value="item.id" v-for="(item,index) in meetingType" :key="index">
+						</el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="会议场所" prop="placeId" :rules="[{required: true, message: '请选择会议场所'}]">
+					<el-select v-model="form.placeId" placeholder="请选择会议场所">
+						<el-option :label="item.name" :value="item.id" v-for="(item,index) in meetingPlace"
+							:key="index">
+						</el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="参与人员" class="hui-textarea">
+					<cc ref="cc" type="insert" :ccList="ccList" label="会议人员"></cc>
+				</el-form-item>
+				<el-form-item label="会议内容" class="hui-textarea">
+					<meeting-content ref="content" :list="contentList"></meeting-content>
+				</el-form-item>
+				<el-form-item label="上传附件" class="hui-textarea">
+					<upload ref="upload" :list="responsibility" type="insert" text="上传附件" accept="*"></upload>
+				</el-form-item>
+			</el-form>
+		</div>
+		<div class="hui-dialog-submit">
+			<el-button size="medium" @click="$emit('callback')">取 消</el-button>
+			<el-button size="medium" type="primary" @click="submit">保 存</el-button>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		getMeetingPlaceListByQuery,
+		getMeetingTypeListByQuery,
+		insertMeeting,
+		updateMeeting,
+		getMeetingDetailById
+	} from '@/httpApi/operation'
+	import upload from '@/components/common/upload'
+	import cc from '@/components/common/cc'
+	import meetingContent from '@/components/work/operation/meeting/content'
+	export default {
+		props: ['isUpdate', 'detailId', 'type'],
+		data() {
+			return {
+				form: {
+					name: '',
+					duration: '',
+					placeId: '',
+					typeId: '',
+				},
+				responsibility: [],
+				meetingPlace: [],
+				meetingType: [],
+				ccList: [],
+				contentList: []
+			}
+		},
+		created() {
+			this.initParams();
+			if (!this.isUpdate) {
+				this.form['organizationId'] = this.$store.getters.organization.id;
+				this.form['projectId'] = this.$store.getters.project.id;
+				this.form['type'] = this.type;
+			} else {
+				getMeetingDetailById(this.detailId).then(res => {
+					if (res.state) {
+						this.form = res.data;
+						if (this.form.attachment) this.responsibility = JSON.parse(this.form.attachment);
+						if (this.form.content) this.contentList = JSON.parse(this.form.content);
+						this.ccList = this.form.joinUserList;
+					}
+				})
+			}
+		},
+		methods: {
+			initParams() {
+				let data = {
+					organizationId: this.$store.getters.organization.id,
+					projectId: this.$store.getters.project.id,
+				};
+				const successFunc = (res, type) => {
+					if (res.state) {
+						this[type] = res.data;
+					}
+				}
+				getMeetingPlaceListByQuery(data).then(res => successFunc(res, 'meetingPlace'));
+				getMeetingTypeListByQuery(data).then(res => successFunc(res, 'meetingType'));
+			},
+			submit() {
+				this.$refs.form.validate((valid) => {
+					if (valid) {
+						let postData = JSON.parse(JSON.stringify(this.form));
+						postData['attachment'] = JSON.stringify(this.$refs.upload.fileList);
+						postData['content'] = JSON.stringify(this.$refs.content.listData);
+						if (this.$refs.cc.list.length > 0) postData['joinUserIds'] = this.$refs.cc.list.map(node =>
+							node.id).join(',');
+						if (this.isUpdate) {
+							updateMeeting(postData).then(this.successFunc);
+						} else {
+							insertMeeting(postData).then(this.successFunc);
+						}
+					} else {
+						return false;
+					}
+				});
+			},
+			successFunc(res) {
+				if (res.state) {
+					this.$message.success('操作成功');
+					this.$emit('callback', 'init');
+				}
+			}
+		},
+		components: {
+			upload,
+			cc,
+			meetingContent
+		},
+	}
+</script>
+
+<style lang="scss"></style>

+ 144 - 0
virgo.wzfrontend/console/src/httpApi/operation.js

@@ -0,0 +1,144 @@
+import request from '@/axios'
+/* 
+ * 获取会议场所
+ * 
+ */
+export function getMeetingPlaceListByQuery(data) {
+	return request({
+		url: `/api/meetingMinutes/place/query`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 新增会议场所
+ * 
+ */
+export function insertMeetingPlace(data) {
+	return request({
+		url: `/api/meetingMinutes/place`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 更新会议场所
+ * 
+ */
+export function updateMeetingPlace(data) {
+	return request({
+		url: `/api/meetingMinutes/place`,
+		method: 'put',
+		data: data
+	})
+}
+/* 
+ * 删除会议场所
+ * 
+ * 
+ */
+export function deleteMeetingPlaceById(id) {
+	return request({
+		url: `/api/meetingMinutes/place/${id}`,
+		method: 'delete'
+	})
+}
+/* 
+ * 获取会议类别
+ * 
+ */
+export function getMeetingTypeListByQuery(data) {
+	return request({
+		url: `/api/meetingMinutes/type/query`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 新增会议类别
+ * 
+ */
+export function insertMeetingType(data) {
+	return request({
+		url: `/api/meetingMinutes/type`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 更新会议类别
+ * 
+ */
+export function updateMeetingType(data) {
+	return request({
+		url: `/api/meetingMinutes/type`,
+		method: 'put',
+		data: data
+	})
+}
+/* 
+ * 删除会议类别
+ * 
+ * 
+ */
+export function deleteMeetingTypeById(id) {
+	return request({
+		url: `/api/meetingMinutes/type/${id}`,
+		method: 'delete'
+	})
+}
+/* 
+ * 获取会议列表
+ * 
+ */
+export function getMeetingListByQuery(data) {
+	return request({
+		url: `/api/meetingMinutes/${data.currPage}/${data.pageSize}`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 新增会议
+ * 
+ */
+export function insertMeeting(data) {
+	return request({
+		url: `/api/meetingMinutes`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 更新会议
+ * 
+ */
+export function updateMeeting(data) {
+	return request({
+		url: `/api/meetingMinutes`,
+		method: 'put',
+		data: data
+	})
+}
+/* 
+ * 获取会议详情
+ * 
+ * 
+ */
+export function getMeetingDetailById(id) {
+	return request({
+		url: `/api/meetingMinutes/${id}`,
+		method: 'get'
+	})
+}
+/* 
+ * 删除会议
+ * 
+ * 
+ */
+export function deleteMeetingById(id) {
+	return request({
+		url: `/api/meetingMinutes/${id}`,
+		method: 'delete'
+	})
+}

+ 6 - 0
virgo.wzfrontend/console/src/views/system/log.vue

@@ -120,6 +120,12 @@
 					<div class="log-item">2、新增项目会议、公司会议UI页面。</div>
 					<div class="log-item">2、新增项目会议、公司会议UI页面。</div>
 				</div>
 				</div>
 			</el-timeline-item>
 			</el-timeline-item>
+			<el-timeline-item timestamp="2024-06-28" placement="top">
+				<div class="log-box">
+					<div class="log-item">1、完成会议场所、会议类型的功能。</div>
+					<div class="log-item">2、完成项目会议、公司会议的功能。</div>
+				</div>
+			</el-timeline-item>
 		</el-timeline>
 		</el-timeline>
 	</div>
 	</div>
 </template>
 </template>

+ 82 - 7
virgo.wzfrontend/console/src/views/work/operation/meeting/organization.vue

@@ -15,17 +15,21 @@
 								<div style="text-align: center;">{{scope.$index + 1}}</div>
 								<div style="text-align: center;">{{scope.$index + 1}}</div>
 							</template>
 							</template>
 						</el-table-column>
 						</el-table-column>
+						<el-table-column label="会议日期" prop="date"></el-table-column>
 						<el-table-column label="会议名称" prop="name"></el-table-column>
 						<el-table-column label="会议名称" prop="name"></el-table-column>
+						<el-table-column label="会议时长" prop="duration"></el-table-column>
+						<el-table-column label="会议类型" prop="typeName"></el-table-column>
+						<el-table-column label="会议场所" prop="placeName"></el-table-column>
 						<el-table-column label="操作" width="150">
 						<el-table-column label="操作" width="150">
 							<template slot-scope="scope">
 							<template slot-scope="scope">
 								<div class="hui-table-operation">
 								<div class="hui-table-operation">
-									<span class="table-operation">
+									<span class="table-operation" @click="detailItem(scope.row)">
 										详情
 										详情
 									</span>
 									</span>
-									<span class="table-operation">
+									<span class="table-operation" @click="updateItem(scope.row)">
 										编辑
 										编辑
 									</span>
 									</span>
-									<span class="table-operation">
+									<span class="table-operation" @click="deleteItem(scope.row)">
 										删除
 										删除
 									</span>
 									</span>
 								</div>
 								</div>
@@ -43,10 +47,22 @@
 				</div>
 				</div>
 			</div>
 			</div>
 		</div>
 		</div>
+		<el-dialog :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="900px" :append-to-body="true">
+			<edit v-if="visible" @callback="callback" :isUpdate="isUpdate" :detailId="detailId" :type="type"></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>
 	</div>
 </template>
 </template>
 
 
 <script>
 <script>
+	import {
+		getMeetingListByQuery,
+		deleteMeetingById
+	} from '@/httpApi/operation'
+	import edit from '@/components/work/operation/meeting/edit'
+	import detail from '@/components/work/operation/meeting/detail'
 	export default {
 	export default {
 		data() {
 		data() {
 			return {
 			return {
@@ -54,19 +70,78 @@
 				currPage: 1,
 				currPage: 1,
 				pageSize: 10,
 				pageSize: 10,
 				totalCount: 0,
 				totalCount: 0,
+				filterOption: {},
+				type: 2,
+				isUpdate: false,
+				visible: false,
+				detailId: '',
+				drawer: false
 			}
 			}
 		},
 		},
 		created() {
 		created() {
 			this.init();
 			this.init();
 		},
 		},
 		methods: {
 		methods: {
+			init() {
+				let postData = {
+					currPage: this.currPage,
+					pageSize: this.pageSize,
+					organizationId: this.$store.getters.organization.id,
+					type: this.type
+				}
+				postData = Object.assign(postData, this.filterOption);
+				getMeetingListByQuery(postData).then(res => {
+					if (res.state) {
+						this.tableData = res.data.dataList;
+						this.totalCount = res.data.totalCount;
+					}
+				})
+			},
+			filterInit(option) {
+				this.filterOption = option;
+				this.currPage = 1;
+				this.init();
+			},
 			insert() {
 			insert() {
-				this.$message.warning('功能开发中')
+				this.detailId = '';
+				this.isUpdate = false;
+				this.visible = true;
 			},
 			},
-			currentChange() {
-
+			updateItem(item) {
+				this.detailId = item.id;
+				this.isUpdate = true;
+				this.visible = true;
+			},
+			detailItem(item) {
+				this.detailId = item.id;
+				this.drawer = true;
+			},
+			currentChange(currPage) {
+				this.currPage = currPage;
+				this.init();
+			},
+			deleteItem(item) {
+				this.$confirm('确定要删除该会议记录?', () => {
+					deleteMeetingById(item.id).then(res => {
+						if (res.state) {
+							this.$message({
+								type: 'success',
+								message: '操作成功'
+							})
+							this.init();
+						}
+					})
+				});
+			},
+			callback(type) {
+				if (type === 'init') this.init();
+				this.visible = false;
 			}
 			}
-		}
+		},
+		components: {
+			edit,
+			detail
+		},
 	}
 	}
 </script>
 </script>
 
 

+ 83 - 7
virgo.wzfrontend/console/src/views/work/operation/meeting/project.vue

@@ -15,17 +15,21 @@
 								<div style="text-align: center;">{{scope.$index + 1}}</div>
 								<div style="text-align: center;">{{scope.$index + 1}}</div>
 							</template>
 							</template>
 						</el-table-column>
 						</el-table-column>
+						<el-table-column label="会议日期" prop="date"></el-table-column>
 						<el-table-column label="会议名称" prop="name"></el-table-column>
 						<el-table-column label="会议名称" prop="name"></el-table-column>
+						<el-table-column label="会议时长" prop="duration"></el-table-column>
+						<el-table-column label="会议类型" prop="typeName"></el-table-column>
+						<el-table-column label="会议场所" prop="placeName"></el-table-column>
 						<el-table-column label="操作" width="150">
 						<el-table-column label="操作" width="150">
 							<template slot-scope="scope">
 							<template slot-scope="scope">
 								<div class="hui-table-operation">
 								<div class="hui-table-operation">
-									<span class="table-operation">
+									<span class="table-operation" @click="detailItem(scope.row)">
 										详情
 										详情
 									</span>
 									</span>
-									<span class="table-operation">
+									<span class="table-operation" @click="updateItem(scope.row)">
 										编辑
 										编辑
 									</span>
 									</span>
-									<span class="table-operation">
+									<span class="table-operation" @click="deleteItem(scope.row)">
 										删除
 										删除
 									</span>
 									</span>
 								</div>
 								</div>
@@ -43,10 +47,22 @@
 				</div>
 				</div>
 			</div>
 			</div>
 		</div>
 		</div>
+		<el-dialog :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="900px" :append-to-body="true">
+			<edit v-if="visible" @callback="callback" :isUpdate="isUpdate" :detailId="detailId" :type="type"></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>
 	</div>
 </template>
 </template>
 
 
 <script>
 <script>
+	import {
+		getMeetingListByQuery,
+		deleteMeetingById
+	} from '@/httpApi/operation'
+	import edit from '@/components/work/operation/meeting/edit'
+	import detail from '@/components/work/operation/meeting/detail'
 	export default {
 	export default {
 		data() {
 		data() {
 			return {
 			return {
@@ -54,19 +70,79 @@
 				currPage: 1,
 				currPage: 1,
 				pageSize: 10,
 				pageSize: 10,
 				totalCount: 0,
 				totalCount: 0,
+				filterOption: {},
+				type: 1,
+				isUpdate: false,
+				visible: false,
+				detailId: '',
+				drawer: false
 			}
 			}
 		},
 		},
 		created() {
 		created() {
 			this.init();
 			this.init();
 		},
 		},
 		methods: {
 		methods: {
+			init() {
+				let postData = {
+					currPage: this.currPage,
+					pageSize: this.pageSize,
+					organizationId: this.$store.getters.organization.id,
+					projectId: this.$store.getters.project.id,
+					type: this.type
+				}
+				postData = Object.assign(postData, this.filterOption);
+				getMeetingListByQuery(postData).then(res => {
+					if (res.state) {
+						this.tableData = res.data.dataList;
+						this.totalCount = res.data.totalCount;
+					}
+				})
+			},
+			filterInit(option) {
+				this.filterOption = option;
+				this.currPage = 1;
+				this.init();
+			},
 			insert() {
 			insert() {
-				this.$message.warning('功能开发中')
+				this.detailId = '';
+				this.isUpdate = false;
+				this.visible = true;
 			},
 			},
-			currentChange() {
-
+			updateItem(item) {
+				this.detailId = item.id;
+				this.isUpdate = true;
+				this.visible = true;
+			},
+			detailItem(item) {
+				this.detailId = item.id;
+				this.drawer = true;
+			},
+			currentChange(currPage) {
+				this.currPage = currPage;
+				this.init();
+			},
+			deleteItem(item) {
+				this.$confirm('确定要删除该会议记录?', () => {
+					deleteMeetingById(item.id).then(res => {
+						if (res.state) {
+							this.$message({
+								type: 'success',
+								message: '操作成功'
+							})
+							this.init();
+						}
+					})
+				});
+			},
+			callback(type) {
+				if (type === 'init') this.init();
+				this.visible = false;
 			}
 			}
-		}
+		},
+		components: {
+			edit,
+			detail
+		},
 	}
 	}
 </script>
 </script>
 
 

+ 61 - 17
virgo.wzfrontend/console/src/views/work/operation/meeting/set.vue

@@ -41,15 +41,48 @@
 </template>
 </template>
 
 
 <script>
 <script>
+	import {
+		getMeetingPlaceListByQuery,
+		insertMeetingPlace,
+		updateMeetingPlace,
+		deleteMeetingPlaceById,
+		getMeetingTypeListByQuery,
+		insertMeetingType,
+		updateMeetingType,
+		deleteMeetingTypeById
+	} from '@/httpApi/operation'
 	export default {
 	export default {
 		data() {
 		data() {
 			return {
 			return {
 				placeList: [],
 				placeList: [],
-				typeList: [],
-				index: 1
+				typeList: []
 			}
 			}
 		},
 		},
+		created() {
+			this.initPlaceList();
+			this.initTypeList();
+		},
 		methods: {
 		methods: {
+			initPlaceList() {
+				getMeetingPlaceListByQuery({
+					organizationId: this.$store.getters.organization.id,
+					projectId: this.$store.getters.project.id
+				}).then(res => {
+					if (res.state) {
+						this.placeList = res.data;
+					}
+				})
+			},
+			initTypeList() {
+				getMeetingTypeListByQuery({
+					organizationId: this.$store.getters.organization.id,
+					projectId: this.$store.getters.project.id
+				}).then(res => {
+					if (res.state) {
+						this.typeList = res.data;
+					}
+				})
+			},
 			insertFunc(type) {
 			insertFunc(type) {
 				let msg = type === 1 ? '场所名称' : '类型名称';
 				let msg = type === 1 ? '场所名称' : '类型名称';
 				this.$prompt(`请输入${msg}`, '有极', {
 				this.$prompt(`请输入${msg}`, '有极', {
@@ -62,17 +95,16 @@
 				}).then(({
 				}).then(({
 					value
 					value
 				}) => {
 				}) => {
-					let item = {
-						id: this.index,
-						name: value
+					let postData = {
+						organizationId: this.$store.getters.organization.id,
+						projectId: this.$store.getters.project.id
 					}
 					}
+					postData['name'] = value;
 					if (type === 1) {
 					if (type === 1) {
-						this.placeList.push(item);
+						insertMeetingPlace(postData).then(res => this.successFunc(res, type))
 					} else {
 					} else {
-						this.typeList.push(item);
+						insertMeetingType(postData).then(res => this.successFunc(res, type))
 					}
 					}
-					this.index++;
-					this.$message.success('操作成功');
 				}).catch(() => {});
 				}).catch(() => {});
 			},
 			},
 			updateFunc(type, item) {
 			updateFunc(type, item) {
@@ -88,22 +120,34 @@
 				}).then(({
 				}).then(({
 					value
 					value
 				}) => {
 				}) => {
-					item.name = value;
-					this.$message.success('操作成功');
+					if (type === 1) {
+						updateMeetingPlace({
+							id: item.id,
+							name: value
+						}).then(res => this.successFunc(res, type))
+					} else {
+						updateMeetingType({
+							id: item.id,
+							name: value
+						}).then(res => this.successFunc(res, type))
+					}
 				}).catch(() => {});
 				}).catch(() => {});
 			},
 			},
 			deleteFunc(type, item) {
 			deleteFunc(type, item) {
 				let msg = type === 1 ? '场所名称' : '类型名称';
 				let msg = type === 1 ? '场所名称' : '类型名称';
 				this.$confirm(`确定要删除该${msg}?`, () => {
 				this.$confirm(`确定要删除该${msg}?`, () => {
 					if (type === 1) {
 					if (type === 1) {
-						let index = this.placeList.findIndex(node => node.id === item.id);
-						this.placeList.splice(index, 1);
+						deleteMeetingPlaceById(item.id).then(res => this.successFunc(res, type))
 					} else {
 					} else {
-						let index = this.typeList.findIndex(node => node.id === item.id);
-						this.typeList.splice(index, 1);
-					}
-					this.$message.success('操作成功');
+						deleteMeetingTypeById(item.id).then(res => this.successFunc(res, type))
+					}
 				});
 				});
+			},
+			successFunc(res, type) {
+				if (res.state) {
+					type === 1 ? this.initPlaceList() : this.initTypeList();
+					this.$message.success('操作成功');
+				}
 			}
 			}
 		},
 		},
 	}
 	}

Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/index.html


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/css/4180.f275a232.css


virgo.wzfrontend/src/main/resources/static/static/css/2758.c91856b9.css → virgo.wzfrontend/src/main/resources/static/static/css/6496.c91856b9.css


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/css/9334.f275a232.css


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/1569-legacy.25b70a0a.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/1569.123ff589.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/159-legacy.4635690a.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/159.2ab37294.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/2758-legacy.026dc0b8.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/2758.8c3c5351.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/4180.8fd82760.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/6061-legacy.05cda2b5.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/6061.b9ca4072.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/6061.d13ecb47.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/6496-legacy.1684f1c3.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/6496.05a640e1.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/6980-legacy.792dce14.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/6980.6a430222.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/7995-legacy.d56ddcf7.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/7995.5a6cf35e.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/9334-legacy.ffc475a9.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/app-legacy.30f7145a.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/app-legacy.93add9e8.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/app.5d668f35.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/app.be4ab912.js