Browse Source

给所有组件添加name属性预防未知bug!!!

puhui999 2 years ago
parent
commit
b93491579c
100 changed files with 743 additions and 650 deletions
  1. 3 1
      src/App.vue
  2. 1 1
      src/components/Backtop/src/Backtop.vue
  3. 2 2
      src/components/ConfigGlobal/src/ConfigGlobal.vue
  4. 6 4
      src/components/ContentDetailWrap/src/ContentDetailWrap.vue
  5. 2 2
      src/components/ContentWrap/src/ContentWrap.vue
  6. 1 1
      src/components/CountTo/src/CountTo.vue
  7. 55 47
      src/components/Crontab/src/Crontab.vue
  8. 26 23
      src/components/Cropper/src/CopperModal.vue
  9. 2 2
      src/components/Cropper/src/Cropper.vue
  10. 10 4
      src/components/Cropper/src/CropperAvatar.vue
  11. 5 5
      src/components/Descriptions/src/Descriptions.vue
  12. 7 7
      src/components/Dialog/src/Dialog.vue
  13. 1 1
      src/components/Echart/src/Echart.vue
  14. 3 3
      src/components/Editor/src/Editor.vue
  15. 2 2
      src/components/Error/src/Error.vue
  16. 3 3
      src/components/IFrame/src/IFrame.vue
  17. 2 2
      src/components/Icon/src/Icon.vue
  18. 11 11
      src/components/Icon/src/IconSelect.vue
  19. 1 1
      src/components/ImageViewer/src/ImageViewer.vue
  20. 3 3
      src/components/Infotip/src/Infotip.vue
  21. 4 4
      src/components/InputPassword/src/InputPassword.vue
  22. 5 5
      src/components/Pagination/index.vue
  23. 4 5
      src/components/Qrcode/src/Qrcode.vue
  24. 12 12
      src/components/Search/src/Search.vue
  25. 3 2
      src/components/Sticky/src/Sticky.vue
  26. 2 1
      src/components/Tooltip/src/Tooltip.vue
  27. 23 13
      src/components/Verifition/src/Verify.vue
  28. 7 7
      src/components/Verifition/src/Verify/VerifyPoints.vue
  29. 11 11
      src/components/Verifition/src/Verify/VerifySlide.vue
  30. 4 3
      src/components/XButton/src/XButton.vue
  31. 4 3
      src/components/XButton/src/XTextButton.vue
  32. 1 1
      src/layout/components/AppView.vue
  33. 3 3
      src/layout/components/Collapse/src/Collapse.vue
  34. 6 5
      src/layout/components/ContextMenu/src/ContextMenu.vue
  35. 1 1
      src/layout/components/Footer/src/Footer.vue
  36. 4 4
      src/layout/components/LocaleDropdown/src/LocaleDropdown.vue
  37. 3 3
      src/layout/components/Logo/src/Logo.vue
  38. 13 6
      src/layout/components/Message/src/Message.vue
  39. 3 3
      src/layout/components/Screenfull/src/Screenfull.vue
  40. 8 8
      src/layout/components/Setting/src/Setting.vue
  41. 3 3
      src/layout/components/Setting/src/components/ColorRadioPicker.vue
  42. 1 1
      src/layout/components/Setting/src/components/InterfaceDisplay.vue
  43. 1 1
      src/layout/components/Setting/src/components/LayoutRadioPicker.vue
  44. 2 2
      src/layout/components/SizeDropdown/src/SizeDropdown.vue
  45. 21 18
      src/layout/components/TagsView/src/TagsView.vue
  46. 5 5
      src/layout/components/ThemeSwitch/src/ThemeSwitch.vue
  47. 1 1
      src/layout/components/UserInfo/src/UserInfo.vue
  48. 1 1
      src/views/Error/403.vue
  49. 1 1
      src/views/Error/404.vue
  50. 1 1
      src/views/Error/500.vue
  51. 57 52
      src/views/Home/Index2.vue
  52. 1 1
      src/views/Login/Login.vue
  53. 17 17
      src/views/Login/components/LoginForm.vue
  54. 1 1
      src/views/Login/components/LoginFormTitle.vue
  55. 12 12
      src/views/Login/components/MobileForm.vue
  56. 4 4
      src/views/Login/components/QrCodeForm.vue
  57. 9 9
      src/views/Login/components/RegisterForm.vue
  58. 3 3
      src/views/Profile/components/BasicInfo.vue
  59. 20 11
      src/views/Profile/components/ProfileUser.vue
  60. 4 4
      src/views/Profile/components/ResetPwd.vue
  61. 6 5
      src/views/Profile/components/UserAvatar.vue
  62. 6 5
      src/views/bpm/form/editor/index.vue
  63. 5 5
      src/views/bpm/group/UserGroupForm.vue
  64. 17 16
      src/views/bpm/model/ModelForm.vue
  65. 15 14
      src/views/bpm/model/ModelImportForm.vue
  66. 11 10
      src/views/bpm/oa/leave/create.vue
  67. 3 3
      src/views/bpm/oa/leave/detail.vue
  68. 5 5
      src/views/bpm/processInstance/detail/ProcessInstanceBpmnViewer.vue
  69. 5 5
      src/views/bpm/processInstance/detail/ProcessInstanceTaskList.vue
  70. 4 4
      src/views/bpm/processInstance/detail/TaskUpdateAssigneeForm.vue
  71. 3 3
      src/views/bpm/task/done/TaskDetail.vue
  72. 20 19
      src/views/bpm/taskAssignRule/TaskAssignRuleForm.vue
  73. 5 5
      src/views/infra/apiAccessLog/ApiAccessLogDetail.vue
  74. 9 9
      src/views/infra/apiErrorLog/ApiErrorLogDetail.vue
  75. 3 2
      src/views/infra/codegen/EditTable.vue
  76. 23 16
      src/views/infra/codegen/ImportTable.vue
  77. 14 13
      src/views/infra/codegen/PreviewCode.vue
  78. 7 7
      src/views/infra/codegen/components/BasicInfoForm.vue
  79. 12 12
      src/views/infra/codegen/components/ColumInfoForm.vue
  80. 9 9
      src/views/infra/codegen/components/GenerateInfoForm.vue
  81. 5 5
      src/views/infra/config/ConfigForm.vue
  82. 4 4
      src/views/infra/dataSourceConfig/DataSourceConfigForm.vue
  83. 13 12
      src/views/infra/file/FileForm.vue
  84. 7 6
      src/views/infra/fileConfig/FileConfigForm.vue
  85. 3 3
      src/views/infra/job/JobDetail.vue
  86. 3 3
      src/views/infra/job/logger/JobLogDetail.vue
  87. 7 7
      src/views/infra/webSocket/index.vue
  88. 6 5
      src/views/mall/product/property/PropertyForm.vue
  89. 6 5
      src/views/mall/product/property/value/ValueForm.vue
  90. 6 5
      src/views/mp/account/AccountForm.vue
  91. 10 10
      src/views/mp/components/wx-editor/WxEditor.vue
  92. 13 5
      src/views/mp/components/wx-news/main.vue
  93. 5 4
      src/views/mp/tag/TagForm.vue
  94. 6 5
      src/views/mp/user/UserForm.vue
  95. 5 4
      src/views/pay/app/AppForm.vue
  96. 6 5
      src/views/pay/merchant/MerchantForm.vue
  97. 3 3
      src/views/pay/order/OrderDetail.vue
  98. 3 3
      src/views/pay/refund/RefundDetail.vue
  99. 6 5
      src/views/system/area/AreaForm.vue
  100. 12 11
      src/views/system/dept/DeptForm.vue

+ 3 - 1
src/App.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="APP" setup>
 import { isDark } from '@/utils/is'
 import { isDark } from '@/utils/is'
 import { useAppStore } from '@/store/modules/app'
 import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
@@ -32,6 +32,7 @@ $prefix-cls: #{$namespace}-app;
   width: 100%;
   width: 100%;
   height: 100%;
   height: 100%;
 }
 }
+
 html,
 html,
 body {
 body {
   padding: 0 !important;
   padding: 0 !important;
@@ -43,6 +44,7 @@ body {
     @extend .size;
     @extend .size;
   }
   }
 }
 }
+
 .#{$prefix-cls}-grey-mode {
 .#{$prefix-cls}-grey-mode {
   filter: grayscale(100%);
   filter: grayscale(100%);
 }
 }

+ 1 - 1
src/components/Backtop/src/Backtop.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="BackTop" setup>
 import { ElBacktop } from 'element-plus'
 import { ElBacktop } from 'element-plus'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
 
 

+ 2 - 2
src/components/ConfigGlobal/src/ConfigGlobal.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="ConfigGlobal" setup>
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import { useLocaleStore } from '@/store/modules/locale'
 import { useLocaleStore } from '@/store/modules/locale'
 import { useAppStore } from '@/store/modules/app'
 import { useAppStore } from '@/store/modules/app'
@@ -51,9 +51,9 @@ const currentLocale = computed(() => localeStore.currentLocale)
 
 
 <template>
 <template>
   <ElConfigProvider
   <ElConfigProvider
-    :namespace="variables.elNamespace"
     :locale="currentLocale.elLocale"
     :locale="currentLocale.elLocale"
     :message="{ max: 1 }"
     :message="{ max: 1 }"
+    :namespace="variables.elNamespace"
     :size="size"
     :size="size"
   >
   >
     <slot></slot>
     <slot></slot>

