whx 5 maanden geleden
bovenliggende
commit
b5a0803bfa
100 gewijzigde bestanden met toevoegingen van 121607 en 12 verwijderingen
  1. 8 4
      virgo.wzfrontend/console/src/components/message/detail.vue
  2. 109 0
      virgo.wzfrontend/console/src/components/message/modules/datacenterDetail.vue
  3. 0 0
      virgo.wzfrontend/console/src/components/message/modules/inviteDetail.vue
  4. 5 5
      virgo.wzfrontend/console/src/httpApi/datacenter.js
  5. 2 2
      virgo.wzfrontend/console/src/uitls/datacenter.js
  6. 410 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/chat.js
  7. 42 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/demoFeature.js
  8. 5496 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/getTargetData.js
  9. 1578 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/sheetCell.js
  10. 4918 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/sheetChart.js
  11. 67 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/sheetComment.js
  12. 6568 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/sheetConditionFormat.js
  13. 579 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/sheetDataVerification.js
  14. 6600 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/sheetFormula.js
  15. 159 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/sheetPicture.js
  16. 189 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/sheetPivotTable.js
  17. 741 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/sheetPivotTableData.js
  18. 7066 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/sheetSparkline.js
  19. 1068 0
      virgo.wzfrontend/src/main/resources/static/console/demoData/sheetTable.js
  20. 1 0
      virgo.wzfrontend/src/main/resources/static/console/expendPlugins/chart/chartmix.css
  21. 12 0
      virgo.wzfrontend/src/main/resources/static/console/expendPlugins/chart/chartmix.umd.min.js
  22. 1 0
      virgo.wzfrontend/src/main/resources/static/console/expendPlugins/chart/chartmix.umd.min.js.map
  23. 46 0
      virgo.wzfrontend/src/main/resources/static/console/expendPlugins/print/print.css
  24. 0 0
      virgo.wzfrontend/src/main/resources/static/console/expendPlugins/print/print.js
  25. 1 1
      virgo.wzfrontend/src/main/resources/static/console/index.html
  26. 4511 0
      virgo.wzfrontend/src/main/resources/static/console/luckysheet.umd.js
  27. 7 0
      virgo.wzfrontend/src/main/resources/static/console/luckysheet.umd.js.map
  28. 24893 0
      virgo.wzfrontend/src/main/resources/static/console/pdf/build/pdf.js
  29. 1 0
      virgo.wzfrontend/src/main/resources/static/console/pdf/build/pdf.js.map
  30. 56522 0
      virgo.wzfrontend/src/main/resources/static/console/pdf/build/pdf.worker.js
  31. 1 0
      virgo.wzfrontend/src/main/resources/static/console/pdf/build/pdf.worker.js.map
  32. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78-EUC-H.bcmap
  33. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78-EUC-V.bcmap
  34. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78-H.bcmap
  35. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78-RKSJ-H.bcmap
  36. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78-RKSJ-V.bcmap
  37. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78-V.bcmap
  38. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78ms-RKSJ-H.bcmap
  39. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78ms-RKSJ-V.bcmap
  40. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/83pv-RKSJ-H.bcmap
  41. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/90ms-RKSJ-H.bcmap
  42. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/90ms-RKSJ-V.bcmap
  43. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/90msp-RKSJ-H.bcmap
  44. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/90msp-RKSJ-V.bcmap
  45. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/90pv-RKSJ-H.bcmap
  46. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/90pv-RKSJ-V.bcmap
  47. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Add-H.bcmap
  48. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Add-RKSJ-H.bcmap
  49. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Add-RKSJ-V.bcmap
  50. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Add-V.bcmap
  51. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-0.bcmap
  52. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-1.bcmap
  53. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-2.bcmap
  54. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-3.bcmap
  55. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-4.bcmap
  56. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-5.bcmap
  57. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-6.bcmap
  58. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-UCS2.bcmap
  59. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-0.bcmap
  60. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-1.bcmap
  61. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-2.bcmap
  62. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-3.bcmap
  63. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-4.bcmap
  64. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-5.bcmap
  65. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-UCS2.bcmap
  66. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-0.bcmap
  67. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-1.bcmap
  68. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-2.bcmap
  69. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-3.bcmap
  70. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-4.bcmap
  71. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-5.bcmap
  72. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-6.bcmap
  73. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-UCS2.bcmap
  74. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Korea1-0.bcmap
  75. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Korea1-1.bcmap
  76. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Korea1-2.bcmap
  77. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Korea1-UCS2.bcmap
  78. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/B5-H.bcmap
  79. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/B5-V.bcmap
  80. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/B5pc-H.bcmap
  81. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/B5pc-V.bcmap
  82. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/CNS-EUC-H.bcmap
  83. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/CNS-EUC-V.bcmap
  84. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/CNS1-H.bcmap
  85. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/CNS1-V.bcmap
  86. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/CNS2-H.bcmap
  87. 3 0
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/CNS2-V.bcmap
  88. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/ETHK-B5-H.bcmap
  89. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/ETHK-B5-V.bcmap
  90. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/ETen-B5-H.bcmap
  91. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/ETen-B5-V.bcmap
  92. 3 0
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/ETenms-B5-H.bcmap
  93. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/ETenms-B5-V.bcmap
  94. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/EUC-H.bcmap
  95. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/EUC-V.bcmap
  96. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Ext-H.bcmap
  97. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Ext-RKSJ-H.bcmap
  98. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Ext-RKSJ-V.bcmap
  99. BIN
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Ext-V.bcmap
  100. 0 0
      virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/GB-EUC-H.bcmap

