gemercheung 2 years ago
parent
commit
019dea61fe

+ 2 - 0
package.json

@@ -32,6 +32,7 @@
     "normalize.css": "^8.0.1",
     "pinia": "^2.0.22",
     "pinia-plugin-persistedstate": "^2.3.0",
+    "qs": "^6.11.1",
     "sass": "^1.54.9",
     "vue": "^3.2.37",
     "vue-i18n": "^9.2.2",
@@ -41,6 +42,7 @@
   },
   "devDependencies": {
     "@types/lodash-es": "^4.17.6",
+    "@types/qs": "^6.9.7",
     "@typescript-eslint/eslint-plugin": "^5.36.2",
     "@typescript-eslint/parser": "^5.36.2",
     "@vitejs/plugin-vue": "^3.1.0",

+ 44 - 4
pnpm-lock.yaml

@@ -4,6 +4,7 @@ specifiers:
   '@ant-design/icons-vue': ^6.1.0
   '@types/lodash-es': ^4.17.6
   '@types/node': ^18.7.18
+  '@types/qs': ^6.9.7
   '@typescript-eslint/eslint-plugin': ^5.36.2
   '@typescript-eslint/parser': ^5.36.2
   '@vitejs/plugin-vue': ^3.1.0
@@ -25,6 +26,7 @@ specifiers:
   pinia: ^2.0.22
   pinia-plugin-persistedstate: ^2.3.0
   prettier: ^2.7.1
+  qs: ^6.11.1
   sass: ^1.54.9
   typescript: ^4.6.4
   unplugin-auto-import: ^0.11.2
@@ -52,6 +54,7 @@ dependencies:
   normalize.css: 8.0.1
   pinia: 2.0.23_l7r24p6nevbtlimqmqcwa3ouhu
   pinia-plugin-persistedstate: 2.4.0_pinia@2.0.23
+  qs: 6.11.1
   sass: 1.55.0
   vue: 3.2.41
   vue-i18n: 9.2.2_vue@3.2.41
@@ -61,6 +64,7 @@ dependencies:
 
 devDependencies:
   '@types/lodash-es': 4.17.6
+  '@types/qs': 6.9.7
   '@typescript-eslint/eslint-plugin': 5.41.0_huremdigmcnkianavgfk3x6iou
   '@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
   '@vitejs/plugin-vue': 3.1.2_vite@3.1.8+vue@3.2.41
@@ -308,6 +312,10 @@ packages:
     resolution: {integrity: sha512-3JRwhbjI+cHLAkUorhf8RnqUbFXajvzX4q6fMn5JwkgtuwfYtRQYI3u4V92vI6NJuTsbBQWWh3RZjFsuevyMGQ==}
     dev: false
 
+  /@types/qs/6.9.7:
+    resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==}
+    dev: true
+
   /@types/semver/7.3.12:
     resolution: {integrity: sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==}
     dev: true
@@ -752,6 +760,13 @@ packages:
     dependencies:
       fill-range: 7.0.1
 
+  /call-bind/1.0.2:
+    resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
+    dependencies:
+      function-bind: 1.1.1
+      get-intrinsic: 1.2.0
+    dev: false
+
   /callsites/3.1.0:
     resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
     engines: {node: '>=6'}
@@ -1466,7 +1481,14 @@ packages:
 
   /function-bind/1.1.1:
     resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
-    dev: true
+
+  /get-intrinsic/1.2.0:
+    resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==}
+    dependencies:
+      function-bind: 1.1.1
+      has: 1.0.3
+      has-symbols: 1.0.3
+    dev: false
 
   /get-stream/6.0.1:
     resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
@@ -1530,12 +1552,16 @@ packages:
     engines: {node: '>=8'}
     dev: true
 
+  /has-symbols/1.0.3:
+    resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+    engines: {node: '>= 0.4'}
+    dev: false
+
   /has/1.0.3:
     resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
     engines: {node: '>= 0.4.0'}
     dependencies:
       function-bind: 1.1.1
-    dev: true
 
   /human-signals/3.0.1:
     resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==}
@@ -1561,7 +1587,7 @@ packages:
     dev: true
 
   /image-size/0.5.5:
-    resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
+    resolution: {integrity: sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=}
     engines: {node: '>=0.10.0'}
     hasBin: true
     requiresBuild: true