+ 6 - 4
src/components/ContentDetailWrap/src/ContentDetailWrap.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="ContentDetailWrap" setup>
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
 
 
@@ -21,7 +21,7 @@ onMounted(() => {
 </script>
 </script>
 
 
 <template>
 <template>
-  <div :class="[`${prefixCls}-container`]" ref="contentDetailWrap">
+  <div ref="contentDetailWrap" :class="[`${prefixCls}-container`]">
     <Sticky :offset="offset">
     <Sticky :offset="offset">
       <div
       <div
         :class="[
         :class="[
@@ -31,7 +31,7 @@ onMounted(() => {
       >
       >
         <div :class="[`${prefixCls}-header__back`, 'flex pl-10px pr-10px ']">
         <div :class="[`${prefixCls}-header__back`, 'flex pl-10px pr-10px ']">
           <ElButton @click="emit('back')">
           <ElButton @click="emit('back')">
-            <Icon icon="ep:arrow-left" class="mr-5px" />
+            <Icon class="mr-5px" icon="ep:arrow-left" />
             {{ t('common.back') }}
             {{ t('common.back') }}
           </ElButton>
           </ElButton>
         </div>
         </div>
@@ -47,7 +47,9 @@ onMounted(() => {
     </Sticky>
     </Sticky>
     <div style="padding: var(--app-content-padding)">
     <div style="padding: var(--app-content-padding)">
       <ElCard :class="[`${prefixCls}-body`, 'mb-20px']" shadow="never">
       <ElCard :class="[`${prefixCls}-body`, 'mb-20px']" shadow="never">
-        <div> <slot></slot> </div>
+        <div>
+          <slot></slot>
+        </div>
       </ElCard>
       </ElCard>
     </div>
     </div>
   </div>
   </div>

+ 2 - 2
src/components/ContentWrap/src/ContentWrap.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="ContentWrap" setup>
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
 
 
@@ -21,7 +21,7 @@ defineProps({
           <template #content>
           <template #content>
             <div class="max-w-200px">{{ message }}</div>
             <div class="max-w-200px">{{ message }}</div>
           </template>
           </template>
-          <Icon class="ml-5px" icon="ep:question-filled" :size="14" />
+          <Icon :size="14" class="ml-5px" icon="ep:question-filled" />
         </ElTooltip>
         </ElTooltip>
       </div>
       </div>
     </template>
     </template>

+ 1 - 1
src/components/CountTo/src/CountTo.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="CountTo" setup>
 import { PropType } from 'vue'
 import { PropType } from 'vue'
 import { isNumber } from '@/utils/is'
 import { isNumber } from '@/utils/is'
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'

+ 55 - 47
src/components/Crontab/src/Crontab.vue

@@ -1,10 +1,12 @@
-<script setup lang="ts">
+<script lang="ts" name="Crontab" setup>
 import { ElMessage } from 'element-plus'
 import { ElMessage } from 'element-plus'
 import { PropType } from 'vue'
 import { PropType } from 'vue'
+
 interface shortcutsType {
 interface shortcutsType {
   text: string
   text: string
   value: string
   value: string
 }
 }
+
 const props = defineProps({
 const props = defineProps({
   modelValue: {
   modelValue: {
     type: String,
     type: String,
@@ -501,7 +503,7 @@ const submit = () => {
 }
 }
 </script>
 </script>
 <template>
 <template>
-  <el-input v-model="defaultValue" v-bind="$attrs" class="input-with-select">
+  <el-input v-model="defaultValue" class="input-with-select" v-bind="$attrs">
     <template #append>
     <template #append>
       <el-select v-model="select" placeholder="生成器" style="width: 115px">
       <el-select v-model="select" placeholder="生成器" style="width: 115px">
         <el-option label="每分钟" value="0 * * * * ?" />
         <el-option label="每分钟" value="0 * * * * ?" />
@@ -522,11 +524,11 @@ const submit = () => {
   </el-input>
   </el-input>
 
 
   <el-dialog
   <el-dialog
-    title="cron规则生成器"
     v-model="dialogVisible"
     v-model="dialogVisible"
     :width="580"
     :width="580"
-    destroy-on-close
     append-to-body
     append-to-body
+    destroy-on-close
+    title="cron规则生成器"
   >
   >
     <div class="sc-cron">
     <div class="sc-cron">
       <el-tabs>
       <el-tabs>
@@ -546,38 +548,38 @@ const submit = () => {
                 <el-radio-button label="3">指定</el-radio-button>
                 <el-radio-button label="3">指定</el-radio-button>
               </el-radio-group>
               </el-radio-group>
             </el-form-item>
             </el-form-item>
-            <el-form-item label="范围" v-if="cronValue.second.type == '1'">
+            <el-form-item v-if="cronValue.second.type == '1'" label="范围">
               <el-input-number
               <el-input-number
                 v-model="cronValue.second.range.start"
                 v-model="cronValue.second.range.start"
-                :min="0"
                 :max="59"
                 :max="59"
+                :min="0"
                 controls-position="right"
                 controls-position="right"
               />
               />
               <span style="padding: 0 15px">-</span>
               <span style="padding: 0 15px">-</span>
               <el-input-number
               <el-input-number
                 v-model="cronValue.second.range.end"
                 v-model="cronValue.second.range.end"
-                :min="0"
                 :max="59"
                 :max="59"
+                :min="0"
                 controls-position="right"
                 controls-position="right"
               />
               />
             </el-form-item>
             </el-form-item>
-            <el-form-item label="间隔" v-if="cronValue.second.type == '2'">
+            <el-form-item v-if="cronValue.second.type == '2'" label="间隔">
               <el-input-number
               <el-input-number
                 v-model="cronValue.second.loop.start"
                 v-model="cronValue.second.loop.start"
-                :min="0"
                 :max="59"
                 :max="59"
+                :min="0"
                 controls-position="right"
                 controls-position="right"
               />
               />
               秒开始,每
               秒开始,每
               <el-input-number
               <el-input-number
                 v-model="cronValue.second.loop.end"
                 v-model="cronValue.second.loop.end"
-                :min="0"
                 :max="59"
                 :max="59"
+                :min="0"
                 controls-position="right"
                 controls-position="right"
               />
               />
               秒执行一次
               秒执行一次
             </el-form-item>
             </el-form-item>
-            <el-form-item label="指定" v-if="cronValue.second.type == '3'">
+            <el-form-item v-if="cronValue.second.type == '3'" label="指定">
               <el-select v-model="cronValue.second.appoint" multiple style="width: 100%">
               <el-select v-model="cronValue.second.appoint" multiple style="width: 100%">
                 <el-option
                 <el-option
                   v-for="(item, index) in data.second"
                   v-for="(item, index) in data.second"
@@ -605,38 +607,38 @@ const submit = () => {
                 <el-radio-button label="3">指定</el-radio-button>
                 <el-radio-button label="3">指定</el-radio-button>
               </el-radio-group>
               </el-radio-group>
             </el-form-item>
             </el-form-item>
-            <el-form-item label="范围" v-if="cronValue.minute.type == '1'">
+            <el-form-item v-if="cronValue.minute.type == '1'" label="范围">
               <el-input-number
               <el-input-number
                 v-model="cronValue.minute.range.start"
                 v-model="cronValue.minute.range.start"
-                :min="0"
                 :max="59"
                 :max="59"
+                :min="0"
                 controls-position="right"
                 controls-position="right"
               />
               />
               <span style="padding: 0 15px">-</span>
               <span style="padding: 0 15px">-</span>
               <el-input-number
               <el-input-number
                 v-model="cronValue.minute.range.end"
                 v-model="cronValue.minute.range.end"
-                :min="0"
                 :max="59"
                 :max="59"
+                :min="0"
                 controls-position="right"
                 controls-position="right"
               />
               />
             </el-form-item>
             </el-form-item>
-            <el-form-item label="间隔" v-if="cronValue.minute.type == '2'">
+            <el-form-item v-if="cronValue.minute.type == '2'" label="间隔">
               <el-input-number
               <el-input-number
                 v-model="cronValue.minute.loop.start"
                 v-model="cronValue.minute.loop.start"
-                :min="0"
                 :max="59"
                 :max="59"
+                :min="0"
                 controls-position="right"
                 controls-position="right"
               />
               />
               分钟开始,每
               分钟开始,每
               <el-input-number
               <el-input-number
                 v-model="cronValue.minute.loop.end"
                 v-model="cronValue.minute.loop.end"
-                :min="0"
                 :max="59"
                 :max="59"
+                :min="0"
                 controls-position="right"
                 controls-position="right"
               />
               />
               分钟执行一次
               分钟执行一次
             </el-form-item>
             </el-form-item>
-            <el-form-item label="指定" v-if="cronValue.minute.type == '3'">
+            <el-form-item v-if="cronValue.minute.type == '3'" label="指定">
               <el-select v-model="cronValue.minute.appoint" multiple style="width: 100%">
               <el-select v-model="cronValue.minute.appoint" multiple style="width: 100%">
                 <el-option
                 <el-option
                   v-for="(item, index) in data.minute"
                   v-for="(item, index) in data.minute"
@@ -664,38 +666,38 @@ const submit = () => {
                 <el-radio-button label="3">指定</el-radio-button>
                 <el-radio-button label="3">指定</el-radio-button>
               </el-radio-group>
               </el-radio-group>
             </el-form-item>
             </el-form-item>
-            <el-form-item label="范围" v-if="cronValue.hour.type == '1'">
+            <el-form-item v-if="cronValue.hour.type == '1'" label="范围">
               <el-input-number
               <el-input-number
                 v-model="cronValue.hour.range.start"
                 v-model="cronValue.hour.range.start"
-                :min="0"
                 :max="23"
                 :max="23"
+                :min="0"
                 controls-position="right"
                 controls-position="right"
               />
               />
               <span style="padding: 0 15px">-</span>
               <span style="padding: 0 15px">-</span>
               <el-input-number
               <el-input-number
                 v-model="cronValue.hour.range.end"
                 v-model="cronValue.hour.range.end"
-                :min="0"
                 :max="23"
                 :max="23"
+                :min="0"
                 controls-position="right"
                 controls-position="right"
               />
               />
             </el-form-item>
             </el-form-item>
-            <el-form-item label="间隔" v-if="cronValue.hour.type == '2'">
+            <el-form-item v-if="cronValue.hour.type == '2'" label="间隔">
               <el-input-number
               <el-input-number
                 v-model="cronValue.hour.loop.start"
                 v-model="cronValue.hour.loop.start"
-                :min="0"
                 :max="23"
                 :max="23"
+                :min="0"
                 controls-position="right"
                 controls-position="right"
               />
               />
               小时开始,每
               小时开始,每
               <el-input-number
               <el-input-number
                 v-model="cronValue.hour.loop.end"
                 v-model="cronValue.hour.loop.end"
-                :min="0"
                 :max="23"
                 :max="23"
+                :min="0"
                 controls-position="right"
                 controls-position="right"
               />
               />
               小时执行一次
               小时执行一次
             </el-form-item>
             </el-form-item>
-            <el-form-item label="指定" v-if="cronValue.hour.type == '3'">
+            <el-form-item v-if="cronValue.hour.type == '3'" label="指定">
               <el-select v-model="cronValue.hour.appoint" multiple style="width: 100%">
               <el-select v-model="cronValue.hour.appoint" multiple style="width: 100%">
                 <el-option
                 <el-option
                   v-for="(item, index) in data.hour"
                   v-for="(item, index) in data.hour"
@@ -725,38 +727,38 @@ const submit = () => {
                 <el-radio-button label="5">不指定</el-radio-button>
                 <el-radio-button label="5">不指定</el-radio-button>
               </el-radio-group>
               </el-radio-group>
             </el-form-item>
             </el-form-item>
-            <el-form-item label="范围" v-if="cronValue.day.type == '1'">
+            <el-form-item v-if="cronValue.day.type == '1'" label="范围">
               <el-input-number
               <el-input-number
                 v-model="cronValue.day.range.start"
                 v-model="cronValue.day.range.start"
-                :min="1"
                 :max="31"
                 :max="31"
+                :min="1"
                 controls-position="right"
                 controls-position="right"
               />
               />
               <span style="padding: 0 15px">-</span>
               <span style="padding: 0 15px">-</span>
               <el-input-number
               <el-input-number
                 v-model="cronValue.day.range.end"
                 v-model="cronValue.day.range.end"
-                :min="1"
                 :max="31"
                 :max="31"
+                :min="1"
                 controls-position="right"
                 controls-position="right"
               />
               />
             </el-form-item>
             </el-form-item>
-            <el-form-item label="间隔" v-if="cronValue.day.type == '2'">
+            <el-form-item v-if="cronValue.day.type == '2'" label="间隔">
               <el-input-number
               <el-input-number
                 v-model="cronValue.day.loop.start"
                 v-model="cronValue.day.loop.start"
-                :min="1"
                 :max="31"
                 :max="31"
+                :min="1"
                 controls-position="right"
                 controls-position="right"
               />
               />
               号开始,每
               号开始,每
               <el-input-number
               <el-input-number
                 v-model="cronValue.day.loop.end"
                 v-model="cronValue.day.loop.end"
-                :min="1"
                 :max="31"
                 :max="31"
+                :min="1"
                 controls-position="right"
                 controls-position="right"
               />
               />
               天执行一次
               天执行一次
             </el-form-item>
             </el-form-item>
-            <el-form-item label="指定" v-if="cronValue.day.type == '3'">
+            <el-form-item v-if="cronValue.day.type == '3'" label="指定">
               <el-select v-model="cronValue.day.appoint" multiple style="width: 100%">
               <el-select v-model="cronValue.day.appoint" multiple style="width: 100%">
                 <el-option
                 <el-option
                   v-for="(item, index) in data.day"
                   v-for="(item, index) in data.day"
@@ -784,38 +786,38 @@ const submit = () => {
                 <el-radio-button label="3">指定</el-radio-button>
                 <el-radio-button label="3">指定</el-radio-button>
               </el-radio-group>
               </el-radio-group>
             </el-form-item>
             </el-form-item>
-            <el-form-item label="范围" v-if="cronValue.month.type == '1'">
+            <el-form-item v-if="cronValue.month.type == '1'" label="范围">
               <el-input-number
               <el-input-number
                 v-model="cronValue.month.range.start"
                 v-model="cronValue.month.range.start"
-                :min="1"
                 :max="12"
                 :max="12"
+                :min="1"
                 controls-position="right"
                 controls-position="right"
               />
               />
               <span style="padding: 0 15px">-</span>
               <span style="padding: 0 15px">-</span>
               <el-input-number
               <el-input-number
                 v-model="cronValue.month.range.end"
                 v-model="cronValue.month.range.end"
-                :min="1"
                 :max="12"
                 :max="12"
+                :min="1"
                 controls-position="right"
                 controls-position="right"
               />
               />
             </el-form-item>
             </el-form-item>
-            <el-form-item label="间隔" v-if="cronValue.month.type == '2'">
+            <el-form-item v-if="cronValue.month.type == '2'" label="间隔">
               <el-input-number
               <el-input-number
                 v-model="cronValue.month.loop.start"
                 v-model="cronValue.month.loop.start"
-                :min="1"
                 :max="12"
                 :max="12"
+                :min="1"
                 controls-position="right"
                 controls-position="right"
               />
               />
               月开始,每
               月开始,每
               <el-input-number
               <el-input-number
                 v-model="cronValue.month.loop.end"
                 v-model="cronValue.month.loop.end"
-                :min="1"
                 :max="12"
                 :max="12"
+                :min="1"
                 controls-position="right"
                 controls-position="right"
               />
               />
               月执行一次
               月执行一次
             </el-form-item>
             </el-form-item>
-            <el-form-item label="指定" v-if="cronValue.month.type == '3'">
+            <el-form-item v-if="cronValue.month.type == '3'" label="指定">
               <el-select v-model="cronValue.month.appoint" multiple style="width: 100%">
               <el-select v-model="cronValue.month.appoint" multiple style="width: 100%">
                 <el-option
                 <el-option
                   v-for="(item, index) in data.month"
                   v-for="(item, index) in data.month"
@@ -846,7 +848,7 @@ const submit = () => {
                   <el-radio-button label="5">不指定</el-radio-button>
                   <el-radio-button label="5">不指定</el-radio-button>
                 </el-radio-group>
                 </el-radio-group>
               </el-form-item>
               </el-form-item>
-              <el-form-item label="范围" v-if="cronValue.week.type == '1'">
+              <el-form-item v-if="cronValue.week.type == '1'" label="范围">
                 <el-select v-model="cronValue.week.range.start">
                 <el-select v-model="cronValue.week.range.start">
                   <el-option
                   <el-option
                     v-for="(item, index) in data.week"
                     v-for="(item, index) in data.week"
@@ -865,12 +867,12 @@ const submit = () => {
                   />
                   />
                 </el-select>
                 </el-select>
               </el-form-item>
               </el-form-item>
-              <el-form-item label="间隔" v-if="cronValue.week.type == '2'">
+              <el-form-item v-if="cronValue.week.type == '2'" label="间隔">
                 <el-input-number
                 <el-input-number
                   v-model="cronValue.week.loop.start"
                   v-model="cronValue.week.loop.start"
-                  :min="1"
                   :max="4"
                   :max="4"
+                  :min="1"
                   controls-position="right"
                   controls-position="right"
                 />
                 />
                 周的星期
                 周的星期
@@ -884,7 +886,7 @@ const submit = () => {
                 </el-select>
                 </el-select>
                 执行一次
                 执行一次
               </el-form-item>
               </el-form-item>
-              <el-form-item label="指定" v-if="cronValue.week.type == '3'">
+              <el-form-item v-if="cronValue.week.type == '3'" label="指定">
                 <el-select v-model="cronValue.week.appoint" multiple style="width: 100%">
                 <el-select v-model="cronValue.week.appoint" multiple style="width: 100%">
                   <el-option
                   <el-option
                     v-for="(item, index) in data.week"
                     v-for="(item, index) in data.week"
@@ -894,7 +896,7 @@ const submit = () => {
                   />
                   />
                 </el-select>
                 </el-select>
               </el-form-item>
               </el-form-item>
-              <el-form-item label="最后一周" v-if="cronValue.week.type == '4'">
+              <el-form-item v-if="cronValue.week.type == '4'" label="最后一周">
                 <el-select v-model="cronValue.week.last">
                 <el-select v-model="cronValue.week.last">
                   <el-option
                   <el-option
                     v-for="(item, index) in data.week"
                     v-for="(item, index) in data.week"
@@ -924,12 +926,12 @@ const submit = () => {
                 <el-radio-button label="3">指定</el-radio-button>
                 <el-radio-button label="3">指定</el-radio-button>
               </el-radio-group>
               </el-radio-group>
             </el-form-item>
             </el-form-item>
-            <el-form-item label="范围" v-if="cronValue.year.type == '1'">
+            <el-form-item v-if="cronValue.year.type == '1'" label="范围">
               <el-input-number v-model="cronValue.year.range.start" controls-position="right" />
               <el-input-number v-model="cronValue.year.range.start" controls-position="right" />
               <span style="padding: 0 15px">-</span>
               <span style="padding: 0 15px">-</span>
               <el-input-number v-model="cronValue.year.range.end" controls-position="right" />
               <el-input-number v-model="cronValue.year.range.end" controls-position="right" />
             </el-form-item>
             </el-form-item>
-            <el-form-item label="间隔" v-if="cronValue.year.type == '2'">
+            <el-form-item v-if="cronValue.year.type == '2'" label="间隔">
               <el-input-number v-model="cronValue.year.loop.start" controls-position="right" />
               <el-input-number v-model="cronValue.year.loop.start" controls-position="right" />
               年开始,每
               年开始,每
               <el-input-number
               <el-input-number
@@ -939,7 +941,7 @@ const submit = () => {
               />
               />
               年执行一次
               年执行一次
             </el-form-item>
             </el-form-item>
-            <el-form-item label="指定" v-if="cronValue.year.type == '3'">
+            <el-form-item v-if="cronValue.year.type == '3'" label="指定">
               <el-select v-model="cronValue.year.appoint" multiple style="width: 100%">
               <el-select v-model="cronValue.year.appoint" multiple style="width: 100%">
                 <el-option
                 <el-option
                   v-for="(item, index) in data.year"
                   v-for="(item, index) in data.year"
@@ -968,16 +970,19 @@ const submit = () => {
   padding: 0 7px;
   padding: 0 7px;
   vertical-align: bottom;
   vertical-align: bottom;
 }
 }
+
 .sc-cron-num {
 .sc-cron-num {
   text-align: center;
   text-align: center;
   margin-bottom: 15px;
   margin-bottom: 15px;
   width: 100%;
   width: 100%;
 }
 }
+
 .sc-cron-num h2 {
 .sc-cron-num h2 {
   font-size: 12px;
   font-size: 12px;
   margin-bottom: 15px;
   margin-bottom: 15px;
   font-weight: normal;
   font-weight: normal;
 }
 }
+
 .sc-cron-num h4 {
 .sc-cron-num h4 {
   display: block;
   display: block;
   height: 32px;
   height: 32px;
@@ -988,13 +993,16 @@ const submit = () => {
   background: var(--el-color-primary-light-9);
   background: var(--el-color-primary-light-9);
   border-radius: 4px;
   border-radius: 4px;
 }
 }
+
 .sc-cron:deep(.el-tabs__item.is-active) .sc-cron-num h4 {
 .sc-cron:deep(.el-tabs__item.is-active) .sc-cron-num h4 {
   background: var(--el-color-primary);
   background: var(--el-color-primary);
   color: #fff;
   color: #fff;
 }
 }
+
 [data-theme='dark'] .sc-cron-num h4 {
 [data-theme='dark'] .sc-cron-num h4 {
   background: var(--el-color-white);
   background: var(--el-color-white);
 }
 }
+
 .input-with-select .el-input-group__prepend {
 .input-with-select .el-input-group__prepend {
   background-color: var(--el-fill-color-blank);
   background-color: var(--el-fill-color-blank);
 }
 }

+ 26 - 23
src/components/Cropper/src/CopperModal.vue

@@ -2,26 +2,26 @@
   <div>
   <div>
     <Dialog
     <Dialog
       v-model="dialogVisible"
       v-model="dialogVisible"
+      :canFullscreen="false"
       :title="t('cropper.modalTitle')"
       :title="t('cropper.modalTitle')"
-      width="800px"
       maxHeight="380px"
       maxHeight="380px"
-      :canFullscreen="false"
+      width="800px"
     >
     >
       <div :class="prefixCls">
       <div :class="prefixCls">
         <div :class="`${prefixCls}-left`">
         <div :class="`${prefixCls}-left`">
           <div :class="`${prefixCls}-cropper`">
           <div :class="`${prefixCls}-cropper`">
             <CropperImage
             <CropperImage
               v-if="src"
               v-if="src"
+              :circled="circled"
               :src="src"
               :src="src"
               height="300px"
               height="300px"
-              :circled="circled"
               @cropend="handleCropend"
               @cropend="handleCropend"
               @ready="handleReady"
               @ready="handleReady"
             />
             />
           </div>
           </div>
 
 
           <div :class="`${prefixCls}-toolbar`">
           <div :class="`${prefixCls}-toolbar`">
-            <el-upload :fileList="[]" accept="image/*" :beforeUpload="handleBeforeUpload">
+            <el-upload :beforeUpload="handleBeforeUpload" :fileList="[]" accept="image/*">
               <el-tooltip :content="t('cropper.selectImage')" placement="bottom">
               <el-tooltip :content="t('cropper.selectImage')" placement="bottom">
                 <XButton preIcon="ant-design:upload-outlined" type="primary" />
                 <XButton preIcon="ant-design:upload-outlined" type="primary" />
               </el-tooltip>
               </el-tooltip>
@@ -29,64 +29,64 @@
             <el-space>
             <el-space>
               <el-tooltip :content="t('cropper.btn_reset')" placement="bottom">
               <el-tooltip :content="t('cropper.btn_reset')" placement="bottom">
                 <XButton
                 <XButton
-                  type="primary"
+                  :disabled="!src"
                   preIcon="ant-design:reload-outlined"
                   preIcon="ant-design:reload-outlined"
                   size="small"
                   size="small"
-                  :disabled="!src"
+                  type="primary"
                   @click="handlerToolbar('reset')"
                   @click="handlerToolbar('reset')"
                 />
                 />
               </el-tooltip>
               </el-tooltip>
               <el-tooltip :content="t('cropper.btn_rotate_left')" placement="bottom">
               <el-tooltip :content="t('cropper.btn_rotate_left')" placement="bottom">
                 <XButton
                 <XButton
-                  type="primary"
+                  :disabled="!src"
                   preIcon="ant-design:rotate-left-outlined"
                   preIcon="ant-design:rotate-left-outlined"
                   size="small"
                   size="small"
-                  :disabled="!src"
+                  type="primary"
                   @click="handlerToolbar('rotate', -45)"
                   @click="handlerToolbar('rotate', -45)"
                 />
                 />
               </el-tooltip>
               </el-tooltip>
               <el-tooltip :content="t('cropper.btn_rotate_right')" placement="bottom">
               <el-tooltip :content="t('cropper.btn_rotate_right')" placement="bottom">
                 <XButton
                 <XButton
-                  type="primary"
+                  :disabled="!src"
                   preIcon="ant-design:rotate-right-outlined"
                   preIcon="ant-design:rotate-right-outlined"
                   size="small"
                   size="small"
-                  :disabled="!src"
+                  type="primary"
                   @click="handlerToolbar('rotate', 45)"
                   @click="handlerToolbar('rotate', 45)"
                 />
                 />
               </el-tooltip>
               </el-tooltip>
               <el-tooltip :content="t('cropper.btn_scale_x')" placement="bottom">
               <el-tooltip :content="t('cropper.btn_scale_x')" placement="bottom">
                 <XButton
                 <XButton
-                  type="primary"
+                  :disabled="!src"
                   preIcon="vaadin:arrows-long-h"
                   preIcon="vaadin:arrows-long-h"
                   size="small"
                   size="small"
-                  :disabled="!src"
+                  type="primary"
                   @click="handlerToolbar('scaleX')"
                   @click="handlerToolbar('scaleX')"
                 />
                 />
               </el-tooltip>
               </el-tooltip>
               <el-tooltip :content="t('cropper.btn_scale_y')" placement="bottom">
               <el-tooltip :content="t('cropper.btn_scale_y')" placement="bottom">
                 <XButton
                 <XButton
-                  type="primary"
+                  :disabled="!src"
                   preIcon="vaadin:arrows-long-v"
                   preIcon="vaadin:arrows-long-v"
                   size="small"
                   size="small"
-                  :disabled="!src"
+                  type="primary"
                   @click="handlerToolbar('scaleY')"
                   @click="handlerToolbar('scaleY')"
                 />
                 />
               </el-tooltip>
               </el-tooltip>
               <el-tooltip :content="t('cropper.btn_zoom_in')" placement="bottom">
               <el-tooltip :content="t('cropper.btn_zoom_in')" placement="bottom">
                 <XButton
                 <XButton
-                  type="primary"
+                  :disabled="!src"
                   preIcon="ant-design:zoom-in-outlined"
                   preIcon="ant-design:zoom-in-outlined"
                   size="small"
                   size="small"
-                  :disabled="!src"
+                  type="primary"
                   @click="handlerToolbar('zoom', 0.1)"
                   @click="handlerToolbar('zoom', 0.1)"
                 />
                 />
               </el-tooltip>
               </el-tooltip>
               <el-tooltip :content="t('cropper.btn_zoom_out')" placement="bottom">
               <el-tooltip :content="t('cropper.btn_zoom_out')" placement="bottom">
                 <XButton
                 <XButton
-                  type="primary"
+                  :disabled="!src"
                   preIcon="ant-design:zoom-out-outlined"
                   preIcon="ant-design:zoom-out-outlined"
                   size="small"
                   size="small"
-                  :disabled="!src"
+                  type="primary"
                   @click="handlerToolbar('zoom', -0.1)"
                   @click="handlerToolbar('zoom', -0.1)"
                 />
                 />
               </el-tooltip>
               </el-tooltip>
@@ -95,14 +95,14 @@
         </div>
         </div>
         <div :class="`${prefixCls}-right`">
         <div :class="`${prefixCls}-right`">
           <div :class="`${prefixCls}-preview`">
           <div :class="`${prefixCls}-preview`">
-            <img :src="previewSource" v-if="previewSource" :alt="t('cropper.preview')" />
+            <img v-if="previewSource" :alt="t('cropper.preview')" :src="previewSource" />
           </div>
           </div>
           <template v-if="previewSource">
           <template v-if="previewSource">
             <div :class="`${prefixCls}-group`">
             <div :class="`${prefixCls}-group`">
               <el-avatar :src="previewSource" size="large" />
               <el-avatar :src="previewSource" size="large" />
-              <el-avatar :src="previewSource" :size="48" />
-              <el-avatar :src="previewSource" :size="64" />
-              <el-avatar :src="previewSource" :size="80" />
+              <el-avatar :size="48" :src="previewSource" />
+              <el-avatar :size="64" :src="previewSource" />
+              <el-avatar :size="80" :src="previewSource" />
             </div>
             </div>
           </template>
           </template>
         </div>
         </div>
@@ -113,7 +113,7 @@
     </Dialog>
     </Dialog>
   </div>
   </div>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="CopperModal" setup>
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
 import { dataURLtoBlob } from '@/utils/filt'
 import { dataURLtoBlob } from '@/utils/filt'
 import { useI18n } from 'vue-i18n'
 import { useI18n } from 'vue-i18n'
@@ -173,12 +173,15 @@ async function handleOk() {
   const blob = dataURLtoBlob(previewSource.value)
   const blob = dataURLtoBlob(previewSource.value)
   emit('uploadSuccess', { source: previewSource.value, data: blob, filename: filename })
   emit('uploadSuccess', { source: previewSource.value, data: blob, filename: filename })
 }
 }
+
 function openModal() {
 function openModal() {
   dialogVisible.value = true
   dialogVisible.value = true
 }
 }
+
 function closeModal() {
 function closeModal() {
   dialogVisible.value = false
   dialogVisible.value = false
 }
 }
+
 defineExpose({ openModal, closeModal })
 defineExpose({ openModal, closeModal })
 </script>
 </script>
 <style lang="scss">
 <style lang="scss">

+ 2 - 2
src/components/Cropper/src/Cropper.vue

@@ -3,14 +3,14 @@
     <img
     <img
       v-show="isReady"
       v-show="isReady"
       ref="imgElRef"
       ref="imgElRef"
-      :src="src"
       :alt="alt"
       :alt="alt"
       :crossorigin="crossorigin"
       :crossorigin="crossorigin"
+      :src="src"
       :style="getImageStyle"
       :style="getImageStyle"
     />
     />
   </div>
   </div>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="Cropper" setup>
 import { CSSProperties, PropType } from 'vue'
 import { CSSProperties, PropType } from 'vue'
 import Cropper from 'cropperjs'
 import Cropper from 'cropperjs'
 import 'cropperjs/dist/cropper.css'
 import 'cropperjs/dist/cropper.css'

+ 10 - 4
src/components/Cropper/src/CropperAvatar.vue

@@ -1,17 +1,17 @@
 <template>
 <template>
   <div class="user-info-head" @click="open()">
   <div class="user-info-head" @click="open()">
-    <img :src="sourceValue" v-if="sourceValue" class="img-circle img-lg" alt="avatar" />
-    <el-button :class="`${prefixCls}-upload-btn`" @click="open()" v-if="showBtn">
+    <img v-if="sourceValue" :src="sourceValue" alt="avatar" class="img-circle img-lg" />
+    <el-button v-if="showBtn" :class="`${prefixCls}-upload-btn`" @click="open()">
       {{ btnText ? btnText : t('cropper.selectImage') }}
       {{ btnText ? btnText : t('cropper.selectImage') }}
     </el-button>
     </el-button>
     <CopperModal
     <CopperModal
       ref="cropperModelRef"
       ref="cropperModelRef"
-      @upload-success="handleUploadSuccess"
       :srcValue="sourceValue"
       :srcValue="sourceValue"
+      @upload-success="handleUploadSuccess"
     />
     />
   </div>
   </div>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="CropperAvatar" setup>
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
 
 
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
@@ -54,9 +54,11 @@ function handleUploadSuccess({ source, data, filename }) {
 function open() {
 function open() {
   cropperModelRef.value.openModal()
   cropperModelRef.value.openModal()
 }
 }
+
 function close() {
 function close() {
   cropperModelRef.value.closeModal()
   cropperModelRef.value.closeModal()
 }
 }
+
 defineExpose({
 defineExpose({
   open,
   open,
   close
   close
@@ -104,17 +106,21 @@ $prefix-cls: #{$namespace}--cropper-avatar;
     margin: 10px auto;
     margin: 10px auto;
   }
   }
 }
 }
+
 .user-info-head {
 .user-info-head {
   position: relative;
   position: relative;
   display: inline-block;
   display: inline-block;
 }
 }
+
 .img-circle {
 .img-circle {
   border-radius: 50%;
   border-radius: 50%;
 }
 }
+
 .img-lg {
 .img-lg {
   width: 120px;
   width: 120px;
   height: 120px;
   height: 120px;
 }
 }
+
 .user-info-head:hover:after {
 .user-info-head:hover:after {
   content: '+';
   content: '+';
   position: absolute;
   position: absolute;

+ 5 - 5
src/components/Descriptions/src/Descriptions.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="Descriptions" setup>
 import { PropType } from 'vue'
 import { PropType } from 'vue'
 import dayjs from 'dayjs'
 import dayjs from 'dayjs'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
@@ -84,7 +84,7 @@ const toggleClick = () => {
         <div class="flex items-center">
         <div class="flex items-center">
           {{ title }}
           {{ title }}
           <ElTooltip v-if="message" :content="message" placement="right">
           <ElTooltip v-if="message" :content="message" placement="right">
-            <Icon icon="ep:warning" class="ml-5px" />
+            <Icon class="ml-5px" icon="ep:warning" />
           </ElTooltip>
           </ElTooltip>
         </div>
         </div>
       </div>
       </div>
@@ -95,8 +95,8 @@ const toggleClick = () => {
       <div v-show="show" :class="[`${prefixCls}-content`, 'p-10px']">
       <div v-show="show" :class="[`${prefixCls}-content`, 'p-10px']">
         <ElDescriptions
         <ElDescriptions
           :column="props.columns"
           :column="props.columns"
-          border
           :direction="mobile ? 'vertical' : 'horizontal'"
           :direction="mobile ? 'vertical' : 'horizontal'"
+          border
           v-bind="getBindValue"
           v-bind="getBindValue"
         >
         >
           <template v-if="slots['extra']" #extra>
           <template v-if="slots['extra']" #extra>
@@ -114,8 +114,8 @@ const toggleClick = () => {
                 :row="{
                 :row="{
                   label: item.label
                   label: item.label
                 }"
                 }"
-                >{{ item.label }}</slot
-              >
+                >{{ item.label }}
+              </slot>
             </template>
             </template>
 
 
             <template #default>
             <template #default>

+ 7 - 7
src/components/Dialog/src/Dialog.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="Dialog" setup>
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import { isNumber } from '@/utils/is'
 import { isNumber } from '@/utils/is'
 
 
@@ -59,13 +59,13 @@ const dialogStyle = computed(() => {
 
 
 <template>
 <template>
   <ElDialog
   <ElDialog
-    v-bind="getBindValue"
+    :close-on-click-modal="true"
     :fullscreen="isFullscreen"
     :fullscreen="isFullscreen"
+    :width="width"
     destroy-on-close
     destroy-on-close
-    lock-scroll
     draggable
     draggable
-    :width="width"
-    :close-on-click-modal="true"
+    lock-scroll
+    v-bind="getBindValue"
   >
   >
     <template #header>
     <template #header>
       <div class="flex justify-between">
       <div class="flex justify-between">
@@ -74,8 +74,8 @@ const dialogStyle = computed(() => {
         </slot>
         </slot>
         <Icon
         <Icon
           v-if="fullscreen"
           v-if="fullscreen"
-          class="mr-22px cursor-pointer is-hover mt-2px z-10"
           :icon="isFullscreen ? 'zmdi:fullscreen-exit' : 'zmdi:fullscreen'"
           :icon="isFullscreen ? 'zmdi:fullscreen-exit' : 'zmdi:fullscreen'"
+          class="mr-22px cursor-pointer is-hover mt-2px z-10"
           color="var(--el-color-info)"
           color="var(--el-color-info)"
           @click="toggleFull"
           @click="toggleFull"
         />
         />
@@ -83,7 +83,7 @@ const dialogStyle = computed(() => {
     </template>
     </template>
 
 
     <!-- 情况一:如果 scroll 为 true,说明开启滚动条 -->
     <!-- 情况一:如果 scroll 为 true,说明开启滚动条 -->
-    <ElScrollbar :style="dialogStyle" v-if="scroll">
+    <ElScrollbar v-if="scroll" :style="dialogStyle">
       <slot></slot>
       <slot></slot>
     </ElScrollbar>
     </ElScrollbar>
     <!-- 情况二:如果 scroll 为 false,说明关闭滚动条滚动条 -->
     <!-- 情况二:如果 scroll 为 false,说明关闭滚动条滚动条 -->

+ 1 - 1
src/components/Echart/src/Echart.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="EChart" setup>
 import type { EChartsOption } from 'echarts'
 import type { EChartsOption } from 'echarts'
 import echarts from '@/plugins/echarts'
 import echarts from '@/plugins/echarts'
 import { debounce } from 'lodash-es'
 import { debounce } from 'lodash-es'

+ 3 - 3
src/components/Editor/src/Editor.vue

@@ -1,7 +1,7 @@
-<script setup lang="ts">
+<script lang="ts" name="Editor" setup>
 import { PropType } from 'vue'
 import { PropType } from 'vue'
 import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
 import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
-import { IDomEditor, IEditorConfig, i18nChangeLanguage } from '@wangeditor/editor'
+import { i18nChangeLanguage, IDomEditor, IEditorConfig } from '@wangeditor/editor'
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import { isNumber } from '@/utils/is'
 import { isNumber } from '@/utils/is'
 import { ElMessage } from 'element-plus'
 import { ElMessage } from 'element-plus'
@@ -188,8 +188,8 @@ defineExpose({
     <!-- 编辑器 -->
     <!-- 编辑器 -->
     <Editor
     <Editor
       v-model="valueHtml"
       v-model="valueHtml"
-      :editorId="editorId"
       :defaultConfig="editorConfig"
       :defaultConfig="editorConfig"
+      :editorId="editorId"
       :style="editorStyle"
       :style="editorStyle"
       @on-change="handleChange"
       @on-change="handleChange"
       @on-created="handleCreated"
       @on-created="handleCreated"

+ 2 - 2
src/components/Error/src/Error.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="Error" setup>
 import pageError from '@/assets/svgs/404.svg'
 import pageError from '@/assets/svgs/404.svg'
 import networkError from '@/assets/svgs/500.svg'
 import networkError from '@/assets/svgs/500.svg'
 import noPermission from '@/assets/svgs/403.svg'
 import noPermission from '@/assets/svgs/403.svg'
@@ -46,7 +46,7 @@ const btnClick = () => {
 <template>
 <template>
   <div class="flex justify-center">
   <div class="flex justify-center">
     <div class="text-center">
     <div class="text-center">
-      <img width="350" :src="errorMap[type].url" alt="" />
+      <img :src="errorMap[type].url" alt="" width="350" />
       <div class="text-14px text-[var(--el-color-info)]">{{ errorMap[type].message }}</div>
       <div class="text-14px text-[var(--el-color-info)]">{{ errorMap[type].message }}</div>
       <div class="mt-20px">
       <div class="mt-20px">
         <ElButton type="primary" @click="btnClick">{{ errorMap[type].buttonText }}</ElButton>
         <ElButton type="primary" @click="btnClick">{{ errorMap[type].buttonText }}</ElButton>

+ 3 - 3
src/components/IFrame/src/IFrame.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="IFrame" setup>
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 
 
 const props = defineProps({
 const props = defineProps({
@@ -20,11 +20,11 @@ onMounted(() => {
 <template>
 <template>
   <div v-loading="loading" :style="'height:' + height">
   <div v-loading="loading" :style="'height:' + height">
     <iframe
     <iframe
+      ref="frameRef"
       :src="props.src"
       :src="props.src"
-      style="width: 100%; height: 100%"
       frameborder="no"
       frameborder="no"
       scrolling="auto"
       scrolling="auto"
-      ref="frameRef"
+      style="width: 100%; height: 100%"
     ></iframe>
     ></iframe>
   </div>
   </div>
 </template>
 </template>

+ 2 - 2
src/components/Icon/src/Icon.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="Icon" setup>
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import Iconify from '@purge-icons/generated'
 import Iconify from '@purge-icons/generated'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
@@ -72,7 +72,7 @@ watch(
 
 
 <template>
 <template>
   <ElIcon :class="prefixCls" :color="color" :size="size">
   <ElIcon :class="prefixCls" :color="color" :size="size">
-    <svg v-if="isLocal" aria-hidden="true" :class="getSvgClass">
+    <svg v-if="isLocal" :class="getSvgClass" aria-hidden="true">
       <use :xlink:href="symbolId" />
       <use :xlink:href="symbolId" />
     </svg>
     </svg>
 
 

+ 11 - 11
src/components/Icon/src/IconSelect.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="IconSelect" setup>
 import { CSSProperties } from 'vue'
 import { CSSProperties } from 'vue'
 import { cloneDeep } from 'lodash-es'
 import { cloneDeep } from 'lodash-es'
 import { IconJson } from '@/components/Icon/src/data'
 import { IconJson } from '@/components/Icon/src/data'
@@ -116,13 +116,13 @@ watch(
     <ElInput v-model="inputValue" @click="visible = !visible">
     <ElInput v-model="inputValue" @click="visible = !visible">
       <template #append>
       <template #append>
         <ElPopover
         <ElPopover
-          :width="350"
-          trigger="click"
-          popper-class="pure-popper"
           :popper-options="{
           :popper-options="{
             placement: 'auto'
             placement: 'auto'
           }"
           }"
           :visible="visible"
           :visible="visible"
+          :width="350"
+          popper-class="pure-popper"
+          trigger="click"
         >
         >
           <template #reference>
           <template #reference>
             <div
             <div
@@ -133,7 +133,7 @@ watch(
             </div>
             </div>
           </template>
           </template>
 
 
-          <ElInput class="p-2" v-model="filterValue" placeholder="搜索图标" clearable />
+          <ElInput v-model="filterValue" class="p-2" clearable placeholder="搜索图标" />
           <ElDivider border-style="dashed" />
           <ElDivider border-style="dashed" />
 
 
           <ElTabs v-model="currentActiveType" @tab-click="handleClick">
           <ElTabs v-model="currentActiveType" @tab-click="handleClick">
@@ -143,15 +143,15 @@ watch(
               :label="pane.label"
               :label="pane.label"
               :name="pane.name"
               :name="pane.name"
             >
             >
-              <ElDivider class="tab-divider" border-style="dashed" />
+              <ElDivider border-style="dashed" class="tab-divider" />
               <ElScrollbar height="220px">
               <ElScrollbar height="220px">
                 <ul class="flex flex-wrap px-2 ml-2">
                 <ul class="flex flex-wrap px-2 ml-2">
                   <li
                   <li
                     v-for="(item, key) in pageList"
                     v-for="(item, key) in pageList"
                     :key="key"
                     :key="key"
+                    :style="iconItemStyle(item)"
                     :title="item"
                     :title="item"
                     class="icon-item p-2 w-1/10 cursor-pointer mr-2 mt-1 flex justify-center items-center border border-solid"
                     class="icon-item p-2 w-1/10 cursor-pointer mr-2 mt-1 flex justify-center items-center border border-solid"
-                    :style="iconItemStyle(item)"
                     @click="onChangeIcon(item)"
                     @click="onChangeIcon(item)"
                   >
                   >
                     <Icon :icon="currentActiveType + item" />
                     <Icon :icon="currentActiveType + item" />
@@ -163,13 +163,13 @@ watch(
           <ElDivider border-style="dashed" />
           <ElDivider border-style="dashed" />
 
 
           <ElPagination
           <ElPagination
-            small
-            :total="iconCount"
-            :page-size="pageSize"
             :current-page="currentPage"
             :current-page="currentPage"
+            :page-size="pageSize"
+            :total="iconCount"
             background
             background
-            layout="prev, pager, next"
             class="flex items-center justify-center h-10"
             class="flex items-center justify-center h-10"
+            layout="prev, pager, next"
+            small
             @current-change="onCurrentChange"
             @current-change="onCurrentChange"
           />
           />
         </ElPopover>
         </ElPopover>

+ 1 - 1
src/components/ImageViewer/src/ImageViewer.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="ImageViewer" setup>
 import { PropType } from 'vue'
 import { PropType } from 'vue'
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 
 

+ 3 - 3
src/components/Infotip/src/Infotip.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="InfoTip" setup>
 import { PropType } from 'vue'
 import { PropType } from 'vue'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
@@ -34,14 +34,14 @@ const keyClick = (key: string) => {
     ]"
     ]"
   >
   >
     <div v-if="title" :class="[`${prefixCls}__header`, 'flex items-center']">
     <div v-if="title" :class="[`${prefixCls}__header`, 'flex items-center']">
-      <Icon icon="ep:warning-filled" :size="22" color="var(--el-color-primary)" />
+      <Icon :size="22" color="var(--el-color-primary)" icon="ep:warning-filled" />
       <span :class="[`${prefixCls}__title`, 'pl-5px text-16px font-bold']">{{ title }}</span>
       <span :class="[`${prefixCls}__title`, 'pl-5px text-16px font-bold']">{{ title }}</span>
     </div>
     </div>
     <div :class="`${prefixCls}__content`">
     <div :class="`${prefixCls}__content`">
       <p v-for="(item, $index) in schema" :key="$index" class="text-14px mt-15px">
       <p v-for="(item, $index) in schema" :key="$index" class="text-14px mt-15px">
         <Highlight
         <Highlight
-          :keys="typeof item === 'string' ? [] : item.keys"
           :color="highlightColor"
           :color="highlightColor"
+          :keys="typeof item === 'string' ? [] : item.keys"
           @click="keyClick"
           @click="keyClick"
         >
         >
           {{ showIndex ? `${$index + 1}、` : '' }}{{ typeof item === 'string' ? item : item.label }}
           {{ showIndex ? `${$index + 1}、` : '' }}{{ typeof item === 'string' ? item : item.label }}

+ 4 - 4
src/components/InputPassword/src/InputPassword.vue

@@ -1,8 +1,8 @@
-<script setup lang="ts">
+<script lang="ts" name="InputPassword" setup>
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import { useConfigGlobal } from '@/hooks/web/useConfigGlobal'
 import { useConfigGlobal } from '@/hooks/web/useConfigGlobal'
-import { zxcvbn } from '@zxcvbn-ts/core'
 import type { ZxcvbnResult } from '@zxcvbn-ts/core'
 import type { ZxcvbnResult } from '@zxcvbn-ts/core'
+import { zxcvbn } from '@zxcvbn-ts/core'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
 
 
 const { getPrefixCls } = useDesign()
 const { getPrefixCls } = useDesign()
@@ -57,9 +57,9 @@ const getIconName = computed(() => (unref(textType) === 'password' ? 'ep:hide' :
 
 
 <template>
 <template>
   <div :class="[prefixCls, `${prefixCls}--${configGlobal?.size}`]">
   <div :class="[prefixCls, `${prefixCls}--${configGlobal?.size}`]">
-    <ElInput v-bind="$attrs" v-model="valueRef" :type="textType">
+    <ElInput v-model="valueRef" :type="textType" v-bind="$attrs">
       <template #suffix>
       <template #suffix>
-        <Icon class="el-input__icon cursor-pointer" :icon="getIconName" @click="changeTextType" />
+        <Icon :icon="getIconName" class="el-input__icon cursor-pointer" @click="changeTextType" />
       </template>
       </template>
     </ElInput>
     </ElInput>
     <div
     <div

+ 5 - 5
src/components/Pagination/index.vue

@@ -2,19 +2,19 @@
 <template>
 <template>
   <el-pagination
   <el-pagination
     v-show="total > 0"
     v-show="total > 0"
-    class="float-right mt-15px mb-15px"
-    :background="true"
-    layout="total, sizes, prev, pager, next, jumper"
-    :page-sizes="[10, 20, 30, 50, 100]"
     v-model:current-page="currentPage"
     v-model:current-page="currentPage"
     v-model:page-size="pageSize"
     v-model:page-size="pageSize"
+    :background="true"
+    :page-sizes="[10, 20, 30, 50, 100]"
     :pager-count="pagerCount"
     :pager-count="pagerCount"
     :total="total"
     :total="total"
+    class="float-right mt-15px mb-15px"
+    layout="total, sizes, prev, pager, next, jumper"
     @size-change="handleSizeChange"
     @size-change="handleSizeChange"
     @current-change="handleCurrentChange"
     @current-change="handleCurrentChange"
   />
   />
 </template>
 </template>
-<script setup>
+<script name="Pagination" setup>
 import { computed } from 'vue'
 import { computed } from 'vue'
 
 
 const props = defineProps({
 const props = defineProps({

+ 4 - 5
src/components/Qrcode/src/Qrcode.vue

@@ -1,7 +1,6 @@
-<script setup lang="ts">
-import { PropType, nextTick, ref, watch, computed, unref } from 'vue'
-import QRCode from 'qrcode'
-import { QRCodeRenderersOptions } from 'qrcode'
+<script lang="ts" name="Qrcode" setup>
+import { computed, nextTick, PropType, ref, unref, watch } from 'vue'
+import QRCode, { QRCodeRenderersOptions } from 'qrcode'
 import { cloneDeep } from 'lodash-es'
 import { cloneDeep } from 'lodash-es'
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
@@ -230,7 +229,7 @@ const disabledClick = () => {
       @click="disabledClick"
       @click="disabledClick"
     >
     >
       <div class="absolute top-[50%] left-[50%] font-bold">
       <div class="absolute top-[50%] left-[50%] font-bold">
-        <Icon icon="ep:refresh-right" :size="30" color="var(--el-color-primary)" />
+        <Icon :size="30" color="var(--el-color-primary)" icon="ep:refresh-right" />
         <div>{{ disabledText }}</div>
         <div>{{ disabledText }}</div>
       </div>
       </div>
     </div>
     </div>

+ 12 - 12
src/components/Search/src/Search.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="Search" setup>
 import { PropType } from 'vue'
 import { PropType } from 'vue'
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 
 
@@ -100,25 +100,25 @@ const setVisible = () => {
 <template>
 <template>
   <!-- update by 芋艿:class="-mb-15px" 用于降低和 ContentWrap 组件的底部距离,避免空隙过大 -->
   <!-- update by 芋艿:class="-mb-15px" 用于降低和 ContentWrap 组件的底部距离,避免空隙过大 -->
   <Form
   <Form
-    :is-custom="false"
-    :label-width="labelWidth"
-    hide-required-asterisk
     :inline="inline"
     :inline="inline"
     :is-col="isCol"
     :is-col="isCol"
+    :is-custom="false"
+    :label-width="labelWidth"
     :schema="newSchema"
     :schema="newSchema"
-    @register="register"
     class="-mb-15px"
     class="-mb-15px"
+    hide-required-asterisk
+    @register="register"
   >
   >
     <template #action>
     <template #action>
       <div v-if="layout === 'inline'">
       <div v-if="layout === 'inline'">
         <!-- update by 芋艿:去除搜索的 type="primary",颜色变淡一点 -->
         <!-- update by 芋艿:去除搜索的 type="primary",颜色变淡一点 -->
         <ElButton v-if="showSearch" @click="search">
         <ElButton v-if="showSearch" @click="search">
-          <Icon icon="ep:search" class="mr-5px" />
+          <Icon class="mr-5px" icon="ep:search" />
           {{ t('common.query') }}
           {{ t('common.query') }}
         </ElButton>
         </ElButton>
         <!-- update by 芋艿:将 icon="ep:refresh-right" 修改成 icon="ep:refresh",和 ruoyi-vue 搜索保持一致  -->
         <!-- update by 芋艿:将 icon="ep:refresh-right" 修改成 icon="ep:refresh",和 ruoyi-vue 搜索保持一致  -->
         <ElButton v-if="showReset" @click="reset">
         <ElButton v-if="showReset" @click="reset">
-          <Icon icon="ep:refresh" class="mr-5px" />
+          <Icon class="mr-5px" icon="ep:refresh" />
           {{ t('common.reset') }}
           {{ t('common.reset') }}
         </ElButton>
         </ElButton>
         <ElButton v-if="expand" text @click="setVisible">
         <ElButton v-if="expand" text @click="setVisible">
@@ -129,19 +129,19 @@ const setVisible = () => {
         <slot name="actionMore"></slot>
         <slot name="actionMore"></slot>
       </div>
       </div>
     </template>
     </template>
-    <template #[name] v-for="name in Object.keys($slots)" :key="name"
-      ><slot :name="name"></slot
-    ></template>
+    <template v-for="name in Object.keys($slots)" :key="name" #[name]>
+      <slot :name="name"></slot>
+    </template>
   </Form>
   </Form>
 
 
   <template v-if="layout === 'bottom'">
   <template v-if="layout === 'bottom'">
     <div :style="bottonButtonStyle">
     <div :style="bottonButtonStyle">
       <ElButton v-if="showSearch" type="primary" @click="search">
       <ElButton v-if="showSearch" type="primary" @click="search">
-        <Icon icon="ep:search" class="mr-5px" />
+        <Icon class="mr-5px" icon="ep:search" />
         {{ t('common.query') }}
         {{ t('common.query') }}
       </ElButton>
       </ElButton>
       <ElButton v-if="showReset" @click="reset">
       <ElButton v-if="showReset" @click="reset">
-        <Icon icon="ep:refresh-right" class="mr-5px" />
+        <Icon class="mr-5px" icon="ep:refresh-right" />
         {{ t('common.reset') }}
         {{ t('common.reset') }}
       </ElButton>
       </ElButton>
       <ElButton v-if="expand" text @click="setVisible">
       <ElButton v-if="expand" text @click="setVisible">

+ 3 - 2
src/components/Sticky/src/Sticky.vue

@@ -1,7 +1,8 @@
-<script setup lang="ts">
+<script lang="ts" name="Sticky" setup>
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import { isClient, useEventListener, useWindowSize } from '@vueuse/core'
 import { isClient, useEventListener, useWindowSize } from '@vueuse/core'
 import type { CSSProperties } from 'vue'
 import type { CSSProperties } from 'vue'
+
 const props = defineProps({
 const props = defineProps({
   // 距离顶部或者底部的距离(单位px)
   // 距离顶部或者底部的距离(单位px)
   offset: propTypes.number.def(0),
   offset: propTypes.number.def(0),
@@ -120,7 +121,7 @@ const reset = () => {
 }
 }
 </script>
 </script>
 <template>
 <template>
-  <div :style="{ height: height, zIndex: zIndex }" ref="refSticky">
+  <div ref="refSticky" :style="{ height: height, zIndex: zIndex }">
     <div
     <div
       :class="className"
       :class="className"
       :style="{
       :style="{

+ 2 - 1
src/components/Tooltip/src/Tooltip.vue

@@ -1,5 +1,6 @@
-<script setup lang="ts">
+<script lang="ts" name="Tooltip" setup>
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
+
 defineProps({
 defineProps({
   titel: propTypes.string.def(''),
   titel: propTypes.string.def(''),
   message: propTypes.string.def(''),
   message: propTypes.string.def(''),

+ 23 - 13
src/components/Verifition/src/Verify.vue

@@ -1,42 +1,42 @@
 <template>
 <template>
-  <div :class="mode == 'pop' ? 'mask' : ''" v-show="showBox">
+  <div v-show="showBox" :class="mode == 'pop' ? 'mask' : ''">
     <div
     <div
       :class="mode == 'pop' ? 'verifybox' : ''"
       :class="mode == 'pop' ? 'verifybox' : ''"
       :style="{ 'max-width': parseInt(imgSize.width) + 20 + 'px' }"
       :style="{ 'max-width': parseInt(imgSize.width) + 20 + 'px' }"
     >
     >
-      <div class="verifybox-top" v-if="mode == 'pop'">
+      <div v-if="mode == 'pop'" class="verifybox-top">
         {{ t('captcha.verification') }}
         {{ t('captcha.verification') }}
         <span class="verifybox-close" @click="closeBox">
         <span class="verifybox-close" @click="closeBox">
           <i class="iconfont icon-close"></i>
           <i class="iconfont icon-close"></i>
         </span>
         </span>
       </div>
       </div>
-      <div class="verifybox-bottom" :style="{ padding: mode == 'pop' ? '10px' : '0' }">
+      <div :style="{ padding: mode == 'pop' ? '10px' : '0' }" class="verifybox-bottom">
         <!-- 验证码容器 -->
         <!-- 验证码容器 -->
         <component
         <component
-          v-if="componentType"
           :is="componentType"
           :is="componentType"
+          v-if="componentType"
+          ref="instance"
+          :arith="arith"
+          :barSize="barSize"
+          :blockSize="blockSize"
           :captchaType="captchaType"
           :captchaType="captchaType"
-          :type="verifyType"
+          :explain="explain"
           :figure="figure"
           :figure="figure"
-          :arith="arith"
+          :imgSize="imgSize"
           :mode="mode"
           :mode="mode"
+          :type="verifyType"
           :vSpace="vSpace"
           :vSpace="vSpace"
-          :explain="explain"
-          :imgSize="imgSize"
-          :blockSize="blockSize"
-          :barSize="barSize"
-          ref="instance"
         />
         />
       </div>
       </div>
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
-<script type="text/babel">
+<script name="Verify" type="text/babel">
 /**
 /**
  * Verify 验证码组件
  * Verify 验证码组件
  * @description 分发验证码使用
  * @description 分发验证码使用
  * */
  * */
-import { VerifySlide, VerifyPoints } from './Verify'
+import { VerifyPoints, VerifySlide } from './Verify'
 import { computed, ref, toRefs, watchEffect } from 'vue'
 import { computed, ref, toRefs, watchEffect } from 'vue'
 
 
 export default {
 export default {
@@ -155,6 +155,7 @@ export default {
   border-radius: 5px;
   border-radius: 5px;
   transform: translate(-50%, -50%);
   transform: translate(-50%, -50%);
 }
 }
+
 .verifybox-top {
 .verifybox-top {
   padding: 0 15px;
   padding: 0 15px;
   height: 40px;
   height: 40px;
@@ -165,10 +166,12 @@ export default {
   border-bottom: 1px solid #e4e7eb;
   border-bottom: 1px solid #e4e7eb;
   box-sizing: border-box;
   box-sizing: border-box;
 }
 }
+
 .verifybox-bottom {
 .verifybox-bottom {
   padding: 10px;
   padding: 10px;
   box-sizing: border-box;
   box-sizing: border-box;
 }
 }
+
 .verifybox-close {
 .verifybox-close {
   position: absolute;
   position: absolute;
   top: 13px;
   top: 13px;
@@ -178,6 +181,7 @@ export default {
   text-align: center;
   text-align: center;
   cursor: pointer;
   cursor: pointer;
 }
 }
+
 .mask {
 .mask {
   position: fixed;
   position: fixed;
   top: 0;
   top: 0;
@@ -189,6 +193,7 @@ export default {
   /* display: none; */
   /* display: none; */
   transition: all 0.5s;
   transition: all 0.5s;
 }
 }
+
 .verify-tips {
 .verify-tips {
   text-indent: 10px;
   text-indent: 10px;
   position: absolute;
   position: absolute;
@@ -199,22 +204,27 @@ export default {
   line-height: 30px;
   line-height: 30px;
   color: #fff;
   color: #fff;
 }
 }
+
 .suc-bg {
 .suc-bg {
   background-color: rgba(92, 184, 92, 0.5);
   background-color: rgba(92, 184, 92, 0.5);
   filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7f5CB85C, endcolorstr=#7f5CB85C);
   filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7f5CB85C, endcolorstr=#7f5CB85C);
 }
 }
+
 .err-bg {
 .err-bg {
   background-color: rgba(217, 83, 79, 0.5);
   background-color: rgba(217, 83, 79, 0.5);
   filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7fD9534F, endcolorstr=#7fD9534F);
   filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7fD9534F, endcolorstr=#7fD9534F);
 }
 }
+
 .tips-enter,
 .tips-enter,
 .tips-leave-to {
 .tips-leave-to {
   bottom: -30px;
   bottom: -30px;
 }
 }
+
 .tips-enter-active,
 .tips-enter-active,
 .tips-leave-active {
 .tips-leave-active {
   transition: bottom 0.5s;
   transition: bottom 0.5s;
 }
 }
+
 /* ---------------------------- */
 /* ---------------------------- */
 /*常规验证码*/
 /*常规验证码*/
 .verify-code {
 .verify-code {

+ 7 - 7
src/components/Verifition/src/Verify/VerifyPoints.vue

@@ -2,20 +2,20 @@
   <div style="position: relative">
   <div style="position: relative">
     <div class="verify-img-out">
     <div class="verify-img-out">
       <div
       <div
-        class="verify-img-panel"
         :style="{
         :style="{
           width: setSize.imgWidth,
           width: setSize.imgWidth,
           height: setSize.imgHeight,
           height: setSize.imgHeight,
           'background-size': setSize.imgWidth + ' ' + setSize.imgHeight,
           'background-size': setSize.imgWidth + ' ' + setSize.imgHeight,
           'margin-bottom': vSpace + 'px'
           'margin-bottom': vSpace + 'px'
         }"
         }"
+        class="verify-img-panel"
       >
       >
-        <div class="verify-refresh" style="z-index: 3" @click="refresh" v-show="showRefresh">
+        <div v-show="showRefresh" class="verify-refresh" style="z-index: 3" @click="refresh">
           <i class="iconfont icon-refresh"></i>
           <i class="iconfont icon-refresh"></i>
         </div>
         </div>
         <img
         <img
-          :src="'data:image/png;base64,' + pointBackImgBase"
           ref="canvas"
           ref="canvas"
+          :src="'data:image/png;base64,' + pointBackImgBase"
           alt=""
           alt=""
           style="width: 100%; height: 100%; display: block"
           style="width: 100%; height: 100%; display: block"
           @click="bindingClick ? canvasClick($event) : undefined"
           @click="bindingClick ? canvasClick($event) : undefined"
@@ -24,7 +24,6 @@
         <div
         <div
           v-for="(tempPoint, index) in tempPoints"
           v-for="(tempPoint, index) in tempPoints"
           :key="index"
           :key="index"
-          class="point-area"
           :style="{
           :style="{
             'background-color': '#1abd6c',
             'background-color': '#1abd6c',
             color: '#fff',
             color: '#fff',
@@ -38,6 +37,7 @@
             top: parseInt(tempPoint.y - 10) + 'px',
             top: parseInt(tempPoint.y - 10) + 'px',
             left: parseInt(tempPoint.x - 10) + 'px'
             left: parseInt(tempPoint.x - 10) + 'px'
           }"
           }"
+          class="point-area"
         >
         >
           {{ index + 1 }}
           {{ index + 1 }}
         </div>
         </div>
@@ -45,19 +45,19 @@
     </div>
     </div>
     <!-- 'height': this.barSize.height, -->
     <!-- 'height': this.barSize.height, -->
     <div
     <div
-      class="verify-bar-area"
       :style="{
       :style="{
         width: setSize.imgWidth,
         width: setSize.imgWidth,
         color: barAreaColor,
         color: barAreaColor,
         'border-color': barAreaBorderColor,
         'border-color': barAreaBorderColor,
         'line-height': barSize.height
         'line-height': barSize.height
       }"
       }"
+      class="verify-bar-area"
     >
     >
       <span class="verify-msg">{{ text }}</span>
       <span class="verify-msg">{{ text }}</span>
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
-<script type="text/babel" setup>
+<script name="VerifyPoints" setup type="text/babel">
 /**
 /**
  * VerifyPoints
  * VerifyPoints
  * @description 点选
  * @description 点选
@@ -65,7 +65,7 @@
 import { resetSize } from './../utils/util'
 import { resetSize } from './../utils/util'
 import { aesEncrypt } from './../utils/ase'
 import { aesEncrypt } from './../utils/ase'
 import { getCode, reqCheck } from '@/api/login'
 import { getCode, reqCheck } from '@/api/login'
-import { onMounted, reactive, ref, nextTick, toRefs, getCurrentInstance } from 'vue'
+import { getCurrentInstance, nextTick, onMounted, reactive, ref, toRefs } from 'vue'
 
 
 const props = defineProps({
 const props = defineProps({
   //弹出式pop,固定fixed
   //弹出式pop,固定fixed

+ 11 - 11
src/components/Verifition/src/Verify/VerifySlide.vue

@@ -2,20 +2,20 @@
   <div style="position: relative">
   <div style="position: relative">
     <div
     <div
       v-if="type === '2'"
       v-if="type === '2'"
-      class="verify-img-out"
       :style="{ height: parseInt(setSize.imgHeight) + vSpace + 'px' }"
       :style="{ height: parseInt(setSize.imgHeight) + vSpace + 'px' }"
+      class="verify-img-out"
     >
     >
-      <div class="verify-img-panel" :style="{ width: setSize.imgWidth, height: setSize.imgHeight }">
+      <div :style="{ width: setSize.imgWidth, height: setSize.imgHeight }" class="verify-img-panel">
         <img
         <img
           :src="'data:image/png;base64,' + backImgBase"
           :src="'data:image/png;base64,' + backImgBase"
           alt=""
           alt=""
           style="width: 100%; height: 100%; display: block"
           style="width: 100%; height: 100%; display: block"
         />
         />
-        <div class="verify-refresh" @click="refresh" v-show="showRefresh">
+        <div v-show="showRefresh" class="verify-refresh" @click="refresh">
           <i class="iconfont icon-refresh"></i>
           <i class="iconfont icon-refresh"></i>
         </div>
         </div>
         <transition name="tips">
         <transition name="tips">
-          <span class="verify-tips" v-if="tipWords" :class="passFlag ? 'suc-bg' : 'err-bg'">
+          <span v-if="tipWords" :class="passFlag ? 'suc-bg' : 'err-bg'" class="verify-tips">
             {{ tipWords }}
             {{ tipWords }}
           </span>
           </span>
         </transition>
         </transition>
@@ -23,24 +23,21 @@
     </div>
     </div>
     <!-- 公共部分 -->
     <!-- 公共部分 -->
     <div
     <div
-      class="verify-bar-area"
       :style="{ width: setSize.imgWidth, height: barSize.height, 'line-height': barSize.height }"
       :style="{ width: setSize.imgWidth, height: barSize.height, 'line-height': barSize.height }"
+      class="verify-bar-area"
     >
     >
       <span class="verify-msg" v-text="text"></span>
       <span class="verify-msg" v-text="text"></span>
       <div
       <div
-        class="verify-left-bar"
         :style="{
         :style="{
           width: leftBarWidth !== undefined ? leftBarWidth : barSize.height,
           width: leftBarWidth !== undefined ? leftBarWidth : barSize.height,
           height: barSize.height,
           height: barSize.height,
           'border-color': leftBarBorderColor,
           'border-color': leftBarBorderColor,
           transaction: transitionWidth
           transaction: transitionWidth
         }"
         }"
+        class="verify-left-bar"
       >
       >
         <span class="verify-msg" v-text="finishText"></span>
         <span class="verify-msg" v-text="finishText"></span>
         <div
         <div
-          class="verify-move-block"
-          @touchstart="start"
-          @mousedown="start"
           :style="{
           :style="{
             width: barSize.height,
             width: barSize.height,
             height: barSize.height,
             height: barSize.height,
@@ -48,17 +45,20 @@
             left: moveBlockLeft,
             left: moveBlockLeft,
             transition: transitionLeft
             transition: transitionLeft
           }"
           }"
+          class="verify-move-block"
+          @mousedown="start"
+          @touchstart="start"
         >
         >
           <i :class="['verify-icon iconfont', iconClass]" :style="{ color: iconColor }"></i>
           <i :class="['verify-icon iconfont', iconClass]" :style="{ color: iconColor }"></i>
           <div
           <div
             v-if="type === '2'"
             v-if="type === '2'"
-            class="verify-sub-block"
             :style="{
             :style="{
               width: Math.floor((parseInt(setSize.imgWidth) * 47) / 310) + 'px',
               width: Math.floor((parseInt(setSize.imgWidth) * 47) / 310) + 'px',
               height: setSize.imgHeight,
               height: setSize.imgHeight,
               top: '-' + (parseInt(setSize.imgHeight) + vSpace) + 'px',
               top: '-' + (parseInt(setSize.imgHeight) + vSpace) + 'px',
               'background-size': setSize.imgWidth + ' ' + setSize.imgHeight
               'background-size': setSize.imgWidth + ' ' + setSize.imgHeight
             }"
             }"
+            class="verify-sub-block"
           >
           >
             <img
             <img
               :src="'data:image/png;base64,' + blockBackImgBase"
               :src="'data:image/png;base64,' + blockBackImgBase"
@@ -71,7 +71,7 @@
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
-<script type="text/babel" setup>
+<script name="VerifySlide" setup type="text/babel">
 /**
 /**
  * VerifySlide
  * VerifySlide
  * @description 滑块
  * @description 滑块

+ 4 - 3
src/components/XButton/src/XButton.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="XButton" setup>
 import { PropType } from 'vue'
 import { PropType } from 'vue'
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 
 
@@ -30,9 +30,9 @@ const getBindValue = computed(() => {
 
 
 <template>
 <template>
   <el-button v-bind="getBindValue" @click="onClick">
   <el-button v-bind="getBindValue" @click="onClick">
-    <Icon :icon="preIcon" v-if="preIcon" class="mr-1px" />
+    <Icon v-if="preIcon" :icon="preIcon" class="mr-1px" />
     {{ title ? title : '' }}
     {{ title ? title : '' }}
-    <Icon :icon="postIcon" v-if="postIcon" class="mr-1px" />
+    <Icon v-if="postIcon" :icon="postIcon" class="mr-1px" />
   </el-button>
   </el-button>
 </template>
 </template>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
@@ -40,6 +40,7 @@ const getBindValue = computed(() => {
   margin-left: 0;
   margin-left: 0;
   padding: 8px 4px;
   padding: 8px 4px;
 }
 }
+
 :deep(.el-button.is-link) {
 :deep(.el-button.is-link) {
   margin-left: 0;
   margin-left: 0;
   padding: 8px 4px;
   padding: 8px 4px;

+ 4 - 3
src/components/XButton/src/XTextButton.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="XTextButton" setup>
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import { PropType } from 'vue'
 import { PropType } from 'vue'
 
 
@@ -29,9 +29,9 @@ const getBindValue = computed(() => {
 
 
 <template>
 <template>
   <el-button link v-bind="getBindValue" @click="onClick">
   <el-button link v-bind="getBindValue" @click="onClick">
-    <Icon :icon="preIcon" v-if="preIcon" class="mr-1px" />
+    <Icon v-if="preIcon" :icon="preIcon" class="mr-1px" />
     {{ title ? title : '' }}
     {{ title ? title : '' }}
-    <Icon :icon="postIcon" v-if="postIcon" class="mr-1px" />
+    <Icon v-if="postIcon" :icon="postIcon" class="mr-1px" />
   </el-button>
   </el-button>
 </template>
 </template>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
@@ -39,6 +39,7 @@ const getBindValue = computed(() => {
   margin-left: 0;
   margin-left: 0;
   padding: 8px 4px;
   padding: 8px 4px;
 }
 }
+
 :deep(.el-button.is-link) {
 :deep(.el-button.is-link) {
   margin-left: 0;
   margin-left: 0;
   padding: 8px 4px;
   padding: 8px 4px;

+ 1 - 1
src/layout/components/AppView.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="AppView" setup>
 import { useTagsViewStore } from '@/store/modules/tagsView'
 import { useTagsViewStore } from '@/store/modules/tagsView'
 import { useAppStore } from '@/store/modules/app'
 import { useAppStore } from '@/store/modules/app'
 import { Footer } from '@/layout/components/Footer'
 import { Footer } from '@/layout/components/Footer'

+ 3 - 3
src/layout/components/Collapse/src/Collapse.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="Collapse" setup>
 import { useAppStore } from '@/store/modules/app'
 import { useAppStore } from '@/store/modules/app'
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
@@ -24,9 +24,9 @@ const toggleCollapse = () => {
 <template>
 <template>
   <div :class="prefixCls">
   <div :class="prefixCls">
     <Icon
     <Icon
-      :size="18"
-      :icon="collapse ? 'ep:expand' : 'ep:fold'"
       :color="color"
       :color="color"
+      :icon="collapse ? 'ep:expand' : 'ep:fold'"
+      :size="18"
       class="cursor-pointer"
       class="cursor-pointer"
       @click="toggleCollapse"
       @click="toggleCollapse"
     />
     />

+ 6 - 5
src/layout/components/ContextMenu/src/ContextMenu.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="ContextMenu" setup>
 import { PropType } from 'vue'
 import { PropType } from 'vue'
 
 
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
@@ -51,9 +51,9 @@ defineExpose({
     :class="prefixCls"
     :class="prefixCls"
     :trigger="trigger"
     :trigger="trigger"
     placement="bottom-start"
     placement="bottom-start"
+    popper-class="v-context-menu-popper"
     @command="command"
     @command="command"
     @visible-change="visibleChange"
     @visible-change="visibleChange"
-    popper-class="v-context-menu-popper"
   >
   >
     <slot></slot>
     <slot></slot>
     <template #dropdown>
     <template #dropdown>
@@ -61,11 +61,12 @@ defineExpose({
         <ElDropdownItem
         <ElDropdownItem
           v-for="(item, index) in schema"
           v-for="(item, index) in schema"
           :key="`dropdown${index}`"
           :key="`dropdown${index}`"
-          :divided="item.divided"
-          :disabled="item.disabled"
           :command="item"
           :command="item"
+          :disabled="item.disabled"
+          :divided="item.divided"
         >
         >
-          <Icon :icon="item.icon" /> {{ t(item.label) }}
+          <Icon :icon="item.icon" />
+          {{ t(item.label) }}
         </ElDropdownItem>
         </ElDropdownItem>
       </ElDropdownMenu>
       </ElDropdownMenu>
     </template>
     </template>

+ 1 - 1
src/layout/components/Footer/src/Footer.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="Footer" setup>
 import { useAppStore } from '@/store/modules/app'
 import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
 
 

+ 4 - 4
src/layout/components/LocaleDropdown/src/LocaleDropdown.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="LocaleDropdown" setup>
 import { useLocaleStore } from '@/store/modules/locale'
 import { useLocaleStore } from '@/store/modules/locale'
 import { useLocale } from '@/hooks/web/useLocale'
 import { useLocale } from '@/hooks/web/useLocale'
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
@@ -33,11 +33,11 @@ const setLang = (lang: LocaleType) => {
 <template>
 <template>
   <ElDropdown :class="prefixCls" trigger="click" @command="setLang">
   <ElDropdown :class="prefixCls" trigger="click" @command="setLang">
     <Icon
     <Icon
-      :size="18"
-      icon="ion:language-sharp"
-      class="cursor-pointer"
       :class="$attrs.class"
       :class="$attrs.class"
       :color="color"
       :color="color"
+      :size="18"
+      class="cursor-pointer"
+      icon="ion:language-sharp"
     />
     />
     <template #dropdown>
     <template #dropdown>
       <ElDropdownMenu>
       <ElDropdownMenu>

+ 3 - 3
src/layout/components/Logo/src/Logo.vue

@@ -1,5 +1,5 @@
-<script setup lang="ts">
-import { ref, watch, computed, onMounted, unref } from 'vue'
+<script lang="ts" name="Logo" setup>
+import { computed, onMounted, ref, unref, watch } from 'vue'
 import { useAppStore } from '@/store/modules/app'
 import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
 
 
@@ -66,8 +66,8 @@ watch(
       to="/"
       to="/"
     >
     >
       <img
       <img
-        src="@/assets/imgs/logo.png"
         class="w-[calc(var(--logo-height)-10px)] h-[calc(var(--logo-height)-10px)]"
         class="w-[calc(var(--logo-height)-10px)] h-[calc(var(--logo-height)-10px)]"
+        src="@/assets/imgs/logo.png"
       />
       />
       <div
       <div
         v-if="show"
         v-if="show"

+ 13 - 6
src/layout/components/Message/src/Message.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="Message" setup>
 import { formatDate } from '@/utils/formatTime'
 import { formatDate } from '@/utils/formatTime'
 import * as NotifyMessageApi from '@/api/system/notify/message'
 import * as NotifyMessageApi from '@/api/system/notify/message'
 
 
@@ -40,10 +40,10 @@ onMounted(() => {
 </script>
 </script>
 <template>
 <template>
   <div class="message">
   <div class="message">
-    <ElPopover placement="bottom" :width="400" trigger="click">
+    <ElPopover :width="400" placement="bottom" trigger="click">
       <template #reference>
       <template #reference>
         <ElBadge :is-dot="unreadCount > 0" class="item">
         <ElBadge :is-dot="unreadCount > 0" class="item">
-          <Icon icon="ep:bell" :size="18" class="cursor-pointer" @click="getList" />
+          <Icon :size="18" class="cursor-pointer" icon="ep:bell" @click="getList" />
         </ElBadge>
         </ElBadge>
       </template>
       </template>
       <ElTabs v-model="activeName">
       <ElTabs v-model="activeName">
@@ -51,7 +51,7 @@ onMounted(() => {
           <div class="message-list">
           <div class="message-list">
             <template v-for="item in list" :key="item.id">
             <template v-for="item in list" :key="item.id">
               <div class="message-item">
               <div class="message-item">
-                <img src="@/assets/imgs/avatar.gif" alt="" class="message-icon" />
+                <img alt="" class="message-icon" src="@/assets/imgs/avatar.gif" />
                 <div class="message-content">
                 <div class="message-content">
                   <span class="message-title">
                   <span class="message-title">
                     {{ item.templateNickname }}:{{ item.templateContent }}
                     {{ item.templateNickname }}:{{ item.templateContent }}
@@ -67,12 +67,12 @@ onMounted(() => {
       </ElTabs>
       </ElTabs>
       <!-- 更多 -->
       <!-- 更多 -->
       <div style="text-align: right; margin-top: 10px">
       <div style="text-align: right; margin-top: 10px">
-        <XButton type="primary" preIcon="ep:view" title="查看全部" @click="goMyList" />
+        <XButton preIcon="ep:view" title="查看全部" type="primary" @click="goMyList" />
       </div>
       </div>
     </ElPopover>
     </ElPopover>
   </div>
   </div>
 </template>
 </template>
-<style scoped lang="scss">
+<style lang="scss" scoped>
 .message-empty {
 .message-empty {
   display: flex;
   display: flex;
   flex-direction: column;
   flex-direction: column;
@@ -81,28 +81,35 @@ onMounted(() => {
   height: 260px;
   height: 260px;
   line-height: 45px;
   line-height: 45px;
 }
 }
+
 .message-list {
 .message-list {
   display: flex;
   display: flex;
   flex-direction: column;
   flex-direction: column;
+
   .message-item {
   .message-item {
     display: flex;
     display: flex;
     align-items: center;
     align-items: center;
     padding: 20px 0;
     padding: 20px 0;
     border-bottom: 1px solid var(--el-border-color-light);
     border-bottom: 1px solid var(--el-border-color-light);
+
     &:last-child {
     &:last-child {
       border: none;
       border: none;
     }
     }
+
     .message-icon {
     .message-icon {
       width: 40px;
       width: 40px;
       height: 40px;
       height: 40px;
       margin: 0 20px 0 5px;
       margin: 0 20px 0 5px;
     }
     }
+
     .message-content {
     .message-content {
       display: flex;
       display: flex;
       flex-direction: column;
       flex-direction: column;
+
       .message-title {
       .message-title {
         margin-bottom: 5px;
         margin-bottom: 5px;
       }
       }
+
       .message-date {
       .message-date {
         font-size: 12px;
         font-size: 12px;
         color: var(--el-text-color-secondary);
         color: var(--el-text-color-secondary);

+ 3 - 3
src/layout/components/Screenfull/src/Screenfull.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="ScreenFull" setup>
 import { Icon } from '@/components/Icon'
 import { Icon } from '@/components/Icon'
 import { useFullscreen } from '@vueuse/core'
 import { useFullscreen } from '@vueuse/core'
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
@@ -22,9 +22,9 @@ const toggleFullscreen = () => {
 <template>
 <template>
   <div :class="prefixCls" @click="toggleFullscreen">
   <div :class="prefixCls" @click="toggleFullscreen">
     <Icon
     <Icon
-      :size="18"
-      :icon="isFullscreen ? 'zmdi:fullscreen-exit' : 'zmdi:fullscreen'"
       :color="color"
       :color="color"
+      :icon="isFullscreen ? 'zmdi:fullscreen-exit' : 'zmdi:fullscreen'"
+      :size="18"
     />
     />
   </div>
   </div>
 </template>
 </template>

+ 8 - 8
src/layout/components/Setting/src/Setting.vue

@@ -1,12 +1,12 @@
-<script setup lang="ts">
+<script lang="ts" name="Setting" setup>
 import { ElMessage } from 'element-plus'
 import { ElMessage } from 'element-plus'
-import { useCssVar, useClipboard } from '@vueuse/core'
+import { useClipboard, useCssVar } from '@vueuse/core'
 
 
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
 
 
-import { trim, setCssVar } from '@/utils'
-import { colorIsDark, lighten, hexToRGB } from '@/utils/color'
+import { setCssVar, trim } from '@/utils'
+import { colorIsDark, hexToRGB, lighten } from '@/utils/color'
 import { useAppStore } from '@/store/modules/app'
 import { useAppStore } from '@/store/modules/app'
 import { ThemeSwitch } from '@/layout/components/ThemeSwitch'
 import { ThemeSwitch } from '@/layout/components/ThemeSwitch'
 import ColorRadioPicker from './components/ColorRadioPicker.vue'
 import ColorRadioPicker from './components/ColorRadioPicker.vue'
@@ -202,10 +202,10 @@ const clear = () => {
     class="fixed top-[45%] right-0 w-40px h-40px text-center leading-40px bg-[var(--el-color-primary)] cursor-pointer"
     class="fixed top-[45%] right-0 w-40px h-40px text-center leading-40px bg-[var(--el-color-primary)] cursor-pointer"
     @click="drawer = true"
     @click="drawer = true"
   >
   >
-    <Icon icon="ep:setting" color="#fff" />
+    <Icon color="#fff" icon="ep:setting" />
   </div>
   </div>
 
 
-  <ElDrawer v-model="drawer" direction="rtl" size="350px" :z-index="4000">
+  <ElDrawer v-model="drawer" :z-index="4000" direction="rtl" size="350px">
     <template #header>
     <template #header>
       <span class="text-16px font-700">{{ t('setting.projectSetting') }}</span>
       <span class="text-16px font-700">{{ t('setting.projectSetting') }}</span>
     </template>
     </template>
@@ -279,10 +279,10 @@ const clear = () => {
 
 
     <ElDivider />
     <ElDivider />
     <div>
     <div>
-      <ElButton type="primary" class="w-full" @click="copyConfig">{{ t('setting.copy') }}</ElButton>
+      <ElButton class="w-full" type="primary" @click="copyConfig">{{ t('setting.copy') }}</ElButton>
     </div>
     </div>
     <div class="mt-5px">
     <div class="mt-5px">
-      <ElButton type="danger" class="w-full" @click="clear">
+      <ElButton class="w-full" type="danger" @click="clear">
         {{ t('setting.clearAndReset') }}
         {{ t('setting.clearAndReset') }}
       </ElButton>
       </ElButton>
     </div>
     </div>

+ 3 - 3
src/layout/components/Setting/src/components/ColorRadioPicker.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="ColorRadioPicker" setup>
 import { PropType } from 'vue'
 import { PropType } from 'vue'
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
@@ -42,14 +42,14 @@ watch(
     <span
     <span
       v-for="(item, i) in schema"
       v-for="(item, i) in schema"
       :key="`radio-${i}`"
       :key="`radio-${i}`"
-      class="w-20px h-20px cursor-pointer rounded-2px border-solid border-gray-300 border-2px text-center leading-20px mb-5px"
       :class="{ 'is-active': colorVal === item }"
       :class="{ 'is-active': colorVal === item }"
       :style="{
       :style="{
         background: item
         background: item
       }"
       }"
+      class="w-20px h-20px cursor-pointer rounded-2px border-solid border-gray-300 border-2px text-center leading-20px mb-5px"
       @click="colorVal = item"
       @click="colorVal = item"
     >
     >
-      <Icon v-if="colorVal === item" color="#fff" icon="ep:check" :size="16" />
+      <Icon v-if="colorVal === item" :size="16" color="#fff" icon="ep:check" />
     </span>
     </span>
   </div>
   </div>
 </template>
 </template>

+ 1 - 1
src/layout/components/Setting/src/components/InterfaceDisplay.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="InterfaceDisplay" setup>
 import { setCssVar } from '@/utils'
 import { setCssVar } from '@/utils'
 
 
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'

+ 1 - 1
src/layout/components/Setting/src/components/LayoutRadioPicker.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="LayoutRadioPicker" setup>
 import { useAppStore } from '@/store/modules/app'
 import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
 
 

+ 2 - 2
src/layout/components/SizeDropdown/src/SizeDropdown.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="SizeDropdown" setup>
 import { useAppStore } from '@/store/modules/app'
 import { useAppStore } from '@/store/modules/app'
 
 
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
@@ -26,7 +26,7 @@ const setCurrentSize = (size: ElementPlusSize) => {
 
 
 <template>
 <template>
   <ElDropdown :class="prefixCls" trigger="click" @command="setCurrentSize">
   <ElDropdown :class="prefixCls" trigger="click" @command="setCurrentSize">
-    <Icon :size="18" icon="mdi:format-size" :color="color" class="cursor-pointer" />
+    <Icon :color="color" :size="18" class="cursor-pointer" icon="mdi:format-size" />
     <template #dropdown>
     <template #dropdown>
       <ElDropdownMenu>
       <ElDropdownMenu>
         <ElDropdownItem v-for="item in sizeMap" :key="item" :command="item">
         <ElDropdownItem v-for="item in sizeMap" :key="item" :command="item">

+ 21 - 18
src/layout/components/TagsView/src/TagsView.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="TagsView" setup>
 import type { RouteLocationNormalizedLoaded, RouterLinkProps } from 'vue-router'
 import type { RouteLocationNormalizedLoaded, RouterLinkProps } from 'vue-router'
 import { usePermissionStore } from '@/store/modules/permission'
 import { usePermissionStore } from '@/store/modules/permission'
 import { useTagsViewStore } from '@/store/modules/tagsView'
 import { useTagsViewStore } from '@/store/modules/tagsView'
@@ -266,15 +266,24 @@ watch(
       @click="move(-200)"
       @click="move(-200)"
     >
     >
       <Icon
       <Icon
-        icon="ep:d-arrow-left"
         :color="appStore.getIsDark ? 'var(--el-text-color-regular)' : '#333'"
         :color="appStore.getIsDark ? 'var(--el-text-color-regular)' : '#333'"
+        icon="ep:d-arrow-left"
       />
       />
     </span>
     </span>
     <div class="overflow-hidden flex-1">
     <div class="overflow-hidden flex-1">
       <ElScrollbar ref="scrollbarRef" class="h-full" @scroll="scroll">
       <ElScrollbar ref="scrollbarRef" class="h-full" @scroll="scroll">
         <div class="flex h-full">
         <div class="flex h-full">
           <ContextMenu
           <ContextMenu
+            v-for="item in visitedViews"
+            :key="item.fullPath"
             :ref="itemRefs.set"
             :ref="itemRefs.set"
+            :class="[
+              `${prefixCls}__item`,
+              item?.meta?.affix ? `${prefixCls}__item--affix` : '',
+              {
+                'is-active': isActive(item)
+              }
+            ]"
             :schema="[
             :schema="[
               {
               {
                 icon: 'ep:refresh',
                 icon: 'ep:refresh',
@@ -332,23 +341,14 @@ watch(
                 }
                 }
               }
               }
             ]"
             ]"
-            v-for="item in visitedViews"
-            :key="item.fullPath"
             :tag-item="item"
             :tag-item="item"
-            :class="[
-              `${prefixCls}__item`,
-              item?.meta?.affix ? `${prefixCls}__item--affix` : '',
-              {
-                'is-active': isActive(item)
-              }
-            ]"
             @visible-change="visibleChange"
             @visible-change="visibleChange"
           >
           >
             <div>
             <div>
-              <router-link :ref="tagLinksRefs.set" :to="{ ...item }" custom v-slot="{ navigate }">
+              <router-link :ref="tagLinksRefs.set" v-slot="{ navigate }" :to="{ ...item }" custom>
                 <div
                 <div
-                  @click="navigate"
                   class="h-full flex justify-center items-center whitespace-nowrap pl-15px"
                   class="h-full flex justify-center items-center whitespace-nowrap pl-15px"
+                  @click="navigate"
                 >
                 >
                   <Icon
                   <Icon
                     v-if="
                     v-if="
@@ -364,9 +364,9 @@ watch(
                   {{ t(item?.meta?.title as string) }}
                   {{ t(item?.meta?.title as string) }}
                   <Icon
                   <Icon
                     :class="`${prefixCls}__item--close`"
                     :class="`${prefixCls}__item--close`"
+                    :size="12"
                     color="#333"
                     color="#333"
                     icon="ep:close"
                     icon="ep:close"
-                    :size="12"
                     @click.prevent.stop="closeSelectedTag(item)"
                     @click.prevent.stop="closeSelectedTag(item)"
                   />
                   />
                 </div>
                 </div>
@@ -382,8 +382,8 @@ watch(
       @click="move(200)"
       @click="move(200)"
     >
     >
       <Icon
       <Icon
-        icon="ep:d-arrow-right"
         :color="appStore.getIsDark ? 'var(--el-text-color-regular)' : '#333'"
         :color="appStore.getIsDark ? 'var(--el-text-color-regular)' : '#333'"
+        icon="ep:d-arrow-right"
       />
       />
     </span>
     </span>
     <span
     <span
@@ -392,12 +392,11 @@ watch(
       @click="refreshSelectedTag(selectedTag)"
       @click="refreshSelectedTag(selectedTag)"
     >
     >
       <Icon
       <Icon
-        icon="ep:refresh-right"
         :color="appStore.getIsDark ? 'var(--el-text-color-regular)' : '#333'"
         :color="appStore.getIsDark ? 'var(--el-text-color-regular)' : '#333'"
+        icon="ep:refresh-right"
       />
       />
     </span>
     </span>
     <ContextMenu
     <ContextMenu
-      trigger="click"
       :schema="[
       :schema="[
         {
         {
           icon: 'ep:refresh',
           icon: 'ep:refresh',
@@ -449,14 +448,15 @@ watch(
           }
           }
         }
         }
       ]"
       ]"
+      trigger="click"
     >
     >
       <span
       <span
         :class="`${prefixCls}__tool`"
         :class="`${prefixCls}__tool`"
         class="w-[var(--tags-view-height)] h-[var(--tags-view-height)] text-center leading-[var(--tags-view-height)] cursor-pointer block"
         class="w-[var(--tags-view-height)] h-[var(--tags-view-height)] text-center leading-[var(--tags-view-height)] cursor-pointer block"
       >
       >
         <Icon
         <Icon
-          icon="ep:menu"
           :color="appStore.getIsDark ? 'var(--el-text-color-regular)' : '#333'"
           :color="appStore.getIsDark ? 'var(--el-text-color-regular)' : '#333'"
+          icon="ep:menu"
         />
         />
       </span>
       </span>
     </ContextMenu>
     </ContextMenu>
@@ -513,6 +513,7 @@ $prefix-cls: #{$namespace}-tags-view;
       display: none;
       display: none;
       transform: translate(0, -50%);
       transform: translate(0, -50%);
     }
     }
+
     &:not(.#{$prefix-cls}__item--affix):hover {
     &:not(.#{$prefix-cls}__item--affix):hover {
       .#{$prefix-cls}__item--close {
       .#{$prefix-cls}__item--close {
         display: block;
         display: block;
@@ -530,6 +531,7 @@ $prefix-cls: #{$namespace}-tags-view;
     color: var(--el-color-white);
     color: var(--el-color-white);
     background-color: var(--el-color-primary);
     background-color: var(--el-color-primary);
     border: 1px solid var(--el-color-primary);
     border: 1px solid var(--el-color-primary);
+
     .#{$prefix-cls}__item--close {
     .#{$prefix-cls}__item--close {
       :deep(span) {
       :deep(span) {
         color: var(--el-color-white) !important;
         color: var(--el-color-white) !important;
@@ -573,6 +575,7 @@ $prefix-cls: #{$namespace}-tags-view;
     &__item.is-active {
     &__item.is-active {
       color: var(--el-color-white);
       color: var(--el-color-white);
       background-color: var(--el-color-primary);
       background-color: var(--el-color-primary);
+
       .#{$prefix-cls}__item--close {
       .#{$prefix-cls}__item--close {
         :deep(span) {
         :deep(span) {
           color: var(--el-color-white) !important;
           color: var(--el-color-white) !important;

+ 5 - 5
src/layout/components/ThemeSwitch/src/ThemeSwitch.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="ThemeSwitch" setup>
 import { useAppStore } from '@/store/modules/app'
 import { useAppStore } from '@/store/modules/app'
 import { useIcon } from '@/hooks/web/useIcon'
 import { useIcon } from '@/hooks/web/useIcon'
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
@@ -26,14 +26,14 @@ const themeChange = (val: boolean) => {
 
 
 <template>
 <template>
   <ElSwitch
   <ElSwitch
-    :class="prefixCls"
     v-model="isDark"
     v-model="isDark"
-    inline-prompt
-    :border-color="blackColor"
-    :inactive-color="blackColor"
     :active-color="blackColor"
     :active-color="blackColor"
     :active-icon="Sun"
     :active-icon="Sun"
+    :border-color="blackColor"
+    :class="prefixCls"
+    :inactive-color="blackColor"
     :inactive-icon="CrescentMoon"
     :inactive-icon="CrescentMoon"
+    inline-prompt
     @change="themeChange"
     @change="themeChange"
   />
   />
 </template>
 </template>

+ 1 - 1
src/layout/components/UserInfo/src/UserInfo.vue

@@ -1,4 +1,4 @@
-<script setup lang="ts">
+<script lang="ts" name="UserInfo" setup>
 import { ElMessageBox } from 'element-plus'
 import { ElMessageBox } from 'element-plus'
 
 
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'

+ 1 - 1
src/views/Error/403.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <Error type="403" @error-click="push('/')" />
   <Error type="403" @error-click="push('/')" />
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="Error403" setup>
 const { push } = useRouter()
 const { push } = useRouter()
 </script>
 </script>

+ 1 - 1
src/views/Error/404.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <Error @error-click="push('/')" />
   <Error @error-click="push('/')" />
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="Error404" setup>
 const { push } = useRouter()
 const { push } = useRouter()
 </script>
 </script>

+ 1 - 1
src/views/Error/500.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <Error type="500" @error-click="push('/')" />
   <Error type="500" @error-click="push('/')" />
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="Error500" setup>
 const { push } = useRouter()
 const { push } = useRouter()
 </script>
 </script>

+ 57 - 52
src/views/Home/Index2.vue

@@ -1,26 +1,26 @@
 <template>
 <template>
-  <el-row :gutter="20" justify="space-between" :class="prefixCls">
-    <el-col :xl="6" :lg="6" :md="12" :sm="12" :xs="24">
-      <el-card shadow="hover" class="mb-20px">
-        <el-skeleton :loading="loading" animated :rows="2">
+  <el-row :class="prefixCls" :gutter="20" justify="space-between">
+    <el-col :lg="6" :md="12" :sm="12" :xl="6" :xs="24">
+      <el-card class="mb-20px" shadow="hover">
+        <el-skeleton :loading="loading" :rows="2" animated>
           <template #default>
           <template #default>
             <div :class="`${prefixCls}__item flex justify-between`">
             <div :class="`${prefixCls}__item flex justify-between`">
               <div>
               <div>
                 <div
                 <div
                   :class="`${prefixCls}__item--icon ${prefixCls}__item--peoples p-16px inline-block rounded-6px`"
                   :class="`${prefixCls}__item--icon ${prefixCls}__item--peoples p-16px inline-block rounded-6px`"
                 >
                 >
-                  <Icon icon="svg-icon:peoples" :size="40" />
+                  <Icon :size="40" icon="svg-icon:peoples" />
                 </div>
                 </div>
               </div>
               </div>
               <div class="flex flex-col justify-between">
               <div class="flex flex-col justify-between">
-                <div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`">{{
-                  t('analysis.newUser')
-                }}</div>
+                <div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`"
+                  >{{ t('analysis.newUser') }}
+                </div>
                 <CountTo
                 <CountTo
-                  class="text-20px font-700 text-right"
-                  :start-val="0"
-                  :end-val="102400"
                   :duration="2600"
                   :duration="2600"
+                  :end-val="102400"
+                  :start-val="0"
+                  class="text-20px font-700 text-right"
                 />
                 />
               </div>
               </div>
             </div>
             </div>
@@ -29,27 +29,27 @@
       </el-card>
       </el-card>
     </el-col>
     </el-col>
 
 
-    <el-col :xl="6" :lg="6" :md="12" :sm="12" :xs="24">
-      <el-card shadow="hover" class="mb-20px">
-        <el-skeleton :loading="loading" animated :rows="2">
+    <el-col :lg="6" :md="12" :sm="12" :xl="6" :xs="24">
+      <el-card class="mb-20px" shadow="hover">
+        <el-skeleton :loading="loading" :rows="2" animated>
           <template #default>
           <template #default>
             <div :class="`${prefixCls}__item flex justify-between`">
             <div :class="`${prefixCls}__item flex justify-between`">
               <div>
               <div>
                 <div
                 <div
                   :class="`${prefixCls}__item--icon ${prefixCls}__item--message p-16px inline-block rounded-6px`"
                   :class="`${prefixCls}__item--icon ${prefixCls}__item--message p-16px inline-block rounded-6px`"
                 >
                 >
-                  <Icon icon="svg-icon:message" :size="40" />
+                  <Icon :size="40" icon="svg-icon:message" />
                 </div>
                 </div>
               </div>
               </div>
               <div class="flex flex-col justify-between">
               <div class="flex flex-col justify-between">
-                <div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`">{{
-                  t('analysis.unreadInformation')
-                }}</div>
+                <div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`"
+                  >{{ t('analysis.unreadInformation') }}
+                </div>
                 <CountTo
                 <CountTo
-                  class="text-20px font-700 text-right"
-                  :start-val="0"
-                  :end-val="81212"
                   :duration="2600"
                   :duration="2600"
+                  :end-val="81212"
+                  :start-val="0"
+                  class="text-20px font-700 text-right"
                 />
                 />
               </div>
               </div>
             </div>
             </div>
@@ -58,27 +58,27 @@
       </el-card>
       </el-card>
     </el-col>
     </el-col>
 
 
-    <el-col :xl="6" :lg="6" :md="12" :sm="12" :xs="24">
-      <el-card shadow="hover" class="mb-20px">
-        <el-skeleton :loading="loading" animated :rows="2">
+    <el-col :lg="6" :md="12" :sm="12" :xl="6" :xs="24">
+      <el-card class="mb-20px" shadow="hover">
+        <el-skeleton :loading="loading" :rows="2" animated>
           <template #default>
           <template #default>
             <div :class="`${prefixCls}__item flex justify-between`">
             <div :class="`${prefixCls}__item flex justify-between`">
               <div>
               <div>
                 <div
                 <div
                   :class="`${prefixCls}__item--icon ${prefixCls}__item--money p-16px inline-block rounded-6px`"
                   :class="`${prefixCls}__item--icon ${prefixCls}__item--money p-16px inline-block rounded-6px`"
                 >
                 >
-                  <Icon icon="svg-icon:money" :size="40" />
+                  <Icon :size="40" icon="svg-icon:money" />
                 </div>
                 </div>
               </div>
               </div>
               <div class="flex flex-col justify-between">
               <div class="flex flex-col justify-between">
-                <div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`">{{
-                  t('analysis.transactionAmount')
-                }}</div>
+                <div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`"
+                  >{{ t('analysis.transactionAmount') }}
+                </div>
                 <CountTo
                 <CountTo
-                  class="text-20px font-700 text-right"
-                  :start-val="0"
-                  :end-val="9280"
                   :duration="2600"
                   :duration="2600"
+                  :end-val="9280"
+                  :start-val="0"
+                  class="text-20px font-700 text-right"
                 />
                 />
               </div>
               </div>
             </div>
             </div>
@@ -87,27 +87,27 @@
       </el-card>
       </el-card>
     </el-col>
     </el-col>
 
 
-    <el-col :xl="6" :lg="6" :md="12" :sm="12" :xs="24">
-      <el-card shadow="hover" class="mb-20px">
-        <el-skeleton :loading="loading" animated :rows="2">
+    <el-col :lg="6" :md="12" :sm="12" :xl="6" :xs="24">
+      <el-card class="mb-20px" shadow="hover">
+        <el-skeleton :loading="loading" :rows="2" animated>
           <template #default>
           <template #default>
             <div :class="`${prefixCls}__item flex justify-between`">
             <div :class="`${prefixCls}__item flex justify-between`">
               <div>
               <div>
                 <div
                 <div
                   :class="`${prefixCls}__item--icon ${prefixCls}__item--shopping p-16px inline-block rounded-6px`"
                   :class="`${prefixCls}__item--icon ${prefixCls}__item--shopping p-16px inline-block rounded-6px`"
                 >
                 >
-                  <Icon icon="svg-icon:shopping" :size="40" />
+                  <Icon :size="40" icon="svg-icon:shopping" />
                 </div>
                 </div>
               </div>
               </div>
               <div class="flex flex-col justify-between">
               <div class="flex flex-col justify-between">
-                <div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`">{{
-                  t('analysis.totalShopping')
-                }}</div>
+                <div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`"
+                  >{{ t('analysis.totalShopping') }}
+                </div>
                 <CountTo
                 <CountTo
-                  class="text-20px font-700 text-right"
-                  :start-val="0"
-                  :end-val="13600"
                   :duration="2600"
                   :duration="2600"
+                  :end-val="13600"
+                  :start-val="0"
+                  class="text-20px font-700 text-right"
                 />
                 />
               </div>
               </div>
             </div>
             </div>
@@ -117,36 +117,36 @@
     </el-col>
     </el-col>
   </el-row>
   </el-row>
   <el-row :gutter="20" justify="space-between">
   <el-row :gutter="20" justify="space-between">
-    <el-col :xl="10" :lg="10" :md="24" :sm="24" :xs="24">
-      <el-card shadow="hover" class="mb-20px">
+    <el-col :lg="10" :md="24" :sm="24" :xl="10" :xs="24">
+      <el-card class="mb-20px" shadow="hover">
         <el-skeleton :loading="loading" animated>
         <el-skeleton :loading="loading" animated>
-          <Echart :options="pieOptionsData" :height="300" />
+          <Echart :height="300" :options="pieOptionsData" />
         </el-skeleton>
         </el-skeleton>
       </el-card>
       </el-card>
     </el-col>
     </el-col>
-    <el-col :xl="14" :lg="14" :md="24" :sm="24" :xs="24">
-      <el-card shadow="hover" class="mb-20px">
+    <el-col :lg="14" :md="24" :sm="24" :xl="14" :xs="24">
+      <el-card class="mb-20px" shadow="hover">
         <el-skeleton :loading="loading" animated>
         <el-skeleton :loading="loading" animated>
-          <Echart :options="barOptionsData" :height="300" />
+          <Echart :height="300" :options="barOptionsData" />
         </el-skeleton>
         </el-skeleton>
       </el-card>
       </el-card>
     </el-col>
     </el-col>
     <el-col :span="24">
     <el-col :span="24">
-      <el-card shadow="hover" class="mb-20px">
-        <el-skeleton :loading="loading" animated :rows="4">
-          <Echart :options="lineOptionsData" :height="350" />
+      <el-card class="mb-20px" shadow="hover">
+        <el-skeleton :loading="loading" :rows="4" animated>
+          <Echart :height="350" :options="lineOptionsData" />
         </el-skeleton>
         </el-skeleton>
       </el-card>
       </el-card>
     </el-col>
     </el-col>
   </el-row>
   </el-row>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="Home2" setup>
 import { set } from 'lodash-es'
 import { set } from 'lodash-es'
 import { EChartsOption } from 'echarts'
 import { EChartsOption } from 'echarts'
 
 
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'
 import type { AnalysisTotalTypes } from './types'
 import type { AnalysisTotalTypes } from './types'
-import { pieOptions, barOptions, lineOptions } from './echarts-data'
+import { barOptions, lineOptions, pieOptions } from './echarts-data'
 
 
 const { t } = useI18n()
 const { t } = useI18n()
 const loading = ref(true)
 const loading = ref(true)
@@ -291,18 +291,23 @@ $prefix-cls: #{$namespace}-panel;
       :deep(.#{$namespace}-icon) {
       :deep(.#{$namespace}-icon) {
         color: #fff !important;
         color: #fff !important;
       }
       }
+
       .#{$prefix-cls}__item--icon {
       .#{$prefix-cls}__item--icon {
         transition: all 0.38s ease-out;
         transition: all 0.38s ease-out;
       }
       }
+
       .#{$prefix-cls}__item--peoples {
       .#{$prefix-cls}__item--peoples {
         background: #40c9c6;
         background: #40c9c6;
       }
       }
+
       .#{$prefix-cls}__item--message {
       .#{$prefix-cls}__item--message {
         background: #36a3f7;
         background: #36a3f7;
       }
       }
+
       .#{$prefix-cls}__item--money {
       .#{$prefix-cls}__item--money {
         background: #f4516c;
         background: #f4516c;
       }
       }
+
       .#{$prefix-cls}__item--shopping {
       .#{$prefix-cls}__item--shopping {
         background: #34bfa3;
         background: #34bfa3;
       }
       }

+ 1 - 1
src/views/Login/Login.vue

@@ -60,7 +60,7 @@
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
-<script lang="ts" setup>
+<script lang="ts" name="Login" setup>
 import { underlineToHump } from '@/utils'
 import { underlineToHump } from '@/utils'
 
 
 import { useDesign } from '@/hooks/web/useDesign'
 import { useDesign } from '@/hooks/web/useDesign'

+ 17 - 17
src/views/Login/components/LoginForm.vue

@@ -1,13 +1,13 @@
 <template>
 <template>
   <el-form
   <el-form
+    v-show="getShow"
+    ref="formLogin"
     :model="loginData.loginForm"
     :model="loginData.loginForm"
     :rules="LoginRules"
     :rules="LoginRules"
-    label-position="top"
     class="login-form"
     class="login-form"
+    label-position="top"
     label-width="120px"
     label-width="120px"
     size="large"
     size="large"
-    v-show="getShow"
-    ref="formLogin"
   >
   >
     <el-row style="maring-left: -10px; maring-right: -10px">
     <el-row style="maring-left: -10px; maring-right: -10px">
       <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
       <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
@@ -16,12 +16,12 @@
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
       <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
       <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
-        <el-form-item prop="tenantName" v-if="loginData.tenantEnable === 'true'">
+        <el-form-item v-if="loginData.tenantEnable === 'true'" prop="tenantName">
           <el-input
           <el-input
-            type="text"
             v-model="loginData.loginForm.tenantName"
             v-model="loginData.loginForm.tenantName"
             :placeholder="t('login.tenantNamePlaceholder')"
             :placeholder="t('login.tenantNamePlaceholder')"
             :prefix-icon="iconHouse"
             :prefix-icon="iconHouse"
+            type="text"
           />
           />
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
@@ -38,11 +38,11 @@
         <el-form-item prop="password">
         <el-form-item prop="password">
           <el-input
           <el-input
             v-model="loginData.loginForm.password"
             v-model="loginData.loginForm.password"
-            type="password"
             :placeholder="t('login.passwordPlaceholder')"
             :placeholder="t('login.passwordPlaceholder')"
+            :prefix-icon="iconLock"
             show-password
             show-password
+            type="password"
             @keyup.enter="getCode()"
             @keyup.enter="getCode()"
-            :prefix-icon="iconLock"
           />
           />
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
@@ -57,8 +57,8 @@
                 {{ t('login.remember') }}
                 {{ t('login.remember') }}
               </el-checkbox>
               </el-checkbox>
             </el-col>
             </el-col>
-            <el-col :span="12" :offset="6">
-              <el-link type="primary" style="float: right">{{ t('login.forgetPassword') }}</el-link>
+            <el-col :offset="6" :span="12">
+              <el-link style="float: right" type="primary">{{ t('login.forgetPassword') }}</el-link>
             </el-col>
             </el-col>
           </el-row>
           </el-row>
         </el-form-item>
         </el-form-item>
@@ -67,41 +67,41 @@
         <el-form-item>
         <el-form-item>
           <XButton
           <XButton
             :loading="loginLoading"
             :loading="loginLoading"
-            type="primary"
-            class="w-[100%]"
             :title="t('login.login')"
             :title="t('login.login')"
+            class="w-[100%]"
+            type="primary"
             @click="getCode()"
             @click="getCode()"
           />
           />
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
       <Verify
       <Verify
         ref="verify"
         ref="verify"
-        mode="pop"
         :captchaType="captchaType"
         :captchaType="captchaType"
         :imgSize="{ width: '400px', height: '200px' }"
         :imgSize="{ width: '400px', height: '200px' }"
+        mode="pop"
         @success="handleLogin"
         @success="handleLogin"
       />
       />
       <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
       <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
         <el-form-item>
         <el-form-item>
-          <el-row justify="space-between" style="width: 100%" :gutter="5">
+          <el-row :gutter="5" justify="space-between" style="width: 100%">
             <el-col :span="8">
             <el-col :span="8">
               <XButton
               <XButton
-                class="w-[100%]"
                 :title="t('login.btnMobile')"
                 :title="t('login.btnMobile')"
+                class="w-[100%]"
                 @click="setLoginState(LoginStateEnum.MOBILE)"
                 @click="setLoginState(LoginStateEnum.MOBILE)"
               />
               />
             </el-col>
             </el-col>
             <el-col :span="8">
             <el-col :span="8">
               <XButton
               <XButton
-                class="w-[100%]"
                 :title="t('login.btnQRCode')"
                 :title="t('login.btnQRCode')"
+                class="w-[100%]"
                 @click="setLoginState(LoginStateEnum.QR_CODE)"
                 @click="setLoginState(LoginStateEnum.QR_CODE)"
               />
               />
             </el-col>
             </el-col>
             <el-col :span="8">
             <el-col :span="8">
               <XButton
               <XButton
-                class="w-[100%]"
                 :title="t('login.btnRegister')"
                 :title="t('login.btnRegister')"
+                class="w-[100%]"
                 @click="setLoginState(LoginStateEnum.REGISTER)"
                 @click="setLoginState(LoginStateEnum.REGISTER)"
               />
               />
             </el-col>
             </el-col>
@@ -127,7 +127,7 @@
     </el-row>
     </el-row>
   </el-form>
   </el-form>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="LoginForm" setup>
 import { ElLoading } from 'element-plus'
 import { ElLoading } from 'element-plus'
 import LoginFormTitle from './LoginFormTitle.vue'
 import LoginFormTitle from './LoginFormTitle.vue'
 import type { RouteLocationNormalizedLoaded } from 'vue-router'
 import type { RouteLocationNormalizedLoaded } from 'vue-router'

+ 1 - 1
src/views/Login/components/LoginFormTitle.vue

@@ -3,7 +3,7 @@
     {{ getFormTitle }}
     {{ getFormTitle }}
   </h2>
   </h2>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="LoginFormTitle" setup>
 import { LoginStateEnum, useLoginState } from './useLogin'
 import { LoginStateEnum, useLoginState } from './useLogin'
 
 
 const { t } = useI18n()
 const { t } = useI18n()

+ 12 - 12
src/views/Login/components/MobileForm.vue

@@ -1,13 +1,13 @@
 <template>
 <template>
   <el-form
   <el-form
+    v-show="getShow"
+    ref="formSmsLogin"
     :model="loginData.loginForm"
     :model="loginData.loginForm"
     :rules="rules"
     :rules="rules"
-    label-position="top"
     class="login-form"
     class="login-form"
+    label-position="top"
     label-width="120px"
     label-width="120px"
     size="large"
     size="large"
-    v-show="getShow"
-    ref="formSmsLogin"
   >
   >
     <el-row style="margin-left: -10px; margin-right: -10px">
     <el-row style="margin-left: -10px; margin-right: -10px">
       <!-- 租户名 -->
       <!-- 租户名 -->
@@ -17,12 +17,12 @@
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
       <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
       <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
-        <el-form-item prop="tenantName" v-if="loginData.tenantEnable === 'true'">
+        <el-form-item v-if="loginData.tenantEnable === 'true'" prop="tenantName">
           <el-input
           <el-input
-            type="text"
             v-model="loginData.loginForm.tenantName"
             v-model="loginData.loginForm.tenantName"
             :placeholder="t('login.tenantNamePlaceholder')"
             :placeholder="t('login.tenantNamePlaceholder')"
             :prefix-icon="iconHouse"
             :prefix-icon="iconHouse"
+            type="text"
           />
           />
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
@@ -39,7 +39,7 @@
       <!-- 验证码 -->
       <!-- 验证码 -->
       <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
       <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
         <el-form-item prop="code">
         <el-form-item prop="code">
-          <el-row justify="space-between" style="width: 100%" :gutter="5">
+          <el-row :gutter="5" justify="space-between" style="width: 100%">
             <el-col :span="24">
             <el-col :span="24">
               <el-input
               <el-input
                 v-model="loginData.loginForm.code"
                 v-model="loginData.loginForm.code"
@@ -50,9 +50,9 @@
                 <template #append>
                 <template #append>
                   <span
                   <span
                     v-if="mobileCodeTimer <= 0"
                     v-if="mobileCodeTimer <= 0"
-                    @click="getSmsCode"
                     class="getMobileCode"
                     class="getMobileCode"
                     style="cursor: pointer"
                     style="cursor: pointer"
+                    @click="getSmsCode"
                   >
                   >
                     {{ t('login.getSmsCode') }}
                     {{ t('login.getSmsCode') }}
                   </span>
                   </span>
@@ -71,9 +71,9 @@
         <el-form-item>
         <el-form-item>
           <XButton
           <XButton
             :loading="loginLoading"
             :loading="loginLoading"
-            type="primary"
-            class="w-[100%]"
             :title="t('login.login')"
             :title="t('login.login')"
+            class="w-[100%]"
+            type="primary"
             @click="signIn()"
             @click="signIn()"
           />
           />
         </el-form-item>
         </el-form-item>
@@ -82,8 +82,8 @@
         <el-form-item>
         <el-form-item>
           <XButton
           <XButton
             :loading="loginLoading"
             :loading="loginLoading"
-            class="w-[100%]"
             :title="t('login.backLogin')"
             :title="t('login.backLogin')"
+            class="w-[100%]"
             @click="handleBackLogin()"
             @click="handleBackLogin()"
           />
           />
         </el-form-item>
         </el-form-item>
@@ -91,7 +91,7 @@
     </el-row>
     </el-row>
   </el-form>
   </el-form>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="MobileForm" setup>
 import type { RouteLocationNormalizedLoaded } from 'vue-router'
 import type { RouteLocationNormalizedLoaded } from 'vue-router'
 
 
 import { useIcon } from '@/hooks/web/useIcon'
 import { useIcon } from '@/hooks/web/useIcon'
@@ -100,7 +100,7 @@ import { setTenantId, setToken } from '@/utils/auth'
 import { usePermissionStore } from '@/store/modules/permission'
 import { usePermissionStore } from '@/store/modules/permission'
 import { getTenantIdByName, sendSmsCode, smsLogin } from '@/api/login'
 import { getTenantIdByName, sendSmsCode, smsLogin } from '@/api/login'
 import LoginFormTitle from './LoginFormTitle.vue'
 import LoginFormTitle from './LoginFormTitle.vue'
-import { useLoginState, LoginStateEnum, useFormValid } from './useLogin'
+import { LoginStateEnum, useFormValid, useLoginState } from './useLogin'
 
 
 const { t } = useI18n()
 const { t } = useI18n()
 const message = useMessage()
 const message = useMessage()

+ 4 - 4
src/views/Login/components/QrCodeForm.vue

@@ -4,23 +4,23 @@
       <LoginFormTitle style="width: 100%" />
       <LoginFormTitle style="width: 100%" />
     </el-col>
     </el-col>
     <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
     <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
-      <el-card shadow="hover" class="mb-10px text-center">
+      <el-card class="mb-10px text-center" shadow="hover">
         <Qrcode :logo="logoImg" />
         <Qrcode :logo="logoImg" />
       </el-card>
       </el-card>
     </el-col>
     </el-col>
     <el-divider class="enter-x">{{ t('login.qrcode') }}</el-divider>
     <el-divider class="enter-x">{{ t('login.qrcode') }}</el-divider>
     <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
     <el-col :span="24" style="padding-left: 10px; padding-right: 10px">
       <div class="w-[100%] mt-15px">
       <div class="w-[100%] mt-15px">
-        <XButton class="w-[100%]" :title="t('login.backLogin')" @click="handleBackLogin()" />
+        <XButton :title="t('login.backLogin')" class="w-[100%]" @click="handleBackLogin()" />
       </div>
       </div>
     </el-col>
     </el-col>
   </el-row>
   </el-row>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="QrCodeForm" setup>
 import logoImg from '@/assets/imgs/logo.png'
 import logoImg from '@/assets/imgs/logo.png'
 
 
 import LoginFormTitle from './LoginFormTitle.vue'
 import LoginFormTitle from './LoginFormTitle.vue'
-import { useLoginState, LoginStateEnum } from './useLogin'
+import { LoginStateEnum, useLoginState } from './useLogin'
 
 
 const { t } = useI18n()
 const { t } = useI18n()
 const { handleBackLogin, getLoginState } = useLoginState()
 const { handleBackLogin, getLoginState } = useLoginState()

+ 9 - 9
src/views/Login/components/RegisterForm.vue

@@ -1,12 +1,12 @@
 <template>
 <template>
   <Form
   <Form
-    :schema="schema"
+    v-show="getShow"
     :rules="rules"
     :rules="rules"
-    label-position="top"
+    :schema="schema"
+    class="dark:(border-1 border-[var(--el-border-color)] border-solid)"
     hide-required-asterisk
     hide-required-asterisk
+    label-position="top"
     size="large"
     size="large"
-    v-show="getShow"
-    class="dark:(border-1 border-[var(--el-border-color)] border-solid)"
     @register="register"
     @register="register"
   >
   >
     <template #title>
     <template #title>
@@ -23,25 +23,25 @@
       <div class="w-[100%]">
       <div class="w-[100%]">
         <XButton
         <XButton
           :loading="loading"
           :loading="loading"
-          type="primary"
-          class="w-[100%]"
           :title="t('login.register')"
           :title="t('login.register')"
+          class="w-[100%]"
+          type="primary"
           @click="loginRegister()"
           @click="loginRegister()"
         />
         />
       </div>
       </div>
       <div class="w-[100%] mt-15px">
       <div class="w-[100%] mt-15px">
-        <XButton class="w-[100%]" :title="t('login.hasUser')" @click="handleBackLogin()" />
+        <XButton :title="t('login.hasUser')" class="w-[100%]" @click="handleBackLogin()" />
       </div>
       </div>
     </template>
     </template>
   </Form>
   </Form>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="RegisterForm" setup>
 import type { FormRules } from 'element-plus'
 import type { FormRules } from 'element-plus'
 
 
 import { useForm } from '@/hooks/web/useForm'
 import { useForm } from '@/hooks/web/useForm'
 import { useValidator } from '@/hooks/web/useValidator'
 import { useValidator } from '@/hooks/web/useValidator'
 import LoginFormTitle from './LoginFormTitle.vue'
 import LoginFormTitle from './LoginFormTitle.vue'
-import { useLoginState, LoginStateEnum } from './useLogin'
+import { LoginStateEnum, useLoginState } from './useLogin'
 import { FormSchema } from '@/types/form'
 import { FormSchema } from '@/types/form'
 
 
 const { t } = useI18n()
 const { t } = useI18n()

+ 3 - 3
src/views/Profile/components/BasicInfo.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <Form ref="formRef" :rules="rules" :schema="schema" :labelWidth="80">
+  <Form ref="formRef" :labelWidth="80" :rules="rules" :schema="schema">
     <template #sex="form">
     <template #sex="form">
       <el-radio-group v-model="form['sex']">
       <el-radio-group v-model="form['sex']">
         <el-radio :label="1">{{ t('profile.user.man') }}</el-radio>
         <el-radio :label="1">{{ t('profile.user.man') }}</el-radio>
@@ -8,9 +8,9 @@
     </template>
     </template>
   </Form>
   </Form>
   <XButton :title="t('common.save')" @click="submit()" />
   <XButton :title="t('common.save')" @click="submit()" />
-  <XButton type="danger" :title="t('common.reset')" @click="init()" />
+  <XButton :title="t('common.reset')" type="danger" @click="init()" />
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="BasicInfo" setup>
 import type { FormRules } from 'element-plus'
 import type { FormRules } from 'element-plus'
 import { ElMessage } from 'element-plus'
 import { ElMessage } from 'element-plus'
 
 

+ 20 - 11
src/views/Profile/components/ProfileUser.vue

@@ -5,41 +5,48 @@
     </div>
     </div>
     <ul class="list-group list-group-striped">
     <ul class="list-group list-group-striped">
       <li class="list-group-item">
       <li class="list-group-item">
-        <Icon icon="ep:user" class="mr-5px" />{{ t('profile.user.username') }}
+        <Icon class="mr-5px" icon="ep:user" />
+        {{ t('profile.user.username') }}
         <div class="pull-right">{{ userInfo?.username }}</div>
         <div class="pull-right">{{ userInfo?.username }}</div>
       </li>
       </li>
       <li class="list-group-item">
       <li class="list-group-item">
-        <Icon icon="ep:phone" class="mr-5px" />{{ t('profile.user.mobile') }}
+        <Icon class="mr-5px" icon="ep:phone" />
+        {{ t('profile.user.mobile') }}
         <div class="pull-right">{{ userInfo?.mobile }}</div>
         <div class="pull-right">{{ userInfo?.mobile }}</div>
       </li>
       </li>
       <li class="list-group-item">
       <li class="list-group-item">
-        <Icon icon="fontisto:email" class="mr-5px" />{{ t('profile.user.email') }}
+        <Icon class="mr-5px" icon="fontisto:email" />
+        {{ t('profile.user.email') }}
         <div class="pull-right">{{ userInfo?.email }}</div>
         <div class="pull-right">{{ userInfo?.email }}</div>
       </li>
       </li>
       <li class="list-group-item">
       <li class="list-group-item">
-        <Icon icon="carbon:tree-view-alt" class="mr-5px" />{{ t('profile.user.dept') }}
-        <div class="pull-right" v-if="userInfo?.dept">{{ userInfo?.dept.name }}</div>
+        <Icon class="mr-5px" icon="carbon:tree-view-alt" />
+        {{ t('profile.user.dept') }}
+        <div v-if="userInfo?.dept" class="pull-right">{{ userInfo?.dept.name }}</div>
       </li>
       </li>
       <li class="list-group-item">
       <li class="list-group-item">
-        <Icon icon="ep:suitcase" class="mr-5px" />{{ t('profile.user.posts') }}
-        <div class="pull-right" v-if="userInfo?.posts">
+        <Icon class="mr-5px" icon="ep:suitcase" />
+        {{ t('profile.user.posts') }}
+        <div v-if="userInfo?.posts" class="pull-right">
           {{ userInfo?.posts.map((post) => post.name).join(',') }}
           {{ userInfo?.posts.map((post) => post.name).join(',') }}
         </div>
         </div>
       </li>
       </li>
       <li class="list-group-item">
       <li class="list-group-item">
-        <Icon icon="icon-park-outline:peoples" class="mr-5px" />{{ t('profile.user.roles') }}
-        <div class="pull-right" v-if="userInfo?.roles">
+        <Icon class="mr-5px" icon="icon-park-outline:peoples" />
+        {{ t('profile.user.roles') }}
+        <div v-if="userInfo?.roles" class="pull-right">
           {{ userInfo?.roles.map((role) => role.name).join(',') }}
           {{ userInfo?.roles.map((role) => role.name).join(',') }}
         </div>
         </div>
       </li>
       </li>
       <li class="list-group-item">
       <li class="list-group-item">
-        <Icon icon="ep:calendar" class="mr-5px" />{{ t('profile.user.createTime') }}
+        <Icon class="mr-5px" icon="ep:calendar" />
+        {{ t('profile.user.createTime') }}
         <div class="pull-right">{{ formatDate(userInfo?.createTime) }}</div>
         <div class="pull-right">{{ formatDate(userInfo?.createTime) }}</div>
       </li>
       </li>
     </ul>
     </ul>
   </div>
   </div>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="ProfileUser" setup>
 import { formatDate } from '@/utils/formatTime'
 import { formatDate } from '@/utils/formatTime'
 import UserAvatar from './UserAvatar.vue'
 import UserAvatar from './UserAvatar.vue'
 
 
@@ -62,6 +69,7 @@ onMounted(async () => {
   position: relative;
   position: relative;
   height: 120px;
   height: 120px;
 }
 }
+
 .list-group-striped > .list-group-item {
 .list-group-striped > .list-group-item {
   border-left: 0;
   border-left: 0;
   border-right: 0;
   border-right: 0;
@@ -82,6 +90,7 @@ onMounted(async () => {
   padding: 11px 0px;
   padding: 11px 0px;
   font-size: 13px;
   font-size: 13px;
 }
 }
+
 .pull-right {
 .pull-right {
   float: right !important;
   float: right !important;
 }
 }

+ 4 - 4
src/views/Profile/components/ResetPwd.vue

@@ -10,13 +10,13 @@
       <InputPassword v-model="password.confirmPassword" strength />
       <InputPassword v-model="password.confirmPassword" strength />
     </el-form-item>
     </el-form-item>
     <el-form-item>
     <el-form-item>
-      <XButton type="primary" @click="submit(formRef)" :title="t('common.save')" />
-      <XButton type="danger" :title="t('common.reset')" @click="reset(formRef)" />
+      <XButton :title="t('common.save')" type="primary" @click="submit(formRef)" />
+      <XButton :title="t('common.reset')" type="danger" @click="reset(formRef)" />
     </el-form-item>
     </el-form-item>
   </el-form>
   </el-form>
 </template>
 </template>
-<script setup lang="ts">
-import type { FormRules, FormInstance } from 'element-plus'
+<script lang="ts" name="ResetPwd" setup>
+import type { FormInstance, FormRules } from 'element-plus'
 
 
 import { InputPassword } from '@/components/InputPassword'
 import { InputPassword } from '@/components/InputPassword'
 import { updateUserPassword } from '@/api/system/user/profile'
 import { updateUserPassword } from '@/api/system/user/profile'

+ 6 - 5
src/views/Profile/components/UserAvatar.vue

@@ -2,17 +2,18 @@
   <div class="change-avatar">
   <div class="change-avatar">
     <CropperAvatar
     <CropperAvatar
       ref="cropperRef"
       ref="cropperRef"
-      :value="avatar"
-      :showBtn="false"
-      @change="handelUpload"
       :btnProps="{ preIcon: 'ant-design:cloud-upload-outlined' }"
       :btnProps="{ preIcon: 'ant-design:cloud-upload-outlined' }"
+      :showBtn="false"
+      :value="avatar"
       width="120px"
       width="120px"
+      @change="handelUpload"
     />
     />
   </div>
   </div>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="UserAvatar" setup>
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import { uploadAvatar } from '@/api/system/user/profile'
 import { uploadAvatar } from '@/api/system/user/profile'
+
 const props = defineProps({
 const props = defineProps({
   img: propTypes.string.def('')
   img: propTypes.string.def('')
 })
 })
@@ -27,7 +28,7 @@ const handelUpload = async ({ data }) => {
 }
 }
 </script>
 </script>
 
 
-<style scoped lang="scss">
+<style lang="scss" scoped>
 .change-avatar {
 .change-avatar {
   img {
   img {
     display: block;
     display: block;

+ 6 - 5
src/views/bpm/form/editor/index.vue

@@ -4,14 +4,15 @@
     <fc-designer ref="designer" height="780px">
     <fc-designer ref="designer" height="780px">
       <template #handle>
       <template #handle>
         <el-button round size="small" type="primary" @click="handleSave">
         <el-button round size="small" type="primary" @click="handleSave">
-          <Icon icon="ep:plus" class="mr-5px" /> 保存
+          <Icon class="mr-5px" icon="ep:plus" />
+          保存
         </el-button>
         </el-button>
       </template>
       </template>
     </fc-designer>
     </fc-designer>
   </ContentWrap>
   </ContentWrap>
 
 
   <!-- 表单保存的弹窗 -->
   <!-- 表单保存的弹窗 -->
-  <Dialog title="保存表单" v-model="dialogVisible" width="600">
+  <Dialog v-model="dialogVisible" title="保存表单" width="600">
     <el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
     <el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
       <el-form-item label="表单名" prop="name">
       <el-form-item label="表单名" prop="name">
         <el-input v-model="formData.name" placeholder="请输入表单名" />
         <el-input v-model="formData.name" placeholder="请输入表单名" />
@@ -28,16 +29,16 @@
         </el-radio-group>
         </el-radio-group>
       </el-form-item>
       </el-form-item>
       <el-form-item label="备注" prop="remark">
       <el-form-item label="备注" prop="remark">
-        <el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" />
+        <el-input v-model="formData.remark" placeholder="请输入备注" type="textarea" />
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="BpmFormEditor" setup>
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { CommonStatusEnum } from '@/utils/constants'
 import { CommonStatusEnum } from '@/utils/constants'
 import * as FormApi from '@/api/bpm/form'
 import * as FormApi from '@/api/bpm/form'

+ 5 - 5
src/views/bpm/group/UserGroupForm.vue

@@ -1,17 +1,17 @@
 <template>
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" :title="dialogTitle">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="100px"
       label-width="100px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="组名" prop="name">
       <el-form-item label="组名" prop="name">
         <el-input v-model="formData.name" placeholder="请输入组名" />
         <el-input v-model="formData.name" placeholder="请输入组名" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="描述">
       <el-form-item label="描述">
-        <el-input type="textarea" v-model="formData.name" placeholder="请输入描述" />
+        <el-input v-model="formData.name" placeholder="请输入描述" type="textarea" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="成员" prop="memberUserIds">
       <el-form-item label="成员" prop="memberUserIds">
         <el-select v-model="formData.memberUserIds" multiple placeholder="请选择成员">
         <el-select v-model="formData.memberUserIds" multiple placeholder="请选择成员">
@@ -36,12 +36,12 @@
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="UserGroupForm" setup>
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { CommonStatusEnum } from '@/utils/constants'
 import { CommonStatusEnum } from '@/utils/constants'
 import * as UserGroupApi from '@/api/bpm/userGroup'
 import * as UserGroupApi from '@/api/bpm/userGroup'

+ 17 - 16
src/views/bpm/model/ModelForm.vue

@@ -1,45 +1,45 @@
 <template>
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible" width="600">
+  <Dialog v-model="dialogVisible" :title="dialogTitle" width="600">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="110px"
       label-width="110px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="流程标识" prop="key">
       <el-form-item label="流程标识" prop="key">
         <el-input
         <el-input
           v-model="formData.key"
           v-model="formData.key"
+          :disabled="!!formData.id"
           placeholder="请输入流标标识"
           placeholder="请输入流标标识"
           style="width: 330px"
           style="width: 330px"
-          :disabled="!!formData.id"
         />
         />
         <el-tooltip
         <el-tooltip
           v-if="!formData.id"
           v-if="!formData.id"
           class="item"
           class="item"
-          effect="light"
           content="新建后,流程标识不可修改!"
           content="新建后,流程标识不可修改!"
+          effect="light"
           placement="top"
           placement="top"
         >
         >
-          <i style="padding-left: 5px" class="el-icon-question"></i>
+          <i class="el-icon-question" style="padding-left: 5px"></i>
         </el-tooltip>
         </el-tooltip>
-        <el-tooltip v-else class="item" effect="light" content="流程标识不可修改!" placement="top">
-          <i style="padding-left: 5px" class="el-icon-question"></i>
+        <el-tooltip v-else class="item" content="流程标识不可修改!" effect="light" placement="top">
+          <i class="el-icon-question" style="padding-left: 5px"></i>
         </el-tooltip>
         </el-tooltip>
       </el-form-item>
       </el-form-item>
       <el-form-item label="流程名称" prop="name">
       <el-form-item label="流程名称" prop="name">
         <el-input
         <el-input
           v-model="formData.name"
           v-model="formData.name"
-          placeholder="请输入流程名称"
           :disabled="!!formData.id"
           :disabled="!!formData.id"
           clearable
           clearable
+          placeholder="请输入流程名称"
         />
         />
       </el-form-item>
       </el-form-item>
       <el-form-item v-if="formData.id" label="流程分类" prop="category">
       <el-form-item v-if="formData.id" label="流程分类" prop="category">
         <el-select
         <el-select
           v-model="formData.category"
           v-model="formData.category"
-          placeholder="请选择流程分类"
           clearable
           clearable
+          placeholder="请选择流程分类"
           style="width: 100%"
           style="width: 100%"
         >
         >
           <el-option
           <el-option
@@ -51,7 +51,7 @@
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
       <el-form-item label="流程描述" prop="description">
       <el-form-item label="流程描述" prop="description">
-        <el-input type="textarea" v-model="formData.description" clearable />
+        <el-input v-model="formData.description" clearable type="textarea" />
       </el-form-item>
       </el-form-item>
       <div v-if="formData.id">
       <div v-if="formData.id">
         <el-form-item label="表单类型" prop="formType">
         <el-form-item label="表单类型" prop="formType">
@@ -87,11 +87,11 @@
           />
           />
           <el-tooltip
           <el-tooltip
             class="item"
             class="item"
-            effect="light"
             content="自定义表单的提交路径,使用 Vue 的路由地址,例如说:bpm/oa/leave/create"
             content="自定义表单的提交路径,使用 Vue 的路由地址,例如说:bpm/oa/leave/create"
+            effect="light"
             placement="top"
             placement="top"
           >
           >
-            <i style="padding-left: 5px" class="el-icon-question"></i>
+            <i class="el-icon-question" style="padding-left: 5px"></i>
           </el-tooltip>
           </el-tooltip>
         </el-form-item>
         </el-form-item>
         <el-form-item
         <el-form-item
@@ -106,26 +106,27 @@
           />
           />
           <el-tooltip
           <el-tooltip
             class="item"
             class="item"
-            effect="light"
             content="自定义表单的查看路径,使用 Vue 的路由地址,例如说:bpm/oa/leave/view"
             content="自定义表单的查看路径,使用 Vue 的路由地址,例如说:bpm/oa/leave/view"
+            effect="light"
             placement="top"
             placement="top"
           >
           >
-            <i style="padding-left: 5px" class="el-icon-question"></i>
+            <i class="el-icon-question" style="padding-left: 5px"></i>
           </el-tooltip>
           </el-tooltip>
         </el-form-item>
         </el-form-item>
       </div>
       </div>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="ModelForm" setup>
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { ElMessageBox } from 'element-plus'
 import { ElMessageBox } from 'element-plus'
 import * as ModelApi from '@/api/bpm/model'
 import * as ModelApi from '@/api/bpm/model'
 import * as FormApi from '@/api/bpm/form'
 import * as FormApi from '@/api/bpm/form'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 

+ 15 - 14
src/views/bpm/model/ModelImportForm.vue

@@ -1,24 +1,24 @@
 <template>
 <template>
-  <Dialog title="导入流程" v-model="dialogVisible" width="400">
+  <Dialog v-model="dialogVisible" title="导入流程" width="400">
     <div>
     <div>
       <el-upload
       <el-upload
         ref="uploadRef"
         ref="uploadRef"
-        :action="importUrl"
-        :headers="uploadHeaders"
-        :data="formData"
-        name="bpmnFile"
         v-model:file-list="fileList"
         v-model:file-list="fileList"
-        drag
+        :action="importUrl"
         :auto-upload="false"
         :auto-upload="false"
-        accept=".bpmn, .xml"
+        :data="formData"
+        :disabled="formLoading"
+        :headers="uploadHeaders"
         :limit="1"
         :limit="1"
+        :on-error="submitFormError"
         :on-exceed="handleExceed"
         :on-exceed="handleExceed"
         :on-success="submitFormSuccess"
         :on-success="submitFormSuccess"
-        :on-error="submitFormError"
-        :disabled="formLoading"
+        accept=".bpmn, .xml"
+        drag
+        name="bpmnFile"
       >
       >
         <Icon class="el-icon--upload" icon="ep:upload-filled" />
         <Icon class="el-icon--upload" icon="ep:upload-filled" />
-        <div class="el-upload__text"> 将文件拖到此处,或 <em>点击上传</em> </div>
+        <div class="el-upload__text"> 将文件拖到此处,或 <em>点击上传</em></div>
         <template #tip>
         <template #tip>
           <div class="el-upload__tip" style="color: red">
           <div class="el-upload__tip" style="color: red">
             提示:仅允许导入“bpm”或“xml”格式文件!
             提示:仅允许导入“bpm”或“xml”格式文件!
@@ -33,10 +33,10 @@
                 />
                 />
               </el-form-item>
               </el-form-item>
               <el-form-item label="流程名称" prop="name">
               <el-form-item label="流程名称" prop="name">
-                <el-input v-model="formData.name" placeholder="请输入流程名称" clearable />
+                <el-input v-model="formData.name" clearable placeholder="请输入流程名称" />
               </el-form-item>
               </el-form-item>
               <el-form-item label="流程描述" prop="description">
               <el-form-item label="流程描述" prop="description">
-                <el-input type="textarea" v-model="formData.description" clearable />
+                <el-input v-model="formData.description" clearable type="textarea" />
               </el-form-item>
               </el-form-item>
             </el-form>
             </el-form>
           </div>
           </div>
@@ -44,13 +44,14 @@
       </el-upload>
       </el-upload>
     </div>
     </div>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="ModelImportForm" setup>
 import { getAccessToken, getTenantId } from '@/utils/auth'
 import { getAccessToken, getTenantId } from '@/utils/auth'
+
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 
 const dialogVisible = ref(false) // 弹窗的是否展示
 const dialogVisible = ref(false) // 弹窗的是否展示

+ 11 - 10
src/views/bpm/oa/leave/create.vue

@@ -1,14 +1,14 @@
 <template>
 <template>
-  <Dialog title="发起 OA 请假流程" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" title="发起 OA 请假流程">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="80px"
       label-width="80px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="请假类型" prop="type">
       <el-form-item label="请假类型" prop="type">
-        <el-select v-model="formData.type" placeholder="请选择请假类型" clearable>
+        <el-select v-model="formData.type" clearable placeholder="请选择请假类型">
           <el-option
           <el-option
             v-for="dict in getIntDictOptions(DICT_TYPE.BPM_OA_LEAVE_TYPE)"
             v-for="dict in getIntDictOptions(DICT_TYPE.BPM_OA_LEAVE_TYPE)"
             :key="dict.value"
             :key="dict.value"
@@ -19,35 +19,36 @@
       </el-form-item>
       </el-form-item>
       <el-form-item label="开始时间" prop="startTime">
       <el-form-item label="开始时间" prop="startTime">
         <el-date-picker
         <el-date-picker
-          clearable
           v-model="formData.startTime"
           v-model="formData.startTime"
+          clearable
+          placeholder="请选择开始时间"
           type="datetime"
           type="datetime"
           value-format="x"
           value-format="x"
-          placeholder="请选择开始时间"
         />
         />
       </el-form-item>
       </el-form-item>
       <el-form-item label="结束时间" prop="endTime">
       <el-form-item label="结束时间" prop="endTime">
         <el-date-picker
         <el-date-picker
-          clearable
           v-model="formData.endTime"
           v-model="formData.endTime"
+          clearable
+          placeholder="请选择结束时间"
           type="datetime"
           type="datetime"
           value-format="x"
           value-format="x"
-          placeholder="请选择结束时间"
         />
         />
       </el-form-item>
       </el-form-item>
       <el-form-item label="原因" prop="reason">
       <el-form-item label="原因" prop="reason">
-        <el-input v-model="formData.reason" type="textarea" placeholder="请输请假原因" />
+        <el-input v-model="formData.reason" placeholder="请输请假原因" type="textarea" />
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="BpmOALeaveCreate" setup>
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import * as LeaveApi from '@/api/bpm/leave'
 import * as LeaveApi from '@/api/bpm/leave'
+
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 
 const dialogVisible = ref(false) // 弹窗的是否展示
 const dialogVisible = ref(false) // 弹窗的是否展示

+ 3 - 3
src/views/bpm/oa/leave/detail.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
-  <Dialog title="详情" v-model="dialogVisible" :scroll="true" :max-height="200">
-    <el-descriptions border :column="1">
+  <Dialog v-model="dialogVisible" :max-height="200" :scroll="true" title="详情">
+    <el-descriptions :column="1" border>
       <el-descriptions-item label="请假类型">
       <el-descriptions-item label="请假类型">
         <dict-tag :type="DICT_TYPE.BPM_OA_LEAVE_TYPE" :value="detailData.type" />
         <dict-tag :type="DICT_TYPE.BPM_OA_LEAVE_TYPE" :value="detailData.type" />
       </el-descriptions-item>
       </el-descriptions-item>
@@ -16,7 +16,7 @@
     </el-descriptions>
     </el-descriptions>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="BpmOALeaveDetail" setup>
 import { DICT_TYPE } from '@/utils/dict'
 import { DICT_TYPE } from '@/utils/dict'
 import { formatDate } from '@/utils/formatTime'
 import { formatDate } from '@/utils/formatTime'
 import * as LeaveApi from '@/api/bpm/leave'
 import * as LeaveApi from '@/api/bpm/leave'

+ 5 - 5
src/views/bpm/processInstance/detail/ProcessInstanceBpmnViewer.vue

@@ -1,20 +1,20 @@
 <template>
 <template>
-  <el-card class="box-card" v-loading="loading">
+  <el-card v-loading="loading" class="box-card">
     <template #header>
     <template #header>
       <span class="el-icon-picture-outline">流程图</span>
       <span class="el-icon-picture-outline">流程图</span>
     </template>
     </template>
     <my-process-viewer
     <my-process-viewer
       key="designer"
       key="designer"
-      :value="bpmnXml"
-      v-bind="bpmnControlForm"
-      :prefix="bpmnControlForm.prefix"
       :activityData="activityList"
       :activityData="activityList"
+      :prefix="bpmnControlForm.prefix"
       :processInstanceData="processInstance"
       :processInstanceData="processInstance"
       :taskData="tasks"
       :taskData="tasks"
+      :value="bpmnXml"
+      v-bind="bpmnControlForm"
     />
     />
   </el-card>
   </el-card>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="BpmProcessInstanceBpmnViewer" setup>
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 import * as ActivityApi from '@/api/bpm/activity'
 import * as ActivityApi from '@/api/bpm/activity'
 // import * as DefinitionApi from '@/api/bpm/definition'
 // import * as DefinitionApi from '@/api/bpm/definition'

+ 5 - 5
src/views/bpm/processInstance/detail/ProcessInstanceTaskList.vue

@@ -1,9 +1,9 @@
 <template>
 <template>
-  <el-card class="box-card" v-loading="loading">
+  <el-card v-loading="loading" class="box-card">
     <template #header>
     <template #header>
       <span class="el-icon-picture-outline">审批记录</span>
       <span class="el-icon-picture-outline">审批记录</span>
     </template>
     </template>
-    <el-col :span="16" :offset="4">
+    <el-col :offset="4" :span="16">
       <div class="block">
       <div class="block">
         <el-timeline>
         <el-timeline>
           <el-timeline-item
           <el-timeline-item
@@ -16,9 +16,9 @@
             <el-card :body-style="{ padding: '10px' }">
             <el-card :body-style="{ padding: '10px' }">
               <label v-if="item.assigneeUser" style="font-weight: normal; margin-right: 30px">
               <label v-if="item.assigneeUser" style="font-weight: normal; margin-right: 30px">
                 审批人:{{ item.assigneeUser.nickname }}
                 审批人:{{ item.assigneeUser.nickname }}
-                <el-tag type="info" size="small">{{ item.assigneeUser.deptName }}</el-tag>
+                <el-tag size="small" type="info">{{ item.assigneeUser.deptName }}</el-tag>
               </label>
               </label>
-              <label style="font-weight: normal" v-if="item.createTime">创建时间:</label>
+              <label v-if="item.createTime" style="font-weight: normal">创建时间:</label>
               <label style="color: #8a909c; font-weight: normal">
               <label style="color: #8a909c; font-weight: normal">
                 {{ formatDate(item?.createTime) }}
                 {{ formatDate(item?.createTime) }}
               </label>
               </label>
@@ -44,7 +44,7 @@
     </el-col>
     </el-col>
   </el-card>
   </el-card>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="BpmProcessInstanceTaskList" setup>
 import { formatDate, formatPast2 } from '@/utils/formatTime'
 import { formatDate, formatPast2 } from '@/utils/formatTime'
 import { propTypes } from '@/utils/propTypes'
 import { propTypes } from '@/utils/propTypes'
 
 

+ 4 - 4
src/views/bpm/processInstance/detail/TaskUpdateAssigneeForm.vue

@@ -1,11 +1,11 @@
 <template>
 <template>
-  <Dialog title="转派审批人" v-model="dialogVisible" width="500">
+  <Dialog v-model="dialogVisible" title="转派审批人" width="500">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="110px"
       label-width="110px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="新审批人" prop="assigneeUserId">
       <el-form-item label="新审批人" prop="assigneeUserId">
         <el-select v-model="formData.assigneeUserId" clearable style="width: 100%">
         <el-select v-model="formData.assigneeUserId" clearable style="width: 100%">
@@ -19,12 +19,12 @@
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="BpmTaskUpdateAssigneeForm" setup>
 import * as TaskApi from '@/api/bpm/task'
 import * as TaskApi from '@/api/bpm/task'
 import * as UserApi from '@/api/system/user'
 import * as UserApi from '@/api/system/user'
 
 

+ 3 - 3
src/views/bpm/task/done/TaskDetail.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
-  <Dialog title="详情" v-model="dialogVisible" :scroll="true" :max-height="500">
-    <el-descriptions border :column="1">
+  <Dialog v-model="dialogVisible" :max-height="500" :scroll="true" title="详情">
+    <el-descriptions :column="1" border>
       <el-descriptions-item label="任务编号" min-width="120">
       <el-descriptions-item label="任务编号" min-width="120">
         {{ detailData.id }}
         {{ detailData.id }}
       </el-descriptions-item>
       </el-descriptions-item>
@@ -25,7 +25,7 @@
     </el-descriptions>
     </el-descriptions>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="BpmTaskDetail" setup>
 import { DICT_TYPE } from '@/utils/dict'
 import { DICT_TYPE } from '@/utils/dict'
 import { formatDate } from '@/utils/formatTime'
 import { formatDate } from '@/utils/formatTime'
 import * as TaskApi from '@/api/bpm/task'
 import * as TaskApi from '@/api/bpm/task'

+ 20 - 19
src/views/bpm/taskAssignRule/TaskAssignRuleForm.vue

@@ -1,11 +1,11 @@
 <template>
 <template>
-  <Dialog title="修改任务规则" v-model="dialogVisible" width="600">
+  <Dialog v-model="dialogVisible" title="修改任务规则" width="600">
     <el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
     <el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
       <el-form-item label="任务名称" prop="taskDefinitionName">
       <el-form-item label="任务名称" prop="taskDefinitionName">
-        <el-input v-model="formData.taskDefinitionName" placeholder="请输入流标标识" disabled />
+        <el-input v-model="formData.taskDefinitionName" disabled placeholder="请输入流标标识" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="任务标识" prop="taskDefinitionKey">
       <el-form-item label="任务标识" prop="taskDefinitionKey">
-        <el-input v-model="formData.taskDefinitionKey" placeholder="请输入任务标识" disabled />
+        <el-input v-model="formData.taskDefinitionKey" disabled placeholder="请输入任务标识" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="规则类型" prop="type">
       <el-form-item label="规则类型" prop="type">
         <el-select v-model="formData.type" clearable style="width: 100%">
         <el-select v-model="formData.type" clearable style="width: 100%">
@@ -18,7 +18,7 @@
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
       <el-form-item v-if="formData.type === 10" label="指定角色" prop="roleIds">
       <el-form-item v-if="formData.type === 10" label="指定角色" prop="roleIds">
-        <el-select v-model="formData.roleIds" multiple clearable style="width: 100%">
+        <el-select v-model="formData.roleIds" clearable multiple style="width: 100%">
           <el-option
           <el-option
             v-for="item in roleOptions"
             v-for="item in roleOptions"
             :key="item.id"
             :key="item.id"
@@ -28,24 +28,24 @@
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
       <el-form-item
       <el-form-item
+        v-if="formData.type === 20 || formData.type === 21"
         label="指定部门"
         label="指定部门"
         prop="deptIds"
         prop="deptIds"
         span="24"
         span="24"
-        v-if="formData.type === 20 || formData.type === 21"
       >
       >
         <el-tree-select
         <el-tree-select
           ref="treeRef"
           ref="treeRef"
           v-model="formData.deptIds"
           v-model="formData.deptIds"
-          node-key="id"
-          show-checkbox
-          :props="defaultProps"
           :data="deptTreeOptions"
           :data="deptTreeOptions"
+          :props="defaultProps"
           empty-text="加载中,请稍后"
           empty-text="加载中,请稍后"
           multiple
           multiple
+          node-key="id"
+          show-checkbox
         />
         />
       </el-form-item>
       </el-form-item>
-      <el-form-item label="指定岗位" prop="postIds" span="24" v-if="formData.type === 22">
-        <el-select v-model="formData.postIds" multiple clearable style="width: 100%">
+      <el-form-item v-if="formData.type === 22" label="指定岗位" prop="postIds" span="24">
+        <el-select v-model="formData.postIds" clearable multiple style="width: 100%">
           <el-option
           <el-option
             v-for="item in postOptions"
             v-for="item in postOptions"
             :key="parseInt(item.id)"
             :key="parseInt(item.id)"
@@ -55,12 +55,12 @@
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
       <el-form-item
       <el-form-item
+        v-if="formData.type === 30 || formData.type === 31 || formData.type === 32"
         label="指定用户"
         label="指定用户"
         prop="userIds"
         prop="userIds"
         span="24"
         span="24"
-        v-if="formData.type === 30 || formData.type === 31 || formData.type === 32"
       >
       >
-        <el-select v-model="formData.userIds" multiple clearable style="width: 100%">
+        <el-select v-model="formData.userIds" clearable multiple style="width: 100%">
           <el-option
           <el-option
             v-for="item in userOptions"
             v-for="item in userOptions"
             :key="parseInt(item.id)"
             :key="parseInt(item.id)"
@@ -69,8 +69,8 @@
           />
           />
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
-      <el-form-item label="指定用户组" prop="userGroupIds" v-if="formData.type === 40">
-        <el-select v-model="formData.userGroupIds" multiple clearable style="width: 100%">
+      <el-form-item v-if="formData.type === 40" label="指定用户组" prop="userGroupIds">
+        <el-select v-model="formData.userGroupIds" clearable multiple style="width: 100%">
           <el-option
           <el-option
             v-for="item in userGroupOptions"
             v-for="item in userGroupOptions"
             :key="parseInt(item.id)"
             :key="parseInt(item.id)"
@@ -79,8 +79,8 @@
           />
           />
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
-      <el-form-item label="指定脚本" prop="scripts" v-if="formData.type === 50">
-        <el-select v-model="formData.scripts" multiple clearable style="width: 100%">
+      <el-form-item v-if="formData.type === 50" label="指定脚本" prop="scripts">
+        <el-select v-model="formData.scripts" clearable multiple style="width: 100%">
           <el-option
           <el-option
             v-for="dict in taskAssignScriptDictDatas"
             v-for="dict in taskAssignScriptDictDatas"
             :key="dict.value"
             :key="dict.value"
@@ -92,20 +92,21 @@
     </el-form>
     </el-form>
     <!-- 操作按钮 -->
     <!-- 操作按钮 -->
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="BpmTaskAssignRuleForm" setup>
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
-import { handleTree, defaultProps } from '@/utils/tree'
+import { defaultProps, handleTree } from '@/utils/tree'
 import * as TaskAssignRuleApi from '@/api/bpm/taskAssignRule'
 import * as TaskAssignRuleApi from '@/api/bpm/taskAssignRule'
 import * as RoleApi from '@/api/system/role'
 import * as RoleApi from '@/api/system/role'
 import * as DeptApi from '@/api/system/dept'
 import * as DeptApi from '@/api/system/dept'
 import * as PostApi from '@/api/system/post'
 import * as PostApi from '@/api/system/post'
 import * as UserApi from '@/api/system/user'
 import * as UserApi from '@/api/system/user'
 import * as UserGroupApi from '@/api/bpm/userGroup'
 import * as UserGroupApi from '@/api/bpm/userGroup'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 

+ 5 - 5
src/views/infra/apiAccessLog/ApiAccessLogDetail.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
-  <Dialog title="详情" v-model="dialogVisible" :scroll="true" :max-height="500" width="800">
-    <el-descriptions border :column="1">
+  <Dialog v-model="dialogVisible" :max-height="500" :scroll="true" title="详情" width="800">
+    <el-descriptions :column="1" border>
       <el-descriptions-item label="日志主键" min-width="120">
       <el-descriptions-item label="日志主键" min-width="120">
         {{ detailData.id }}
         {{ detailData.id }}
       </el-descriptions-item>
       </el-descriptions-item>
@@ -33,14 +33,14 @@
       <el-descriptions-item label="操作结果">
       <el-descriptions-item label="操作结果">
         <div v-if="detailData.resultCode === 0">正常</div>
         <div v-if="detailData.resultCode === 0">正常</div>
         <div v-else-if="detailData.resultCode > 0"
         <div v-else-if="detailData.resultCode > 0"
-          >失败 | {{ detailData.resultCode }} | {{ detailData.resultMsg }}</div
-        >
+          >失败 | {{ detailData.resultCode }} | {{ detailData.resultMsg }}
+        </div>
       </el-descriptions-item>
       </el-descriptions-item>
     </el-descriptions>
     </el-descriptions>
   </Dialog>
   </Dialog>
 </template>
 </template>
 
 
-<script setup lang="ts">
+<script lang="ts" name="ApiAccessLogDetail" setup>
 import { DICT_TYPE } from '@/utils/dict'
 import { DICT_TYPE } from '@/utils/dict'
 import { formatDate } from '@/utils/formatTime'
 import { formatDate } from '@/utils/formatTime'
 import * as ApiAccessLog from '@/api/infra/apiAccessLog'
 import * as ApiAccessLog from '@/api/infra/apiAccessLog'

+ 9 - 9
src/views/infra/apiErrorLog/ApiErrorLogDetail.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
-  <Dialog title="详情" v-model="dialogVisible" :scroll="true" :max-height="500" width="800">
-    <el-descriptions border :column="1">
+  <Dialog v-model="dialogVisible" :max-height="500" :scroll="true" title="详情" width="800">
+    <el-descriptions :column="1" border>
       <el-descriptions-item label="日志主键" min-width="120">
       <el-descriptions-item label="日志主键" min-width="120">
         {{ detailData.id }}
         {{ detailData.id }}
       </el-descriptions-item>
       </el-descriptions-item>
@@ -32,12 +32,12 @@
       <el-descriptions-item label="异常名">
       <el-descriptions-item label="异常名">
         {{ detailData.exceptionName }}
         {{ detailData.exceptionName }}
       </el-descriptions-item>
       </el-descriptions-item>
-      <el-descriptions-item label="异常堆栈" v-if="detailData.exceptionStackTrace">
+      <el-descriptions-item v-if="detailData.exceptionStackTrace" label="异常堆栈">
         <el-input
         <el-input
-          type="textarea"
-          :readonly="true"
-          :autosize="{ maxRows: 20 }"
           v-model="detailData.exceptionStackTrace"
           v-model="detailData.exceptionStackTrace"
+          :autosize="{ maxRows: 20 }"
+          :readonly="true"
+          type="textarea"
         />
         />
       </el-descriptions-item>
       </el-descriptions-item>
       <el-descriptions-item label="处理状态">
       <el-descriptions-item label="处理状态">
@@ -46,16 +46,16 @@
           :value="detailData.processStatus"
           :value="detailData.processStatus"
         />
         />
       </el-descriptions-item>
       </el-descriptions-item>
-      <el-descriptions-item label="处理人" v-if="detailData.processUserId">
+      <el-descriptions-item v-if="detailData.processUserId" label="处理人">
         {{ detailData.processUserId }}
         {{ detailData.processUserId }}
       </el-descriptions-item>
       </el-descriptions-item>
-      <el-descriptions-item label="处理时间" v-if="detailData.processTime">
+      <el-descriptions-item v-if="detailData.processTime" label="处理时间">
         {{ formatDate(detailData.processTime) }}
         {{ formatDate(detailData.processTime) }}
       </el-descriptions-item>
       </el-descriptions-item>
     </el-descriptions>
     </el-descriptions>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="ApiErrorLogDetail" setup>
 import { DICT_TYPE } from '@/utils/dict'
 import { DICT_TYPE } from '@/utils/dict'
 import { formatDate } from '@/utils/formatTime'
 import { formatDate } from '@/utils/formatTime'
 import * as ApiErrorLog from '@/api/infra/apiErrorLog'
 import * as ApiErrorLog from '@/api/infra/apiErrorLog'

+ 3 - 2
src/views/infra/codegen/EditTable.vue

@@ -13,16 +13,17 @@
     </el-tabs>
     </el-tabs>
     <el-form>
     <el-form>
       <el-form-item style="float: right">
       <el-form-item style="float: right">
-        <el-button type="primary" @click="submitForm" :loading="formLoading">保存</el-button>
+        <el-button :loading="formLoading" type="primary" @click="submitForm">保存</el-button>
         <el-button @click="close">返回</el-button>
         <el-button @click="close">返回</el-button>
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
   </ContentWrap>
   </ContentWrap>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="InfraCodegenEditTable" setup>
 import { useTagsViewStore } from '@/store/modules/tagsView'
 import { useTagsViewStore } from '@/store/modules/tagsView'
 import { BasicInfoForm, ColumInfoForm, GenerateInfoForm } from './components'
 import { BasicInfoForm, ColumInfoForm, GenerateInfoForm } from './components'
 import * as CodegenApi from '@/api/infra/codegen'
 import * as CodegenApi from '@/api/infra/codegen'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 const { push, currentRoute } = useRouter() // 路由
 const { push, currentRoute } = useRouter() // 路由

+ 23 - 16
src/views/infra/codegen/ImportTable.vue

@@ -1,12 +1,12 @@
 <template>
 <template>
-  <Dialog title="导入表" v-model="dialogVisible" width="800px">
+  <Dialog v-model="dialogVisible" title="导入表" width="800px">
     <!-- 搜索栏 -->
     <!-- 搜索栏 -->
-    <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
+    <el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="68px">
       <el-form-item label="数据源" prop="dataSourceConfigId">
       <el-form-item label="数据源" prop="dataSourceConfigId">
         <el-select
         <el-select
           v-model="queryParams.dataSourceConfigId"
           v-model="queryParams.dataSourceConfigId"
-          placeholder="请选择数据源"
           class="!w-240px"
           class="!w-240px"
+          placeholder="请选择数据源"
         >
         >
           <el-option
           <el-option
             v-for="config in dataSourceConfigList"
             v-for="config in dataSourceConfigList"
@@ -19,54 +19,61 @@
       <el-form-item label="表名称" prop="name">
       <el-form-item label="表名称" prop="name">
         <el-input
         <el-input
           v-model="queryParams.name"
           v-model="queryParams.name"
-          placeholder="请输入表名称"
+          class="!w-240px"
           clearable
           clearable
+          placeholder="请输入表名称"
           @keyup.enter="getList"
           @keyup.enter="getList"
-          class="!w-240px"
         />
         />
       </el-form-item>
       </el-form-item>
       <el-form-item label="表描述" prop="comment">
       <el-form-item label="表描述" prop="comment">
         <el-input
         <el-input
           v-model="queryParams.comment"
           v-model="queryParams.comment"
-          placeholder="请输入表描述"
+          class="!w-240px"
           clearable
           clearable
+          placeholder="请输入表描述"
           @keyup.enter="getList"
           @keyup.enter="getList"
-          class="!w-240px"
         />
         />
       </el-form-item>
       </el-form-item>
       <el-form-item>
       <el-form-item>
-        <el-button @click="getList"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
-        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
+        <el-button @click="getList">
+          <Icon class="mr-5px" icon="ep:search" />
+          搜索
+        </el-button>
+        <el-button @click="resetQuery">
+          <Icon class="mr-5px" icon="ep:refresh" />
+          重置
+        </el-button>
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <!-- 列表 -->
     <!-- 列表 -->
     <el-row>
     <el-row>
       <el-table
       <el-table
-        v-loading="dbTableLoading"
-        @row-click="handleRowClick"
         ref="tableRef"
         ref="tableRef"
+        v-loading="dbTableLoading"
         :data="dbTableList"
         :data="dbTableList"
-        @selection-change="handleSelectionChange"
         height="260px"
         height="260px"
+        @row-click="handleRowClick"
+        @selection-change="handleSelectionChange"
       >
       >
         <el-table-column type="selection" width="55" />
         <el-table-column type="selection" width="55" />
-        <el-table-column prop="name" label="表名称" :show-overflow-tooltip="true" />
-        <el-table-column prop="comment" label="表描述" :show-overflow-tooltip="true" />
+        <el-table-column :show-overflow-tooltip="true" label="表名称" prop="name" />
+        <el-table-column :show-overflow-tooltip="true" label="表描述" prop="comment" />
       </el-table>
       </el-table>
     </el-row>
     </el-row>
     <!-- 操作 -->
     <!-- 操作 -->
     <template #footer>
     <template #footer>
-      <el-button @click="handleImportTable" type="primary" :disabled="tableList.length === 0">
+      <el-button :disabled="tableList.length === 0" type="primary" @click="handleImportTable">
         导入
         导入
       </el-button>
       </el-button>
       <el-button @click="close">关闭</el-button>
       <el-button @click="close">关闭</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="InfraCodegenImportTable" setup>
 import * as CodegenApi from '@/api/infra/codegen'
 import * as CodegenApi from '@/api/infra/codegen'
 import * as DataSourceConfigApi from '@/api/infra/dataSourceConfig'
 import * as DataSourceConfigApi from '@/api/infra/dataSourceConfig'
 import { ElTable } from 'element-plus'
 import { ElTable } from 'element-plus'
+
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 
 const dialogVisible = ref(false) // 弹窗的是否展示
 const dialogVisible = ref(false) // 弹窗的是否展示

+ 14 - 13
src/views/infra/codegen/PreviewCode.vue

@@ -1,48 +1,48 @@
 <template>
 <template>
   <Dialog
   <Dialog
-    title="代码预览"
     v-model="dialogVisible"
     v-model="dialogVisible"
     align-center
     align-center
-    width="80%"
     class="app-infra-codegen-preview-container"
     class="app-infra-codegen-preview-container"
+    title="代码预览"
+    width="80%"
   >
   >
     <div class="flex">
     <div class="flex">
       <!-- 代码目录树 -->
       <!-- 代码目录树 -->
       <el-card
       <el-card
-        class="w-1/3"
-        :gutter="12"
-        shadow="hover"
         v-loading="loading"
         v-loading="loading"
+        :gutter="12"
+        class="w-1/3"
         element-loading-text="生成文件目录中..."
         element-loading-text="生成文件目录中..."
+        shadow="hover"
       >
       >
         <el-scrollbar height="calc(100vh - 88px - 40px)">
         <el-scrollbar height="calc(100vh - 88px - 40px)">
           <el-tree
           <el-tree
             ref="treeRef"
             ref="treeRef"
-            node-key="id"
             :data="preview.fileTree"
             :data="preview.fileTree"
             :expand-on-click-node="false"
             :expand-on-click-node="false"
+            default-expand-all
             highlight-current
             highlight-current
+            node-key="id"
             @node-click="handleNodeClick"
             @node-click="handleNodeClick"
-            default-expand-all
           />
           />
         </el-scrollbar>
         </el-scrollbar>
       </el-card>
       </el-card>
       <!-- 代码 -->
       <!-- 代码 -->
       <el-card
       <el-card
-        class="w-2/3 ml-3"
-        :gutter="12"
-        shadow="hover"
         v-loading="loading"
         v-loading="loading"
+        :gutter="12"
+        class="w-2/3 ml-3"
         element-loading-text="加载代码中..."
         element-loading-text="加载代码中..."
+        shadow="hover"
       >
       >
         <el-tabs v-model="preview.activeName">
         <el-tabs v-model="preview.activeName">
           <el-tab-pane
           <el-tab-pane
             v-for="item in previewCodegen"
             v-for="item in previewCodegen"
+            :key="item.filePath"
             :label="item.filePath.substring(item.filePath.lastIndexOf('/') + 1)"
             :label="item.filePath.substring(item.filePath.lastIndexOf('/') + 1)"
             :name="item.filePath"
             :name="item.filePath"
-            :key="item.filePath"
           >
           >
-            <el-button text type="primary" class="float-right" @click="copy(item.code)">
+            <el-button class="float-right" text type="primary" @click="copy(item.code)">
               {{ t('common.copy') }}
               {{ t('common.copy') }}
             </el-button>
             </el-button>
             <div v-highlight>
             <div v-highlight>
@@ -54,10 +54,11 @@
     </div>
     </div>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="InfraCodegenPreviewCode" setup>
 import { useClipboard } from '@vueuse/core'
 import { useClipboard } from '@vueuse/core'
 import { handleTree2 } from '@/utils/tree'
 import { handleTree2 } from '@/utils/tree'
 import * as CodegenApi from '@/api/infra/codegen'
 import * as CodegenApi from '@/api/infra/codegen'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 

+ 7 - 7
src/views/infra/codegen/components/BasicInfoForm.vue

@@ -3,12 +3,12 @@
     <el-row>
     <el-row>
       <el-col :span="12">
       <el-col :span="12">
         <el-form-item label="表名称" prop="tableName">
         <el-form-item label="表名称" prop="tableName">
-          <el-input placeholder="请输入仓库名称" v-model="formData.tableName" />
+          <el-input v-model="formData.tableName" placeholder="请输入仓库名称" />
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
       <el-col :span="12">
       <el-col :span="12">
         <el-form-item label="表描述" prop="tableComment">
         <el-form-item label="表描述" prop="tableComment">
-          <el-input placeholder="请输入" v-model="formData.tableComment" />
+          <el-input v-model="formData.tableComment" placeholder="请输入" />
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
       <el-col :span="12">
       <el-col :span="12">
@@ -20,27 +20,27 @@
                 content="默认去除表名的前缀。如果存在重复,则需要手动添加前缀,避免 MyBatis 报 Alias 重复的问题。"
                 content="默认去除表名的前缀。如果存在重复,则需要手动添加前缀,避免 MyBatis 报 Alias 重复的问题。"
                 placement="top"
                 placement="top"
               >
               >
-                <Icon icon="ep:question-filled" class="" />
+                <Icon class="" icon="ep:question-filled" />
               </el-tooltip>
               </el-tooltip>
             </span>
             </span>
           </template>
           </template>
-          <el-input placeholder="请输入" v-model="formData.className" />
+          <el-input v-model="formData.className" placeholder="请输入" />
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
       <el-col :span="12">
       <el-col :span="12">
         <el-form-item label="作者" prop="author">
         <el-form-item label="作者" prop="author">
-          <el-input placeholder="请输入" v-model="formData.author" />
+          <el-input v-model="formData.author" placeholder="请输入" />
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
       <el-col :span="24">
       <el-col :span="24">
         <el-form-item label="备注" prop="remark">
         <el-form-item label="备注" prop="remark">
-          <el-input type="textarea" :rows="3" v-model="formData.remark" />
+          <el-input v-model="formData.remark" :rows="3" type="textarea" />
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
     </el-row>
     </el-row>
   </el-form>
   </el-form>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="InfraCodegenBasicInfoForm" setup>
 import * as CodegenApi from '@/api/infra/codegen'
 import * as CodegenApi from '@/api/infra/codegen'
 import { PropType } from 'vue'
 import { PropType } from 'vue'
 
 

+ 12 - 12
src/views/infra/codegen/components/ColumInfoForm.vue

@@ -1,10 +1,10 @@
 <template>
 <template>
-  <el-table ref="dragTable" :data="formData" row-key="columnId" :max-height="tableHeight">
+  <el-table ref="dragTable" :data="formData" :max-height="tableHeight" row-key="columnId">
     <el-table-column
     <el-table-column
+      :show-overflow-tooltip="true"
       label="字段列名"
       label="字段列名"
-      prop="columnName"
       min-width="10%"
       min-width="10%"
-      :show-overflow-tooltip="true"
+      prop="columnName"
     />
     />
     <el-table-column label="字段描述" min-width="10%">
     <el-table-column label="字段描述" min-width="10%">
       <template #default="scope">
       <template #default="scope">
@@ -12,10 +12,10 @@
       </template>
       </template>
     </el-table-column>
     </el-table-column>
     <el-table-column
     <el-table-column
+      :show-overflow-tooltip="true"
       label="物理类型"
       label="物理类型"
-      prop="dataType"
       min-width="10%"
       min-width="10%"
-      :show-overflow-tooltip="true"
+      prop="dataType"
     />
     />
     <el-table-column label="Java类型" min-width="11%">
     <el-table-column label="Java类型" min-width="11%">
       <template #default="scope">
       <template #default="scope">
@@ -37,26 +37,26 @@
     </el-table-column>
     </el-table-column>
     <el-table-column label="插入" min-width="4%">
     <el-table-column label="插入" min-width="4%">
       <template #default="scope">
       <template #default="scope">
-        <el-checkbox true-label="true" false-label="false" v-model="scope.row.createOperation" />
+        <el-checkbox v-model="scope.row.createOperation" false-label="false" true-label="true" />
       </template>
       </template>
     </el-table-column>
     </el-table-column>
     <el-table-column label="编辑" min-width="4%">
     <el-table-column label="编辑" min-width="4%">
       <template #default="scope">
       <template #default="scope">
-        <el-checkbox true-label="true" false-label="false" v-model="scope.row.updateOperation" />
+        <el-checkbox v-model="scope.row.updateOperation" false-label="false" true-label="true" />
       </template>
       </template>
     </el-table-column>
     </el-table-column>
     <el-table-column label="列表" min-width="4%">
     <el-table-column label="列表" min-width="4%">
       <template #default="scope">
       <template #default="scope">
         <el-checkbox
         <el-checkbox
-          true-label="true"
-          false-label="false"
           v-model="scope.row.listOperationResult"
           v-model="scope.row.listOperationResult"
+          false-label="false"
+          true-label="true"
         />
         />
       </template>
       </template>
     </el-table-column>
     </el-table-column>
     <el-table-column label="查询" min-width="4%">
     <el-table-column label="查询" min-width="4%">
       <template #default="scope">
       <template #default="scope">
-        <el-checkbox true-label="true" false-label="false" v-model="scope.row.listOperation" />
+        <el-checkbox v-model="scope.row.listOperation" false-label="false" true-label="true" />
       </template>
       </template>
     </el-table-column>
     </el-table-column>
     <el-table-column label="查询方式" min-width="10%">
     <el-table-column label="查询方式" min-width="10%">
@@ -75,7 +75,7 @@
     </el-table-column>
     </el-table-column>
     <el-table-column label="允许空" min-width="5%">
     <el-table-column label="允许空" min-width="5%">
       <template #default="scope">
       <template #default="scope">
-        <el-checkbox true-label="true" false-label="false" v-model="scope.row.nullable" />
+        <el-checkbox v-model="scope.row.nullable" false-label="false" true-label="true" />
       </template>
       </template>
     </el-table-column>
     </el-table-column>
     <el-table-column label="显示类型" min-width="12%">
     <el-table-column label="显示类型" min-width="12%">
@@ -112,7 +112,7 @@
     </el-table-column>
     </el-table-column>
   </el-table>
   </el-table>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="InfraCodegenColumInfoForm" setup>
 import { PropType } from 'vue'
 import { PropType } from 'vue'
 import * as CodegenApi from '@/api/infra/codegen'
 import * as CodegenApi from '@/api/infra/codegen'
 import * as DictDataApi from '@/api/system/dict/dict.type'
 import * as DictDataApi from '@/api/system/dict/dict.type'

+ 9 - 9
src/views/infra/codegen/components/GenerateInfoForm.vue

@@ -2,7 +2,7 @@
   <el-form ref="formRef" :model="formData" :rules="rules" label-width="150px">
   <el-form ref="formRef" :model="formData" :rules="rules" label-width="150px">
     <el-row>
     <el-row>
       <el-col :span="12">
       <el-col :span="12">
-        <el-form-item prop="templateType" label="生成模板">
+        <el-form-item label="生成模板" prop="templateType">
           <el-select v-model="formData.templateType" @change="tplSelectChange">
           <el-select v-model="formData.templateType" @change="tplSelectChange">
             <el-option
             <el-option
               v-for="dict in getIntDictOptions(DICT_TYPE.INFRA_CODEGEN_TEMPLATE_TYPE)"
               v-for="dict in getIntDictOptions(DICT_TYPE.INFRA_CODEGEN_TEMPLATE_TYPE)"
@@ -14,7 +14,7 @@
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
       <el-col :span="12">
       <el-col :span="12">
-        <el-form-item prop="frontType" label="前端类型">
+        <el-form-item label="前端类型" prop="frontType">
           <el-select v-model="formData.frontType">
           <el-select v-model="formData.frontType">
             <el-option
             <el-option
               v-for="dict in getIntDictOptions(DICT_TYPE.INFRA_CODEGEN_FRONT_TYPE)"
               v-for="dict in getIntDictOptions(DICT_TYPE.INFRA_CODEGEN_FRONT_TYPE)"
@@ -27,7 +27,7 @@
       </el-col>
       </el-col>
 
 
       <el-col :span="12">
       <el-col :span="12">
-        <el-form-item prop="scene" label="生成场景">
+        <el-form-item label="生成场景" prop="scene">
           <el-select v-model="formData.scene">
           <el-select v-model="formData.scene">
             <el-option
             <el-option
               v-for="dict in getIntDictOptions(DICT_TYPE.INFRA_CODEGEN_SCENE)"
               v-for="dict in getIntDictOptions(DICT_TYPE.INFRA_CODEGEN_SCENE)"
@@ -50,11 +50,11 @@
           </template>
           </template>
           <el-tree-select
           <el-tree-select
             v-model="formData.parentMenuId"
             v-model="formData.parentMenuId"
-            placeholder="请选择系统菜单"
-            node-key="id"
-            check-strictly
             :data="menus"
             :data="menus"
             :props="menuTreeProps"
             :props="menuTreeProps"
+            check-strictly
+            node-key="id"
+            placeholder="请选择系统菜单"
           />
           />
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
@@ -148,7 +148,7 @@
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
 
 
-      <el-col :span="24" v-if="formData.genType === '1'">
+      <el-col v-if="formData.genType === '1'" :span="24">
         <el-form-item prop="genPath">
         <el-form-item prop="genPath">
           <template #label>
           <template #label>
             <span>
             <span>
@@ -291,8 +291,8 @@
     </el-row>
     </el-row>
   </el-form>
   </el-form>
 </template>
 </template>
-<script setup lang="ts">
-import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
+<script lang="ts" name="InfraCodegenGenerateInfoForm" setup>
+import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { handleTree } from '@/utils/tree'
 import { handleTree } from '@/utils/tree'
 import * as CodegenApi from '@/api/infra/codegen'
 import * as CodegenApi from '@/api/infra/codegen'
 import * as MenuApi from '@/api/system/menu'
 import * as MenuApi from '@/api/system/menu'

+ 5 - 5
src/views/infra/config/ConfigForm.vue

@@ -1,11 +1,11 @@
 <template>
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" :title="dialogTitle">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="80px"
       label-width="80px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="参数分类" prop="category">
       <el-form-item label="参数分类" prop="category">
         <el-input v-model="formData.category" placeholder="请输入参数分类" />
         <el-input v-model="formData.category" placeholder="请输入参数分类" />
@@ -31,16 +31,16 @@
         </el-radio-group>
         </el-radio-group>
       </el-form-item>
       </el-form-item>
       <el-form-item label="备注" prop="remark">
       <el-form-item label="备注" prop="remark">
-        <el-input v-model="formData.remark" type="textarea" placeholder="请输入内容" />
+        <el-input v-model="formData.remark" placeholder="请输入内容" type="textarea" />
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="InfraConfigForm" setup>
 import { DICT_TYPE, getBoolDictOptions } from '@/utils/dict'
 import { DICT_TYPE, getBoolDictOptions } from '@/utils/dict'
 import * as ConfigApi from '@/api/infra/config'
 import * as ConfigApi from '@/api/infra/config'
 
 

+ 4 - 4
src/views/infra/dataSourceConfig/DataSourceConfigForm.vue

@@ -1,11 +1,11 @@
 <template>
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" :title="dialogTitle">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="100px"
       label-width="100px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="数据源名称" prop="name">
       <el-form-item label="数据源名称" prop="name">
         <el-input v-model="formData.name" placeholder="请输入参数名称" />
         <el-input v-model="formData.name" placeholder="请输入参数名称" />
@@ -21,12 +21,12 @@
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="InfraDataSourceConfigForm" setup>
 import * as DataSourceConfigApi from '@/api/infra/dataSourceConfig'
 import * as DataSourceConfigApi from '@/api/infra/dataSourceConfig'
 
 
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化

+ 13 - 12
src/views/infra/file/FileForm.vue

@@ -1,23 +1,23 @@
 <template>
 <template>
-  <Dialog title="上传文件" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" title="上传文件">
     <el-upload
     <el-upload
       ref="uploadRef"
       ref="uploadRef"
+      v-model:file-list="fileList"
       :action="url"
       :action="url"
+      :auto-upload="false"
       :data="data"
       :data="data"
+      :disabled="formLoading"
       :headers="uploadHeaders"
       :headers="uploadHeaders"
-      v-model:file-list="fileList"
-      drag
-      accept=".jpg, .png, .gif"
       :limit="1"
       :limit="1"
-      :on-success="submitFormSuccess"
-      :on-exceed="handleExceed"
-      :on-error="submitFormError"
       :on-change="handleFileChange"
       :on-change="handleFileChange"
-      :auto-upload="false"
-      :disabled="formLoading"
+      :on-error="submitFormError"
+      :on-exceed="handleExceed"
+      :on-success="submitFormSuccess"
+      accept=".jpg, .png, .gif"
+      drag
     >
     >
       <i class="el-icon-upload"></i>
       <i class="el-icon-upload"></i>
-      <div class="el-upload__text"> 将文件拖到此处,或 <em>点击上传</em> </div>
+      <div class="el-upload__text"> 将文件拖到此处,或 <em>点击上传</em></div>
       <template #tip>
       <template #tip>
         <div class="el-upload__tip" style="color: red">
         <div class="el-upload__tip" style="color: red">
           提示:仅允许导入 jpg、png、gif 格式文件!
           提示:仅允许导入 jpg、png、gif 格式文件!
@@ -25,13 +25,14 @@
       </template>
       </template>
     </el-upload>
     </el-upload>
     <template #footer>
     <template #footer>
-      <el-button @click="submitFileForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitFileForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="InfraFileForm" setup>
 import { getAccessToken, getTenantId } from '@/utils/auth'
 import { getAccessToken, getTenantId } from '@/utils/auth'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 

+ 7 - 6
src/views/infra/fileConfig/FileConfigForm.vue

@@ -1,11 +1,11 @@
 <template>
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" :title="dialogTitle">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="120px"
       label-width="120px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="配置名" prop="name">
       <el-form-item label="配置名" prop="name">
         <el-input v-model="formData.name" placeholder="请输入配置名" />
         <el-input v-model="formData.name" placeholder="请输入配置名" />
@@ -16,8 +16,8 @@
       <el-form-item label="存储器" prop="storage">
       <el-form-item label="存储器" prop="storage">
         <el-select
         <el-select
           v-model="formData.storage"
           v-model="formData.storage"
-          placeholder="请选择存储器"
           :disabled="formData.id !== undefined"
           :disabled="formData.id !== undefined"
+          placeholder="请选择存储器"
         >
         >
           <el-option
           <el-option
             v-for="dict in getDictOptions(DICT_TYPE.INFRA_FILE_STORAGE)"
             v-for="dict in getDictOptions(DICT_TYPE.INFRA_FILE_STORAGE)"
@@ -48,7 +48,7 @@
         label="主机端口"
         label="主机端口"
         prop="config.port"
         prop="config.port"
       >
       >
-        <el-input-number :min="0" v-model="formData.config.port" placeholder="请输入主机端口" />
+        <el-input-number v-model="formData.config.port" :min="0" placeholder="请输入主机端口" />
       </el-form-item>
       </el-form-item>
       <el-form-item
       <el-form-item
         v-if="formData.storage >= 11 && formData.storage <= 12"
         v-if="formData.storage >= 11 && formData.storage <= 12"
@@ -93,14 +93,15 @@
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="InfraFileConfigForm" setup>
 import { DICT_TYPE, getDictOptions } from '@/utils/dict'
 import { DICT_TYPE, getDictOptions } from '@/utils/dict'
 import * as FileConfigApi from '@/api/infra/fileConfig'
 import * as FileConfigApi from '@/api/infra/fileConfig'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 

+ 3 - 3
src/views/infra/job/JobDetail.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
-  <Dialog title="任务详细" v-model="dialogVisible" width="700px">
-    <el-descriptions border :column="1">
+  <Dialog v-model="dialogVisible" title="任务详细" width="700px">
+    <el-descriptions :column="1" border>
       <el-descriptions-item label="任务编号" min-width="60">
       <el-descriptions-item label="任务编号" min-width="60">
         {{ detailData.id }}
         {{ detailData.id }}
       </el-descriptions-item>
       </el-descriptions-item>
@@ -42,7 +42,7 @@
     </el-descriptions>
     </el-descriptions>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="InfraJobDetail" setup>
 import { DICT_TYPE } from '@/utils/dict'
 import { DICT_TYPE } from '@/utils/dict'
 import { formatDate } from '@/utils/formatTime'
 import { formatDate } from '@/utils/formatTime'
 import * as JobApi from '@/api/infra/job'
 import * as JobApi from '@/api/infra/job'

+ 3 - 3
src/views/infra/job/logger/JobLogDetail.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
-  <Dialog title="任务详细" v-model="dialogVisible" width="700px">
-    <el-descriptions border :column="1">
+  <Dialog v-model="dialogVisible" title="任务详细" width="700px">
+    <el-descriptions :column="1" border>
       <el-descriptions-item label="日志编号" min-width="60">
       <el-descriptions-item label="日志编号" min-width="60">
         {{ detailData.id }}
         {{ detailData.id }}
       </el-descriptions-item>
       </el-descriptions-item>
@@ -31,7 +31,7 @@
     </el-descriptions>
     </el-descriptions>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="JobLogDetail" setup>
 import { DICT_TYPE } from '@/utils/dict'
 import { DICT_TYPE } from '@/utils/dict'
 import { formatDate } from '@/utils/formatTime'
 import { formatDate } from '@/utils/formatTime'
 import * as JobLogApi from '@/api/infra/jobLog'
 import * as JobLogApi from '@/api/infra/jobLog'

+ 7 - 7
src/views/infra/webSocket/index.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <div class="flex">
   <div class="flex">
-    <el-card class="w-1/2" :gutter="12" shadow="always">
+    <el-card :gutter="12" class="w-1/2" shadow="always">
       <template #header>
       <template #header>
         <div class="card-header">
         <div class="card-header">
           <span>连接</span>
           <span>连接</span>
@@ -14,7 +14,7 @@
 
 
       <div class="flex">
       <div class="flex">
         <el-input v-model="server" disabled>
         <el-input v-model="server" disabled>
-          <template #prepend> 服务地址 </template>
+          <template #prepend> 服务地址</template>
         </el-input>
         </el-input>
         <el-button :type="getIsOpen ? 'danger' : 'primary'" @click="toggle">
         <el-button :type="getIsOpen ? 'danger' : 'primary'" @click="toggle">
           {{ getIsOpen ? '关闭连接' : '开启连接' }}
           {{ getIsOpen ? '关闭连接' : '开启连接' }}
@@ -25,15 +25,15 @@
       <el-input
       <el-input
         v-model="sendValue"
         v-model="sendValue"
         :autosize="{ minRows: 2, maxRows: 4 }"
         :autosize="{ minRows: 2, maxRows: 4 }"
-        type="textarea"
         :disabled="!getIsOpen"
         :disabled="!getIsOpen"
         clearable
         clearable
+        type="textarea"
       />
       />
-      <el-button type="primary" block class="mt-4" :disabled="!getIsOpen" @click="handlerSend">
+      <el-button :disabled="!getIsOpen" block class="mt-4" type="primary" @click="handlerSend">
         发送
         发送
       </el-button>
       </el-button>
     </el-card>
     </el-card>
-    <el-card class="w-1/2" :gutter="12" shadow="always">
+    <el-card :gutter="12" class="w-1/2" shadow="always">
       <template #header>
       <template #header>
         <div class="card-header">
         <div class="card-header">
           <span>消息记录</span>
           <span>消息记录</span>
@@ -41,7 +41,7 @@
       </template>
       </template>
       <div class="max-h-80 overflow-auto">
       <div class="max-h-80 overflow-auto">
         <ul>
         <ul>
-          <li v-for="item in getList" class="mt-2" :key="item.time">
+          <li v-for="item in getList" :key="item.time" class="mt-2">
             <div class="flex items-center">
             <div class="flex items-center">
               <span class="mr-2 text-primary font-medium">收到消息:</span>
               <span class="mr-2 text-primary font-medium">收到消息:</span>
               <span>{{ formatDate(item.time) }}</span>
               <span>{{ formatDate(item.time) }}</span>
@@ -55,7 +55,7 @@
     </el-card>
     </el-card>
   </div>
   </div>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="InfraWebSocket" setup>
 import { formatDate } from '@/utils/formatTime'
 import { formatDate } from '@/utils/formatTime'
 import { useUserStore } from '@/store/modules/user'
 import { useUserStore } from '@/store/modules/user'
 import { useWebSocket } from '@vueuse/core'
 import { useWebSocket } from '@vueuse/core'

+ 6 - 5
src/views/mall/product/property/PropertyForm.vue

@@ -1,27 +1,28 @@
 <template>
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" :title="dialogTitle">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="80px"
       label-width="80px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="名称" prop="name">
       <el-form-item label="名称" prop="name">
         <el-input v-model="formData.name" placeholder="请输入名称" />
         <el-input v-model="formData.name" placeholder="请输入名称" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="备注" prop="remark">
       <el-form-item label="备注" prop="remark">
-        <el-input v-model="formData.remark" type="textarea" placeholder="请输入内容" />
+        <el-input v-model="formData.remark" placeholder="请输入内容" type="textarea" />
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="ProductPropertyForm" setup>
 import * as PropertyApi from '@/api/mall/product/property'
 import * as PropertyApi from '@/api/mall/product/property'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 

+ 6 - 5
src/views/mall/product/property/value/ValueForm.vue

@@ -1,11 +1,11 @@
 <template>
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" :title="dialogTitle">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="80px"
       label-width="80px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="属性编号" prop="category">
       <el-form-item label="属性编号" prop="category">
         <el-input v-model="formData.propertyId" disabled="" />
         <el-input v-model="formData.propertyId" disabled="" />
@@ -14,17 +14,18 @@
         <el-input v-model="formData.name" placeholder="请输入名称" />
         <el-input v-model="formData.name" placeholder="请输入名称" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="备注" prop="remark">
       <el-form-item label="备注" prop="remark">
-        <el-input v-model="formData.remark" type="textarea" placeholder="请输入内容" />
+        <el-input v-model="formData.remark" placeholder="请输入内容" type="textarea" />
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="ProductPropertyValueForm" setup>
 import * as PropertyApi from '@/api/mall/product/property'
 import * as PropertyApi from '@/api/mall/product/property'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 

+ 6 - 5
src/views/mp/account/AccountForm.vue

@@ -1,11 +1,11 @@
 <template>
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" :title="dialogTitle">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="rules"
       :rules="rules"
       label-width="120px"
       label-width="120px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="名称" prop="name">
       <el-form-item label="名称" prop="name">
         <el-input v-model="formData.name" placeholder="请输入名称" />
         <el-input v-model="formData.name" placeholder="请输入名称" />
@@ -59,17 +59,18 @@
         <el-input v-model="formData.aesKey" placeholder="请输入消息加解密密钥" />
         <el-input v-model="formData.aesKey" placeholder="请输入消息加解密密钥" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="备注" prop="remark">
       <el-form-item label="备注" prop="remark">
-        <el-input type="textarea" v-model="formData.remark" placeholder="请输入备注" />
+        <el-input v-model="formData.remark" placeholder="请输入备注" type="textarea" />
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="MpAccountForm" setup>
 import * as AccountApi from '@/api/mp/account'
 import * as AccountApi from '@/api/mp/account'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 

+ 10 - 10
src/views/mp/components/wx-editor/WxEditor.vue

@@ -1,5 +1,5 @@
-<script setup>
-import { ref, reactive } from 'vue'
+<script name="WxEditor" setup>
+import { reactive, ref } from 'vue'
 import { QuillEditor } from '@vueup/vue-quill'
 import { QuillEditor } from '@vueup/vue-quill'
 import '@vueup/vue-quill/dist/vue-quill.snow.css'
 import '@vueup/vue-quill/dist/vue-quill.snow.css'
 import { getAccessToken } from '@/utils/auth'
 import { getAccessToken } from '@/utils/auth'
@@ -88,21 +88,21 @@ const uploadError = () => {
     <div v-loading="loading" element-loading-text="请稍等,图片上传中">
     <div v-loading="loading" element-loading-text="请稍等,图片上传中">
       <!-- 图片上传组件辅助-->
       <!-- 图片上传组件辅助-->
       <el-upload
       <el-upload
-        class="avatar-uploader"
-        name="file"
         :action="actionUrl"
         :action="actionUrl"
-        :headers="headers"
-        :show-file-list="false"
+        :before-upload="beforeUpload"
         :data="uploadData"
         :data="uploadData"
-        :on-success="uploadSuccess"
+        :headers="headers"
         :on-error="uploadError"
         :on-error="uploadError"
-        :before-upload="beforeUpload"
+        :on-success="uploadSuccess"
+        :show-file-list="false"
+        class="avatar-uploader"
+        name="file"
       />
       />
       <QuillEditor
       <QuillEditor
-        class="editor"
-        v-model="content"
         ref="quillEditorRef"
         ref="quillEditorRef"
+        v-model="content"
         :options="editorOptions"
         :options="editorOptions"
+        class="editor"
         @change="onEditorChange($event)"
         @change="onEditorChange($event)"
       />
       />
     </div>
     </div>

+ 13 - 5
src/views/mp/components/wx-news/main.vue

@@ -9,13 +9,13 @@
   <div class="news-home">
   <div class="news-home">
     <div v-for="(article, index) in articles" :key="index" class="news-div">
     <div v-for="(article, index) in articles" :key="index" class="news-div">
       <!-- 头条 -->
       <!-- 头条 -->
-      <a target="_blank" :href="article.url" v-if="index === 0">
+      <a v-if="index === 0" :href="article.url" target="_blank">
         <div class="news-main">
         <div class="news-main">
           <div class="news-content">
           <div class="news-content">
             <el-image
             <el-image
+              :src="article.picUrl"
               class="material-img"
               class="material-img"
               style="width: 100%; height: 120px"
               style="width: 100%; height: 120px"
-              :src="article.picUrl"
             />
             />
             <div class="news-content-title">
             <div class="news-content-title">
               <span>{{ article.title }}</span>
               <span>{{ article.title }}</span>
@@ -24,12 +24,12 @@
         </div>
         </div>
       </a>
       </a>
       <!-- 二条/三条等等 -->
       <!-- 二条/三条等等 -->
-      <a target="_blank" :href="article.url" v-else>
+      <a v-else :href="article.url" target="_blank">
         <div class="news-main-item">
         <div class="news-main-item">
           <div class="news-content-item">
           <div class="news-content-item">
             <div class="news-content-item-title">{{ article.title }}</div>
             <div class="news-content-item-title">{{ article.title }}</div>
             <div class="news-content-item-img">
             <div class="news-content-item-img">
-              <img class="material-img" :src="article.picUrl" height="100%" />
+              <img :src="article.picUrl" class="material-img" height="100%" />
             </div>
             </div>
           </div>
           </div>
         </div>
         </div>
@@ -38,7 +38,7 @@
   </div>
   </div>
 </template>
 </template>
 
 
-<script setup lang="ts">
+<script lang="ts" name="WxNews" setup>
 const props = defineProps({
 const props = defineProps({
   articles: {
   articles: {
     type: Array,
     type: Array,
@@ -57,15 +57,18 @@ defineExpose({
   width: 100%;
   width: 100%;
   margin: auto;
   margin: auto;
 }
 }
+
 .news-main {
 .news-main {
   width: 100%;
   width: 100%;
   margin: auto;
   margin: auto;
 }
 }
+
 .news-content {
 .news-content {
   background-color: #acadae;
   background-color: #acadae;
   width: 100%;
   width: 100%;
   position: relative;
   position: relative;
 }
 }
+
 .news-content-title {
 .news-content-title {
   display: inline-block;
   display: inline-block;
   font-size: 12px;
   font-size: 12px;
@@ -80,14 +83,17 @@ defineExpose({
   white-space: normal;
   white-space: normal;
   box-sizing: unset !important;
   box-sizing: unset !important;
 }
 }
+
 .news-main-item {
 .news-main-item {
   background-color: #ffffff;
   background-color: #ffffff;
   padding: 5px 0;
   padding: 5px 0;
   border-top: 1px solid #eaeaea;
   border-top: 1px solid #eaeaea;
 }
 }
+
 .news-content-item {
 .news-content-item {
   position: relative;
   position: relative;
 }
 }
+
 .news-content-item-title {
 .news-content-item-title {
   display: inline-block;
   display: inline-block;
   font-size: 10px;
   font-size: 10px;
@@ -95,12 +101,14 @@ defineExpose({
   margin-left: 1%;
   margin-left: 1%;
   white-space: normal;
   white-space: normal;
 }
 }
+
 .news-content-item-img {
 .news-content-item-img {
   display: inline-block;
   display: inline-block;
   width: 25%;
   width: 25%;
   background-color: #acadae;
   background-color: #acadae;
   margin-right: 1%;
   margin-right: 1%;
 }
 }
+
 .material-img {
 .material-img {
   width: 100%;
   width: 100%;
 }
 }

+ 5 - 4
src/views/mp/tag/TagForm.vue

@@ -1,24 +1,25 @@
 <template>
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" :title="dialogTitle">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="80px"
       label-width="80px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="标签名称" prop="name">
       <el-form-item label="标签名称" prop="name">
         <el-input v-model="formData.name" placeholder="请输入标签名称" />
         <el-input v-model="formData.name" placeholder="请输入标签名称" />
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="MpTagForm" setup>
 import * as MpTagApi from '@/api/mp/tag'
 import * as MpTagApi from '@/api/mp/tag'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 

+ 6 - 5
src/views/mp/user/UserForm.vue

@@ -1,11 +1,11 @@
 <template>
 <template>
-  <Dialog title="修改" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" title="修改">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="80px"
       label-width="80px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="昵称" prop="nickname">
       <el-form-item label="昵称" prop="nickname">
         <el-input v-model="formData.nickname" placeholder="请输入昵称" />
         <el-input v-model="formData.nickname" placeholder="请输入昵称" />
@@ -14,7 +14,7 @@
         <el-input v-model="formData.remark" placeholder="请输入备注" />
         <el-input v-model="formData.remark" placeholder="请输入备注" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="标签" prop="tagIds">
       <el-form-item label="标签" prop="tagIds">
-        <el-select v-model="formData.tagIds" multiple clearable placeholder="请选择标签">
+        <el-select v-model="formData.tagIds" clearable multiple placeholder="请选择标签">
           <el-option
           <el-option
             v-for="item in tagList"
             v-for="item in tagList"
             :key="item.tagId"
             :key="item.tagId"
@@ -25,14 +25,15 @@
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="MpUserForm" setup>
 import * as MpTagApi from '@/api/mp/tag'
 import * as MpTagApi from '@/api/mp/tag'
 import * as MpUserApi from '@/api/mp/user'
 import * as MpUserApi from '@/api/mp/user'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 

+ 5 - 4
src/views/pay/app/AppForm.vue

@@ -1,11 +1,11 @@
 <template>
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" :title="dialogTitle">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="160px"
       label-width="160px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="应用名" prop="name">
       <el-form-item label="应用名" prop="name">
         <el-input v-model="formData.name" placeholder="请输入应用名" />
         <el-input v-model="formData.name" placeholder="请输入应用名" />
@@ -42,16 +42,17 @@
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="PayAppForm" setup>
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import * as AppApi from '@/api/pay/app'
 import * as AppApi from '@/api/pay/app'
 import * as MerchantApi from '@/api/pay/merchant'
 import * as MerchantApi from '@/api/pay/merchant'
 import { CommonStatusEnum } from '@/utils/constants'
 import { CommonStatusEnum } from '@/utils/constants'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 

+ 6 - 5
src/views/pay/merchant/MerchantForm.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" :title="dialogTitle">
     <el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
     <el-form ref="formRef" :model="formData" :rules="formRules" label-width="80px">
       <el-form-item label="商户全称" prop="name">
       <el-form-item label="商户全称" prop="name">
         <el-input v-model="formData.name" placeholder="请输入商户全称" />
         <el-input v-model="formData.name" placeholder="请输入商户全称" />
@@ -8,7 +8,7 @@
         <el-input v-model="formData.shortName" placeholder="请输入商户简称" />
         <el-input v-model="formData.shortName" placeholder="请输入商户简称" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="开启状态" prop="status">
       <el-form-item label="开启状态" prop="status">
-        <el-select v-model="formData.status" placeholder="请选择状态" clearable>
+        <el-select v-model="formData.status" clearable placeholder="请选择状态">
           <el-option
           <el-option
             v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
             v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
             :key="dict.value"
             :key="dict.value"
@@ -18,19 +18,20 @@
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
       <el-form-item label="备注" prop="remark">
       <el-form-item label="备注" prop="remark">
-        <el-input type="textarea" v-model="formData.remark" placeholder="请输入备注" />
+        <el-input v-model="formData.remark" placeholder="请输入备注" type="textarea" />
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="PayMerchantForm" setup>
 import * as MerchantApi from '@/api/pay/merchant'
 import * as MerchantApi from '@/api/pay/merchant'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { CommonStatusEnum } from '@/utils/constants'
 import { CommonStatusEnum } from '@/utils/constants'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 

+ 3 - 3
src/views/pay/order/OrderDetail.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <Dialog title="详情" v-model="dialogVisible" width="50%">
+  <Dialog v-model="dialogVisible" title="详情" width="50%">
     <el-descriptions :column="2">
     <el-descriptions :column="2">
       <el-descriptions-item label="商户名称">{{ detailData.merchantName }}</el-descriptions-item>
       <el-descriptions-item label="商户名称">{{ detailData.merchantName }}</el-descriptions-item>
       <el-descriptions-item label="应用名称">{{ detailData.appName }}</el-descriptions-item>
       <el-descriptions-item label="应用名称">{{ detailData.appName }}</el-descriptions-item>
@@ -66,7 +66,7 @@
       </el-descriptions-item>
       </el-descriptions-item>
     </el-descriptions>
     </el-descriptions>
     <el-divider />
     <el-divider />
-    <el-descriptions :column="1" direction="vertical" border>
+    <el-descriptions :column="1" border direction="vertical">
       <el-descriptions-item label="商品描述">
       <el-descriptions-item label="商品描述">
         {{ detailData.body }}
         {{ detailData.body }}
       </el-descriptions-item>
       </el-descriptions-item>
@@ -78,7 +78,7 @@
     </el-descriptions>
     </el-descriptions>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts" name="orderForm">
+<script lang="ts" name="PayOrderDetail" setup>
 import { DICT_TYPE } from '@/utils/dict'
 import { DICT_TYPE } from '@/utils/dict'
 import * as OrderApi from '@/api/pay/order'
 import * as OrderApi from '@/api/pay/order'
 import { formatDate } from '@/utils/formatTime'
 import { formatDate } from '@/utils/formatTime'

+ 3 - 3
src/views/pay/refund/RefundDetail.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <Dialog title="详情" v-model="dialogVisible" width="50%">
+  <Dialog v-model="dialogVisible" title="详情" width="50%">
     <el-descriptions :column="2">
     <el-descriptions :column="2">
       <el-descriptions-item label="商户名称">{{ detailData.merchantName }}</el-descriptions-item>
       <el-descriptions-item label="商户名称">{{ detailData.merchantName }}</el-descriptions-item>
       <el-descriptions-item label="应用名称">{{ detailData.appName }}</el-descriptions-item>
       <el-descriptions-item label="应用名称">{{ detailData.appName }}</el-descriptions-item>
@@ -76,7 +76,7 @@
       </el-descriptions-item>
       </el-descriptions-item>
     </el-descriptions>
     </el-descriptions>
     <br />
     <br />
-    <el-descriptions :column="1" direction="vertical" border>
+    <el-descriptions :column="1" border direction="vertical">
       <el-descriptions-item label="渠道额外参数">
       <el-descriptions-item label="渠道额外参数">
         {{ detailData.channelExtras }}
         {{ detailData.channelExtras }}
       </el-descriptions-item>
       </el-descriptions-item>
@@ -84,7 +84,7 @@
     </el-descriptions>
     </el-descriptions>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts" name="refundForm">
+<script lang="ts" name="PayRefundDetail" setup>
 import { DICT_TYPE } from '@/utils/dict'
 import { DICT_TYPE } from '@/utils/dict'
 import { formatDate } from '@/utils/formatTime'
 import { formatDate } from '@/utils/formatTime'
 import * as RefundApi from '@/api/pay/refund'
 import * as RefundApi from '@/api/pay/refund'

+ 6 - 5
src/views/system/area/AreaForm.vue

@@ -1,27 +1,28 @@
 <template>
 <template>
-  <Dialog title="IP 查询" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" title="IP 查询">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="80px"
       label-width="80px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="IP" prop="ip">
       <el-form-item label="IP" prop="ip">
         <el-input v-model="formData.ip" placeholder="请输入 IP 地址" />
         <el-input v-model="formData.ip" placeholder="请输入 IP 地址" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="地址" prop="result">
       <el-form-item label="地址" prop="result">
-        <el-input v-model="formData.result" readonly placeholder="展示查询 IP 结果" />
+        <el-input v-model="formData.result" placeholder="展示查询 IP 结果" readonly />
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <template #footer>
     <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
       <el-button @click="dialogVisible = false">取 消</el-button>
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="SystemAreaForm" setup>
 import * as AreaApi from '@/api/system/area'
 import * as AreaApi from '@/api/system/area'
+
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 
 const dialogVisible = ref(false) // 弹窗的是否展示
 const dialogVisible = ref(false) // 弹窗的是否展示

+ 12 - 11
src/views/system/dept/DeptForm.vue

@@ -1,31 +1,31 @@
 <template>
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
+  <Dialog v-model="dialogVisible" :title="dialogTitle">
     <el-form
     <el-form
       ref="formRef"
       ref="formRef"
+      v-loading="formLoading"
       :model="formData"
       :model="formData"
       :rules="formRules"
       :rules="formRules"
       label-width="80px"
       label-width="80px"
-      v-loading="formLoading"
     >
     >
       <el-form-item label="上级部门" prop="parentId">
       <el-form-item label="上级部门" prop="parentId">
         <el-tree-select
         <el-tree-select
           v-model="formData.parentId"
           v-model="formData.parentId"
           :data="deptTree"
           :data="deptTree"
           :props="defaultProps"
           :props="defaultProps"
-          value-key="deptId"
-          placeholder="请选择上级部门"
           check-strictly
           check-strictly
           default-expand-all
           default-expand-all
+          placeholder="请选择上级部门"
+          value-key="deptId"
         />
         />
       </el-form-item>
       </el-form-item>
       <el-form-item label="部门名称" prop="name">
       <el-form-item label="部门名称" prop="name">
         <el-input v-model="formData.name" placeholder="请输入部门名称" />
         <el-input v-model="formData.name" placeholder="请输入部门名称" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="显示排序" prop="sort">
       <el-form-item label="显示排序" prop="sort">
-        <el-input-number v-model="formData.sort" controls-position="right" :min="0" />
+        <el-input-number v-model="formData.sort" :min="0" controls-position="right" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="负责人" prop="leaderUserId">
       <el-form-item label="负责人" prop="leaderUserId">
-        <el-select v-model="formData.leaderUserId" placeholder="请输入负责人" clearable>
+        <el-select v-model="formData.leaderUserId" clearable placeholder="请输入负责人">
           <el-option
           <el-option
             v-for="item in userList"
             v-for="item in userList"
             :key="item.id"
             :key="item.id"
@@ -35,13 +35,13 @@
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
       <el-form-item label="联系电话" prop="phone">
       <el-form-item label="联系电话" prop="phone">
-        <el-input v-model="formData.phone" placeholder="请输入联系电话" maxlength="11" />
+        <el-input v-model="formData.phone" maxlength="11" placeholder="请输入联系电话" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="邮箱" prop="email">
       <el-form-item label="邮箱" prop="email">
-        <el-input v-model="formData.email" placeholder="请输入邮箱" maxlength="50" />
+        <el-input v-model="formData.email" maxlength="50" placeholder="请输入邮箱" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="状态" prop="status">
       <el-form-item label="状态" prop="status">
-        <el-select v-model="formData.status" placeholder="请选择状态" clearable>
+        <el-select v-model="formData.status" clearable placeholder="请选择状态">
           <el-option
           <el-option
             v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
             v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
             :key="dict.value"
             :key="dict.value"
@@ -57,12 +57,13 @@
     </template>
     </template>
   </Dialog>
   </Dialog>
 </template>
 </template>
-<script setup lang="ts">
+<script lang="ts" name="SystemDeptForm" setup>
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
-import { handleTree, defaultProps } from '@/utils/tree'
+import { defaultProps, handleTree } from '@/utils/tree'
 import * as DeptApi from '@/api/system/dept'
 import * as DeptApi from '@/api/system/dept'
 import * as UserApi from '@/api/system/user'
 import * as UserApi from '@/api/system/user'
 import { CommonStatusEnum } from '@/utils/constants'
 import { CommonStatusEnum } from '@/utils/constants'
+
 const { t } = useI18n() // 国际化
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const message = useMessage() // 消息弹窗
 
 

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