+ 8 - 4
virgo.wzfrontend/console/src/components/message/detail.vue

@@ -1,18 +1,22 @@
 <template>
 	<div class="message-detail">
 		<flow-detail v-if="type === 2" :detailId="detail.dataId"></flow-detail>
-		<detail2 v-if="type === 6" :detail="detail"></detail2>
+		<datacenter-detail v-if="type === 5" :detail="detail"></datacenter-detail>
+		<invite-detail v-if="type === 6" :detail="detail"></invite-detail>
 	</div>
 </template>
 
 <script>
 	import flowDetail from '@/components/flow/flowDetail'
-	import detail2 from './modules/detail2'
+	import inviteDetail from './modules/inviteDetail'
+	import datacenterDetail from './modules/datacenterDetail'
+
 	export default {
 		props: ['type', 'detail'],
 		components: {
-			detail2,
-			flowDetail
+			inviteDetail,
+			flowDetail,
+			datacenterDetail
 		},
 	}
 </script>

+ 109 - 0
virgo.wzfrontend/console/src/components/message/modules/datacenterDetail.vue

@@ -0,0 +1,109 @@
+<template>
+	<div class="hui-flex">
+		<div class="hui-flex-box">
+			<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.date}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">目录名称</div>
+						<div class="hui-detail-value">{{detail.data && detail.data[1]}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">数据类型</div>
+						<div class="hui-detail-value">{{detail.fileType === 'access'?'访问文件夹':'下载文件'}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">数据操作</div>
+						<div class="hui-detail-value">
+							<el-button v-if="detail.fileType === 'fileDownload'" size="small" type="primary"
+								@click="download">
+								<i class="iconfont huifont-xiazai"></i>下载
+							</el-button>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<div class="hui-drawer-submit" v-if="!permissions[detail.fileType] && load">
+			<el-button size="medium" type="primary" @click="success">通过</el-button>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		getUserProjectPermissions,
+		getUserOrganizationPermissions,
+		insertUserPermissions,
+		putUserPermissions,
+		downloadFile
+	} from '@/httpApi/datacenter'
+	import {
+		downloadFileDom
+	} from '@/uitls/datacenter'
+	export default {
+		props: ['detail'],
+		data() {
+			return {
+				show: false,
+				permissions: {},
+				load: false
+			}
+		},
+		created() {
+			let reg1 = /(?<=\【)(.+?)(?=\】)/g; // {} 花括号,大括号
+			this.detail['data'] = this.detail.message.match(reg1)
+			let data = this.$msg.messageType.filter(node => node.id === this.detail.messageType)[0].dataType.filter(node =>
+				node.id === this.detail.dataType)[0];
+			this.detail['fileType'] = data.type;
+			this.init();
+		},
+		methods: {
+			init() {
+				if (this.detail.dataType === 1 || this.detail.dataType === 2) {
+					getUserProjectPermissions(this.detail.dataId, this.detail.sender).then(this.privacySuccessFunc)
+				} else if (this.detail.dataType === 3 || this.detail.dataType === 4) {
+					getUserOrganizationPermissions(this.detail.dataId, this.detail.sender).then(this.privacySuccessFunc)
+				}
+			},
+			privacySuccessFunc(res, option, callback) {
+				if (res.state) {
+					this.permissions = res.data || {};
+					this.load = true;
+				}
+			},
+			success() {
+				this.$confirm('是否通过该申请?', () => {
+					let postData = {
+						userId: this.detail.sender
+					}
+					postData[this.detail.fileType] = true;
+					if (this.permissions.id) postData['id'] = this.permissions.id;
+					if (this.detail.data[0] === '企业中心') postData['fileNodeOrganizationId'] = this.detail.dataId;
+					if (this.detail.data[0] === '项目中心') postData['fileNodeProjectId'] = this.detail.dataId;
+					postData.id ? putUserPermissions(postData).then(this.successFunc) : insertUserPermissions(
+						postData).then(this.successFunc);
+				})
+			},
+			successFunc(res) {
+				if (res.state) {
+					this.$message.success('操作成功');
+					this.init();
+				}
+			},
+			download() {
+				downloadFile(this.detail.data[0] === '项目中心' ? 0 : 1, this.detail.dataId).then(res => {
+					let fileName = this.detail.data[1].split('-');
+					downloadFileDom(res, fileName[fileName.length - 1]);
+				});
+			}
+		},
+	}
+</script>
+
+<style>
+</style>

virgo.wzfrontend/console/src/components/message/modules/detail2.vue → virgo.wzfrontend/console/src/components/message/modules/inviteDetail.vue


+ 5 - 5
virgo.wzfrontend/console/src/httpApi/datacenter.js

@@ -343,7 +343,7 @@ export function deleteOrganizationFile(id) {
  */
 export function getSetApprove(data) {
 	return request({
-		url: `/operate/reviewerSet/set/query`,
+		url: `/api/reviewerSet/set/query`,
 		method: 'post',
 		data: data
 	})
@@ -355,7 +355,7 @@ export function getSetApprove(data) {
  */
 export function insertSetApprove(data) {
 	return request({
-		url: `/operate/reviewerSet/set`,
+		url: `/api/reviewerSet/set`,
 		method: 'post',
 		data: data
 	})
@@ -367,7 +367,7 @@ export function insertSetApprove(data) {
  */
 export function updateSetApprove(data) {
 	return request({
-		url: `/operate/reviewerSet/set`,
+		url: `/api/reviewerSet/set`,
 		method: 'put',
 		data: data
 	})
@@ -379,7 +379,7 @@ export function updateSetApprove(data) {
  */
 export function insertExcel(data) {
 	return request({
-		url: `/operate/luckySheet`,
+		url: `/api/luckySheet`,
 		method: 'post',
 		data: data
 	})
@@ -391,7 +391,7 @@ export function insertExcel(data) {
  */
 export function getExcelById(id) {
 	return request({
-		url: `/operate/luckySheet/${id}`,
+		url: `/api/luckySheet/${id}`,
 		method: 'get'
 	})
 }

+ 2 - 2
virgo.wzfrontend/console/src/uitls/datacenter.js

@@ -90,9 +90,9 @@ const approveTip = (option) => {
 		}
 		let folderName = `【${option.typeName}${folder}-${option.name}】`;
 		let title = option.type === 'access' ? `申请访问${folderName}` : `申请下载${folderName}`;
-		message.send({}, {
+		message.sendFlowMessage({}, {
 			operation: title,
-			userIds: checker.join(','),
+			receiver: checker.join(','),
 			messageType: 5,
 			dataType: returnType(option)[option.type],
 			dataId: option.id

+ 410 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/chat.js

@@ -0,0 +1,410 @@
+export function initChat() {
+    if (!isNeedChat()) {
+        return
+    }
+
+    // Your CSS as text
+    let styles = `
+body {
+    background-color: #f5f5f5;
+}
+
+#chat-assistant-container {
+    position: fixed;
+    right: 40px;
+    bottom: 86px;
+    z-index:9990;
+}
+
+#chat-assistant-button {
+    width: 50px;
+    height: 50px;
+    border-radius: 50%;
+    border: none;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    cursor: pointer;
+    background: linear-gradient(135deg, rgb(215 98 150 / 55%),rgb(34 78 139 / 71%), rgb(114 222 172));
+    box-shadow: 0px 0px 8px 1px rgb(0 0 0 / 22%);
+    color: #fff;
+    text-shadow: 1px 1px 3px rgb(0 0 0 / 56%);
+}
+
+
+#chat-container {
+    position: fixed;
+    padding: 10px;
+    top: 45%;
+    left: 50%;
+    z-index:9990;
+    transform: translate(-50%, -50%);
+    display: none;
+    border-radius: 5px;
+    width: 40%;
+    background: linear-gradient(135deg, rgb(215 98 150 / 92%),rgb(34 78 139 / 93%), rgb(114 222 172 / 94%));
+    box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.2);
+}
+
+
+
+#chat-header {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: 0 10px 10px 0;
+    border-radius: 5px 5px 0 0;
+    cursor: move;
+}
+
+#loading-indicator {
+    width: 14px;
+    height: 14px;
+    margin: 0 10px 0 10px;
+    border: 2px solid #ccc;
+    border-top-color: #4caf50;
+    border-radius: 50%;
+    animation: spin 2s linear infinite;
+    visibility: hidden;
+}
+
+@keyframes spin {
+    0% {
+        transform: rotate(0deg);
+    }
+
+    100% {
+        transform: rotate(360deg);
+    }
+}
+
+#chat-header .show-loading {
+    visibility: visible;
+}
+
+#chat-header .hide-loading {
+    visibility: hidden;
+}
+
+
+#circle-button {
+    padding: 0;
+    border: none;
+    background-color: transparent;
+    font-size: 16px;
+    user-select: none;
+    display: flex;
+    align-items: center;
+    color: #fff; 
+    text-shadow: 1px 1px 3px black;
+}
+
+#close-button {
+    cursor: pointer;
+    padding: 0;
+    border: none;
+    background-color: transparent;
+    font-size: 24px;
+    color: #fff; 
+    text-shadow: 1px 1px 3px black;
+}
+#send-button {
+    cursor: pointer;
+    padding: 0;
+    border: none;
+    background-color: transparent;
+    font-size: 16px;
+}
+
+#close-button:hover,
+#send-button:hover {
+    color: #888;
+}
+
+#chat-input-container,
+#chat-input {
+    border: none;
+}
+
+#chat-input-container {
+    display: flex;
+    align-items: center;
+    border-radius: 5px;
+    background-color: #fff;
+    padding: 10px;
+}
+
+#chat-input {
+    flex: 1;
+    padding: 0;
+    margin-right: 5px;
+    border-radius: 5px;
+    overflow-y: auto;
+    height: 24px;
+    font-size: 1rem;
+    outline: none;
+    resize: none;
+    background: transparent;
+}
+
+#send-button {
+    background-color: transparent;
+    border: none;
+    border-radius: 5px;
+    cursor: pointer;
+    padding: 5px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    height: 32px;
+    width: 32px;
+}
+
+#send-button>span {
+    height: 16px;
+    width: 16px;
+}
+
+#send-button:enabled {
+    background-color: rgb(120,198,174);
+}
+
+#send-button:enabled svg path {
+    fill: #fff;
+}
+`
+
+    let styleSheet = document.createElement("style")
+    styleSheet.innerText = styles
+    document.head.appendChild(styleSheet)
+
+
+    const html = `<div id="chat-assistant-container">
+            <button id="chat-assistant-button">🤖AI</button>
+        </div>
+    
+        <div id="chat-container">
+            <div id="chat-header">
+                <span id="circle-button">Univer AI 助手<div id="loading-indicator"></div></span>
+    
+                <button id="close-button">×</button>
+            </div>
+            <div id="chat-input-container">
+                <textarea id="chat-input" placeholder="请输入问题"></textarea>
+                <!-- <textarea id="chat-input" placeholder="请输入问题"></textarea> -->
+                <button id="send-button" disabled>
+                    <span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" class="h-4 w-4 m-1 md:m-0"
+                            stroke-width="2">
+                            <path
+                                d="M.5 1.163A1 1 0 0 1 1.97.28l12.868 6.837a1 1 0 0 1 0 1.766L1.969 15.72A1 1 0 0 1 .5 14.836V10.33a1 1 0 0 1 .816-.983L8.5 8 1.316 6.653A1 1 0 0 1 .5 5.67V1.163Z"
+                                fill="currentColor"></path>
+                        </svg></span>
+                </button>
+            </div>
+    
+        </div>`;
+    document.body.insertAdjacentHTML('beforeend', html)
+
+
+    const assistantButton = document.getElementById('chat-assistant-button');
+    const chatContainer = document.getElementById('chat-container');
+    const closeButton = document.getElementById('close-button');
+    const chatInput = document.getElementById('chat-input');
+    const sendButton = document.getElementById('send-button');
+    const loadingIndicator = document.getElementById('loading-indicator');
+
+    assistantButton.addEventListener('click', function () {
+        chatContainer.style.display = 'block';
+    });
+
+    closeButton.addEventListener('click', function () {
+        chatContainer.style.display = 'none';
+    });
+
+    sendButton.addEventListener('click', function () {
+        const message = chatInput.value;
+        if (message.trim() !== '') {
+            // 处理发送消息的逻辑
+
+            chatInput.value = '';
+            resetButton(chatInput)
+
+            // 显示 Loading
+            loadingIndicator.classList.add('show-loading');
+            setTimeout(() => {
+                setFormuala(message);
+                // 隐藏 Loading
+                loadingIndicator.classList.remove('show-loading');
+            }, 1000);
+        }
+
+
+    });
+
+    chatInput.addEventListener('input', function () {
+        inputHandler(this)
+    });
+
+    function inputHandler(input) {
+        if (input.scrollHeight > 24) {
+            input.style.height = 'auto'
+        }
+        input.style.height = input.scrollHeight + 'px'; // 根据内容高度设置 textarea 高度
+        if (input.scrollHeight > 200) {
+            input.style.overflowY = 'scroll'
+        } else {
+            input.style.overflowY = 'hidden'
+        }
+
+        resetButton(input)
+
+    }
+
+    function resetButton(input) {
+        if (input.value.trim() !== '') {
+            sendButton.disabled = false;
+            sendButton.classList.add('enabled');
+        } else {
+            input.style.height = '24px'; // 重置高度为一行
+            sendButton.disabled = true;
+            sendButton.classList.remove('enabled');
+        }
+    }
+
+    // 快捷键
+    let isComposing = false;
+
+    chatInput.addEventListener('compositionstart', function () {
+        isComposing = true;
+    });
+
+    chatInput.addEventListener('compositionend', function () {
+        isComposing = false;
+    });
+
+    chatInput.addEventListener('keydown', function (event) {
+        const isWindows = navigator.platform.includes('Win');
+        const isMac = navigator.platform.includes('Mac');
+
+        const key = event.key;
+
+        if (isWindows && event.key === 'Enter' && !isComposing && !event.altKey) {
+            // Windows 上的 Enter 键触发发送
+            event.preventDefault();
+            sendButton.click();
+        } else if (isWindows && event.key === 'Enter' && !isComposing && event.altKey) {
+            // Windows 上的 Alt+Enter 键触发换行
+            event.preventDefault();
+            this.value += '\n';
+        } else if (isMac && event.key === 'Enter' && !isComposing && !event.metaKey) {
+            // Mac 上的 Enter 键触发发送
+            event.preventDefault();
+            sendButton.click();
+        } else if (isMac && event.key === 'Enter' && !isComposing && event.metaKey) {
+            // Mac 上的 Command+Enter 键触发换行
+            event.preventDefault();
+            this.value += '\n';
+        } else if (!isComposing && (key === "Backspace" || key === "Delete")) {
+
+        }
+
+        inputHandler(this)
+    });
+
+
+    // 添加拖拽功能
+    let isDragging = false;
+    let offset = { x: 0, y: 0 };
+
+    const chatHeader = document.getElementById('chat-header');
+
+    chatHeader.addEventListener('mousedown', function (event) {
+        isDragging = true;
+        offset.x = event.clientX - chatContainer.offsetLeft;
+        offset.y = event.clientY - chatContainer.offsetTop;
+    });
+
+    document.addEventListener('mousemove', function (event) {
+        if (isDragging) {
+            chatContainer.style.left = `${event.clientX - offset.x}px`;
+            chatContainer.style.top = `${event.clientY - offset.y}px`;
+        }
+    });
+
+    document.addEventListener('mouseup', function () {
+        isDragging = false;
+    });
+}
+
+const needChatHosts = [
+    'crm.lashuju.com',
+    'localhost:3000'
+]
+function isNeedChat() {
+    const host = location.host;
+    if (needChatHosts.includes(host)) {
+        return true
+    }
+
+    return false
+}
+
+
+function setFormuala(sentence = '') {
+
+    let link = getLink(sentence)
+
+    if (link !== '') {
+        setGET_AIRTABLE(link)
+    } else {
+        setASK_AI(sentence)
+    }
+
+}
+
+function setASK_AI(sentence = '') {
+
+    let range = getRange(sentence);
+
+    range = range === '' ? '' : ',' + range
+    const data = [
+        [
+            {
+                "f": "=ASK_AI(\"" + sentence + "\"" + range + ")"
+            }
+        ]
+    ]
+    luckysheet.setRangeValue(data)
+}
+
+function setGET_AIRTABLE(link) {
+    const data = [
+        [
+            {
+                "f": "=GET_AIRTABLE_DATA(\"" + link + "\")"
+            }
+        ]
+    ]
+    luckysheet.setRangeValue(data)
+}
+
+function getLink(sentence = '') {
+    const regex = /(https?:\/\/(?:www\.)?airtable\.com\/\S+)/gi;
+    const matches = sentence.match(regex);
+
+    if (matches) {
+        return matches[0];
+    }
+
+    return ''
+
+}
+
+function getRange(text) {
+    const regex = /([A-Z]+[0-9]*):([A-Z]+[0-9]*)/g;
+    const matche = text.match(regex);
+    if (matche) {
+        return matche[0]
+    }
+    return ''
+}

+ 42 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/demoFeature.js

@@ -0,0 +1,42 @@
+
+// Features specially written for demo
+
+(function () {
+
+    // language
+    function language(params) {
+
+        var lang = navigator.language || navigator.userLanguage;//常规浏览器语言和IE浏览器
+        lang = lang.substr(0, 2);//截取lang前2位字符
+
+        return lang;
+
+    }
+    // Tencent Forum Link Button
+    function supportButton() {
+        const text = language() === 'zh' ? '反馈' : 'Forum';
+        const link = language() === 'zh' ? 'https://support.qq.com/product/288322' : 'https://groups.google.com/g/luckysheet';
+
+        document.querySelector("body").insertAdjacentHTML('beforeend', '<a id="container" href="' + link + '" target="_blank" style="z-index:2;width:50px;height:50px;line-height:50px;position:fixed;right:40px;bottom:86px;border-radius:50px;cursor:pointer;background:rgb(71,133,249);color:#fff;text-align:center;text-decoration:none;font-size: 12px;">' + text + '</a>');
+    }
+
+    supportButton()
+
+    /**
+     * Get url parameters
+     */
+    function getRequest() {
+        var vars = {};
+        var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
+            function (m, key, value) {
+                vars[key] = value;
+            });
+        return vars;
+    }
+
+    window.luckysheetDemoUtil = {
+        language: language,
+        getRequest: getRequest
+    }
+
+})()

File diff suppressed because it is too large
+ 5496 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/getTargetData.js


File diff suppressed because it is too large
+ 1578 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/sheetCell.js


File diff suppressed because it is too large
+ 4918 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/sheetChart.js


+ 67 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/sheetComment.js

@@ -0,0 +1,67 @@
+window.sheetComment = {
+	"name": "Comment",
+	"color": "",
+	"config": {
+		"columnlen": {
+			"2": 102
+		}
+	},
+	"index": "5",
+	"chart": [],
+	"status": 0,
+	"order": "5",
+	"column": 18,
+	"row": 36,
+	"celldata": [{
+		"r": 2,
+		"c": 2,
+		"v": {
+			"m": "HoverShown",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "HoverShown",
+			"bl": 1,
+			"ps": {
+				"left": null,
+				"top": null,
+				"width": null,
+				"height": null,
+				"value": "Hello world!",
+				"isshow": false
+			}
+		}
+	}, {
+		"r": 7,
+		"c": 2,
+		"v": {
+			"m": "Size",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Size",
+			"bl": 1,
+			"ps": {
+				"left": null,
+				"top": null,
+				"width": null,
+				"height": null,
+				"value": "Hello,world!",
+				"isshow": true
+			}
+		}
+	}],
+	"ch_width": 4748,
+	"rh_height": 1790,
+	"luckysheet_select_save": [{
+		"row": [0, 0],
+		"column": [0, 0]
+	}],
+	"luckysheet_selection_range": [],
+	"scrollLeft": 0,
+	"scrollTop": 0
+}
+
+// export default sheetComment;

File diff suppressed because it is too large
+ 6568 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/sheetConditionFormat.js


File diff suppressed because it is too large
+ 579 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/sheetDataVerification.js


File diff suppressed because it is too large
+ 6600 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/sheetFormula.js


File diff suppressed because it is too large
+ 159 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/sheetPicture.js


+ 189 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/sheetPivotTable.js

@@ -0,0 +1,189 @@
+window.sheetPivotTable = {
+	"name": "PivotTable",
+	"color": "",
+	"config": {},
+	"index": "7",
+	"chart": [],
+	"status": 0,
+	"order": "7",
+	"column": 18,
+	"row": 36,
+	"celldata": [{
+		"r": 0,
+		"c": 0,
+		"v": "count:score"
+	}, {
+		"r": 0,
+		"c": 1,
+		"v": "science"
+	}, {
+		"r": 0,
+		"c": 2,
+		"v": "mathematics"
+	}, {
+		"r": 0,
+		"c": 3,
+		"v": "foreign language"
+	}, {
+		"r": 0,
+		"c": 4,
+		"v": "English"
+	}, {
+		"r": 0,
+		"c": 5,
+		"v": "total"
+	}, {
+		"r": 1,
+		"c": 0,
+		"v": "Alex"
+	}, {
+		"r": 1,
+		"c": 1,
+		"v": 1
+	}, {
+		"r": 1,
+		"c": 2,
+		"v": 1
+	}, {
+		"r": 1,
+		"c": 3,
+		"v": 1
+	}, {
+		"r": 1,
+		"c": 4,
+		"v": 1
+	}, {
+		"r": 1,
+		"c": 5,
+		"v": 4
+	}, {
+		"r": 2,
+		"c": 0,
+		"v": "Joy"
+	}, {
+		"r": 2,
+		"c": 1,
+		"v": 1
+	}, {
+		"r": 2,
+		"c": 2,
+		"v": 1
+	}, {
+		"r": 2,
+		"c": 3,
+		"v": 1
+	}, {
+		"r": 2,
+		"c": 4,
+		"v": 1
+	}, {
+		"r": 2,
+		"c": 5,
+		"v": 4
+	}, {
+		"r": 3,
+		"c": 0,
+		"v": "Tim"
+	}, {
+		"r": 3,
+		"c": 1,
+		"v": 1
+	}, {
+		"r": 3,
+		"c": 2,
+		"v": 1
+	}, {
+		"r": 3,
+		"c": 3,
+		"v": 1
+	}, {
+		"r": 3,
+		"c": 4,
+		"v": 1
+	}, {
+		"r": 3,
+		"c": 5,
+		"v": 4
+	}, {
+		"r": 4,
+		"c": 0,
+		"v": "total"
+	}, {
+		"r": 4,
+		"c": 1,
+		"v": 3
+	}, {
+		"r": 4,
+		"c": 2,
+		"v": 3
+	}, {
+		"r": 4,
+		"c": 3,
+		"v": 3
+	}, {
+		"r": 4,
+		"c": 4,
+		"v": 3
+	}, {
+		"r": 4,
+		"c": 5,
+		"v": 12
+	}],
+	"ch_width": 4748,
+	"rh_height": 1790,
+	"luckysheet_select_save": [{
+		"row": [0, 0],
+		"column": [0, 0]
+	}],
+	"luckysheet_selection_range": [],
+	"scrollLeft": 0,
+	"scrollTop": 0,
+	"isPivotTable": true,
+	"pivotTable": {
+		"pivot_select_save": {
+			"left": 0,
+			"width": 73,
+			"top": 0,
+			"height": 19,
+			"left_move": 0,
+			"width_move": 369,
+			"top_move": 0,
+			"height_move": 259,
+			"row": [0, 12],
+			"column": [0, 4],
+			"row_focus": 0,
+			"column_focus": 0
+		},
+		"pivotDataSheetIndex": 6, //The sheet index where the source data is located
+		"column": [{
+			"index": 3,
+			"name": "subject",
+			"fullname": "subject"
+		}],
+		"row": [{
+			"index": 1,
+			"name": "student",
+			"fullname": "student"
+		}],
+		"filter": [],
+		"values": [{
+			"index": 4,
+			"name": "score",
+			"fullname": "count:score",
+			"sumtype": "COUNTA",
+			"nameindex": 0
+		}],
+		"showType": "column",
+		"pivotDatas": [
+			["count:score", "science", "mathematics", "foreign language", "English", "total"],
+			["Alex", 1, 1, 1, 1, 4],
+			["Joy", 1, 1, 1, 1, 4],
+			["Tim", 1, 1, 1, 1, 4],
+			["total", 3, 3, 3, 3, 12]
+		],
+		"drawPivotTable": false,
+		"pivotTableBoundary": [5, 6]
+	}
+}
+
+// export default sheetPivotTable;

+ 741 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/sheetPivotTableData.js

@@ -0,0 +1,741 @@
+window.sheetPivotTableData = {
+	"name": "PivotTableData",
+	"color": "",
+	"config": {
+		"merge": {}
+	},
+	"index": "6",
+	"chart": [],
+	"status": 0,
+	"order": "6",
+	"hide": 0,
+	"column": 18,
+	"row": 36,
+	"celldata": [{
+		"r": 0,
+		"c": 0,
+		"v": {
+			"m": "Mock test",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Mock test"
+		}
+	}, {
+		"r": 0,
+		"c": 1,
+		"v": {
+			"m": "student",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "student"
+		}
+	}, {
+		"r": 0,
+		"c": 2,
+		"v": {
+			"m": "class",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "class"
+		}
+	}, {
+		"r": 0,
+		"c": 3,
+		"v": {
+			"m": "subject",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "subject"
+		}
+	}, {
+		"r": 0,
+		"c": 4,
+		"v": {
+			"m": "score",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "score"
+		}
+	}, {
+		"r": 1,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 1,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Joy",
+			"m": "Joy"
+		}
+	}, {
+		"r": 1,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 1,
+		"c": 3,
+		"v": {
+			"m": "English",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "English"
+		}
+	}, {
+		"r": 1,
+		"c": 4,
+		"v": {
+			"v": 96,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "96"
+		}
+	}, {
+		"r": 2,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 2,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Joy",
+			"m": "Joy"
+		}
+	}, {
+		"r": 2,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 2,
+		"c": 3,
+		"v": {
+			"m": "mathematics",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "mathematics"
+		}
+	}, {
+		"r": 2,
+		"c": 4,
+		"v": {
+			"v": 110,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "110"
+		}
+	}, {
+		"r": 3,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 3,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Joy",
+			"m": "Joy"
+		}
+	}, {
+		"r": 3,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 3,
+		"c": 3,
+		"v": {
+			"m": "foreign language",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "foreign language"
+		}
+	}, {
+		"r": 3,
+		"c": 4,
+		"v": {
+			"v": 87,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "87"
+		}
+	}, {
+		"r": 4,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 4,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Joy",
+			"m": "Joy"
+		}
+	}, {
+		"r": 4,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 4,
+		"c": 3,
+		"v": {
+			"m": "science",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "science"
+		}
+	}, {
+		"r": 4,
+		"c": 4,
+		"v": {
+			"v": 266,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "266"
+		}
+	}, {
+		"r": 5,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 5,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Tim",
+			"m": "Tim"
+		}
+	}, {
+		"r": 5,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 5,
+		"c": 3,
+		"v": {
+			"m": "English",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "English"
+		}
+	}, {
+		"r": 5,
+		"c": 4,
+		"v": {
+			"v": 92,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "92"
+		}
+	}, {
+		"r": 6,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 6,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Tim",
+			"m": "Tim"
+		}
+	}, {
+		"r": 6,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 6,
+		"c": 3,
+		"v": {
+			"m": "mathematics",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "mathematics"
+		}
+	}, {
+		"r": 6,
+		"c": 4,
+		"v": {
+			"v": 100,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "100"
+		}
+	}, {
+		"r": 7,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 7,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Tim",
+			"m": "Tim"
+		}
+	}, {
+		"r": 7,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 7,
+		"c": 3,
+		"v": {
+			"m": "foreign language",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "foreign language"
+		}
+	}, {
+		"r": 7,
+		"c": 4,
+		"v": {
+			"v": 90,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "90"
+		}
+	}, {
+		"r": 8,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 8,
+		"c": 1,
+		"v": {
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Tim",
+			"m": "Tim"
+		}
+	}, {
+		"r": 8,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 8,
+		"c": 3,
+		"v": {
+			"m": "science",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "science"
+		}
+	}, {
+		"r": 8,
+		"c": 4,
+		"v": {
+			"v": 255,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "255"
+		}
+	}, {
+		"r": 9,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 9,
+		"c": 1,
+		"v": {
+			"m": "Alex",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Alex"
+		}
+	}, {
+		"r": 9,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 9,
+		"c": 3,
+		"v": {
+			"m": "English",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "English"
+		}
+	}, {
+		"r": 9,
+		"c": 4,
+		"v": {
+			"v": 108,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "108"
+		}
+	}, {
+		"r": 10,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 10,
+		"c": 1,
+		"v": {
+			"m": "Alex",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Alex"
+		}
+	}, {
+		"r": 10,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 10,
+		"c": 3,
+		"v": {
+			"m": "mathematics",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "mathematics"
+		}
+	}, {
+		"r": 10,
+		"c": 4,
+		"v": {
+			"v": 117,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "117"
+		}
+	}, {
+		"r": 11,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 11,
+		"c": 1,
+		"v": {
+			"m": "Alex",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Alex"
+		}
+	}, {
+		"r": 11,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 11,
+		"c": 3,
+		"v": {
+			"m": "foreign language",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "foreign language"
+		}
+	}, {
+		"r": 11,
+		"c": 4,
+		"v": {
+			"v": 88,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "88"
+		}
+	}, {
+		"r": 12,
+		"c": 0,
+		"v": {
+			"m": "first round",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "first round"
+		}
+	}, {
+		"r": 12,
+		"c": 1,
+		"v": {
+			"m": "Alex",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Alex"
+		}
+	}, {
+		"r": 12,
+		"c": 2,
+		"v": {
+			"m": "Class one",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "Class one"
+		}
+	}, {
+		"r": 12,
+		"c": 3,
+		"v": {
+			"m": "science",
+			"ct": {
+				"fa": "General",
+				"t": "g"
+			},
+			"v": "science"
+		}
+	}, {
+		"r": 12,
+		"c": 4,
+		"v": {
+			"v": 278,
+			"ct": {
+				"fa": "General",
+				"t": "n"
+			},
+			"m": "278"
+		}
+	}],
+	"ch_width": 4748,
+	"rh_height": 1790,
+	"luckysheet_select_save": [{
+		"row": [0, 0],
+		"column": [0, 0]
+	}],
+	"luckysheet_selection_range": [],
+	"scrollLeft": 0,
+	"scrollTop": 0
+}
+
+// export default sheetPivotTableData;

File diff suppressed because it is too large
+ 7066 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/sheetSparkline.js


File diff suppressed because it is too large
+ 1068 - 0
virgo.wzfrontend/src/main/resources/static/console/demoData/sheetTable.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/expendPlugins/chart/chartmix.css


File diff suppressed because it is too large
+ 12 - 0
virgo.wzfrontend/src/main/resources/static/console/expendPlugins/chart/chartmix.umd.min.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/expendPlugins/chart/chartmix.umd.min.js.map


+ 46 - 0
virgo.wzfrontend/src/main/resources/static/console/expendPlugins/print/print.css

@@ -0,0 +1,46 @@
+.luckysheet-print span[role="heading"] {
+    font-size: 30px;
+    font-weight: bold;
+}
+
+.luckysheet-print-suggest {
+    font-size: 12px;
+}
+
+.luckysheet-print-title {
+    font-weight: bold;
+    font-size: 18px;
+}
+
+.luckysheet-print-radio {
+    display: flex;
+}
+
+.luckysheet-print-radio > div {
+    width: 50%;
+}
+
+.luckysheet-print select {
+    height: 30px;
+}
+
+.luckysheet-print .luckysheet-modal-dialog-buttons {
+    display: flex;
+    flex-direction: row-reverse;
+}
+
+.luckysheet-print-box canvas {
+    display: block;
+}
+
+@media print {
+    :not(html, head, body, .luckysheet-print-preview, .luckysheet-print-preview *) {
+        display: none;
+    }
+    .luckysheet-print-break {
+        page-break-after: always;
+    }
+    #print-layout-options {
+        display: none;
+    }
+}

+ 0 - 0
virgo.wzfrontend/src/main/resources/static/console/expendPlugins/print/print.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/index.html


File diff suppressed because it is too large
+ 4511 - 0
virgo.wzfrontend/src/main/resources/static/console/luckysheet.umd.js


File diff suppressed because it is too large
+ 7 - 0
virgo.wzfrontend/src/main/resources/static/console/luckysheet.umd.js.map


File diff suppressed because it is too large
+ 24893 - 0
virgo.wzfrontend/src/main/resources/static/console/pdf/build/pdf.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/pdf/build/pdf.js.map


File diff suppressed because it is too large
+ 56522 - 0
virgo.wzfrontend/src/main/resources/static/console/pdf/build/pdf.worker.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/pdf/build/pdf.worker.js.map


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78-EUC-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78-EUC-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78-RKSJ-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78-RKSJ-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78ms-RKSJ-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/78ms-RKSJ-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/83pv-RKSJ-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/90ms-RKSJ-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/90ms-RKSJ-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/90msp-RKSJ-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/90msp-RKSJ-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/90pv-RKSJ-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/90pv-RKSJ-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Add-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Add-RKSJ-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Add-RKSJ-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Add-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-0.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-1.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-2.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-3.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-4.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-5.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-6.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-CNS1-UCS2.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-0.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-1.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-2.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-3.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-4.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-5.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-GB1-UCS2.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-0.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-1.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-2.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-3.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-4.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-5.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-6.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Japan1-UCS2.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Korea1-0.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Korea1-1.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Korea1-2.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Adobe-Korea1-UCS2.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/B5-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/B5-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/B5pc-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/B5pc-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/CNS-EUC-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/CNS-EUC-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/CNS1-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/CNS1-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/CNS2-H.bcmap


+ 3 - 0
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/CNS2-V.bcmap

@@ -0,0 +1,3 @@
+àRCopyright 1990-2009 Adobe Systems Incorporated.
+All rights reserved.
+See ./LICENSEáCNS2-H

BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/ETHK-B5-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/ETHK-B5-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/ETen-B5-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/ETen-B5-V.bcmap


+ 3 - 0
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/ETenms-B5-H.bcmap

@@ -0,0 +1,3 @@
+àRCopyright 1990-2009 Adobe Systems Incorporated.
+All rights reserved.
+See ./LICENSEá	ETen-B5-H` ^

BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/ETenms-B5-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/EUC-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/EUC-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Ext-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Ext-RKSJ-H.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Ext-RKSJ-V.bcmap


BIN
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/Ext-V.bcmap


+ 0 - 0
virgo.wzfrontend/src/main/resources/static/console/pdf/web/cmaps/GB-EUC-H.bcmap


Some files were not shown because too many files changed in this diff