@@ -1955,7 +1981,6 @@ packages:
 
   /object-inspect/1.12.2:
     resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==}
-    dev: true
 
   /once/1.4.0:
     resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
@@ -2152,6 +2177,13 @@ packages:
     engines: {node: '>=6'}
     dev: true
 
+  /qs/6.11.1:
+    resolution: {integrity: sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==}
+    engines: {node: '>=0.6'}
+    dependencies:
+      side-channel: 1.0.4
+    dev: false
+
   /queue-microtask/1.2.3:
     resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
     dev: true
@@ -2289,6 +2321,14 @@ packages:
     engines: {node: '>=8'}
     dev: true
 
+  /side-channel/1.0.4:
+    resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
+    dependencies:
+      call-bind: 1.0.2
+      get-intrinsic: 1.2.0
+      object-inspect: 1.12.2
+    dev: false
+
   /signal-exit/3.0.7:
     resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
     dev: true

+ 1 - 1
src/api/room.ts

@@ -37,7 +37,7 @@ export interface RoomScene {
 
 export type AuthUser = {
   userName: string
-  useTimeList: Dayjs[]
+  useTimeList?: Dayjs[]
 }
 export interface Room {
   id: number

+ 14 - 9
src/api/statistic.ts

@@ -1,5 +1,6 @@
 import { useI18n } from '@/hook/useI18n'
 import { AxiosResponse } from 'axios'
+import qs from 'qs'
 import axios from './instance'
 import { SRoom } from './room'
 
@@ -19,6 +20,7 @@ export interface RoomMsgParams {
     startTime?: string
     endTime?: string
     pageSize?: number
+    timeList?: string[]
     pageNum?: number
 }
 export interface RoomMsgListRes {
@@ -66,22 +68,25 @@ export const getTop5 = async (): Promise<Top5DataType> => {
 }
 
 export const getRoomMsgList = async (params: RoomMsgParams): Promise<RoomMsgListData> => {
-    const res = await axios.get<RoomMsgListData>('takelook/roomMsgList', {
-        params: params,
+    const res = await axios.post<RoomMsgListData>('takelook/roomMsgList', {
+        ...params
     })
     return res
 }
 
 export const getAllRoomStatistic = async (params: RoomMsgParams): Promise<AllRoomMsgListData> => {
-    const res = await axios.get<AllRoomMsgListData>('takelook/roomDataList', {
-        params: params
+
+    const res = await axios.post<AllRoomMsgListData>('takelook/roomDataList', {
+        ...params,
     })
     return res
 }
 export const exportAllRoomStatistic = async (params: RoomMsgParams): Promise<void> => {
     const { t } = useI18n()
-    const res = await axios.get<AxiosResponse>('takelook/exportRoomData', {
-        params: params,
+    const res = await axios<AxiosResponse>({
+        method:'post',
+        url:'takelook/exportRoomData',
+        data:params,
         responseType: 'blob', // Important
         headers: {
             'Content-Type': 'application/vnd.ms-excel'
@@ -99,8 +104,8 @@ export const exportAllRoomStatistic = async (params: RoomMsgParams): Promise<voi
 }
 export const exportRoomMsgStatistic = async (params: RoomMsgParams): Promise<void> => {
     const { t } = useI18n()
-    const res = await axios.get<AxiosResponse>('takelook/exportRoomMsg', {
-        params: params,
+    const res = await axios.post<AxiosResponse>('takelook/exportRoomMsg', {
+       ...params,
         responseType: 'blob', // Important
         headers: {
             'Content-Type': 'application/vnd.ms-excel'
@@ -122,6 +127,6 @@ export const getOnlineTimeCount = async (): Promise<DataLabelType[]> => {
     return res
 }
 export const getRoomVisitData = async (param: RoomMsgParams): Promise<RoomUseType> => {
-    return await axios.get<RoomUseType>('takelook/roomVisitData', { params: param })
+    return await axios.post<RoomUseType>('takelook/roomVisitData', { ...param })
 }
 

+ 2 - 0
src/components.d.ts

@@ -35,11 +35,13 @@ declare module '@vue/runtime-core' {
     ATabPane: typeof import('ant-design-vue/es')['TabPane']
     ATabs: typeof import('ant-design-vue/es')['Tabs']
     ATextarea: typeof import('ant-design-vue/es')['Textarea']
+    ATooltip: typeof import('ant-design-vue/es')['Tooltip']
     BarChartOutlined: typeof import('@ant-design/icons-vue')['BarChartOutlined']
     CloseOutlined: typeof import('@ant-design/icons-vue')['CloseOutlined']
     DataList: typeof import('./components/data-list/index.vue')['default']
     DownOutlined: typeof import('@ant-design/icons-vue')['DownOutlined']
     EyeOutlined: typeof import('@ant-design/icons-vue')['EyeOutlined']
+    InfoCircleOutlined: typeof import('@ant-design/icons-vue')['InfoCircleOutlined']
     Loading: typeof import('./components/loading/index.vue')['default']
     LocalePicker: typeof import('./components/localePicker/index.vue')['default']
     PieChartOutlined: typeof import('@ant-design/icons-vue')['PieChartOutlined']

+ 2 - 1
src/locales/lang/en/room.ts

@@ -51,5 +51,6 @@ export default {
   userAccountRequired: "Please input the User's Account",
   setRoomNumber:"Set the number of guests in the studio",
   roomTitle:'Room Title',
-  passwordError:'请设置完整的4位数字密码!'
+  passwordError:'Please set a full 4-digit password!',
+  authUserError:'授权失败,此账号不存在!',
 }

+ 2 - 2
src/locales/lang/zh/room.ts

@@ -49,6 +49,6 @@ export default {
   userAccountRequired: "请输入完整的账号",
   setRoomNumber: "设置房间人数",
   roomTitle: '房间名称',
-  passwordError:'请设置完整的4位数字密码!'
-
+  passwordError:'请设置完整的4位数字密码!',
+  authUserError:'授权失败,此账号不存在!',
 }

+ 17 - 7
src/views/room/edit-room/index.vue

@@ -146,6 +146,12 @@
             name="scenes"
             style="margin-bottom: 2px"
           >
+          <template #slot="label">
+            {{ t('room.authorize') }}
+            <a-tooltip title="Tooltip with customize">
+             <InfoCircleOutlined />
+           </a-tooltip>
+          </template>
             <a-button
               type="primary"
               size="small"
@@ -207,7 +213,7 @@
             :placeholder="t('room.userAccountRequired')"
           />
         </a-form-item>
-        <a-form-item
+        <!-- <a-form-item
           :label="t('room.usingTime')"
           name="useTimeList"
           style="margin-bottom: 20px"
@@ -219,7 +225,7 @@
             style="width: 90%"
             v-model:value="authformState.useTimeList"
           />
-        </a-form-item>
+        </a-form-item> -->
       </a-form>
     </a-modal>
   </a-config-provider>
@@ -250,7 +256,7 @@ import { addAuthUser } from '@/api'
 
 interface AuthUserFormState {
   userName: string
-  useTimeList: Dayjs[]
+  useTimeList?: Dayjs[]
 }
 
 export default defineComponent({
@@ -262,14 +268,14 @@ export default defineComponent({
     const authvisible = ref(false)
 
     const authformState: UnwrapRef<AuthUserFormState> = reactive({
-      userName: '',
-      useTimeList: []
+      userName: ''
+      // useTimeList: []
     })
     const { getAntdLocale } = useLocale()
     const roomStore = useRoomStore()
     const isRoomEnd = computed(() => roomStore.roomStatus === 2)
     const { getLocale } = useLocale()
-    const { t } = useI18n()
+    const { t } = useI18n();
     const returnLocale = computed(() => {
       if (unref(getLocale).includes('zh')) {
         return 'zh'
@@ -305,7 +311,7 @@ export default defineComponent({
         current.visitPassword.length > 0 &&
         current.visitPassword.length < 4
       ) {
-        return message.error(t('room.passwordError'));
+        return message.error(t('room.passwordError'))
       } else {
         current.takeLookLock = 1
       }
@@ -336,6 +342,7 @@ export default defineComponent({
     }
 
     const handleAuthConfirm = async () => {
+      const { t } = useI18n();
       if (authformState.userName?.length) {
         const userName = authformState.userName
         const res = await addAuthUser(userName)
@@ -350,6 +357,9 @@ export default defineComponent({
 
           authvisible.value = false
           console.log('current', current)
+        } else {
+     
+          message.error(t('room.authUserError'));
         }
       } else {
         message.error('用户账号不能为空!')

+ 2 - 2
src/views/room/sign.vue

@@ -169,8 +169,8 @@ defineEmits<RoomSignEmit>()
   h4 {
     font-size: 16px;
     color: #323233;
-    line-height: 1em;
-    margin-bottom: 10px;
+    line-height: 32px;
+    margin-bottom: 5px;
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;

+ 1 - 4
src/views/statistic/tab/tab1.vue

@@ -203,8 +203,6 @@ const initTab = async () => {
   await statisticStore.fetchOnlineTimeCount()
   await statisticStore.fetchHeroStatus()
   await statisticStore.fetchRoomVisitChart({
-    startTime: '',
-    endTime: '',
     roomTitle: ''
   })
 }
@@ -492,8 +490,7 @@ onMounted(async () => {
 
 const handleFinish = async () => {
   await statisticStore.fetchRoomVisitChart({
-    startTime: formState.userTime?.length ? formState.userTime[0] : '',
-    endTime: formState.userTime?.length ? formState.userTime[1] : '',
+    timeList: formState.userTime.map(item=>item.toString()),
     roomTitle: formState.roomTitle?.length ? formState.roomTitle : ''
   })
   initRoomVisitChart()

+ 2 - 5
src/views/statistic/tab/tab2.vue

@@ -149,8 +149,7 @@ const fetchList = () => {
   statisticStore.fetchAllRoomList({
     pageNum: pagination.value.current,
     pageSize: pagination.value.pageSize,
-    startTime: formState.userTime?.length ? formState.userTime[0] : '',
-    endTime: formState.userTime?.length ? formState.userTime[1] : '',
+    timeList: formState.userTime.map(item=>item.toString()), 
     roomTitle: formState.roomTitle?.length ? formState.roomTitle : ''
   })
 }
@@ -158,8 +157,7 @@ const exportList = () => {
   statisticStore.exportAllRoomList({
     pageNum: pagination.value.current,
     pageSize: pagination.value.pageSize,
-    startTime: formState.userTime?.length ? formState.userTime[0] : '',
-    endTime: formState.userTime?.length ? formState.userTime[1] : '',
+    timeList: formState.userTime.map(item=>item.toString()), 
     roomTitle: formState.roomTitle?.length ? formState.roomTitle : ''
   })
 }
@@ -191,6 +189,5 @@ const handleFinishFailed = () => {}
   width: 100%;
   margin-bottom: 25px;
   min-width: 875px;
-
 }
 </style>

+ 7 - 4
src/views/statistic/tab/tab3.vue

@@ -165,11 +165,13 @@ const pagination = computed(() => {
 
 const fetchList = () => {
   try {
+    console.log('formState-userTime',formState.userTime);
     statisticStore.fetchRoomMsglist({
       pageNum: pagination.value.current,
       pageSize: pagination.value.pageSize,
-      startTime: formState.userTime?.length ? formState.userTime[0] : '',
-      endTime: formState.userTime?.length ? formState.userTime[1] : '',
+      // startTime: formState.userTime?.length ? formState.userTime[0] : '',
+      // endTime: formState.userTime?.length ? formState.userTime[1] : '',
+      timeList: formState.userTime.map(item=>item.toString()), 
       roomTitle: formState.roomTitle?.length ? formState.roomTitle : ''
     })
   } catch (error) {
@@ -181,8 +183,9 @@ const exportList = () => {
     statisticStore.exportRoomMsgList({
       pageNum: pagination.value.current,
       pageSize: pagination.value.pageSize,
-      startTime: formState.userTime?.length ? formState.userTime[0] : '',
-      endTime: formState.userTime?.length ? formState.userTime[1] : '',
+      // startTime: formState.userTime?.length ? formState.userTime[0] : '',
+      // endTime: formState.userTime?.length ? formState.userTime[1] : '',
+      timeList: formState.userTime.map(item=>item.toString()), 
       roomTitle: formState.roomTitle?.length ? formState.roomTitle : ''
     })
   } catch (error) {