yzx 5 ヶ月 前
コミット
f91144d7d2

+ 0 - 1
package.json

@@ -2,7 +2,6 @@
   "dependencies": {
     "@vant/weapp": "^1.11.4",
     "@varlet/ui": "^2.22.0",
-    "@wangeditor/editor-for-vue": "^1.0.2",
     "base64-js": "^1.5.1",
     "dayjs": "^1.11.10",
     "js-base64": "^3.7.6",

+ 190 - 150
uniapp/pages/index/detail.vue

@@ -179,154 +179,156 @@
 				</block>
 				
 				<block>
-					<uni-table border stripe emptyText="暂无更多数据">
-						<!-- 表头行 -->
-						<uni-tr>
-							<uni-th align="left" width=180>配件名称</uni-th>
-							<uni-th align="left" width=100>数量</uni-th>
-						</uni-tr>
-						<!-- 表格数据行 -->
-						<uni-tr v-if="datailData.accessories.w_battery !== 0">
-							<uni-td>无人机电池</uni-td>
-							<uni-td>{{ datailData.accessories.w_battery }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.w_remote_control !== 0"> 
-							<uni-td>无人机遥控器</uni-td>
-							<uni-td>{{ datailData.accessories.w_remote_control }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.w_remote_control_battery !== 0">
-							<uni-td>无人机遥控器电池</uni-td>
-							<uni-td>{{ datailData.accessories.w_remote_control_battery }}</uni-td>
-						</uni-tr>	 
-						<uni-tr v-if="datailData.accessories.w_charge_housekeeper !== 0">
-							<uni-td>无人机充电管家</uni-td>
-							<uni-td>{{ datailData.accessories.w_charge_housekeeper }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.w_propeller !== 0">
-							<uni-td>螺旋桨</uni-td>
-							<uni-td>{{ datailData.accessories.w_propeller }}</uni-td>
-						</uni-tr>	  
-						<uni-tr v-if="datailData.accessories.w_sd !== 0">
-							<uni-td>SD卡</uni-td>
-							<uni-td>{{ datailData.accessories.w_sd }}</uni-td>
-						</uni-tr>	 	 
-							 	 
-						<uni-tr v-if="datailData.accessories.q_battery !== 0">
-							<uni-td>全站仪主机电池</uni-td>
-							<uni-td>{{ datailData.accessories.q_battery }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.q_charge_housekeeper !== 0"> 
-							<uni-td>全站仪主机充电器</uni-td>
-							<uni-td>{{ datailData.accessories.q_charge_housekeeper }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.q_tripod !== 0">
-							<uni-td>全站仪三脚架</uni-td>
-							<uni-td>{{ datailData.accessories.q_tripod }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.q_prism !== 0">
-							<uni-td>全站仪棱镜</uni-td>
-							<uni-td>{{ datailData.accessories.q_prism }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.q_center_bar !== 0">
-							<uni-td>对中杆</uni-td>
-							<uni-td>{{ datailData.accessories.q_center_bar }}</uni-td>
-						</uni-tr>	  
-						<uni-tr v-if="datailData.accessories.q_data_line !== 0">
-							<uni-td>数据线</uni-td>
-							<uni-td>{{ datailData.accessories.q_data_line }}</uni-td>
-						</uni-tr>	 	 
-					
-						<uni-tr v-if="datailData.accessories.s_battery !== 0">
-							<uni-td>水准仪主机电池</uni-td>
-							<uni-td>{{ datailData.accessories.s_battery }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.s_charge_housekeeper !== 0"> 
-							<uni-td>水准仪充电器</uni-td>
-							<uni-td>{{ datailData.accessories.s_charge_housekeeper }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.s_tripod !== 0">
-							<uni-td>水准仪三脚架</uni-td>
-							<uni-td>{{ datailData.accessories.s_tripod }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.s_level_gauge !== 0">
-							<uni-td>水准尺</uni-td>
-							<uni-td>{{ datailData.accessories.s_level_gauge }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.s_ruler_pad !== 0">
-							<uni-td>水准尺尺垫</uni-td>
-							<uni-td>{{ datailData.accessories.s_ruler_pad }}</uni-td>
-						</uni-tr>	  
-						<uni-tr v-if="datailData.accessories.s_data_line !== 0">
-							<uni-td>水准仪电源线</uni-td>
-							<uni-td>{{ datailData.accessories.s_data_line }}</uni-td>
-						</uni-tr>		
-						<uni-tr v-if="datailData.accessories.s_adjustment_wrench !== 0">
-							<uni-td>水准仪调节扳手</uni-td>
-							<uni-td>{{ datailData.accessories.s_adjustment_wrench }}</uni-td>
-						</uni-tr>	
-						<uni-tr v-if="datailData.accessories.s_rain_proof_cloth !== 0">
-							<uni-td>防雨布</uni-td>
-							<uni-td>{{ datailData.accessories.s_rain_proof_cloth }}</uni-td>
-						</uni-tr>	 
-							 
+					<uni-table border stripe emptyText="暂无更多数据" >
+						<block v-if="datailData?.accessories != null">
+							<!-- 表头行 -->
+							<uni-tr>
+								<uni-th align="left" width=180>配件名称</uni-th>
+								<uni-th align="left" width=100>数量</uni-th>
+							</uni-tr>
+							<!-- 表格数据行 -->
+							<uni-tr v-if="datailData.accessories?.w_battery !== null && datailData.accessories?.w_battery !== 0">
+								<uni-td>无人机电池</uni-td>
+								<uni-td>{{ datailData.accessories.w_battery }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.w_remote_control !== null &&datailData.accessories?.w_remote_control !== 0"> 
+								<uni-td>无人机遥控器</uni-td>
+								<uni-td>{{ datailData.accessories.w_remote_control }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.w_remote_control_battery !== null &&datailData.accessories?.w_remote_control_battery !== 0">
+								<uni-td>无人机遥控器电池</uni-td>
+								<uni-td>{{ datailData.accessories.w_remote_control_battery }}</uni-td>
+							</uni-tr>	 
+							<uni-tr v-if="datailData.accessories?.w_charge_housekeeper !== null &&datailData.accessories?.w_charge_housekeeper !== 0">
+								<uni-td>无人机充电管家</uni-td>
+								<uni-td>{{ datailData.accessories.w_charge_housekeeper }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.w_propeller !== null &&datailData.accessories?.w_propeller !== 0">
+								<uni-td>螺旋桨</uni-td>
+								<uni-td>{{ datailData.accessories.w_propeller }}</uni-td>
+							</uni-tr>	  
+							<uni-tr v-if="datailData.accessories?.w_sd !== null &&datailData.accessories?.w_sd !== 0">
+								<uni-td>SD卡</uni-td>
+								<uni-td>{{ datailData.accessories.w_sd }}</uni-td>
+							</uni-tr>	 	 
+									 
+							<uni-tr v-if="datailData.accessories?.q_battery !== null &&datailData.accessories?.q_battery !== 0">
+								<uni-td>全站仪主机电池</uni-td>
+								<uni-td>{{ datailData.accessories.q_battery }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.q_charge_housekeeper !== null &&datailData.accessories?.q_charge_housekeeper !== 0"> 
+								<uni-td>全站仪主机充电器</uni-td>
+								<uni-td>{{ datailData.accessories.q_charge_housekeeper }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.q_tripod !== null &&datailData.accessories?.q_tripod !== 0">
+								<uni-td>全站仪三脚架</uni-td>
+								<uni-td>{{ datailData.accessories.q_tripod }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.q_prism !== null &&datailData.accessories?.q_prism !== 0">
+								<uni-td>全站仪棱镜</uni-td>
+								<uni-td>{{ datailData.accessories.q_prism }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.q_center_bar !== null &&datailData.accessories?.q_center_bar !== 0">
+								<uni-td>对中杆</uni-td>
+								<uni-td>{{ datailData.accessories.q_center_bar }}</uni-td>
+							</uni-tr>	  
+							<uni-tr v-if="datailData.accessories?.q_data_line !== null &&datailData.accessories?.q_data_line !== 0">
+								<uni-td>数据线</uni-td>
+								<uni-td>{{ datailData.accessories.q_data_line }}</uni-td>
+							</uni-tr>	 	 
 						
-							 
-						<uni-tr v-if="datailData.accessories.r_battery !== 0">
-							<uni-td>RTK主机电池</uni-td>
-							<uni-td>{{ datailData.accessories.r_battery }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.r_charge_housekeeper !== 0"> 
-							<uni-td>RTK充电器</uni-td>
-							<uni-td>{{ datailData.accessories.r_charge_housekeeper }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.r_charging_head !== 0">
-							<uni-td>手簿</uni-td>
-							<uni-td>{{ datailData.accessories.r_charging_head }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.r_hand_book_holder !== 0">
-							<uni-td>手簿夹</uni-td>
-							<uni-td>{{ datailData.accessories.r_hand_book_holder }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.r_hand_book_pen !== 0">
-							<uni-td>手簿笔</uni-td>
-							<uni-td>{{ datailData.accessories.r_hand_book_pen }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.r_charging_head !== 0">
-							<uni-td>手簿充电头</uni-td>
-							<uni-td>{{ datailData.accessories.r_charging_head }}</uni-td>
-						</uni-tr>
-						<uni-tr v-if="datailData.accessories.r_flashlight !== 0">
-							<uni-td>手电</uni-td>
-							<uni-td>{{ datailData.accessories.r_flashlight }}</uni-td>
-						</uni-tr>	  
-						<uni-tr v-if="datailData.accessories.r_connection_head !== 0">
-							<uni-td>连接头</uni-td>
-							<uni-td>{{ datailData.accessories.r_connection_head }}</uni-td>
-						</uni-tr>		
-						<uni-tr v-if="datailData.accessories.r_height_measuring_plate !== 0">
-							<uni-td>测高片</uni-td>
-							<uni-td>{{ datailData.accessories.r_height_measuring_plate }}</uni-td>
-						</uni-tr>	
-						<uni-tr v-if="datailData.accessories.r_long_antenna !== 0">
-							<uni-td>长天线</uni-td>
-							<uni-td>{{ datailData.accessories.r_long_antenna }}</uni-td>
-						</uni-tr>	   
-						<uni-tr v-if="datailData.accessories.r_short_antenna !== 0">
-							<uni-td>短天线</uni-td>
-							<uni-td>{{ datailData.accessories.r_short_antenna }}</uni-td>
-						</uni-tr>	   
-						<uni-tr v-if="datailData.accessories.r_instruction_manual !== 0">
-							<uni-td>说明书</uni-td>
-							<uni-td>{{ datailData.accessories.r_instruction_manual }}</uni-td>
-						</uni-tr>	   
-						<uni-tr v-if="datailData.accessories.r_cdrow !== 0">
-							<uni-td>光盘</uni-td>
-							<uni-td>{{ datailData.accessories.r_cdrow }}</uni-td>
-						</uni-tr>	   
-						<uni-tr v-if="datailData.accessories.r_usb !== 0">
-							<uni-td>USB线</uni-td>
-							<uni-td>{{ datailData.accessories.r_usb }}</uni-td>
-						</uni-tr>	   
+							<uni-tr v-if="datailData.accessories?.s_battery !== null &&datailData.accessories?.s_battery !== 0">
+								<uni-td>水准仪主机电池</uni-td>
+								<uni-td>{{ datailData.accessories.s_battery }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.s_charge_housekeeper !== null &&datailData.accessories?.s_charge_housekeeper !== 0"> 
+								<uni-td>水准仪充电器</uni-td>
+								<uni-td>{{ datailData.accessories.s_charge_housekeeper }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.s_tripod !== null &&datailData.accessories?.s_tripod !== 0">
+								<uni-td>水准仪三脚架</uni-td>
+								<uni-td>{{ datailData.accessories.s_tripod }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.s_level_gauge !== null &&datailData.accessories?.s_level_gauge !== 0">
+								<uni-td>水准尺</uni-td>
+								<uni-td>{{ datailData.accessories.s_level_gauge }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.s_ruler_pad !== null &&datailData.accessories?.s_ruler_pad !== 0">
+								<uni-td>水准尺尺垫</uni-td>
+								<uni-td>{{ datailData.accessories.s_ruler_pad }}</uni-td>
+							</uni-tr>	  
+							<uni-tr v-if="datailData.accessories?.s_data_line !== null &&datailData.accessories?.s_data_line !== 0">
+								<uni-td>水准仪电源线</uni-td>
+								<uni-td>{{ datailData.accessories.s_data_line }}</uni-td>
+							</uni-tr>		
+							<uni-tr v-if="datailData.accessories?.s_adjustment_wrench !== null &&datailData.accessories?.s_adjustment_wrench !== 0">
+								<uni-td>水准仪调节扳手</uni-td>
+								<uni-td>{{ datailData.accessories.s_adjustment_wrench }}</uni-td>
+							</uni-tr>	
+							<uni-tr v-if="datailData.accessories?.s_rain_proof_cloth !== null &&datailData.accessories?.s_rain_proof_cloth !== 0">
+								<uni-td>防雨布</uni-td>
+								<uni-td>{{ datailData.accessories.s_rain_proof_cloth }}</uni-td>
+							</uni-tr>	 
+								 
+							
+								 
+							<uni-tr v-if="datailData.accessories?.r_battery !== null &&datailData.accessories?.r_battery !== 0">
+								<uni-td>RTK主机电池</uni-td>
+								<uni-td>{{ datailData.accessories.r_battery }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.r_charge_housekeeper !== null &&datailData.accessories?.r_charge_housekeeper !== 0"> 
+								<uni-td>RTK充电器</uni-td>
+								<uni-td>{{ datailData.accessories.r_charge_housekeeper }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.r_charging_head !== null &&datailData.accessories?.r_charging_head !== 0">
+								<uni-td>手簿</uni-td>
+								<uni-td>{{ datailData.accessories.r_charging_head }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.r_hand_book_holder !== null &&datailData.accessories?.r_hand_book_holder !== 0">
+								<uni-td>手簿夹</uni-td>
+								<uni-td>{{ datailData.accessories.r_hand_book_holder }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.r_hand_book_pen !== null &&datailData.accessories?.r_hand_book_pen !== 0">
+								<uni-td>手簿笔</uni-td>
+								<uni-td>{{ datailData.accessories.r_hand_book_pen }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.r_charging_head !== null &&datailData.accessories?.r_charging_head !== 0">
+								<uni-td>手簿充电头</uni-td>
+								<uni-td>{{ datailData.accessories.r_charging_head }}</uni-td>
+							</uni-tr>
+							<uni-tr v-if="datailData.accessories?.r_flashlight !== null &&datailData.accessories?.r_flashlight !== 0">
+								<uni-td>手电</uni-td>
+								<uni-td>{{ datailData.accessories.r_flashlight }}</uni-td>
+							</uni-tr>	  
+							<uni-tr v-if="datailData.accessories?.r_connection_head !== null &&datailData.accessories?.r_connection_head !== 0">
+								<uni-td>连接头</uni-td>
+								<uni-td>{{ datailData.accessories.r_connection_head }}</uni-td>
+							</uni-tr>		
+							<uni-tr v-if="datailData.accessories?.r_height_measuring_plate !== null &&datailData.accessories?.r_height_measuring_plate !== 0">
+								<uni-td>测高片</uni-td>
+								<uni-td>{{ datailData.accessories.r_height_measuring_plate }}</uni-td>
+							</uni-tr>	
+							<uni-tr v-if="datailData.accessories?.r_long_antenna !== null &&datailData.accessories?.r_long_antenna !== 0">
+								<uni-td>长天线</uni-td>
+								<uni-td>{{ datailData.accessories.r_long_antenna }}</uni-td>
+							</uni-tr>	   
+							<uni-tr v-if="datailData.accessories?.r_short_antenna !== null &&datailData.accessories?.r_short_antenna !== 0">
+								<uni-td>短天线</uni-td>
+								<uni-td>{{ datailData.accessories.r_short_antenna }}</uni-td>
+							</uni-tr>	   
+							<uni-tr v-if="datailData.accessories?.r_instruction_manual !== null &&datailData.accessories?.r_instruction_manual !== 0">
+								<uni-td>说明书</uni-td>
+								<uni-td>{{ datailData.accessories.r_instruction_manual }}</uni-td>
+							</uni-tr>	   
+							<uni-tr v-if="datailData.accessories?.r_cdrow !== null &&datailData.accessories?.r_cdrow !== 0">
+								<uni-td>光盘</uni-td>
+								<uni-td>{{ datailData.accessories.r_cdrow }}</uni-td>
+							</uni-tr>	   
+							<uni-tr v-if="datailData.accessories?.r_usb !== null &&datailData.accessories?.r_usb !== 0">
+								<uni-td>USB线</uni-td>
+								<uni-td>{{ datailData.accessories.r_usb }}</uni-td>
+							</uni-tr>	   
+						</block>
 					</uni-table>
 				</block>
 			
@@ -458,7 +460,7 @@
 	const status = ref(['待审批', '已驳回', '待使用', '使用中', '已归还', '已逾期', '领导审批中', '领导驳回'])
 	const remark = ref(null)
 	var analyze = ref(null)
-	var datailData = ref(null)
+	// var datailData = ref(null)
 	let userInfo = wx.getStorageSync('userInfos')
 	const yiqisum = ref(null)
 	const xiangqinData = ref(null)
@@ -470,8 +472,46 @@
 	// 存储图片
 	const fileList1 = ref([
 
-	])
+		])
+			
 
+	let datailData = ref({
+	  accessories: {
+		w_battery: 0,
+		w_remote_control: 0,
+		w_remote_control_battery: 0,
+		w_charge_housekeeper: 0,
+		w_propeller: 0,
+		w_sd: 0,
+		q_battery: 0,
+		q_charge_housekeeper: 0,
+		q_tripod: 0,
+		q_prism: 0,
+		q_center_bar: 0,
+		q_data_line: 0,
+		s_battery: 0,
+		s_charge_housekeeper: 0,
+		s_tripod: 0,
+		s_level_gauge: 0,
+		s_ruler_pad: 0,
+		s_data_line: 0,
+		s_adjustment_wrench: 0,
+		s_rain_proof_cloth: 0,
+		r_battery: 0,
+		r_charge_housekeeper: 0,
+		r_charging_head: 0,
+		r_hand_book_holder: 0,
+		r_hand_book_pen: 0,
+		r_flashlight: 0,
+		r_connection_head: 0,
+		r_height_measuring_plate: 0,
+		r_long_antenna: 0,
+		r_short_antenna: 0,
+		r_instruction_manual: 0,
+		r_cdrow: 0,
+		r_usb: 0
+	  }
+	});
 	// 数据
 	onLoad(async (event) => {
 		wx.showLoading({
@@ -485,7 +525,7 @@
 		xiangqinData.value = await requestApi('admin/borrow.BorrowApp/edit?id=' +
 			analyze + '&server=1')
 		datailData.value = xiangqinData.value.data.row
-		console.log('ds', datailData.value)
+		 
 		wx.hideLoading()
 		const updatedArray = datailData.value.sign.map(item => ({
 			...item,

+ 0 - 3
web/.vscode/extensions.json

@@ -1,3 +0,0 @@
-{
-    "recommendations": ["vue.volar", "esbenp.prettier-vscode", "dbaeumer.vscode-eslint"]
-}

+ 0 - 14
web/.vscode/settings.json

@@ -1,14 +0,0 @@
-{
-    "[json]": {
-        "editor.defaultFormatter": "esbenp.prettier-vscode"
-    },
-    "[jsonc]": {
-        "editor.defaultFormatter": "esbenp.prettier-vscode"
-    },
-    "[typescript]": {
-        "editor.defaultFormatter": "esbenp.prettier-vscode"
-    },
-    "[vue]": {
-        "editor.defaultFormatter": "esbenp.prettier-vscode"
-    }
-}

+ 33 - 28
web/package.json

@@ -1,59 +1,64 @@
 {
     "name": "build-admin",
-    "version": "2.1.1",
+    "version": "2.0.5",
     "license": "Apache-2.0",
     "type": "module",
     "scripts": {
         "dev": "vite --force",
         "build": "vite build && esno ./src/utils/build.ts",
+        "b2": "vite build",
         "lint": "eslint --ext .js,.jsx,.ts,.vue src",
         "lint-fix": "eslint --ext .js,.jsx,.ts,.vue src --fix",
-        "format": "npx prettier --write .",
-        "typecheck": "vue-tsc --noEmit"
+        "format": "npx prettier --write ."
     },
     "dependencies": {
         "@element-plus/icons-vue": "2.3.1",
-        "@vueuse/core": "10.10.0",
-        "axios": "1.7.4",
-        "echarts": "5.5.0",
-        "element-plus": "2.7.8",
+        "@kjgl77/datav-vue3": "^1.7.3",
+        "@vueuse/core": "10.7.0",
+        "@wangeditor/editor": "^5.1.1",
+        "@wangeditor/editor-for-vue": "^5.1.12",
+        "axios": "1.6.2",
+        "countup.js": "2.8.0",
+        "echarts": "^5.4.3",
+        "element-plus": "2.4.4",
+        "esno": "4.0.0",
         "file-saver": "^2.0.5",
         "font-awesome": "4.7.0",
         "js-file-download": "^0.4.12",
         "jszip": "^3.10.1",
         "lodash-es": "4.17.21",
+        "md-editor-v3": "^4.2.1",
         "mitt": "3.0.1",
         "nprogress": "0.2.0",
         "pinia": "2.1.7",
         "pinia-plugin-persistedstate": "3.2.1",
-        "qrcode": "^1.5.4",
+        "qrcode": "^1.5.3",
         "screenfull": "6.0.2",
-        "sortablejs": "1.15.2",
-        "v-code-diff": "1.12.1",
-        "vue": "3.4.38",
-        "vue-i18n": "9.13.1",
+        "sortablejs": "1.15.1",
+        "v-code-diff": "1.8.0",
+        "vue": "3.3.13",
+        "vue-i18n": "9.2.2",
         "vue-qr": "4.0.9",
-        "vue-router": "4.4.3"
+        "vue-router": "4.2.5",
+        "ws": "^8.18.0"
     },
     "devDependencies": {
-        "@types/file-saver": "^2.0.7",
         "@types/lodash-es": "4.17.12",
-        "@types/node": "20.14.0",
+        "@types/node": "20.10.5",
         "@types/nprogress": "0.2.3",
-        "@types/sortablejs": "1.15.8",
-        "@typescript-eslint/eslint-plugin": "7.12.0",
-        "@typescript-eslint/parser": "7.12.0",
-        "@vitejs/plugin-vue": "5.0.5",
-        "async-validator": "4.2.5",
+        "@types/prettier": "^2.7.3",
+        "@types/sortablejs": "1.15.7",
+        "@typescript-eslint/eslint-plugin": "6.15.0",
+        "@typescript-eslint/parser": "6.15.0",
+        "@vitejs/plugin-vue": "4.5.2",
+        "async-validator": "^4.2.5",
         "eslint": "8.56.0",
         "eslint-config-prettier": "9.1.0",
-        "eslint-plugin-vue": "9.26.0",
-        "esno": "4.7.0",
-        "prettier": "3.3.0",
-        "sass": "1.77.4",
-        "typescript": "5.4.5",
-        "vite": "5.2.12",
-        "vue-eslint-parser": "9.4.3",
-        "vue-tsc": "2.0.21"
+        "eslint-plugin-vue": "9.19.2",
+        "prettier": "3.1.1",
+        "sass": "1.69.5",
+        "typescript": "5.3.3",
+        "vite": "^5.0.12",
+        "vue-eslint-parser": "9.3.2"
     }
 }

+ 0 - 0
web/src/Build/B.data → web/public/assets/Build/B.data


+ 0 - 0
web/src/Build/B.framework.js → web/public/assets/Build/B.framework.js


+ 0 - 0
web/src/Build/B.loader.js → web/public/assets/Build/B.loader.js


+ 0 - 0
web/src/Build/B.wasm → web/public/assets/Build/B.wasm


+ 3 - 0
web/src/App.vue

@@ -3,6 +3,9 @@
         <Suspense>
         <router-view></router-view>
         </Suspense>
+        <keep-alive>  
+        <Unity v-if="route.path === '/home'" />
+        </keep-alive>
     </el-config-provider>
 </template>
 <script setup lang="ts">

+ 17 - 0
web/src/components/ReEcharts/index.vue

@@ -19,6 +19,23 @@ let myChart: ECharts;
 // eslint-disable-next-line no-undef
 let timer: string | number | NodeJS.Timeout | undefined;
 
+
+// // 动态设置字体大小
+// function setFontSize() {
+//     var vw = window.innerWidth * 0.001; // 1vw等于window.innerWidth的1%
+//     var fontSize = Math.ceil(vw * 0.1); // 假设你想设置为0.1vw大小
+//     return fontSize;
+// }
+
+
+
+// // 添加窗口大小变化监听事件
+// window.addEventListener('resize', function() {
+//     myChart.resize();
+//     option.title.textStyle.fontSize = setFontSize(); // 更新字体大小
+//     myChart.setOption(option);
+// });
+
 // 初始化echarts
 const initChart = (): void => {
 	if (myChart !== undefined) {

+ 44 - 15
web/src/components/ReEcharts/lend.vue

@@ -17,6 +17,22 @@ import * as echarts from 'echarts'
 export default {
     // name: 'AutoSwitchTabs',  
     setup() {
+
+        // 动态设置字体大小
+        function setFontSize() {
+            var vw = window.innerWidth * 0.001; // 1vw等于window.innerWidth的1%
+            var fontSize = Math.ceil(vw * 6); // 假设你想设置为0.1vw大小
+            return fontSize;
+        }
+
+
+
+        // 添加窗口大小变化监听事件
+        window.addEventListener('resize', function () {
+            Echarts.resize();
+            option.series.label.textStyle.fontSize = setFontSize(); // 更新字体大小
+            Echarts.setOption(option);
+        });
         //图表
         function init() {
             // console.log(111)
@@ -57,11 +73,14 @@ export default {
                 },
                 legend: {
                     data: ["科研", "教学"],
-                    icon: '',
-                    top: '20',
+            
+                    top: setFontSize(),
+                    icon: "roundRect", // 修改形状
+                    itemHeight: setFontSize(), // 修改icon图形大小
+                    itemWidth: setFontSize()*1.5,//图例图标的宽度
                     textStyle: {
                         color: "#fff",
-                        fontSize: 14,
+                        fontSize: setFontSize(),
                     },
                     // itemWidth: 20,
                     // itemHeight: 7,
@@ -73,20 +92,20 @@ export default {
                     // 名称
                     name: {
                         textStyle: {
-                            fontSize: 15, // 设置字体大小
+                            fontSize: setFontSize(), // 设置字体大小
                             color: '#fff' // 设置字体颜色
                         }
                     },
                     // 轴线上的文本标签
                     axisLabel: {
                         textStyle: {
-                            fontSize: 14, // 设置字体大小
+                            fontSize: setFontSize(), // 设置字体大小
                             color: '#00FF00' // 设置字体颜色
                         }
                     },
                     splitNumber: 5, // 圈数
                     radius: '70%',
-                    center: ["50%", "50%"], // 中心点
+                    center: ["50%", "60%"], // 中心点
 
                     indicator: dataMax, // 配置各个维度的最大值
                     shape: 'polygon', // 配置雷达图最外层的图形 circle polygon
@@ -110,9 +129,19 @@ export default {
                 },
                 series: [{
                     type: 'radar', // radar 此图表时一个雷达图
+                    emphasis: {
+                        itemStyle: {
+                            shadowBlur: 10,
+                            shadowOffsetX: 0,
+                            shadowColor: 'rgba(0, 0, 0, 0.5)'
+                        }
+                    },
                     //  symbolSize: 20,
                     label: { // 设置标签的样式
-                        show: true // 显示数值
+                        show: true, // 显示数值
+                        textStyle: {
+                            fontSize: setFontSize(), // 标签字体大小
+                        }
                     },
                     lineStyle: {
 
@@ -129,14 +158,14 @@ export default {
                         }
                     }, // 将每一个产品的雷达图形成阴影的面积
                     data: [
-                    {
-                        name: '教学',
-                        value: [419, 290,191, 160, 92]
-                    },{
-                        name: '科研',
-                        value: [286, 174, 93, 86, 95]
-                    },
-                    
+                        {
+                            name: '教学',
+                            value: [419, 290, 191, 160, 92]
+                        }, {
+                            name: '科研',
+                            value: [286, 174, 93, 86, 95]
+                        },
+
                     ]
                 }]
             };

+ 0 - 205
web/src/components/mixins/editor/wang.vue

@@ -1,205 +0,0 @@
-<template>
-    <div v-if="state.mounted" :style="style" class="ba-editor wangeditor">
-        <Toolbar class="wangeditor-toolbar" :editor="editorRef" :defaultConfig="toolbarConfig" :mode="mode" />
-        <Editor
-            :style="state.editorStyle"
-            v-model="state.value"
-            :defaultConfig="state.editorConfig"
-            :mode="mode"
-            @onCreated="handleCreated"
-            @onChange="handleChange"
-            v-bind="$attrs"
-        />
-    </div>
-</template>
-
-<script setup lang="ts">
-import '@wangeditor/editor/dist/css/style.css' // 引入 css
-import { onBeforeUnmount, reactive, shallowRef, onMounted, CSSProperties, watch } from 'vue'
-import { IEditorConfig, IToolbarConfig, i18nChangeLanguage } from '@wangeditor/editor'
-import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
-import { useConfig } from '/@/stores/config'
-import { fileUpload } from '/@/api/common'
-import NProgress from 'nprogress'
-
-interface Props {
-    // 编辑区高度
-    height?: string
-    mode?: 'default' | 'simple'
-    placeholder?: string
-    modelValue: string | null
-    // https://www.wangeditor.com/v5/toolbar-config.html#getconfig
-    toolbarConfig?: Partial<IToolbarConfig>
-    // https://www.wangeditor.com/v5/editor-config.html#placeholder
-    editorConfig?: Partial<IEditorConfig>
-    // 编辑区style
-    editorStyle?: CSSProperties
-    // 整体的style
-    style?: CSSProperties
-    // 图片和文件上传到服务器而不是云存储
-    fileForceLocal?: boolean
-}
-
-type VideoInsertFnType = (url: string) => void
-type ImgInsertFnType = (url: string, alt: string, href: string) => void
-
-const props = withDefaults(defineProps<Props>(), {
-    height: '320px',
-    mode: 'default',
-    placeholder: '请输入内容...',
-    modelValue: '',
-    toolbarConfig: () => {
-        return {
-            excludeKeys: ['|'],
-        }
-    },
-    editorConfig: () => {
-        return {}
-    },
-    editorStyle: () => {
-        {
-            return {}
-        }
-    },
-    style: () => {
-        return {}
-    },
-    fileForceLocal: false,
-})
-
-const config = useConfig()
-const editorRef = shallowRef()
-const emits = defineEmits<{
-    (e: 'update:modelValue', value: string): void
-}>()
-
-const state: {
-    mounted: boolean
-    value: string
-    editorConfig: Partial<IEditorConfig>
-    editorStyle: CSSProperties
-} = reactive({
-    mounted: false,
-    value: !props.modelValue ? '<p></p>' : props.modelValue,
-    editorConfig: props.editorConfig,
-    editorStyle: props.editorStyle,
-})
-
-onMounted(() => {
-    i18nChangeLanguage(config.lang.defaultLang == 'zh-cn' ? 'zh-CN' : config.lang.defaultLang)
-    state.editorConfig.placeholder = props.placeholder
-
-    // 图片上传配置
-    state.editorConfig.MENU_CONF = {}
-    state.editorConfig.MENU_CONF['uploadImage'] = {
-        fieldName: 'file',
-        maxFileSize: 10 * 1024 * 1024, // 10M
-        async customUpload(file: File, insertFn: ImgInsertFnType) {
-            NProgress.configure({ showSpinner: true, trickle: false })
-            NProgress.start()
-            let fd = new FormData()
-            fd.append('file', file)
-            fileUpload(fd, {}, props.fileForceLocal, {
-                onUploadProgress: (evt) => {
-                    NProgress.set(evt.progress!)
-                },
-            }).then((res) => {
-                if (res.code == 1) {
-                    insertFn(res.data.file.full_url, res.data.file.name, res.data.file.full_url)
-                }
-                NProgress.done()
-            })
-        },
-    }
-
-    // 视频上传配置
-    state.editorConfig.MENU_CONF['uploadVideo'] = {
-        fieldName: 'file',
-        async customUpload(file: File, insertFn: VideoInsertFnType) {
-            NProgress.configure({ showSpinner: true, trickle: false })
-            NProgress.start()
-            let fd = new FormData()
-            fd.append('file', file)
-            fileUpload(fd, {}, props.fileForceLocal, {
-                onUploadProgress: (evt) => {
-                    NProgress.set(evt.progress!)
-                },
-            }).then((res) => {
-                if (res.code == 1) {
-                    insertFn(res.data.file.full_url)
-                }
-                NProgress.done()
-            })
-        },
-    }
-
-    state.editorStyle.height = props.height
-    state.editorStyle['overflow-y'] = 'hidden'
-    state.mounted = true
-})
-
-// 组件销毁时,也及时销毁编辑器
-onBeforeUnmount(() => {
-    if (editorRef.value == null) return
-    editorRef.value.destroy()
-})
-
-const handleCreated = (editor: any) => {
-    editorRef.value = editor // 记录 editor 实例
-}
-
-const handleChange = () => {
-    emits('update:modelValue', editorRef.value.getHtml())
-}
-
-const getRef = () => {
-    return editorRef.value
-}
-
-defineExpose({
-    getRef,
-})
-
-watch(
-    () => props.modelValue,
-    (newVal) => {
-        state.value = !newVal ? '<p></p>' : newVal
-    }
-)
-</script>
-
-<style scoped lang="scss">
-.ba-editor {
-    border: 1px solid var(--el-border-color-lighter);
-    z-index: 9999;
-    :deep(.w-e-scroll) {
-        scrollbar-width: none;
-        &::-webkit-scrollbar {
-            width: 5px;
-        }
-        &::-webkit-scrollbar-thumb {
-            background: #eaeaea;
-            border-radius: var(--el-border-radius-base);
-            box-shadow: none;
-            -webkit-box-shadow: none;
-        }
-        &:hover {
-            &::-webkit-scrollbar-thumb:hover {
-                background: #c8c9cc;
-            }
-        }
-    }
-}
-.wangeditor-toolbar {
-    border-bottom: 1px solid var(--el-border-color-lighter);
-}
-
-// 暗黑样式
-@at-root .dark {
-    .ba-editor {
-        --w-e-textarea-bg-color: var(--ba-bg-color-overlay);
-        --w-e-toolbar-bg-color: var(--ba-bg-color-overlay);
-        --w-e-toolbar-border-color: var(--el-color-info-light-3);
-    }
-}
-</style>

+ 1 - 1
web/src/lang/backend/zh-cn/dashboard.ts

@@ -19,7 +19,7 @@ export default {
     Epic: 'RTK',
     Rare: '全站仪',
     Excellent: '无人机',
-    Common: '其他',
+    Common: '配件及其他',
     sz: '水准仪',
     rtk: 'RTK',
     qzy: '全站仪',

+ 51 - 135
web/src/layouts/frontend/Home.vue

@@ -1,22 +1,8 @@
 <template>
     <!-- <Particle /> -->
-    <div class="bg">
-        <div id="unity-container" class="unity-desktop">
-            <canvas id="unity-canvas" tabindex="-1"></canvas>
-            <div id="unity-loading-bar">
-                <div id="unity-logo"></div>
-                <div id="unity-progress-bar-empty">
-                    <div id="unity-progress-bar-full"></div>
-                </div>
-            </div>
-            <div id="unity-warning"> </div>
-            <div id="unity-footer">
-                <!-- <div id="unity-webgl-logo"></div>
-        <div id="unity-fullscreen-button"></div>
-        <div id="unity-build-title">2Building</div> -->
-            </div>
-        </div>
-    </div>
+    <!-- <div class="bg">
+      <Unity/>
+    </div> -->
 
     <div class="visual">
         <div class="visual_left">
@@ -41,8 +27,9 @@
                                 </div>
                             </div>
                             <div class="jieshao-bottom">
-                             <div class="js-flex">
-                                <div class="js-tb"><img src="/@/assets/sxt.png" alt="" style="width: 1.5vw;margin-left: 1.1vw;margin-top: .75vw;"></div>
+                                <div class="js-flex">
+                                    <div class="js-tb"><img src="/@/assets/sxt.png" alt=""
+                                            style="width: 1.5vw;margin-left: 1.1vw;margin-top: .75vw;"></div>
                                     <div class="js-top">
 
                                         <div>摄像头</div>
@@ -50,10 +37,11 @@
                                             25
                                         </div>
                                     </div>
-                             </div>
+                                </div>
 
-                             <div class="js-flex">
-                                <div class="js-tb"><img src="/@/assets/xf.png" alt="" style="width: 1.4vw;margin-left: 1.1vw;margin-top: .75vw;"></div>
+                                <div class="js-flex">
+                                    <div class="js-tb"><img src="/@/assets/xf.png" alt=""
+                                            style="width: 1.4vw;margin-left: 1.1vw;margin-top: .75vw;"></div>
                                     <div class="js-top">
 
                                         <div>消防设施</div>
@@ -61,9 +49,10 @@
                                             10
                                         </div>
                                     </div>
-                             </div>
-                             <div class="js-flex">
-                                <div class="js-tb"><img src="/@/assets/yg.png" alt="" style="width: 1.5vw;margin-left: 1vw;margin-top: .75vw;"></div>
+                                </div>
+                                <div class="js-flex">
+                                    <div class="js-tb"><img src="/@/assets/yg.png" alt=""
+                                            style="width: 1.5vw;margin-left: 1vw;margin-top: .75vw;"></div>
                                     <div class="js-top">
 
                                         <div>烟感</div>
@@ -71,7 +60,7 @@
                                             23
                                         </div>
                                     </div>
-                             </div>
+                                </div>
 
                                 <div></div>
                                 <div></div>
@@ -174,8 +163,6 @@ import Echarts from '/@/components/ReEcharts/index.vue';
 import LendEcharts from '/@/components/ReEcharts/lend.vue';
 
 import createAxios from '/@/utils/axios'
-import "/@/Build/B.loader.js"
-import "/@/Build/B.framework.js"
 
 const router = useRouter()
 
@@ -234,103 +221,17 @@ const checkBackendStatus: any = async () => {
     })
 };
 
+// 动态设置字体大小
+function setFontSize() {
+    var vw = window.innerWidth * 0.001; // 1vw等于window.innerWidth的1%
+    var fontSize = Math.ceil(vw * 6); // 假设你想设置为0.1vw大小
+    return fontSize;
+}
+
+
 onMounted(() => {
     // 每5秒轮询一次
     timer.value = setInterval(checkBackendStatus, 5000);
-    /* bg模型 */
-
-    var container = document.querySelector("#unity-container");
-    var canvas = document.querySelector("#unity-canvas");
-    var loadingBar = document.querySelector("#unity-loading-bar");
-    var progressBarFull = document.querySelector("#unity-progress-bar-full");
-    var fullscreenButton = document.querySelector("#unity-fullscreen-button");
-    var warningBanner = document.querySelector("#unity-warning");
-
-    // Shows a temporary message banner/ribbon for a few seconds, or
-    // a permanent error message on top of the canvas if type=='error'.
-    // If type=='warning', a yellow highlight color is used.
-    // Modify or remove this function to customize the visually presented
-    // way that non-critical warnings and error messages are presented to the
-    // user.
-    function unityShowBanner(msg, type) {
-        function updateBannerVisibility() {
-            warningBanner.style.display = warningBanner.children.length ? 'block' : 'none';
-        }
-        var div = document.createElement('div');
-        div.innerHTML = msg;
-        warningBanner.appendChild(div);
-        if (type == 'error') div.style = 'background: red; padding: 10px;';
-        else {
-            if (type == 'warning') div.style = 'background: yellow; padding: 10px;';
-            setTimeout(function () {
-                warningBanner.removeChild(div);
-                updateBannerVisibility();
-            }, 5000);
-        }
-        updateBannerVisibility();
-    }
-
-    var buildUrl = "./assets";
-    var loaderUrl = buildUrl + "/B.loader.js";
-    var config = {
-        dataUrl: buildUrl + "/B.data",
-        frameworkUrl: buildUrl + "/B.framework.js",
-        codeUrl: buildUrl + "/B.wasm",
-        streamingAssetsUrl: "StreamingAssets",
-        companyName: "DefaultCompany",
-        productName: "2Building",
-        productVersion: "0.1.0",
-        showBanner: unityShowBanner,
-    };
-
-    // By default, Unity keeps WebGL canvas render target size matched with
-    // the DOM size of the canvas element (scaled by window.devicePixelRatio)
-    // Set this to false if you want to decouple this synchronization from
-    // happening inside the engine, and you would instead like to size up
-    // the canvas DOM size and WebGL render target sizes yourself.
-    // config.matchWebGLToCanvasSize = false;
-
-    if (/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)) {
-        // Mobile device style: fill the whole browser client area with the game canvas:
-
-        var meta = document.createElement('meta');
-        meta.name = 'viewport';
-        meta.content = 'width=device-width, height=device-height, initial-scale=1.0, user-scalable=no, shrink-to-fit=yes';
-        document.getElementsByTagName('head')[0].appendChild(meta);
-        container.className = "unity-mobile";
-        canvas.className = "unity-mobile";
-
-        // To lower canvas resolution on mobile devices to gain some
-        // performance, uncomment the following line:
-        // config.devicePixelRatio = 1;
-
-
-    } else {
-        // Desktop style: Render the game canvas in a window that can be maximized to fullscreen:
-
-        canvas.style.width = "960px";
-        canvas.style.height = "600px";
-    }
-
-    loadingBar.style.display = "block";
-
-    var script = document.createElement("script");
-    script.src = loaderUrl;
-    script.onload = () => {
-        createUnityInstance(canvas, config, (progress) => {
-            progressBarFull.style.width = 100 * progress + "%";
-        }).then((unityInstance) => {
-            loadingBar.style.display = "none";
-            //                fullscreenButton.onclick = () => {
-            //                  unityInstance.SetFullscreen(1);
-            //                };
-        }).catch((message) => {
-            alert(message);
-        });
-    };
-
-    document.body.appendChild(script);
-
 });
 
 onUnmounted(() => {
@@ -345,16 +246,22 @@ const option = reactive({
     //     subtext: 'Fake Data',
     //     left: 'center'
     //   },
-    color: ['#05f8d6', '#0082fc', '#fdd845', '#22ed7c','#09b0d3', '#f9e264', '	#40E0D0', '#4169E1','#1E90FF'],
+    color: ['#05f8d6', '#0082fc', '#fdd845', '#22ed7c', '#09b0d3', '#f9e264', '	#40E0D0', '#4169E1', '#1E90FF'],
     tooltip: {
         trigger: 'item'
     },
     legend: {
         orient: 'horizontal',
         left: 'center',
-        top: 20,
+        top: setFontSize(),
+        icon: "roundRect", // 修改形状
+        itemHeight:setFontSize(), // 修改icon图形大小
+        itemWidth: setFontSize()*1.5,//图例图标的宽度
+        // itemGap: 24, // 修改间距
         textStyle: {
             color: '#fff',
+            fontSize: setFontSize(),
+
         }
     },
     series: [
@@ -388,7 +295,12 @@ const option = reactive({
             },
             label: {
                 formatter: '{b}\n-----------\n{c}台\t{d}%',
-
+                textStyle: {
+                    fontSize: setFontSize() // 动态设置字体大小// 标签字体大小
+                    // fontWeight: 'bold', // 标签字体加粗
+                    // fontStyle: 'italic', // 标签字体斜体
+                    // fontFamily: 'Arial' // 标签字体
+                }
             },
         }
     ]
@@ -839,11 +751,12 @@ const option = reactive({
     margin-left: 1vw;
 }
 
-.js-right div{
+.js-right div {
     width: 12vw;
     background-size: 100%;
-    background-image:url("../../assets/tb.png");
-	background-repeat:no-repeat;/*设置背景不重复*/
+    background-image: url("../../assets/tb.png");
+    background-repeat: no-repeat;
+    /*设置背景不重复*/
     margin-top: 1vw;
 }
 
@@ -852,33 +765,36 @@ const option = reactive({
     color: #d4bb74;
     margin: 0 .5vw;
     font-weight: bold;
-    font-style:italic
+    font-style: italic
 }
 
 .js-bottom {
     color: #d4bb74;
     font-size: 1.2vw;
     font-weight: bold;
-    font-style:italic
+    font-style: italic
 }
 
 .jieshao-bottom {
     display: flex;
     margin-left: 1vw;
 }
-.js-flex{
+
+.js-flex {
     display: flex;
     margin-left: 1vw;
 }
-.js-tb{
+
+.js-tb {
     width: 3.5vw;
     background-size: 100%;
-    background-image:url("../../assets/hh.png");
-	background-repeat:no-repeat;/*设置背景不重复*/
+    background-image: url("../../assets/hh.png");
+    background-repeat: no-repeat;
+    /*设置背景不重复*/
 
 }
 
-.js-span{
+.js-span {
     margin-left: 3vw;
 }
 </style>

+ 3 - 3
web/src/layouts/frontend/Yiqi.vue

@@ -43,7 +43,7 @@
                 </div>
               </div>
 
-
+             
               <div class="visual_conTop_box visual_conTop1">
                 <div class="visual_shuju">
                   <h3>上月仪器损坏数(台)</h3>
@@ -80,7 +80,7 @@
         <dv-border-box13 style="width:27vw;height:15.5vw;padding-left: 0.5vw;padding-top: 0.5vw;"
           :color="['#4fd2dd', '#235fa7']">
           <div class="box2_left_title">
-            借单列表{{ data }}
+            借单列表 
           </div>
           <div class="box2_left_con">
 <!--              <dv-scroll-board :config="config" style="width:26vw;height:12vw"-->
@@ -235,7 +235,7 @@ await createAxios({
   Object.assign(ltydata, val.data);
   var reb_labborrow = [];
   ltydata.labborrow.forEach(elm => {
-
+    
     reb_labborrow.push([
       pps_svg(elm.purpose),
       '<span style="font-size:0.8vw">' + elm.create_time.split(" ")[0] + '</span>',

+ 5 - 3
web/src/main.ts

@@ -13,7 +13,9 @@ import 'font-awesome/css/font-awesome.min.css'
 import '/@/styles/index.scss'
 // modules import mark, Please do not remove.
 import * as echarts from 'echarts';
-// import DataVVue3 from '@kjgl77/datav-vue3'
+import DataVVue3 from '@kjgl77/datav-vue3'
+import './TemplateData/style.css'
+import Unity from '/@/components/unity/unity.vue';
 
 async function start() {
     const app = createApp(App)
@@ -24,8 +26,8 @@ async function start() {
 
     app.use(router)
     app.use(ElementPlus)
-    // app.use(DataVVue3)
-
+    app.use(DataVVue3)
+    app.component('Unity', Unity); // 注册全局组件
     app.config.globalProperties.$echarts = echarts;
     // 全局注册
     directives(app) // 指令

+ 1 - 1
web/src/views/backend/dashboard.vue

@@ -353,7 +353,7 @@ const initUserSource = () => {
                     {value: dbdata.value.a['RTK'], name: t('dashboard.rtk')},
                     {value: dbdata.value.a['全站仪'], name: t('dashboard.qzy')},
                     {value: dbdata.value.a['无人机'], name: t('dashboard.wrj')},
-                    {value: dbdata.value.a['其他'], name: t('dashboard.Other')},
+                    {value: dbdata.value.a['配件及其他'], name: t('dashboard.Other')},
                 ],
             },
         ],

+ 1 - 0
web/src/views/backend/notification/index/popupForm.vue

@@ -167,6 +167,7 @@ import type {FormInstance, FormItemRule} from 'element-plus'
 import FormItem from '/@/components/formItem/index.vue'
 import {useConfig} from '/@/stores/config'
 import {getAssetGroup} from "/@/api/backend/borrow/borrowApplication";
+import any from "async-validator/dist-types/validator/any";
 
 const config = useConfig()
 const formRef = ref<FormInstance>()