Jelajahi Sumber

整改基本完成

Huanyi 2 bulan lalu
induk
melakukan
47f505d10c
100 mengubah file dengan 804 tambahan dan 5859 penghapusan
  1. 1 0
      src/api/archieves/customer/types.ts
  2. 1 0
      src/api/archieves/pet/types.ts
  3. 10 0
      src/api/system/store/types.ts
  4. 9 1
      src/api/system/tenant/index.ts
  5. 7 0
      src/api/system/tenant/types.ts
  6. 25 1
      src/views/archieves/customer/index.vue
  7. 25 1
      src/views/archieves/pet/index.vue
  8. 17 8
      src/views/merchant/brand/index.vue
  9. 135 168
      src/views/merchant/storeInfo/index.vue
  10. 19 6
      src/views/merchant/storeManagement/index.vue
  11. 219 0
      src/views/order/management/components/CustomerDetailDrawer.vue
  12. 128 11
      src/views/order/management/components/DispatchDialog.vue
  13. 179 0
      src/views/order/management/components/PetDetailDrawer.vue
  14. 22 32
      src/views/order/management/index.vue
  15. 7 3
      src/views/order/purchase/index.vue
  16. 0 25
      template/api/archieves/changeLog/index.ts
  17. 0 10
      template/api/archieves/changeLog/types.ts
  18. 0 100
      template/api/archieves/customer/index.ts
  19. 0 63
      template/api/archieves/customer/types.ts
  20. 0 77
      template/api/archieves/pet/index.ts
  21. 0 71
      template/api/archieves/pet/types.ts
  22. 0 67
      template/api/archieves/tag/index.ts
  23. 0 26
      template/api/archieves/tag/types.ts
  24. 0 62
      template/api/demo/demo/index.ts
  25. 0 90
      template/api/demo/demo/types.ts
  26. 0 62
      template/api/demo/tree/index.ts
  27. 0 80
      template/api/demo/tree/types.ts
  28. 0 55
      template/api/fulfiller/audit/index.ts
  29. 0 42
      template/api/fulfiller/audit/types.ts
  30. 0 150
      template/api/fulfiller/pool/index.ts
  31. 0 179
      template/api/fulfiller/pool/types.ts
  32. 0 67
      template/api/fulfiller/tag/index.ts
  33. 0 36
      template/api/fulfiller/tag/types.ts
  34. 0 113
      template/api/login.ts
  35. 0 11
      template/api/menu.ts
  36. 0 59
      template/api/monitor/cache/index.ts
  37. 0 7
      template/api/monitor/cache/types.ts
  38. 0 36
      template/api/monitor/loginInfo/index.ts
  39. 0 20
      template/api/monitor/loginInfo/types.ts
  40. 0 36
      template/api/monitor/online/index.ts
  41. 0 15
      template/api/monitor/online/types.ts
  42. 0 28
      template/api/monitor/operlog/index.ts
  43. 0 53
      template/api/monitor/operlog/types.ts
  44. 0 15
      template/api/order/order/index.ts
  45. 0 24
      template/api/order/order/types.ts
  46. 0 40
      template/api/order/subOrder/index.ts
  47. 0 36
      template/api/order/subOrder/types.ts
  48. 0 11
      template/api/order/subOrderLog/index.ts
  49. 0 15
      template/api/order/subOrderLog/types.ts
  50. 0 76
      template/api/resource/smsConfig/index.ts
  51. 0 131
      template/api/resource/smsConfig/types.ts
  52. 0 85
      template/api/service/list/index.ts
  53. 0 92
      template/api/service/list/types.ts
  54. 0 11
      template/api/service/mode/index.ts
  55. 0 4
      template/api/service/mode/types.ts
  56. 0 85
      template/api/system/areaStation/index.ts
  57. 0 145
      template/api/system/areaStation/types.ts
  58. 0 80
      template/api/system/client/index.ts
  59. 0 135
      template/api/system/client/types.ts
  60. 0 74
      template/api/system/config/index.ts
  61. 0 23
      template/api/system/config/types.ts
  62. 0 65
      template/api/system/dept/index.ts
  63. 0 60
      template/api/system/dept/types.ts
  64. 0 53
      template/api/system/dict/data/index.ts
  65. 0 26
      template/api/system/dict/data/types.ts
  66. 0 62
      template/api/system/dict/type/index.ts
  67. 0 18
      template/api/system/dict/type/types.ts
  68. 0 78
      template/api/system/menu/index.ts
  69. 0 70
      template/api/system/menu/types.ts
  70. 0 45
      template/api/system/notice/index.ts
  71. 0 26
      template/api/system/notice/types.ts
  72. 0 28
      template/api/system/oss/index.ts
  73. 0 22
      template/api/system/oss/types.ts
  74. 0 60
      template/api/system/ossConfig/index.ts
  75. 0 38
      template/api/system/ossConfig/types.ts
  76. 0 9
      template/api/system/platform/index.ts
  77. 0 5
      template/api/system/platform/types.ts
  78. 0 69
      template/api/system/post/index.ts
  79. 0 31
      template/api/system/post/types.ts
  80. 0 160
      template/api/system/role/index.ts
  81. 0 52
      template/api/system/role/types.ts
  82. 0 28
      template/api/system/social/auth.ts
  83. 0 87
      template/api/system/store/index.ts
  84. 0 260
      template/api/system/store/types.ts
  85. 0 118
      template/api/system/tenant/index.ts
  86. 0 46
      template/api/system/tenant/types.ts
  87. 0 75
      template/api/system/tenantCategories/index.ts
  88. 0 113
      template/api/system/tenantCategories/types.ts
  89. 0 67
      template/api/system/tenantPackage/index.ts
  90. 0 20
      template/api/system/tenantPackage/types.ts
  91. 0 229
      template/api/system/user/index.ts
  92. 0 87
      template/api/system/user/types.ts
  93. 0 86
      template/api/tool/gen/index.ts
  94. 0 181
      template/api/tool/gen/types.ts
  95. 0 60
      template/api/types.ts
  96. 0 76
      template/api/workflow/category/index.ts
  97. 0 67
      template/api/workflow/category/types.ts
  98. 0 170
      template/api/workflow/definition/index.ts
  99. 0 34
      template/api/workflow/definition/types.ts
  100. 0 125
      template/api/workflow/instance/index.ts

+ 1 - 0
src/api/archieves/customer/types.ts

@@ -48,6 +48,7 @@ export interface UsrCustomerQuery extends PageQuery {
   areaId?: number;
   stationId?: number;
   status?: number;
+  tab?: number;
 }
 
 export interface CustomerOnOrderVO {

+ 1 - 0
src/api/archieves/pet/types.ts

@@ -68,4 +68,5 @@ export interface UsrPetForm extends BaseEntity {
 export interface UsrPetQuery extends PageQuery {
   keyword?: string;
   userId?: number;
+  tab?: number;
 }

+ 10 - 0
src/api/system/store/types.ts

@@ -63,6 +63,11 @@ export interface StoreVO {
    */
   tenantCatergories: number;
 
+  /**
+   * 商户分类名称
+   */
+  tenantCatergoriesName?: string;
+
   /**
    * 开始营业时间
    */
@@ -150,6 +155,11 @@ export interface StoreForm extends BaseEntity {
    */
   tenantCatergories?: number;
 
+  /**
+   * 商户分类名称
+   */
+  tenantCatergoriesName?: string;
+
   /**
    * 开始营业时间
    */

+ 9 - 1
src/api/system/tenant/index.ts

@@ -1,5 +1,5 @@
 import request from '@/utils/request';
-import { TenantForm, TenantQuery, TenantVO } from './types';
+import { MerchantTenantEditForm, TenantForm, TenantQuery, TenantVO } from './types';
 import { AxiosPromise } from 'axios';
 
 // 查询租户列表
@@ -124,3 +124,11 @@ export function listOnStore(query?: any) {
     params: query
   });
 }
+// 商户端修改租户信息
+export function editOnMerchant(data: MerchantTenantEditForm) {
+  return request({
+    url: '/system/tenant/editOnMerchant',
+    method: 'put',
+    data: data
+  });
+}

+ 7 - 0
src/api/system/tenant/types.ts

@@ -47,3 +47,10 @@ export interface TenantForm {
   accountCount: number;
   status: string;
 }
+export interface MerchantTenantEditForm {
+  id: number | string;
+  contact: string;
+  phoneNumber: string;
+  address: string;
+  remark: string;
+}

+ 25 - 1
src/views/archieves/customer/index.vue

@@ -1,5 +1,9 @@
 <template>
   <div class="page-container">
+    <el-tabs v-model="queryParams.tab" class="customer-tabs" @tab-change="handleTabChange">
+      <el-tab-pane label="本品牌所属用户" :name="0" />
+      <el-tab-pane label="订单关联用户" :name="1" />
+    </el-tabs>
     <el-card shadow="never">
       <template #header>
         <div class="card-header">
@@ -530,9 +534,16 @@ const queryParams = reactive({
   keyword: '',
   areaId: undefined,
   stationId: undefined,
-  status: undefined
+  status: undefined,
+  tab: 0
 })
 
+/** 处理标签页切换 */
+const handleTabChange = () => {
+  queryParams.pageNum = 1
+  getList()
+}
+
 const searchForm = reactive({
   keyword: '',
   areaId: undefined,
@@ -1070,6 +1081,19 @@ onMounted(() => {
   justify-content: flex-end;
 }
 
+.customer-tabs {
+  margin-bottom: 20px;
+  background-color: #fff;
+  padding: 10px 20px 0;
+  border-radius: 4px;
+}
+:deep(.el-tabs__header) {
+  margin-bottom: 0;
+}
+:deep(.el-tabs__nav-wrap::after) {
+  height: 0;
+}
+
 /* Add Upload Styles */
 .avatar-uploader .el-upload {
   cursor: pointer;

+ 25 - 1
src/views/archieves/pet/index.vue

@@ -1,5 +1,9 @@
 <template>
   <div class="page-container">
+    <el-tabs v-model="queryParams.tab" class="pet-tabs" @tab-change="handleTabChange">
+      <el-tab-pane label="本品牌所属宠物" :name="0" />
+      <el-tab-pane label="订单关联宠物" :name="1" />
+    </el-tabs>
     <el-card shadow="never">
       <template #header>
         <div class="card-header">
@@ -338,9 +342,16 @@ const tableData = ref([]);
 const queryParams = reactive({
   pageNum: 1,
   pageSize: 10,
-  keyword: ''
+  keyword: '',
+  tab: 0
 });
 
+/** 处理标签页切换 */
+const handleTabChange = () => {
+  queryParams.pageNum = 1;
+  getList();
+};
+
 const searchKey = ref('');
 
 const dialogVisible = ref(false);
@@ -578,6 +589,19 @@ onMounted(() => {
 </script>
 
 <style scoped>
+.pet-tabs {
+  margin-bottom: 20px;
+  background-color: #fff;
+  padding: 10px 20px 0;
+  border-radius: 4px;
+}
+:deep(.el-tabs__header) {
+  margin-bottom: 0;
+}
+:deep(.el-tabs__nav-wrap::after) {
+  height: 0;
+}
+
 .page-container {
   padding: 20px;
 }

+ 17 - 8
src/views/merchant/brand/index.vue

@@ -55,9 +55,10 @@
 <script setup>
 import { reactive, onMounted } from 'vue';
 import { ElMessage } from 'element-plus';
-import { getTenantInfo } from '@/api/system/tenant';
+import { getTenantInfo, editOnMerchant } from '@/api/system/tenant';
 
 const brandForm = reactive({
+  id: '',
   logo: '',
   name: '',
   account: '',
@@ -75,6 +76,7 @@ const getInfo = async () => {
     const res = await getTenantInfo();
     const data = res.data;
     if (data) {
+      brandForm.id = data.id || '';
       brandForm.logo = data.logoUrl || '';
       brandForm.name = data.companyName || '';
       brandForm.account = data.username || '';
@@ -93,15 +95,22 @@ onMounted(() => {
   getInfo();
 });
 
-const handleLogoChange = (file) => {
-  if (file && file.raw) {
-    brandForm.logo = URL.createObjectURL(file.raw);
+const handleSave = async () => {
+  try {
+    const params = {
+      id: brandForm.id,
+      contact: brandForm.contactPerson,
+      phoneNumber: brandForm.contactPhone,
+      address: brandForm.address,
+      remark: brandForm.description
+    };
+    await editOnMerchant(params);
+    ElMessage.success('品牌信息已更新');
+    getInfo(); // 重新加载数据
+  } catch (error) {
+    console.error('保存 brand 失败:', error);
   }
 };
-
-const handleSave = () => {
-  ElMessage.success('品牌信息已更新');
-};
 </script>
 
 <style scoped>

+ 135 - 168
src/views/merchant/storeInfo/index.vue

@@ -3,138 +3,99 @@
     <el-card shadow="never">
       <template #header>
         <div class="card-header">
-          <span>门店信息设置</span>
+          <span class="title">门店信息详情</span>
           <el-select v-model="currentStoreId" placeholder="选择门店" @change="handleStoreChange" style="width: 250px">
             <el-option v-for="store in stores" :key="store.id" :label="store.name" :value="store.id" />
           </el-select>
         </div>
       </template>
 
-      <el-form :model="storeForm" label-width="120px" class="store-form">
-        <!-- Logo -->
-        <el-form-item label="门店Logo">
-          <el-upload class="avatar-uploader" action="#" :show-file-list="false" :auto-upload="false" :on-change="handleLogoChange">
-            <el-avatar v-if="storeForm.logo" :size="100" shape="square" :src="storeForm.logo" />
-            <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
-          </el-upload>
-        </el-form-item>
-
-        <!-- License -->
-        <el-form-item label="营业执照" required>
-          <el-upload action="#" :show-file-list="false" :auto-upload="false" :on-change="handleLicenseChange">
-            <el-image style="width: 150px; height: 100px; border-radius: 4px; border: 1px solid #dcdfe6" :src="storeForm.license" fit="cover">
-              <template #error>
-                <div
-                  style="width: 100%; height: 100%; background: #f5f7fa; display: flex; justify-content: center; align-items: center; color: #dedfe0"
-                >
-                  <el-icon size="24"><Picture /></el-icon>
-                </div>
-              </template>
-            </el-image>
-          </el-upload>
-        </el-form-item>
-
-        <!-- Name -->
-        <el-form-item label="门店名称" required>
-          <el-input v-model="storeForm.name" style="width: 400px" disabled />
-        </el-form-item>
-
-        <!-- Services -->
-        <el-form-item label="服务项目" required>
-          <el-checkbox-group v-model="storeForm.services" disabled>
-            <el-checkbox v-for="service in serviceOptions" :key="service.id" :label="service.id">
-              {{ service.name }}
-            </el-checkbox>
-          </el-checkbox-group>
-        </el-form-item>
-
-        <!-- Category -->
-        <el-form-item label="商户分类" required>
-          <el-input v-model="storeForm.category" style="width: 400px" disabled />
-        </el-form-item>
-
-        <!--        &lt;!&ndash; Account &ndash;&gt;-->
-        <!--        <el-form-item label="管理账号" required>-->
-        <!--          <el-input v-model="storeForm.account" placeholder="用于后台登录" style="width: 400px" disabled />-->
-        <!--        </el-form-item>-->
-
-        <!--        &lt;!&ndash; Password &ndash;&gt;-->
-        <!--        <el-form-item label="登录密码">-->
-        <!--          <el-input v-model="storeForm.password" type="password" show-password placeholder="若留空则不修改密码" style="width: 400px" />-->
-        <!--        </el-form-item>-->
-
-        <!-- Business hours -->
-        <el-form-item label="营业时间" required>
-          <div style="width: 400px">
-            <el-time-picker
-              v-model="storeForm.businessHours"
-              is-range
-              range-separator="至"
-              start-placeholder="开始时间"
-              end-placeholder="结束时间"
-              format="HH:mm"
-              value-format="HH:mm"
-              style="width: 100%"
-            />
-          </div>
-        </el-form-item>
-
-        <el-form-item label="联系人" required>
-          <el-input v-model="storeForm.contactPerson" style="width: 400px" />
-        </el-form-item>
-
-        <el-form-item label="联系电话" required>
-          <el-input v-model="storeForm.contactPhone" style="width: 400px" />
-        </el-form-item>
-
-        <!-- Valid Until -->
-        <el-form-item label="有效期至">
-          <el-input :model-value="storeForm.validUntil" disabled style="width: 400px" />
-        </el-form-item>
-
-        <!-- Address -->
-        <el-form-item label="详细地址" required>
-          <div style="width: 600px">
-            <el-cascader
-              v-model="storeForm.selectedArea"
-              :options="regionData"
-              placeholder="请选择省/市/区"
-              style="width: 100%; margin-bottom: 10px"
-              @change="handleAreaChange"
-            />
-            <el-input v-model="storeForm.address" type="textarea" placeholder="输入详细地址" />
-            <div style="margin-top: 10px; text-align: right">
-              <el-button type="warning" size="small" @click="handleGetLocation" icon="Location">获取经纬度</el-button>
+      <div v-loading="loading">
+        <el-descriptions :column="2" border class="store-info-descriptions">
+          <!-- Logo -->
+          <el-descriptions-item label="门店Logo" :span="2">
+            <el-avatar v-if="storeForm.logo" :size="80" shape="square" :src="storeForm.logo" />
+            <span v-else>无</span>
+          </el-descriptions-item>
+
+          <!-- Name -->
+          <el-descriptions-item label="门店名称">
+            {{ storeForm.name || '-' }}
+          </el-descriptions-item>
+
+          <!-- Category -->
+          <el-descriptions-item label="商户分类">
+            {{ storeForm.category || '-' }}
+          </el-descriptions-item>
+
+          <!-- Services -->
+          <el-descriptions-item label="服务项目" :span="2">
+            <div class="service-tags">
+              <el-tag v-for="tag in selectedServiceNames" :key="tag" type="success" effect="plain">
+                {{ tag }}
+              </el-tag>
+              <span v-if="selectedServiceNames.length === 0">-</span>
             </div>
-          </div>
-        </el-form-item>
-
-        <!-- Lat Lng -->
-        <el-form-item label="经纬度">
-          <div style="display: flex; gap: 10px; width: 600px">
-            <el-input v-model="storeForm.longitude" placeholder="经度" readonly />
-            <el-input v-model="storeForm.latitude" placeholder="纬度" readonly />
-          </div>
-        </el-form-item>
-
-        <el-form-item>
-          <el-button type="primary" @click="handleSave" size="large">保存修改</el-button>
-        </el-form-item>
-      </el-form>
+          </el-descriptions-item>
+
+          <!-- Contact -->
+          <el-descriptions-item label="联系人">
+            {{ storeForm.contactPerson || '-' }}
+          </el-descriptions-item>
+
+          <el-descriptions-item label="联系电话">
+            {{ storeForm.contactPhone || '-' }}
+          </el-descriptions-item>
+
+          <!-- Business hours -->
+          <el-descriptions-item label="营业时间">
+            {{ storeForm.businessHours[0] && storeForm.businessHours[1] ? `${storeForm.businessHours[0]} 至 ${storeForm.businessHours[1]}` : '-' }}
+          </el-descriptions-item>
+
+          <!-- Valid Until -->
+          <el-descriptions-item label="有效期至">
+            <el-tag type="warning" effect="dark">{{ storeForm.validUntil || '-' }}</el-tag>
+          </el-descriptions-item>
+
+          <!-- Address -->
+          <el-descriptions-item label="详细地址" :span="2">
+            {{ fullAddress || '-' }}
+          </el-descriptions-item>
+
+          <!-- Lat Lng -->
+          <el-descriptions-item label="经纬度">
+            <div v-if="storeForm.longitude && storeForm.latitude">
+              <span>经度: {{ storeForm.longitude }}</span>
+              <span style="margin-left: 20px">纬度: {{ storeForm.latitude }}</span>
+            </div>
+            <span v-else>-</span>
+          </el-descriptions-item>
+
+          <!-- License -->
+          <el-descriptions-item label="营业执照" :span="2">
+            <el-image
+              v-if="storeForm.license"
+              style="width: 200px; height: 140px; border-radius: 4px; border: 1px solid #dcdfe6"
+              :src="storeForm.license"
+              :preview-src-list="[storeForm.license]"
+              fit="cover"
+            />
+            <span v-else>未上传</span>
+          </el-descriptions-item>
+        </el-descriptions>
+      </div>
     </el-card>
   </div>
 </template>
 
 <script setup>
-import { reactive, ref, onMounted } from 'vue';
-import { ElMessage } from 'element-plus';
-import { Plus, Picture, Location } from '@element-plus/icons-vue';
+import { reactive, ref, onMounted, computed } from 'vue';
 import { listOnMerchantStoreInfo, getStoreInfo } from '@/api/system/store';
 import { listOnStore } from '@/api/service/list';
 import { regionData } from 'element-china-area-data';
 
 const currentStoreId = ref('');
-
+const loading = ref(false);
 const stores = ref([]);
 const serviceOptions = ref([]);
 
@@ -145,8 +106,6 @@ const storeForm = reactive({
   name: '',
   services: [],
   category: '',
-  account: '',
-  password: '',
   contactPerson: '',
   contactPhone: '',
   businessHours: ['', ''],
@@ -158,6 +117,39 @@ const storeForm = reactive({
   selectedArea: []
 });
 
+// 计算选中的服务项目名称
+const selectedServiceNames = computed(() => {
+  return storeForm.services
+    .map((id) => {
+      const option = serviceOptions.value.find((item) => item.id === id);
+      return option ? option.name : null;
+    })
+    .filter((name) => name !== null);
+});
+
+// 从 regionData 中根据 code 查找 label
+const findLabelByCode = (data, code) => {
+  if (!data || !code) return '';
+  for (const item of data) {
+    if (String(item.value) === String(code)) return item.label;
+    if (item.children) {
+      const label = findLabelByCode(item.children, code);
+      if (label) return label;
+    }
+  }
+  return '';
+};
+
+// 计算完整地址
+const fullAddress = computed(() => {
+  let areaText = '';
+  if (storeForm.selectedArea && storeForm.selectedArea.length > 0) {
+    areaText = storeForm.selectedArea.map((code) => findLabelByCode(regionData, code)).join('');
+  }
+  return areaText + (storeForm.address || '');
+});
+
+// 获取门店列表
 const getStoreList = async () => {
   try {
     const res = await listOnMerchantStoreInfo();
@@ -172,6 +164,7 @@ const getStoreList = async () => {
   }
 };
 
+// 获取服务项目选项
 const getServiceOptions = async () => {
   try {
     const res = await listOnStore();
@@ -183,8 +176,10 @@ const getServiceOptions = async () => {
   }
 };
 
+// 切换门店加载详情
 const handleStoreChange = async (val) => {
   if (!val) return;
+  loading.value = true;
   try {
     const res = await getStoreInfo(val);
     const data = res.data;
@@ -208,6 +203,7 @@ const handleStoreChange = async (val) => {
       storeForm.longitude = data.longitude ? String(data.longitude) : '';
       storeForm.latitude = data.latitude ? String(data.latitude) : '';
       storeForm.areaCode = data.areaCode || '';
+
       if (data.areaCode) {
         if (Array.isArray(data.areaCode)) {
           storeForm.selectedArea = data.areaCode;
@@ -220,6 +216,8 @@ const handleStoreChange = async (val) => {
     }
   } catch (error) {
     console.error('获取详细信息失败:', error);
+  } finally {
+    loading.value = false;
   }
 };
 
@@ -227,43 +225,6 @@ onMounted(() => {
   getServiceOptions();
   getStoreList();
 });
-
-const handleLogoChange = (file) => {
-  if (file && file.raw) {
-    storeForm.logo = URL.createObjectURL(file.raw);
-  }
-};
-
-const handleLicenseChange = (file) => {
-  if (file && file.raw) {
-    storeForm.license = URL.createObjectURL(file.raw);
-  }
-};
-
-const handleAreaChange = (val) => {
-  if (val && val.length > 0) {
-    storeForm.areaCode = val.join(',');
-  } else {
-    storeForm.areaCode = '';
-  }
-};
-
-const handleGetLocation = () => {
-  if (!storeForm.selectedArea || storeForm.selectedArea.length === 0) {
-    return ElMessage.warning('请先选择省市区');
-  }
-  if (!storeForm.address) {
-    return ElMessage.warning('请先填写详细地址');
-  }
-
-  ElMessage.success('根据地址获取经纬度成功');
-  storeForm.longitude = '116.452562';
-  storeForm.latitude = '39.936404';
-};
-
-const handleSave = () => {
-  ElMessage.success(`门店【${storeForm.name}】信息已更新`);
-};
 </script>
 
 <style scoped>
@@ -275,23 +236,29 @@ const handleSave = () => {
   justify-content: space-between;
   align-items: center;
 }
-.store-form {
+.title {
+  font-size: 18px;
+  font-weight: 600;
+  color: #303133;
+}
+.store-info-descriptions {
   margin-top: 20px;
 }
-.avatar-uploader-icon {
-  font-size: 28px;
-  color: #8c939d;
-  width: 100px;
-  height: 100px;
-  text-align: center;
-  border: 1px dashed #d9d9d9;
-  border-radius: 8px;
+.service-tags {
   display: flex;
-  justify-content: center;
-  align-items: center;
-  cursor: pointer;
+  flex-wrap: wrap;
+  gap: 8px;
+}
+:deep(.el-descriptions__label) {
+  width: 140px;
+  justify-content: center !important;
+  text-align: center !important;
+  background-color: #f8f9fb !important;
+  font-weight: bold;
+  color: #606266;
 }
-.avatar-uploader-icon:hover {
-  border-color: #409eff;
+:deep(.el-descriptions__content) {
+  padding: 16px 20px;
 }
 </style>
+

+ 19 - 6
src/views/merchant/storeManagement/index.vue

@@ -61,11 +61,11 @@
             <div>{{ scope.row.siteName }}</div>
           </template>
         </el-table-column>
-<!--        <el-table-column label="服务单" align="center" width="150">-->
-<!--          <template #default="scope">-->
-<!--            <div>{{ scope.row.serviceOrder }}</div>-->
-<!--          </template>-->
-<!--        </el-table-column>-->
+        <el-table-column label="服务单" align="center" width="150">
+          <template #default="scope">
+            <div>{{ scope.row.serviceOrder }}</div>
+          </template>
+        </el-table-column>
         <el-table-column label="营业时间" align="center" width="150">
           <template #default="scope">
             <div>{{ formatTime(scope.row.startBusinessTime) }}-{{ formatTime(scope.row.endBusinessTime) }}</div>
@@ -142,7 +142,7 @@
         </el-form-item>
         <el-form-item label="商户分类" prop="tenantCatergories">
           <PageSelect v-model="form.tenantCatergories"
-                      :options="tenantCategoriesList.map(item => ({ value: item.id, label: item.name }))"
+                      :options="processedTenantCategoriesOptions"
                       :total="tenantCategoriesTotal" :pageSize="10" placeholder="请选择商户分类"
                       @page-change="handleTenantCategoriesPageChange" @visible-change="handleTenantCategoriesVisibleChange" />
         </el-form-item>
@@ -339,6 +339,18 @@ const areaStationList = ref<SysAreaStationOnStoreVo[]>([]); // 区域站点列
 const areaOptions = ref<any[]>([]); // 所在区域树形选项
 const siteOptions = ref<any[]>([]); // 归属站点选项
 
+/** 处理商户分类回显逻辑 */
+const processedTenantCategoriesOptions = computed(() => {
+  const options = tenantCategoriesList.value.map(item => ({ value: item.id, label: item.name }));
+  if (form.value.tenantCatergories && form.value.tenantCatergoriesName) {
+    const exists = options.some(opt => opt.value === form.value.tenantCatergories);
+    if (!exists) {
+      options.unshift({ value: form.value.tenantCatergories, label: form.value.tenantCatergoriesName });
+    }
+  }
+  return options;
+});
+
 
 
 const dialog = reactive<DialogOption>({
@@ -373,6 +385,7 @@ const initFormData: StoreForm = {
   businessLicense: undefined,
   name: undefined,
   tenantCatergories: undefined,
+  tenantCatergoriesName: undefined,
   startBusinessTime: undefined,
   endBusinessTime: undefined,
   contact: undefined,

+ 219 - 0
src/views/order/management/components/CustomerDetailDrawer.vue

@@ -0,0 +1,219 @@
+<template>
+  <el-drawer v-model="drawerVisible" title="用户档案详情" size="60%" destroy-on-close>
+    <div class="profile-header">
+      <el-avatar :size="80" :src="currentUser.avatarUrl" />
+      <div class="profile-basic">
+        <div class="name-row">
+          <span class="name">{{ currentUser.name }}</span>
+          <dict-tag :options="sys_user_sex" :value="currentUser.gender" />
+          <span class="phone">{{ currentUser.phone }}</span>
+        </div>
+        <div class="tags-row" style="margin-top: 8px">
+          <el-tag v-for="tag in currentUser.tags" :key="tag.id" :type="tag.colorType || 'info'" effect="light" size="small" style="margin-right: 5px">
+            {{ tag.name }}
+          </el-tag>
+        </div>
+      </div>
+    </div>
+
+    <el-tabs v-model="detailActiveTab" class="profile-tabs">
+      <el-tab-pane label="档案信息" name="info">
+        <div class="section-title">基本信息</div>
+        <el-descriptions :column="2" border>
+          <el-descriptions-item label="姓名">{{ currentUser.name }}</el-descriptions-item>
+          <el-descriptions-item label="电话">{{ currentUser.phone }}</el-descriptions-item>
+          <el-descriptions-item label="所属区域">{{ currentUser.areaName || '-' }}</el-descriptions-item>
+          <el-descriptions-item label="所属站点">{{ currentUser.stationName || '-' }}</el-descriptions-item>
+          <el-descriptions-item label="录入来源">{{ currentUser.source || '-' }}</el-descriptions-item>
+          <el-descriptions-item label="录入时间">{{ currentUser.createTime || '-' }}</el-descriptions-item>
+        </el-descriptions>
+
+        <div class="section-title" style="margin-top: 20px">居住信息</div>
+        <el-descriptions :column="2" border>
+          <el-descriptions-item label="详细住址" :span="2">{{ currentUser.address }}</el-descriptions-item>
+          <el-descriptions-item label="房屋类型">
+            <dict-tag :options="sys_house_type" :value="currentUser.houseType" />
+          </el-descriptions-item>
+          <el-descriptions-item label="入门方式">
+            <dict-tag :options="sys_entry_method" :value="currentUser.entryMethod" />
+          </el-descriptions-item>
+          <el-descriptions-item label="开门详情" :span="2">
+            {{ currentUser.entryMethod === 'password' ? currentUser.entryPassword : currentUser.keyLocation }}
+          </el-descriptions-item>
+        </el-descriptions>
+      </el-tab-pane>
+
+      <el-tab-pane label="宠物列表" name="pets">
+        <el-table :data="currentPets" border style="width: 100%">
+          <el-table-column label="宠物信息" width="200">
+            <template #default="scope">
+              <div style="display: flex; align-items: center;">
+                <el-avatar :size="30" src="https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png" style="margin-right: 8px;" />
+                {{ scope.row.name }}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column prop="breed" label="品种" />
+          <el-table-column prop="gender" label="性别" width="60" />
+          <el-table-column prop="age" label="年龄" width="60" />
+          <el-table-column prop="status" label="健康状态">
+            <template #default="scope">
+              <el-tag :type="scope.row.status === '健康' ? 'success' : 'warning'" size="small">{{ scope.row.status }}</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column label="疫苗接种" width="120" align="center">
+            <template #default="scope">
+              {{ scope.row.vaccine || '-' }}
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-tab-pane>
+
+      <el-tab-pane label="历史订单" name="orders">
+        <el-table :data="mockOrders" border style="width: 100%">
+          <el-table-column prop="orderNo" label="订单编号" width="180" />
+          <el-table-column prop="service" label="服务项目" />
+          <el-table-column prop="pets" label="服务宠物" />
+          <el-table-column prop="time" label="服务时间" width="180" />
+          <el-table-column prop="status" label="状态" width="100">
+            <template #default="scope">
+              <el-tag type="success" size="small">完成</el-tag>
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-tab-pane>
+
+      <el-tab-pane label="档案日志" name="logs">
+        <el-timeline style="margin-top: 10px; padding-left: 5px;">
+          <el-timeline-item
+            v-for="(log, index) in changeLogs"
+            :key="index"
+            :timestamp="log.createTime"
+            type="primary"
+          >
+            [{{ log.logType }}] {{ log.content }}
+            <div style="font-size: 12px; color: #999; margin-top: 4px">操作人: {{ log.operatorName }}</div>
+          </el-timeline-item>
+        </el-timeline>
+      </el-tab-pane>
+    </el-tabs>
+  </el-drawer>
+</template>
+
+<script setup>
+import { ref, computed, watch, getCurrentInstance, toRefs } from 'vue'
+import { getCustomer } from '@/api/archieves/customer'
+import { listPetByUser } from '@/api/archieves/pet'
+import { listAllChangeLog } from '@/api/archieves/changeLog'
+import { listOnStore } from '@/api/system/areaStation'
+
+const props = defineProps({
+  visible: {
+    type: Boolean,
+    default: false
+  },
+  customerId: {
+    type: [String, Number],
+    default: null
+  }
+})
+
+const emit = defineEmits(['update:visible'])
+
+const drawerVisible = computed({
+  get: () => props.visible,
+  set: (val) => emit('update:visible', val)
+})
+
+const { proxy } = getCurrentInstance()
+const { sys_user_sex, sys_house_type, sys_entry_method } = toRefs(
+  proxy?.useDict('sys_user_sex', 'sys_house_type', 'sys_entry_method')
+)
+
+const currentUser = ref({})
+const currentPets = ref([])
+const changeLogs = ref([])
+const detailActiveTab = ref('info')
+const allNodes = ref([])
+
+const mockOrders = ref([
+  { orderNo: 'DD20231001001', service: '上门喂养 (标准版)', pets: '旺财', time: '2023-10-01 10:00', amount: '88.00', status: 'completed' },
+  { orderNo: 'DD20230915002', service: '深度洗护套餐', pets: '旺财, 咪咪', time: '2023-09-15 14:00', amount: '158.00', status: 'completed' }
+])
+
+const loadAreaStation = async () => {
+  if(allNodes.value.length === 0) {
+    const res = await listOnStore()
+    allNodes.value = res.data || []
+  }
+}
+
+watch(() => props.visible, async (val) => {
+  if (val && props.customerId) {
+    detailActiveTab.value = 'info'
+    currentUser.value = {}
+    currentPets.value = []
+    changeLogs.value = []
+    
+    await loadAreaStation()
+    getCustomer(props.customerId).then((res) => {
+      const data = res.data
+      if (data.areaId) {
+        const area = allNodes.value.find(n => n.id === data.areaId)
+        data.areaName = area ? area.name : '-'
+      } else {
+        data.areaName = '-'
+      }
+      if (data.stationId) {
+        const station = allNodes.value.find(n => n.id === data.stationId)
+        data.stationName = station ? station.name : '-'
+      } else {
+        data.stationName = '-'
+      }
+      currentUser.value = data
+    })
+    
+    listPetByUser(props.customerId).then((res) => {
+      currentPets.value = res.data || []
+    })
+    
+    listAllChangeLog(props.customerId, 'customer').then((res) => {
+      changeLogs.value = res.data || []
+    })
+  }
+})
+</script>
+
+<style scoped>
+.profile-header {
+  display: flex;
+  align-items: center;
+  margin-bottom: 20px;
+  padding-bottom: 20px;
+  border-bottom: 1px solid #f0f0f0;
+}
+.profile-basic {
+  margin-left: 20px;
+}
+.name-row {
+  display: flex;
+  align-items: center;
+}
+.name {
+  font-size: 20px;
+  font-weight: bold;
+  color: #303133;
+}
+.phone {
+  margin-left: 10px;
+  color: #666;
+}
+.section-title {
+  font-size: 16px;
+  font-weight: bold;
+  margin-bottom: 15px;
+  border-left: 4px solid #409eff;
+  padding-left: 10px;
+  line-height: 1.2;
+}
+</style>

+ 128 - 11
src/views/order/management/components/DispatchDialog.vue

@@ -11,9 +11,11 @@
                     </div>
                     <div class="card-main">
                         <template v-if="order.typeCode === 'transport'">
-                            <div class="row-addr" :title="order.toAddress || order.pickAddr || order.dropAddr">
-                                <span class="tag home">址</span> {{ order.toAddress || order.pickAddr || order.dropAddr
-                                }}
+                            <div class="row-addr" :title="order.pickAddr">
+                                <span class="tag pick">取</span> {{ order.pickAddr }}
+                            </div>
+                            <div class="row-addr" :title="order.dropAddr">
+                                <span class="tag drop">送</span> {{ order.dropAddr }}
                             </div>
                         </template>
                         <template v-else>
@@ -28,6 +30,11 @@
                             <span class="days-tag" v-if="order.daysLater">{{ order.daysLater }}</span>
                         </div>
                     </div>
+                    <!-- 新增右侧按钮组 -->
+                    <div class="card-right" style="display: flex; align-items: center; gap: 10px; padding-left: 20px;">
+                        <el-button type="primary" size="small" plain round icon="User" @click="openCustomerDetail" :loading="orderInfoLoading">用户档案</el-button>
+                        <el-button type="success" size="small" plain round @click="openPetDetail" :loading="orderInfoLoading" style="margin-left: 0;">宠物档案</el-button>
+                    </div>
                 </div>
             </div>
 
@@ -47,6 +54,7 @@
                             <div style="display:flex; align-items:baseline; gap:8px;">
                                 <span class="r-name">{{ currentRider.name || '--' }}</span>
                                 <span class="r-phone">{{ currentRider.phone || '--' }}</span>
+                                <dict-tag :options="genderOptions" :value="currentRider.gender" />
                                 <el-tag v-if="currentRider.status" size="small" :type="getStatusType(currentRider.status)" effect="plain">
                                     {{ getStatusText(currentRider.status) }}
                                 </el-tag>
@@ -55,8 +63,11 @@
 
                         <div class="row-2 categories-row"
                             style="margin-top: 6px; display:flex; gap:4px; flex-wrap:wrap;">
-                            <el-tag v-for="cat in (currentRider.tags || [])" :key="cat" size="small"
-                                :type="getTagType(cat)" effect="plain">{{ getTagText(cat) }}</el-tag>
+                            <el-tag v-for="typeId in (currentRider.serviceTypes ? String(currentRider.serviceTypes).split(',') : [])" :key="typeId" size="small"
+                                type="primary" effect="plain">{{ getServiceTypeText(typeId) }}</el-tag>
+                        </div>
+                        <div class="row-3 time-row" style="margin-top: 4px;">
+                            <span class="last-time">下一单: {{ currentRider.nextOrderTime || '-' }}</span>
                         </div>
                     </div>
                 </div>
@@ -85,6 +96,7 @@
                                         <div style="display:flex; align-items:baseline; gap:8px;">
                                             <span class="r-name">{{ rider.name || '--' }}</span>
                                             <span class="r-phone">{{ rider.phone || '--' }}</span>
+                                            <dict-tag :options="genderOptions" :value="rider.gender" />
                                         </div>
                                         <el-tag v-if="rider.status" size="small" :type="getStatusType(rider.status)" effect="plain">
                                             {{ getStatusText(rider.status) }}
@@ -93,8 +105,11 @@
 
                                     <div class="row-2 categories-row"
                                         style="margin-top: 6px; display:flex; gap:4px; flex-wrap:wrap;">
-                                        <el-tag v-for="cat in (rider.tags || [])" :key="cat" size="small"
-                                            :type="getTagType(cat)" effect="plain">{{ getTagText(cat) }}</el-tag>
+                                        <el-tag v-for="typeId in (rider.serviceTypes ? String(rider.serviceTypes).split(',') : [])" :key="typeId" size="small"
+                                            type="primary" effect="plain">{{ getServiceTypeText(typeId) }}</el-tag>
+                                    </div>
+                                    <div class="row-3 time-row" style="margin-top: 4px">
+                                        <span class="last-time">下一单: {{ rider.nextOrderTime || '-' }}</span>
                                     </div>
                                 </div>
 
@@ -133,13 +148,20 @@
             </div>
         </div>
     </el-dialog>
+
+    <CustomerDetailDrawer v-model:visible="customerDialogVisible" :customer-id="customerId" />
+    <PetDetailDrawer v-model:visible="petDialogVisible" :pet-id="petId" />
 </template>
 
 <script setup>
-import { ref, computed, watch } from 'vue'
+import { ref, computed, watch, getCurrentInstance, toRefs } from 'vue'
 import { ElMessage } from 'element-plus'
 import { pageFulfillerOnOrder } from '@/api/fulfiller/pool'
 import { listAllTag } from '@/api/fulfiller/tag'
+import { getSubOrderInfo } from '@/api/order/subOrder/index'
+import { listServiceOnOrder } from '@/api/service/list/index'
+import CustomerDetailDrawer from './CustomerDetailDrawer.vue'
+import PetDetailDrawer from './PetDetailDrawer.vue'
 
 const props = defineProps({
     visible: Boolean,
@@ -147,6 +169,9 @@ const props = defineProps({
 })
 const emit = defineEmits(['update:visible', 'submit'])
 
+const { proxy } = getCurrentInstance();
+const { sys_user_sex } = toRefs(proxy.useDict('sys_user_sex'));
+
 const dialogVisible = computed({
     get: () => props.visible,
     set: (val) => emit('update:visible', val)
@@ -171,6 +196,12 @@ const dispatchSearchQuery = ref('')
 const selectedRiderId = ref(null)
 const dispatchFee = ref(0)
 
+const customerDialogVisible = ref(false)
+const petDialogVisible = ref(false)
+const customerId = ref(null)
+const petId = ref(null)
+const orderInfoLoading = ref(false)
+
 const loadAllTags = async () => {
     if (allTags.value && allTags.value.length > 0) return
     try {
@@ -181,14 +212,34 @@ const loadAllTags = async () => {
     }
 }
 
+const serviceOptions = ref([])
+const loadServiceOptions = async () => {
+    if (serviceOptions.value.length > 0) return
+    try {
+        const res = await listServiceOnOrder()
+        serviceOptions.value = res?.data || []
+    } catch { /* ignore */ }
+}
+
+const getServiceTypeText = (id) => {
+    const s = serviceOptions.value.find(item => String(item.id) === String(id))
+    return s ? s.name : String(id)
+}
+
 const loadRiders = async () => {
     try {
         const res = await pageFulfillerOnOrder({
             content: dispatchSearchQuery.value || undefined,
             pageNum: pageNum.value,
-            pageSize: pageSize.value
+            pageSize: pageSize.value,
+            service: props.order?.service
         })
-        ridersList.value = res?.rows || []
+        const list = res?.rows || []
+        ridersList.value = list.map(r => ({
+            ...r,
+            nextOrderTime: r.nextOrderTime || '-',
+            gender: r.gender !== undefined && r.gender !== null ? String(r.gender) : String(r.sex ?? '')
+        }))
         total.value = res?.total || 0
 
         if (props.order?.riderId) {
@@ -211,11 +262,77 @@ watch(() => props.visible, (val) => {
         currentRider.value = null
         dispatchSearchQuery.value = ''
         selectedRiderId.value = null
-        dispatchFee.value = 0
+        // price 单位为分,转成元显示
+        dispatchFee.value = props.order?.price ? Number((props.order.price / 100).toFixed(2)) : 0
+        if (props.order?.riderId) {
+            currentRider.value = {
+                id: props.order.riderId,
+                gender: props.order.riderGender !== undefined && props.order.riderGender !== null ? String(props.order.riderGender) : String(props.order.riderSex ?? '')
+            }
+        }
         pageNum.value = 1
         loadAllTags()
+        loadServiceOptions()
         loadRiders()
+
+        // 获取订单详细信息
+        customerId.value = null
+        petId.value = null
+        orderInfoLoading.value = true
+        getSubOrderInfo(props.order.id).then((res) => {
+            if(res.data) {
+                // 如果 usrCustomer / usrPet 是对象则取其 id,如果是 ID 直接取
+                customerId.value = res.data.usrCustomer?.id || res.data.usrCustomer
+                petId.value = res.data.usrPet?.id || res.data.usrPet
+                
+                // 接到详情后,把真实的金额放进去(后端金额单位为分)
+                if (res.data.price !== undefined && res.data.price !== null) {
+                    dispatchFee.value = Number((res.data.price / 100).toFixed(2))
+                }
+
+                // 如果已经有履约者且不是在列表中找到的,从详情中补全性别
+                if (props.order?.riderId && !currentRider.value) {
+                    currentRider.value = {
+                        id: props.order.riderId,
+                        name: res.data.fulfillerName,
+                        gender: res.data.fulfillerGender !== undefined && res.data.fulfillerGender !== null ? String(res.data.fulfillerGender) : String(res.data.fulfillerSex ?? ''),
+                        status: res.data.fulfillerStatus
+                    }
+                } else if (currentRider.value && (res.data.fulfillerGender !== undefined || res.data.fulfillerSex !== undefined)) {
+                    currentRider.value.gender = res.data.fulfillerGender !== undefined && res.data.fulfillerGender !== null ? String(res.data.fulfillerGender) : String(res.data.fulfillerSex ?? '')
+                }
+            }
+        }).catch((e) => {
+            console.error('获取订单详细信息失败', e)
+        }).finally(() => {
+            orderInfoLoading.value = false
+        })
+    }
+})
+
+const openCustomerDetail = () => {
+    if (!customerId.value) {
+        ElMessage.warning('未能获取到用户信息')
+        return
     }
+    customerDialogVisible.value = true
+}
+
+const openPetDetail = () => {
+    if (!petId.value) {
+        ElMessage.warning('未能获取到宠物信息')
+        return
+    }
+    petDialogVisible.value = true
+}
+
+// 性别选项增强处理:DictTag 依赖 elTagType 字段进行渲染
+const genderOptions = computed(() => {
+    return (sys_user_sex.value || []).map(item => ({
+        ...item,
+        // 如果后端没有配置 listClass,我们根据逻辑给 elTagType 赋默认值
+        elTagType: item.listClass || (item.value === '0' ? 'primary' : item.value === '1' ? 'danger' : 'info')
+    }))
 })
 
 const getTagText = (tagId) => {

+ 179 - 0
src/views/order/management/components/PetDetailDrawer.vue

@@ -0,0 +1,179 @@
+<template>
+  <el-drawer v-model="drawerVisible" title="宠物档案详情" size="60%" destroy-on-close>
+    <div class="profile-header">
+      <el-avatar :size="80" :src="currentPet.avatarUrl" />
+      <div class="profile-basic">
+        <div class="name-row">
+          <span class="name">{{ currentPet.name }}</span>
+          <dict-tag :options="sys_pet_gender" :value="currentPet.gender" />
+          <el-tag size="small" effect="plain" type="info" style="margin-left: 5px">{{ currentPet.age }}岁</el-tag>
+        </div>
+        <div class="tags-row" style="margin-top: 8px">
+          <el-tag v-for="tag in currentPet.tags" :key="tag.id" :type="tag.colorType || 'info'" effect="light" size="small" style="margin-right: 5px">
+            {{ tag.name }}
+          </el-tag>
+        </div>
+      </div>
+    </div>
+
+    <el-tabs v-model="detailActiveTab" class="profile-tabs">
+      <el-tab-pane label="档案信息" name="info">
+        <div class="section-title">基本信息</div>
+        <el-descriptions :column="2" border>
+          <el-descriptions-item label="品种">{{ currentPet.breed }}</el-descriptions-item>
+          <el-descriptions-item label="体型">
+            <dict-tag :options="sys_pet_size" :value="currentPet.size" />
+          </el-descriptions-item>
+          <el-descriptions-item label="体重">{{ currentPet.weight }} kg</el-descriptions-item>
+          <el-descriptions-item label="所属主人">{{ currentPet.ownerName }} ({{ currentPet.ownerPhone }})</el-descriptions-item>
+          <el-descriptions-item label="性格关键词">{{ currentPet.personality || '-' }}</el-descriptions-item>
+          <el-descriptions-item label="萌宠性格" :span="2">{{ currentPet.cutePersonality || '-' }}</el-descriptions-item>
+        </el-descriptions>
+
+        <div class="section-title" style="margin-top: 20px">家庭信息</div>
+        <el-descriptions :column="2" border>
+          <el-descriptions-item label="到家时间">{{ currentPet.arrivalTime || '-' }}</el-descriptions-item>
+          <el-descriptions-item label="房屋类型">
+            <dict-tag :options="sys_house_type" :value="currentPet.houseType" />
+          </el-descriptions-item>
+          <el-descriptions-item label="入门方式">
+            <dict-tag :options="sys_entry_method" :value="currentPet.entryMethod" />
+          </el-descriptions-item>
+          <el-descriptions-item label="开门详情">
+            {{ currentPet.entryMethod === 'password' ? currentPet.entryPassword : currentPet.keyLocation }}
+          </el-descriptions-item>
+        </el-descriptions>
+
+        <div class="section-title" style="margin-top: 20px">健康状况</div>
+        <el-descriptions :column="2" border>
+          <el-descriptions-item label="健康状态">
+            <el-tag :type="currentPet.healthStatus === '健康' ? 'success' : 'warning'" size="small">{{ currentPet.healthStatus }}</el-tag>
+          </el-descriptions-item>
+          <el-descriptions-item label="攻击倾向">
+            <el-tag :type="currentPet.aggression ? 'danger' : 'success'" size="small">{{ currentPet.aggression ? '有' : '无' }}</el-tag>
+          </el-descriptions-item>
+          <el-descriptions-item label="疫苗情况" :span="2">
+            <div>{{ currentPet.vaccineStatus || '-' }}</div>
+            <div v-if="currentPet.vaccineCertUrl" style="margin-top: 10px">
+              <el-image
+                style="width: 100px; height: 100px; border-radius: 4px"
+                :src="currentPet.vaccineCertUrl"
+                :preview-src-list="[currentPet.vaccineCertUrl]"
+                fit="cover"
+              />
+            </div>
+          </el-descriptions-item>
+          <el-descriptions-item label="既往病史" :span="2">{{ currentPet.medicalHistory || '-' }}</el-descriptions-item>
+          <el-descriptions-item label="过敏史" :span="2">{{ currentPet.allergies || '-' }}</el-descriptions-item>
+        </el-descriptions>
+      </el-tab-pane>
+
+      <el-tab-pane label="历史订单" name="orders">
+        <el-table :data="mockOrders" border style="width: 100%">
+          <el-table-column prop="orderNo" label="订单编号" width="180" />
+          <el-table-column prop="service" label="服务项目" />
+          <el-table-column prop="time" label="服务时间" width="180" />
+          <el-table-column prop="amount" label="金额" width="100" />
+          <el-table-column prop="status" label="状态" width="100">
+            <template #default="scope">
+              <el-tag type="success" size="small">完成</el-tag>
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-tab-pane>
+
+      <el-tab-pane label="备注日志" name="logs">
+        <el-timeline style="margin-top: 10px; padding-left: 5px">
+          <el-timeline-item v-for="(log, index) in changeLogs" :key="index" :timestamp="log.createTime" type="primary">
+            [{{ log.logType }}] {{ log.content }}
+            <div style="font-size: 12px; color: #999; margin-top: 4px">操作人: {{ log.operatorName }}</div>
+          </el-timeline-item>
+        </el-timeline>
+      </el-tab-pane>
+    </el-tabs>
+  </el-drawer>
+</template>
+
+<script setup>
+import { ref, computed, watch, getCurrentInstance, toRefs } from 'vue'
+import { getPet } from '@/api/archieves/pet'
+import { listAllChangeLog } from '@/api/archieves/changeLog'
+
+const props = defineProps({
+  visible: {
+    type: Boolean,
+    default: false
+  },
+  petId: {
+    type: [String, Number],
+    default: null
+  }
+})
+
+const emit = defineEmits(['update:visible'])
+
+const drawerVisible = computed({
+  get: () => props.visible,
+  set: (val) => emit('update:visible', val)
+})
+
+const { proxy } = getCurrentInstance()
+const { sys_pet_gender, sys_pet_size, sys_house_type, sys_entry_method } = toRefs(
+  proxy?.useDict('sys_pet_gender', 'sys_pet_size', 'sys_house_type', 'sys_entry_method')
+)
+
+const currentPet = ref({})
+const changeLogs = ref([])
+const detailActiveTab = ref('info')
+
+const mockOrders = ref([
+  { orderNo: 'DD20231001001', service: '上门喂养 (标准版)', time: '2023-10-01 10:00', amount: '88.00', status: 'completed' },
+  { orderNo: 'DD20230915002', service: '深度洗护套餐', time: '2023-09-15 14:00', amount: '158.00', status: 'completed' }
+])
+
+watch(() => props.visible, (val) => {
+  if (val && props.petId) {
+    detailActiveTab.value = 'info'
+    currentPet.value = {}
+    changeLogs.value = []
+
+    getPet(props.petId).then((res) => {
+      currentPet.value = res.data || {}
+    })
+    
+    listAllChangeLog(props.petId, 'pet').then((res) => {
+      changeLogs.value = res.data || []
+    })
+  }
+})
+</script>
+
+<style scoped>
+.profile-header {
+  display: flex;
+  align-items: center;
+  margin-bottom: 20px;
+  padding-bottom: 20px;
+  border-bottom: 1px solid #f0f0f0;
+}
+.profile-basic {
+  margin-left: 20px;
+}
+.name-row {
+  display: flex;
+  align-items: center;
+}
+.name {
+  font-size: 20px;
+  font-weight: bold;
+  color: #303133;
+}
+.section-title {
+  font-size: 16px;
+  font-weight: bold;
+  margin-bottom: 15px;
+  border-left: 4px solid #409eff;
+  padding-left: 10px;
+  line-height: 1.2;
+}
+</style>

+ 22 - 32
src/views/order/management/index.vue

@@ -28,9 +28,8 @@
           <el-tab-pane label="待接单" name="1" />
           <el-tab-pane label="待服务" name="2" />
           <el-tab-pane label="服务中" name="3" />
-          <el-tab-pane label="待商家确认" name="4" />
-          <el-tab-pane label="已完成" name="5" />
-          <el-tab-pane label="已取消" name="6" />
+          <el-tab-pane label="已完成" name="4" />
+          <el-tab-pane label="已取消" name="5" />
         </el-tabs>
       </template>
 
@@ -120,11 +119,11 @@
           <template #default="{ row }">
             <div class="op-cell">
               <el-button link type="primary" size="small" @click="handleDetail(row)">详情</el-button>
-<!--              <el-button v-if="row.status === 0" link type="success" size="small" @click="openDispatchDialog(row)">派单</el-button>-->
-<!--              <el-button v-if="[1, 2, 3].includes(row.status)" link type="warning" size="small" @click="openDispatchDialog(row)">重新派单</el-button>-->
+              <el-button v-if="row.status === 0" link type="success" size="small" @click="openDispatchDialog(row)">派单</el-button>
+              <el-button v-if="![0, 4].includes(row.status)" link type="warning" size="small" @click="openDispatchDialog(row)">重新派单</el-button>
               <el-button v-if="[0, 1].includes(row.status)" link type="danger" size="small" @click="handleCancel(row)">取消</el-button>
 
-              <el-dropdown v-if="[3, 4, 5].includes(row.status)" trigger="click" @command="(cmd) => handleCommand(cmd, row)">
+              <el-dropdown v-if="[3, 4].includes(row.status)" trigger="click" @command="(cmd) => handleCommand(cmd, row)">
                 <span class="el-dropdown-link">
                   更多<el-icon class="el-icon--right">
                     <ArrowDown />
@@ -132,8 +131,8 @@
                 </span>
                 <template #dropdown>
                   <el-dropdown-menu>
-                    <el-dropdown-item v-if="row.status === 4" command="complete">确认完成</el-dropdown-item>
-                    <el-dropdown-item v-if="[4, 5].includes(row.status)" command="care_summary">护理小结</el-dropdown-item>
+                    <el-dropdown-item v-if="row.status === 3" command="complete">确认完成</el-dropdown-item>
+                    <el-dropdown-item v-if="row.status === 4 && getServiceMode(row.service) == 0" command="care_summary">护理小结</el-dropdown-item>
                     <el-dropdown-item command="reward">奖惩</el-dropdown-item>
                     <el-dropdown-item command="remark">备注</el-dropdown-item>
                   </el-dropdown-menu>
@@ -185,7 +184,7 @@ import DispatchDialog from './components/DispatchDialog.vue';
 import CareSummaryDrawer from './components/CareSummaryDrawer.vue';
 import RewardDialog from './components/RewardDialog.vue';
 import RemarkDialog from './components/RemarkDialog.vue';
-import { listOnStore as listServiceOnStore } from '@/api/service/list/index';
+import { listServiceOnOrder } from '@/api/service/list/index';
 import { listSubOrder, dispatchSubOrder, getSubOrderInfo, cancelSubOrder, remarkSubOrder, confirmSubOrder, nursingSummarySubOrder } from '@/api/order/subOrder/index';
 import { listOnStore as listAreaStationOnStore } from '@/api/system/areaStation';
 import { getStore } from '@/api/system/store';
@@ -225,7 +224,7 @@ onMounted(() => {
 });
 
 const getServiceList = () => {
-  listServiceOnStore().then((res) => {
+  listServiceOnOrder().then((res) => {
     serviceOptions.value = res.data || [];
   });
 };
@@ -325,6 +324,11 @@ const getServiceName = (serviceId) => {
   return item ? item.name : '未知服务';
 };
 
+const getServiceMode = (serviceId) => {
+  const item = serviceOptions.value.find((i) => i.id === serviceId);
+  return item ? item.mode : null;
+};
+
 const getServiceModeTag = (row) => {
   const t = row?.type;
   if (t === 0 || t === '0' || t === 1 || t === '1') return '往返';
@@ -341,28 +345,12 @@ const getServiceOrderTypeTag = (row) => {
 };
 
 const getStatusName = (status) => {
-  const map = {
-    0: '待派单',
-    1: '待接单',
-    2: '待服务',
-    3: '服务中',
-    4: '待商家确认',
-    5: '已完成',
-    6: '已取消'
-  };
+  const map = { 0: '待派单', 1: '待接单', 2: '待服务', 3: '服务中', 4: '已完成', 5: '已取消' };
   return map[status] || '未知';
 };
 
 const getStatusClass = (status) => {
-  const map = {
-    0: 'pending_dispatch',
-    1: 'pending_accept',
-    2: 'pending_service',
-    3: 'in_service',
-    4: 'pending_confirm',
-    5: 'completed',
-    6: 'cancelled'
-  };
+  const map = { 0: 'pending_dispatch', 1: 'pending_accept', 2: 'pending_service', 3: 'in_service', 4: 'completed', 5: 'cancelled' };
   return map[status] || 'pending_dispatch';
 };
 
@@ -537,7 +525,10 @@ const openDispatchDialog = (row) => {
     address,
     pickAddr,
     dropAddr,
-    riderId: row.riderId || row.fulfiller || null
+    service: row.service,
+    price: row.price,
+    riderId: row.riderId || row.fulfiller || null,
+    riderGender: row.fulfillerGender
   };
   currentDispatchOrder.value = orderObj;
   dispatchDialogVisible.value = true;
@@ -717,13 +708,12 @@ const handleCommand = (cmd, row) => {
     ElMessageBox.confirm('确认将该订单手动标记为完成吗?', '提示', { type: 'warning' }).then(async () => {
       try {
         await confirmSubOrder({ id: row.id });
-        row.status = 5;
-        ElMessage.success('订单已标记完成');
+        ElMessage.success('订单已确认完成');
         handleSearch();
       } catch {
         // Error handled by interceptor
       }
-    });
+    }).catch(() => { });
   }
   if (cmd === 'delete') {
     ElMessageBox.confirm('确认删除该订单吗?此操作不可恢复', '警告', { type: 'error' }).then(() => {

+ 7 - 3
src/views/order/purchase/index.vue

@@ -215,7 +215,7 @@ import { createOrder } from '@/api/order/order'
 // --- State ---
 const userOptions = ref([])
 const userTotal = ref(0)
-const userQuery = reactive({ pageNum: 1, pageSize: 5, name: '' })
+const userQuery = reactive({ pageNum: 1, pageSize: 5, content: '' })
 const userLoading = ref(false)
 
 const serviceList = [
@@ -482,6 +482,11 @@ const canSubmit = computed(() => {
 
 // --- Methods ---
 const fetchUsers = () => {
+  if (!userQuery.content) {
+    userOptions.value = []
+    userTotal.value = 0
+    return
+  }
   listCustomerOnOrder(userQuery).then(res => {
     userOptions.value = res.rows || []
     userTotal.value = res.total || 0
@@ -494,7 +499,7 @@ const handleUserPageChange = (page) => {
 }
 
 const searchUser = (query) => {
-  userQuery.name = query || ''
+  userQuery.content = query || ''
   userQuery.pageNum = 1
   fetchUsers()
 }
@@ -659,7 +664,6 @@ const handleSubmit = async () => {
 // Initialize
 onMounted(() => {
   fetchStores()
-  fetchUsers()
   listServiceOnOrder().then(res => {
     allServices.value = res.data || []
   })

+ 0 - 25
template/api/archieves/changeLog/index.ts

@@ -1,25 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { ArcChangeLogVO } from '@/api/archieves/changeLog/types';
-
-/**
- * 分页查询变更日志
- */
-export const listChangeLog = (targetId: string | number, targetType: string, query?: PageQuery): AxiosPromise<ArcChangeLogVO[]> => {
-  return request({
-    url: '/archieves/changeLog/list',
-    method: 'get',
-    params: { targetId, targetType, ...query }
-  });
-};
-
-/**
- * 查询全部变更日志(不分页)
- */
-export const listAllChangeLog = (targetId: string | number, targetType: string): AxiosPromise<ArcChangeLogVO[]> => {
-  return request({
-    url: '/archieves/changeLog/listAll',
-    method: 'get',
-    params: { targetId, targetType }
-  });
-};

+ 0 - 10
template/api/archieves/changeLog/types.ts

@@ -1,10 +0,0 @@
-export interface ArcChangeLogVO {
-  id: string | number;
-  targetId: number;
-  targetType: string;
-  changeType: string;
-  content: string;
-  operatorId: number;
-  operatorName: string;
-  createTime: string;
-}

+ 0 - 100
template/api/archieves/customer/index.ts

@@ -1,100 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { UsrCustomerVO, UsrCustomerForm, UsrCustomerQuery, CustomerOnOrderVO, CustomerOnOrderQuery } from '@/api/archieves/customer/types';
-
-/**
- * 查询用户列表
- */
-export const listCustomer = (query?: UsrCustomerQuery): AxiosPromise<UsrCustomerVO[]> => {
-  return request({
-    url: '/archieves/customer/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询全部用户(不分页)
- */
-export const listAllCustomer = (query?: UsrCustomerQuery): AxiosPromise<UsrCustomerVO[]> => {
-  return request({
-    url: '/archieves/customer/listAll',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询用户详细
- */
-export const getCustomer = (id: string | number): AxiosPromise<UsrCustomerVO> => {
-  return request({
-    url: '/archieves/customer/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 新增用户
- */
-export const addCustomer = (data: UsrCustomerForm) => {
-  return request({
-    url: '/archieves/customer',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 下单页新增用户
- */
-export const addCustomerOnOrder = (data: UsrCustomerForm) => {
-  return request({
-    url: '/archieves/customer/addOnOrder',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改用户
- */
-export const updateCustomer = (data: UsrCustomerForm) => {
-  return request({
-    url: '/archieves/customer',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除用户
- */
-export const delCustomer = (id: string | number | Array<string | number>) => {
-  return request({
-    url: '/archieves/customer/' + id,
-    method: 'delete'
-  });
-};
-
-/**
- * 切换用户状态
- */
-export const changeCustomerStatus = (id: string | number, status: number) => {
-  return request({
-    url: '/archieves/customer/changeStatus',
-    method: 'put',
-    params: { id, status }
-  });
-};
-
-/**
- * 下单页宠主列表
- */
-export const listCustomerOnOrder = (query?: CustomerOnOrderQuery): AxiosPromise<CustomerOnOrderVO[]> => {
-  return request({
-    url: '/archieves/customer/listOnOrder',
-    method: 'get',
-    params: query
-  });
-};

+ 0 - 63
template/api/archieves/customer/types.ts

@@ -1,63 +0,0 @@
-import { SysTagVO } from '@/api/archieves/tag/types';
-
-export interface UsrCustomerVO {
-  id: string | number;
-  name: string;
-  phone: string;
-  avatar: number;
-  avatarUrl: string;
-  gender: number;
-  birthday: string;
-  idCard: string;
-  areaId: number;
-  areaName: string;
-  stationId: number;
-  stationName: string;
-  address: string;
-  emergencyContact: string;
-  emergencyPhone: string;
-  petCount: number;
-  memberLevel: number;
-  status: number;
-  remark: string;
-  createTime: string;
-  tags: SysTagVO[];
-}
-
-export interface UsrCustomerForm extends BaseEntity {
-  id?: string | number;
-  name?: string;
-  phone?: string;
-  avatar?: number;
-  gender?: number;
-  birthday?: string;
-  idCard?: string;
-  areaId?: number;
-  stationId?: number;
-  address?: string;
-  emergencyContact?: string;
-  emergencyPhone?: string;
-  memberLevel?: number;
-  status?: number;
-  remark?: string;
-  tagIds?: (string | number)[];
-}
-
-export interface UsrCustomerQuery extends PageQuery {
-  keyword?: string;
-  areaId?: number;
-  stationId?: number;
-  status?: number;
-}
-
-export interface CustomerOnOrderVO {
-  id: number;
-  name: string;
-  phoneNumber: string;
-  regionCode: string;
-  address: string;
-}
-
-export interface CustomerOnOrderQuery extends PageQuery {
-  content?: string;
-}

+ 0 - 77
template/api/archieves/pet/index.ts

@@ -1,77 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { UsrPetVO, UsrPetForm, UsrPetQuery } from '@/api/archieves/pet/types';
-
-/**
- * 查询宠物列表
- */
-export const listPet = (query?: UsrPetQuery): AxiosPromise<UsrPetVO[]> => {
-  return request({
-    url: '/archieves/pet/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 按用户查询宠物列表
- */
-export const listPetByUser = (userId: string | number): AxiosPromise<UsrPetVO[]> => {
-  return request({
-    url: '/archieves/pet/listByUser/' + userId,
-    method: 'get'
-  });
-};
-
-/**
- * 查询宠物详细
- */
-export const getPet = (id: string | number): AxiosPromise<UsrPetVO> => {
-  return request({
-    url: '/archieves/pet/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 新增宠物
- */
-export const addPet = (data: UsrPetForm) => {
-  return request({
-    url: '/archieves/pet',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 下单页新增宠物
- */
-export const addPetOnOrder = (data: UsrPetForm) => {
-  return request({
-    url: '/archieves/pet/addOnOrder',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改宠物
- */
-export const updatePet = (data: UsrPetForm) => {
-  return request({
-    url: '/archieves/pet',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除宠物
- */
-export const delPet = (id: string | number | Array<string | number>) => {
-  return request({
-    url: '/archieves/pet/' + id,
-    method: 'delete'
-  });
-};

+ 0 - 71
template/api/archieves/pet/types.ts

@@ -1,71 +0,0 @@
-import { SysTagVO } from '@/api/archieves/tag/types';
-
-export interface UsrPetVO {
-  id: string | number;
-  userId: number;
-  name: string;
-  avatar: number;
-  avatarUrl: string;
-  type: number;
-  breed: string;
-  gender: number;
-  birthday: string;
-  age: number;
-  weight: number;
-  size: string;
-  isSterilized: number;
-  arrivalTime: string;
-  houseType: string;
-  entryMethod: string;
-  entryPassword: string;
-  keyLocation: string;
-  personality: string;
-  cutePersonality: string;
-  healthStatus: string;
-  aggression: number;
-  vaccineStatus: string;
-  vaccineCert: number;
-  vaccineCertUrl: string;
-  medicalHistory: string;
-  allergies: string;
-  remark: string;
-  createTime: string;
-  ownerName: string;
-  ownerPhone: string;
-  tags: SysTagVO[];
-}
-
-export interface UsrPetForm extends BaseEntity {
-  id?: string | number;
-  userId?: number;
-  name?: string;
-  avatar?: number;
-  type?: number;
-  breed?: string;
-  gender?: number;
-  birthday?: string;
-  age?: number;
-  weight?: number;
-  size?: string;
-  isSterilized?: number;
-  arrivalTime?: string;
-  houseType?: string;
-  entryMethod?: string;
-  entryPassword?: string;
-  keyLocation?: string;
-  personality?: string;
-  cutePersonality?: string;
-  healthStatus?: string;
-  aggression?: number;
-  vaccineStatus?: string;
-  vaccineCert?: number;
-  medicalHistory?: string;
-  allergies?: string;
-  remark?: string;
-  tagIds?: (string | number)[];
-}
-
-export interface UsrPetQuery extends PageQuery {
-  keyword?: string;
-  userId?: number;
-}

+ 0 - 67
template/api/archieves/tag/index.ts

@@ -1,67 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { SysTagVO, SysTagForm, SysTagQuery } from '@/api/archieves/tag/types';
-
-/**
- * 查询标签列表
- */
-export const listTag = (query?: SysTagQuery): AxiosPromise<SysTagVO[]> => {
-  return request({
-    url: '/archieves/tag/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询全部标签(不分页)
- */
-export const listAllTag = (query?: SysTagQuery): AxiosPromise<SysTagVO[]> => {
-  return request({
-    url: '/archieves/tag/listAll',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询标签详细
- */
-export const getTag = (id: string | number): AxiosPromise<SysTagVO> => {
-  return request({
-    url: '/archieves/tag/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 新增标签
- */
-export const addTag = (data: SysTagForm) => {
-  return request({
-    url: '/archieves/tag',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改标签
- */
-export const updateTag = (data: SysTagForm) => {
-  return request({
-    url: '/archieves/tag',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除标签
- */
-export const delTag = (id: string | number | Array<string | number>) => {
-  return request({
-    url: '/archieves/tag/' + id,
-    method: 'delete'
-  });
-};

+ 0 - 26
template/api/archieves/tag/types.ts

@@ -1,26 +0,0 @@
-export interface SysTagVO {
-  id: string | number;
-  name: string;
-  category: string;
-  colorType: string;
-  description: string;
-  type: number;
-  status: number;
-  createTime: string;
-}
-
-export interface SysTagForm extends BaseEntity {
-  id?: string | number;
-  name?: string;
-  category?: string;
-  colorType?: string;
-  description?: string;
-  type?: number;
-  status?: number;
-}
-
-export interface SysTagQuery extends PageQuery {
-  name?: string;
-  category?: string;
-  status?: number;
-}

+ 0 - 62
template/api/demo/demo/index.ts

@@ -1,62 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { DemoVO, DemoForm, DemoQuery } from '@/api/demo/demo/types';
-
-/**
- * 查询测试单列表
- * @param query
- * @returns {*}
- */
-export const listDemo = (query?: DemoQuery): AxiosPromise<DemoVO[]> => {
-  return request({
-    url: '/demo/demo/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询测试单详细
- * @param id
- */
-export const getDemo = (id: string | number): AxiosPromise<DemoVO> => {
-  return request({
-    url: '/demo/demo/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 新增测试单
- * @param data
- */
-export const addDemo = (data: DemoForm) => {
-  return request({
-    url: '/demo/demo',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改测试单
- * @param data
- */
-export const updateDemo = (data: DemoForm) => {
-  return request({
-    url: '/demo/demo',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除测试单
- * @param id
- */
-export const delDemo = (id: string | number | Array<string | number>) => {
-  return request({
-    url: '/demo/demo/' + id,
-    method: 'delete'
-  });
-};

+ 0 - 90
template/api/demo/demo/types.ts

@@ -1,90 +0,0 @@
-export interface DemoVO {
-  /**
-   * 主键
-   */
-  id: string | number;
-
-  /**
-   * 部门id
-   */
-  deptId: string | number;
-
-  /**
-   * 用户id
-   */
-  userId: string | number;
-
-  /**
-   * 排序号
-   */
-  orderNum: number;
-
-  /**
-   * key键
-   */
-  testKey: string;
-
-  /**
-   * 值
-   */
-  value: string;
-}
-
-export interface DemoForm extends BaseEntity {
-  /**
-   * 主键
-   */
-  id?: string | number;
-
-  /**
-   * 部门id
-   */
-  deptId?: string | number;
-
-  /**
-   * 用户id
-   */
-  userId?: string | number;
-
-  /**
-   * 排序号
-   */
-  orderNum?: number;
-
-  /**
-   * key键
-   */
-  testKey?: string;
-
-  /**
-   * 值
-   */
-  value?: string;
-}
-
-export interface DemoQuery extends PageQuery {
-  /**
-   * 部门id
-   */
-  deptId?: string | number;
-
-  /**
-   * 用户id
-   */
-  userId?: string | number;
-
-  /**
-   * 排序号
-   */
-  orderNum?: number;
-
-  /**
-   * key键
-   */
-  testKey?: string;
-
-  /**
-   * 值
-   */
-  value?: string;
-}

+ 0 - 62
template/api/demo/tree/index.ts

@@ -1,62 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { TreeVO, TreeForm, TreeQuery } from '@/api/demo/tree/types';
-
-/**
- * 查询测试树列表
- * @param query
- * @returns {*}
- */
-export const listTree = (query?: TreeQuery): AxiosPromise<TreeVO[]> => {
-  return request({
-    url: '/demo/tree/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询测试树详细
- * @param id
- */
-export const getTree = (id: string | number): AxiosPromise<TreeVO> => {
-  return request({
-    url: '/demo/tree/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 新增测试树
- * @param data
- */
-export const addTree = (data: TreeForm) => {
-  return request({
-    url: '/demo/tree',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改测试树
- * @param data
- */
-export const updateTree = (data: TreeForm) => {
-  return request({
-    url: '/demo/tree',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除测试树
- * @param id
- */
-export const delTree = (id: string | number | Array<string | number>) => {
-  return request({
-    url: '/demo/tree/' + id,
-    method: 'delete'
-  });
-};

+ 0 - 80
template/api/demo/tree/types.ts

@@ -1,80 +0,0 @@
-export interface TreeVO {
-  /**
-   * 主键
-   */
-  id: string | number;
-
-  /**
-   * 父id
-   */
-  parentId: string | number;
-
-  /**
-   * 部门id
-   */
-  deptId: string | number;
-
-  /**
-   * 用户id
-   */
-  userId: string | number;
-
-  /**
-   * 值
-   */
-  treeName: string;
-
-  /**
-   * 子对象
-   */
-  children: TreeVO[];
-}
-
-export interface TreeForm extends BaseEntity {
-  /**
-   * 主键
-   */
-  id?: string | number;
-
-  /**
-   * 父id
-   */
-  parentId?: string | number;
-
-  /**
-   * 部门id
-   */
-  deptId?: string | number;
-
-  /**
-   * 用户id
-   */
-  userId?: string | number;
-
-  /**
-   * 值
-   */
-  treeName?: string;
-}
-
-export interface TreeQuery {
-  /**
-   * 父id
-   */
-  parentId?: string | number;
-
-  /**
-   * 部门id
-   */
-  deptId?: string | number;
-
-  /**
-   * 用户id
-   */
-  userId?: string | number;
-
-  /**
-   * 值
-   */
-  treeName?: string;
-}

+ 0 - 55
template/api/fulfiller/audit/index.ts

@@ -1,55 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { FlfAuditVO, FlfAuditQuery } from './types';
-
-/**
- * 查询审核记录列表
- */
-export const listAudit = (query?: FlfAuditQuery): AxiosPromise<FlfAuditVO[]> => {
-  return request({
-    url: '/fulfiller/audit/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询审核记录详细
- */
-export const getAudit = (id: string | number): AxiosPromise<FlfAuditVO> => {
-  return request({
-    url: '/fulfiller/audit/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 查询待审核数量
- */
-export const getPendingCount = (): AxiosPromise<number> => {
-  return request({
-    url: '/fulfiller/audit/pendingCount',
-    method: 'get'
-  });
-};
-
-/**
- * 审核通过
- */
-export const passAudit = (id: string | number) => {
-  return request({
-    url: '/fulfiller/audit/pass/' + id,
-    method: 'put'
-  });
-};
-
-/**
- * 审核驳回
- */
-export const rejectAudit = (id: string | number, rejectReason: string) => {
-  return request({
-    url: '/fulfiller/audit/reject/' + id,
-    method: 'put',
-    params: { rejectReason }
-  });
-};

+ 0 - 42
template/api/fulfiller/audit/types.ts

@@ -1,42 +0,0 @@
-/**
- * 审核记录 VO
- */
-export interface FlfAuditVO {
-  id: string | number;
-  fulfillerId: string | number;
-  type: string;
-  name: string;
-  phone: string;
-  gender: string;
-  birthday: string;
-  workType: string;
-  city: string;
-  location: string;
-  realName: string;
-  idCard: string;
-  idValidDate: string;
-  idCardFront: string | number;
-  idCardBack: string | number;
-  idCardFrontUrl: string;
-  idCardBackUrl: string;
-  qualifications: string;
-  qualificationUrls: string[];
-  serviceTypes: string;
-  serviceTypeList: string[];
-  stationId: string | number;
-  stationName: string;
-  status: number;
-  auditBy: string | number;
-  auditTime: string;
-  rejectReason: string;
-  createTime: string;
-}
-
-/**
- * 审核查询参数
- */
-export interface FlfAuditQuery extends PageQuery {
-  keyword?: string;
-  type?: string;
-  status?: number;
-}

+ 0 - 150
template/api/fulfiller/pool/index.ts

@@ -1,150 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import {
-  FlfFulfillerVO, FlfFulfillerForm, FlfFulfillerQuery,
-  FlfFulfillerOnOrderVO, FlfFulfillerOnOrderQuery,
-  FlfRewardForm, FlfAdjustPointsForm, FlfAdjustBalanceForm,
-  FlfPointsLogVO, FlfBalanceLogVO, FlfRewardLogVO
-} from './types';
-
-/**
- * 查询履约者列表
- */
-export const listFulfiller = (query?: FlfFulfillerQuery): AxiosPromise<FlfFulfillerVO[]> => {
-  return request({
-    url: '/fulfiller/fulfiller/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 下单派单时查询履约者(分页)
- */
-export const pageFulfillerOnOrder = (query?: FlfFulfillerOnOrderQuery): AxiosPromise<{ total: number; rows: FlfFulfillerOnOrderVO[] }> => {
-  return request({
-    url: '/fulfiller/fulfiller/pageOnOrder',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询履约者详细
- */
-export const getFulfiller = (id: string | number): AxiosPromise<FlfFulfillerVO> => {
-  return request({
-    url: '/fulfiller/fulfiller/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 新增履约者
- */
-export const addFulfiller = (data: FlfFulfillerForm) => {
-  return request({
-    url: '/fulfiller/fulfiller',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改履约者
- */
-export const updateFulfiller = (data: FlfFulfillerForm) => {
-  return request({
-    url: '/fulfiller/fulfiller',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 切换状态
- */
-export const changeStatus = (id: string | number, status: string) => {
-  return request({
-    url: '/fulfiller/fulfiller/changeStatus',
-    method: 'put',
-    params: { id, status }
-  });
-};
-
-/**
- * 重置密码
- */
-export const resetPwd = (id: string | number, password: string) => {
-  return request({
-    url: '/fulfiller/fulfiller/resetPwd',
-    method: 'put',
-    params: { id, password }
-  });
-};
-
-/**
- * 奖惩操作
- */
-export const reward = (data: FlfRewardForm) => {
-  return request({
-    url: '/fulfiller/fulfiller/reward',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 调整积分
- */
-export const adjustPoints = (data: FlfAdjustPointsForm) => {
-  return request({
-    url: '/fulfiller/fulfiller/adjustPoints',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 调整余额
- */
-export const adjustBalance = (data: FlfAdjustBalanceForm) => {
-  return request({
-    url: '/fulfiller/fulfiller/adjustBalance',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 查询积分日志
- */
-export const listPointsLog = (fulfillerId: string | number, query?: PageQuery): AxiosPromise<FlfPointsLogVO[]> => {
-  return request({
-    url: '/fulfiller/log/points',
-    method: 'get',
-    params: { fulfillerId, ...query }
-  });
-};
-
-/**
- * 查询余额日志
- */
-export const listBalanceLog = (fulfillerId: string | number, query?: PageQuery): AxiosPromise<FlfBalanceLogVO[]> => {
-  return request({
-    url: '/fulfiller/log/balance',
-    method: 'get',
-    params: { fulfillerId, ...query }
-  });
-};
-
-/**
- * 查询奖惩日志
- */
-export const listRewardLog = (fulfillerId: string | number, query?: PageQuery): AxiosPromise<FlfRewardLogVO[]> => {
-  return request({
-    url: '/fulfiller/log/reward',
-    method: 'get',
-    params: { fulfillerId, ...query }
-  });
-};

+ 0 - 179
template/api/fulfiller/pool/types.ts

@@ -1,179 +0,0 @@
-/**
- * 履约者信息 VO
- */
-export interface FlfFulfillerVO {
-  id: string | number;
-  userId: string | number;
-  name: string;
-  realName: string;
-  phone: string;
-  gender: string;
-  birthday: string;
-  age: number;
-  avatar: string | number;
-  avatarUrl: string;
-  idCard: string;
-  idCardFront: string | number;
-  idCardFrontUrl: string;
-  idCardBack: string | number;
-  idCardBackUrl: string;
-  idCardExpiry: string;
-  serviceTypes: string;
-  cityCode: string;
-  cityName: string;
-  stationId: string | number;
-  stationName: string;
-  workType: string;
-  levelId: string | number;
-  levelName: string;
-  points: number;
-  balance: number;
-  status: string;
-  authId: boolean;
-  authQual: boolean;
-  qualImages: string;
-  qualImageUrls: string[];
-  orderCount: number;
-  rejectCount: number;
-  rating: number;
-  createTime: string;
-  tags: FlfTagVO[];
-}
-
-/**
- * 履约者标签 VO(简化)
- */
-export interface FlfTagVO {
-  id: string | number;
-  name: string;
-  colorType: string;
-  description: string;
-  status: number;
-}
-
-/**
- * 履约者表单
- */
-export interface FlfFulfillerForm extends BaseEntity {
-  id?: string | number;
-  name?: string;
-  realName?: string;
-  phone?: string;
-  password?: string;
-  gender?: string;
-  birthday?: string;
-  idCard?: string;
-  idCardExpiry?: string;
-  serviceTypes?: string;
-  cityCode?: string;
-  cityName?: string;
-  stationId?: string | number;
-  workType?: string;
-  levelId?: string | number;
-  status?: string;
-  authId?: boolean;
-  authQual?: boolean;
-  tagIds?: (string | number)[];
-}
-
-/**
- * 履约者查询参数
- */
-export interface FlfFulfillerQuery extends PageQuery {
-  keyword?: string;
-  status?: string;
-  cityCode?: string;
-  stationId?: string | number;
-  workType?: string;
-}
-
-export interface FlfFulfillerOnOrderVO {
-  id: string | number;
-  name?: string;
-  avatar?: string;
-  phone?: string;
-  tags?: Array<string | number>;
-}
-
-export interface FlfFulfillerOnOrderQuery {
-  content?: string;
-  pageNum?: number;
-  pageSize?: number;
-}
-
-/**
- * 奖惩操作
- */
-export interface FlfRewardForm {
-  fulfillerId: string | number;
-  type: string;
-  target: string;
-  amount: number;
-  reason: string;
-}
-
-/**
- * 积分调整
- */
-export interface FlfAdjustPointsForm {
-  fulfillerId: string | number;
-  type: string;
-  amount: number;
-  reason: string;
-}
-
-/**
- * 余额调整
- */
-export interface FlfAdjustBalanceForm {
-  fulfillerId: string | number;
-  type: string;
-  subType: string;
-  amount: number;
-  reason: string;
-}
-
-/**
- * 积分日志
- */
-export interface FlfPointsLogVO {
-  id: string | number;
-  fulfillerId: string | number;
-  type: string;
-  bizType: string;
-  amount: number;
-  pointsAfter: number;
-  reason: string;
-  operatorId: string | number;
-  createTime: string;
-}
-
-/**
- * 余额日志
- */
-export interface FlfBalanceLogVO {
-  id: string | number;
-  fulfillerId: string | number;
-  type: string;
-  subType: string;
-  amount: number;
-  balanceAfter: number;
-  reason: string;
-  operatorId: string | number;
-  createTime: string;
-}
-
-/**
- * 奖惩日志
- */
-export interface FlfRewardLogVO {
-  id: string | number;
-  fulfillerId: string | number;
-  type: string;
-  target: string;
-  amount: number;
-  reason: string;
-  operatorId: string | number;
-  operatorName: string;
-  createTime: string;
-}

+ 0 - 67
template/api/fulfiller/tag/index.ts

@@ -1,67 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { FlfTagVO, FlfTagForm, FlfTagQuery } from './types';
-
-/**
- * 查询标签列表
- */
-export const listTag = (query?: FlfTagQuery): AxiosPromise<FlfTagVO[]> => {
-  return request({
-    url: '/fulfiller/tag/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询全部标签(不分页)
- */
-export const listAllTag = (query?: FlfTagQuery): AxiosPromise<FlfTagVO[]> => {
-  return request({
-    url: '/fulfiller/tag/listAll',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询标签详细
- */
-export const getTag = (id: string | number): AxiosPromise<FlfTagVO> => {
-  return request({
-    url: '/fulfiller/tag/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 新增标签
- */
-export const addTag = (data: FlfTagForm) => {
-  return request({
-    url: '/fulfiller/tag',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改标签
- */
-export const updateTag = (data: FlfTagForm) => {
-  return request({
-    url: '/fulfiller/tag',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除标签
- */
-export const delTag = (id: string | number | Array<string | number>) => {
-  return request({
-    url: '/fulfiller/tag/' + id,
-    method: 'delete'
-  });
-};

+ 0 - 36
template/api/fulfiller/tag/types.ts

@@ -1,36 +0,0 @@
-/**
- * 履约者标签 VO
- */
-export interface FlfTagVO {
-  id: string | number;
-  name: string;
-  colorType: string;
-  category: string;
-  description: string;
-  type: number;
-  status: number;
-  createTime: string;
-}
-
-/**
- * 履约者标签表单
- */
-export interface FlfTagForm extends BaseEntity {
-  id?: string | number;
-  name?: string;
-  colorType?: string;
-  category?: string;
-  description?: string;
-  status?: number;
-}
-
-/**
- * 履约者标签查询参数
- */
-export interface FlfTagQuery {
-  pageNum?: number;
-  pageSize?: number;
-  name?: string;
-  category?: string;
-  status?: number;
-}

+ 0 - 113
template/api/login.ts

@@ -1,113 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { LoginData, LoginResult, VerifyCodeResult, TenantInfo } from './types';
-import { UserInfo } from '@/api/system/user/types';
-
-// pc端固定客户端授权id
-const clientId = import.meta.env.VITE_APP_CLIENT_ID;
-
-/**
- * @param data {LoginData}
- * @returns
- */
-export function login(data: LoginData): AxiosPromise<LoginResult> {
-  const params = {
-    ...data,
-    clientId: data.clientId || clientId,
-    grantType: data.grantType || 'password'
-  };
-  return request({
-    url: '/auth/login',
-    headers: {
-      isToken: false,
-      isEncrypt: true,
-      repeatSubmit: false
-    },
-    method: 'post',
-    data: params
-  });
-}
-
-// 注册方法
-export function register(data: any) {
-  const params = {
-    ...data,
-    clientId: clientId,
-    grantType: 'password'
-  };
-  return request({
-    url: '/auth/register',
-    headers: {
-      isToken: false,
-      isEncrypt: true,
-      repeatSubmit: false
-    },
-    method: 'post',
-    data: params
-  });
-}
-
-/**
- * 注销
- */
-export function logout() {
-  if (import.meta.env.VITE_APP_SSE === 'true') {
-    request({
-      url: '/resource/sse/close',
-      method: 'get'
-    });
-  }
-  return request({
-    url: '/auth/logout',
-    method: 'post'
-  });
-}
-
-/**
- * 获取验证码
- */
-export function getCodeImg(): AxiosPromise<VerifyCodeResult> {
-  return request({
-    url: '/auth/code',
-    headers: {
-      isToken: false
-    },
-    method: 'get',
-    timeout: 20000
-  });
-}
-
-/**
- * 第三方登录
- */
-export function callback(data: LoginData): AxiosPromise<any> {
-  const LoginData = {
-    ...data,
-    clientId: clientId,
-    grantType: 'social'
-  };
-  return request({
-    url: '/auth/social/callback',
-    method: 'post',
-    data: LoginData
-  });
-}
-
-// 获取用户详细信息
-export function getInfo(): AxiosPromise<UserInfo> {
-  return request({
-    url: '/system/user/getInfo',
-    method: 'get'
-  });
-}
-
-// 获取租户列表
-export function getTenantList(isToken: boolean): AxiosPromise<TenantInfo> {
-  return request({
-    url: '/auth/tenant/list',
-    headers: {
-      isToken: isToken
-    },
-    method: 'get'
-  });
-}

+ 0 - 11
template/api/menu.ts

@@ -1,11 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { RouteRecordRaw } from 'vue-router';
-
-// 获取路由
-export function getRouters(): AxiosPromise<RouteRecordRaw[]> {
-  return request({
-    url: '/system/menu/getRouters',
-    method: 'get'
-  });
-}

+ 0 - 59
template/api/monitor/cache/index.ts

@@ -1,59 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { CacheVO } from './types';
-
-// 查询缓存详细
-export function getCache(): AxiosPromise<CacheVO> {
-  return request({
-    url: '/monitor/cache',
-    method: 'get'
-  });
-}
-
-// 查询缓存名称列表
-export function listCacheName() {
-  return request({
-    url: '/monitor/cache/getNames',
-    method: 'get'
-  });
-}
-
-// 查询缓存键名列表
-export function listCacheKey(cacheName: string) {
-  return request({
-    url: '/monitor/cache/getKeys/' + cacheName,
-    method: 'get'
-  });
-}
-
-// 查询缓存内容
-export function getCacheValue(cacheName: string, cacheKey: string) {
-  return request({
-    url: '/monitor/cache/getValue/' + cacheName + '/' + cacheKey,
-    method: 'get'
-  });
-}
-
-// 清理指定名称缓存
-export function clearCacheName(cacheName: string) {
-  return request({
-    url: '/monitor/cache/clearCacheName/' + cacheName,
-    method: 'delete'
-  });
-}
-
-// 清理指定键名缓存
-export function clearCacheKey(cacheName: string, cacheKey: string) {
-  return request({
-    url: '/monitor/cache/clearCacheKey/' + cacheName + '/' + cacheKey,
-    method: 'delete'
-  });
-}
-
-// 清理全部缓存
-export function clearCacheAll() {
-  return request({
-    url: '/monitor/cache/clearCacheAll',
-    method: 'delete'
-  });
-}

+ 0 - 7
template/api/monitor/cache/types.ts

@@ -1,7 +0,0 @@
-export interface CacheVO {
-  commandStats: Array<{ name: string; value: string }>;
-
-  dbSize: number;
-
-  info: { [key: string]: string };
-}

+ 0 - 36
template/api/monitor/loginInfo/index.ts

@@ -1,36 +0,0 @@
-import request from '@/utils/request';
-import { LoginInfoQuery, LoginInfoVO } from './types';
-import { AxiosPromise } from 'axios';
-
-// 查询登录日志列表
-export function list(query: LoginInfoQuery): AxiosPromise<LoginInfoVO[]> {
-  return request({
-    url: '/monitor/logininfor/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 删除登录日志
-export function delLoginInfo(infoId: string | number | Array<string | number>) {
-  return request({
-    url: '/monitor/logininfor/' + infoId,
-    method: 'delete'
-  });
-}
-
-// 解锁用户登录状态
-export function unlockLoginInfo(userName: string | Array<string>) {
-  return request({
-    url: '/monitor/logininfor/unlock/' + userName,
-    method: 'get'
-  });
-}
-
-// 清空登录日志
-export function cleanLoginInfo() {
-  return request({
-    url: '/monitor/logininfor/clean',
-    method: 'delete'
-  });
-}

+ 0 - 20
template/api/monitor/loginInfo/types.ts

@@ -1,20 +0,0 @@
-export interface LoginInfoVO {
-  infoId: string | number;
-  tenantId: string | number;
-  userName: string;
-  status: string;
-  ipaddr: string;
-  loginLocation: string;
-  browser: string;
-  os: string;
-  msg: string;
-  loginTime: string;
-}
-
-export interface LoginInfoQuery extends PageQuery {
-  ipaddr: string;
-  userName: string;
-  status: string;
-  orderByColumn: string;
-  isAsc: string;
-}

+ 0 - 36
template/api/monitor/online/index.ts

@@ -1,36 +0,0 @@
-import request from '@/utils/request';
-import { OnlineQuery, OnlineVO } from './types';
-import { AxiosPromise } from 'axios';
-
-// 查询在线用户列表
-export function list(query: OnlineQuery): AxiosPromise<OnlineVO[]> {
-  return request({
-    url: '/monitor/online/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 强退用户
-export function forceLogout(tokenId: string) {
-  return request({
-    url: '/monitor/online/' + tokenId,
-    method: 'delete'
-  });
-}
-
-// 获取当前用户登录在线设备
-export function getOnline() {
-  return request({
-    url: '/monitor/online',
-    method: 'get'
-  });
-}
-
-// 删除当前在线设备
-export function delOnline(tokenId: string) {
-  return request({
-    url: '/monitor/online/myself/' + tokenId,
-    method: 'delete'
-  });
-}

+ 0 - 15
template/api/monitor/online/types.ts

@@ -1,15 +0,0 @@
-export interface OnlineQuery extends PageQuery {
-  ipaddr: string;
-  userName: string;
-}
-
-export interface OnlineVO extends BaseEntity {
-  tokenId: string;
-  deptName: string;
-  userName: string;
-  ipaddr: string;
-  loginLocation: string;
-  browser: string;
-  os: string;
-  loginTime: number;
-}

+ 0 - 28
template/api/monitor/operlog/index.ts

@@ -1,28 +0,0 @@
-import request from '@/utils/request';
-import { OperLogQuery, OperLogVO } from './types';
-import { AxiosPromise } from 'axios';
-
-// 查询操作日志列表
-export function list(query: OperLogQuery): AxiosPromise<OperLogVO[]> {
-  return request({
-    url: '/monitor/operlog/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 删除操作日志
-export function delOperlog(operId: string | number | Array<string | number>) {
-  return request({
-    url: '/monitor/operlog/' + operId,
-    method: 'delete'
-  });
-}
-
-// 清空操作日志
-export function cleanOperlog() {
-  return request({
-    url: '/monitor/operlog/clean',
-    method: 'delete'
-  });
-}

+ 0 - 53
template/api/monitor/operlog/types.ts

@@ -1,53 +0,0 @@
-export interface OperLogQuery extends PageQuery {
-  operIp: string;
-  title: string;
-  operName: string;
-  businessType: string;
-  status: string;
-  orderByColumn: string;
-  isAsc: string;
-}
-
-export interface OperLogVO extends BaseEntity {
-  operId: string | number;
-  tenantId: string;
-  title: string;
-  businessType: number;
-  businessTypes: number[] | undefined;
-  method: string;
-  requestMethod: string;
-  operatorType: number;
-  operName: string;
-  deptName: string;
-  operUrl: string;
-  operIp: string;
-  operLocation: string;
-  operParam: string;
-  jsonResult: string;
-  status: number;
-  errorMsg: string;
-  operTime: string;
-  costTime: number;
-}
-
-export interface OperLogForm {
-  operId: number | string | undefined;
-  tenantId: string | number | undefined;
-  title: string;
-  businessType: number;
-  businessTypes: number[] | undefined;
-  method: string;
-  requestMethod: string;
-  operatorType: number;
-  operName: string;
-  deptName: string;
-  operUrl: string;
-  operIp: string;
-  operLocation: string;
-  operParam: string;
-  jsonResult: string;
-  status: number;
-  errorMsg: string;
-  operTime: string;
-  costTime: number;
-}

+ 0 - 15
template/api/order/order/index.ts

@@ -1,15 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { CreateOrderDTO } from './types';
-
-/**
- * 创建订单
- * @param data 参数
- */
-export const createOrder = (data: CreateOrderDTO): AxiosPromise<any> => {
-    return request({
-        url: '/order/order/create',
-        method: 'post',
-        data: data
-    });
-};

+ 0 - 24
template/api/order/order/types.ts

@@ -1,24 +0,0 @@
-export interface CreateSubOrderDTO {
-    mode: number | string;
-    type: number | string;
-    contact: string;
-    contactPhoneNumber: string;
-    serviceTime: string;
-    endServiceTime: string;
-    fromCode?: string;
-    fromAddress?: string;
-    toCode?: string;
-    toAddress?: string;
-}
-
-export interface CreateOrderDTO {
-    store: number | string;
-    storeSite: number | string;
-    customer: number | string;
-    pet: number | string;
-    groupPurchasePackageName?: string;
-    service: number | string;
-    remark?: string;
-    tenantId?: string;
-    subOrders: CreateSubOrderDTO[];
-}

+ 0 - 40
template/api/order/subOrder/index.ts

@@ -1,40 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { SubOrderVO, SubOrderQuery } from './types';
-
-/**
- * 查询子订单列表
- * @param query
- * @returns {*}
- */
-export const listSubOrder = (query?: SubOrderQuery): AxiosPromise<{ total: number, rows: SubOrderVO[] }> => {
-    return request({
-        url: '/order/subOrder/list',
-        method: 'get',
-        params: query
-    });
-};
-
-export const dispatchSubOrder = (data: { orderId: string | number; fulfiller: string | number; price: number; }) => {
-    return request({
-        url: '/order/subOrder/dispatch',
-        method: 'put',
-        data
-    });
-};
-
-export const getSubOrderInfo = (id: string | number): AxiosPromise<SubOrderVO> => {
-    return request({
-        url: '/order/subOrder/getInfo',
-        method: 'get',
-        params: { id }
-    });
-};
-
-export const cancelSubOrder = (data: { orderId: string | number; }) => {
-    return request({
-        url: '/order/subOrder/cancel',
-        method: 'put',
-        data
-    });
-};

+ 0 - 36
template/api/order/subOrder/types.ts

@@ -1,36 +0,0 @@
-export interface SubOrderQuery {
-    status?: number | string;
-    service?: number | string;
-    content?: string;
-    pageNum: number;
-    pageSize: number;
-}
-
-export interface SubOrderVO {
-    id: number;
-    code: string;
-    service: number;
-    pet: number;
-    petName: string;
-    petType: string;
-    customer: number;
-    customerName: string;
-    site: number;
-    store: number;
-    storeName: string;
-    platformId?: number;
-    placer: number;
-    placerUsername: string;
-    createTime: string;
-    status: number;
-    fulfiller: number;
-    fulfillerName: string;
-    fulfillerStatus?: 'resting' | 'busy' | 'disabled';
-    price: number;
-    // 以下为可能需要用到的扩充字段以兼顾页面展现
-    type?: string;
-    transportType?: string;
-    splitType?: string;
-    detail?: any;
-    serviceTime?: string;
-}

+ 0 - 11
template/api/order/subOrderLog/index.ts

@@ -1,11 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { SubOrderLogVO, SubOrderLogQuery } from './types';
-
-export const listSubOrderLog = (query: SubOrderLogQuery): AxiosPromise<SubOrderLogVO[]> => {
-    return request({
-        url: '/order/subOrderLog/list',
-        method: 'get',
-        params: query
-    });
-};

+ 0 - 15
template/api/order/subOrderLog/types.ts

@@ -1,15 +0,0 @@
-export interface SubOrderLogVO {
-    id: number;
-    subOrderId: number;
-    actioner: number;
-    actionerType: number;
-    logType: number;
-    actionType: number;
-    title: string;
-    content: string;
-    photos?: string;
-}
-
-export interface SubOrderLogQuery {
-    orderId: string | number;
-}

+ 0 - 76
template/api/resource/smsConfig/index.ts

@@ -1,76 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { SmsConfigVO, SmsConfigForm, SmsConfigQuery } from '@/api/resource/smsConfig/types';
-
-/**
- * 查询短信配置列表
- * @param query
- * @returns {*}
- */
-
-export const listSmsConfig = (query?: SmsConfigQuery): AxiosPromise<SmsConfigVO[]> => {
-  return request({
-    url: '/resource/smsConfig/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询短信配置详细
- * @param id
- */
-export const getSmsConfig = (id: string | number): AxiosPromise<SmsConfigVO> => {
-  return request({
-    url: '/resource/smsConfig/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 新增短信配置
- * @param data
- */
-export const addSmsConfig = (data: SmsConfigForm) => {
-  return request({
-    url: '/resource/smsConfig',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改短信配置
- * @param data
- */
-export const updateSmsConfig = (data: SmsConfigForm) => {
-  return request({
-    url: '/resource/smsConfig',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除短信配置
- * @param id
- */
-export const delSmsConfig = (id: string | number | Array<string | number>) => {
-  return request({
-    url: '/resource/smsConfig/' + id,
-    method: 'delete'
-  });
-};
-
-/**
- * 修改短信配置状态
- * @param id
- * @param status
- */
-export const changeSmsConfigStatus = (id: string | number, status: boolean) => {
-  return request({
-    url: '/resource/smsConfig/changeStatus',
-    method: 'put',
-    data: { id, status }
-  });
-};

+ 0 - 131
template/api/resource/smsConfig/types.ts

@@ -1,131 +0,0 @@
-export interface SmsConfigVO {
-  /**
-   * 序号
-   */
-  id: string | number;
-
-  /**
-   * 供应商
-   */
-  supplier: string;
-
-  /**
-   * AccessKey
-   */
-  accessKeyId: string | number;
-
-  /**
-   * AccessKeySecret
-   */
-  accessKeySecret: string;
-
-  /**
-   * 短信签名
-   */
-  signature: string;
-
-  /**
-   * sdk-app-id
-   */
-  sdkAppId: string | number;
-
-  /**
-   * 模板ID
-   */
-  templateId: string | number;
-
-  /**
-   * 状态
-   */
-  status: boolean;
-
-}
-
-export interface SmsConfigForm extends BaseEntity {
-  /**
-   * 序号
-   */
-  id?: string | number;
-
-  /**
-   * 供应商
-   */
-  supplier?: string;
-
-  /**
-   * AccessKey
-   */
-  accessKeyId?: string | number;
-
-  /**
-   * AccessKeySecret
-   */
-  accessKeySecret?: string;
-
-  /**
-   * 短信签名
-   */
-  signature?: string;
-
-  /**
-   * sdk-app-id
-   */
-  sdkAppId?: string | number;
-
-  /**
-   * 模板ID
-   */
-  templateId?: string | number;
-
-  /**
-   * 状态
-   */
-  status?: boolean;
-
-}
-
-export interface SmsConfigQuery extends PageQuery {
-
-  /**
-   * 供应商
-   */
-  supplier?: string;
-
-  /**
-   * AccessKey
-   */
-  accessKeyId?: string | number;
-
-  /**
-   * AccessKeySecret
-   */
-  accessKeySecret?: string;
-
-  /**
-   * 短信签名
-   */
-  signature?: string;
-
-  /**
-   * sdk-app-id
-   */
-  sdkAppId?: string | number;
-
-  /**
-   * 模板ID
-   */
-  templateId?: string | number;
-
-  /**
-   * 状态
-   */
-  status?: boolean;
-
-  /**
-   * 日期范围参数
-   */
-  params?: any;
-}
-
-
-

+ 0 - 85
template/api/service/list/index.ts

@@ -1,85 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { ServiceVO, ServiceForm, ServiceQuery, ServiceOrderVO, ServiceOnStoreVo } from './types';
-
-/**
- * 查询服务项目列表
- * @param query
- * @returns {*}
- */
-
-export const listService = (query?: ServiceQuery): AxiosPromise<ServiceVO[]> => {
-  return request({
-    url: '/service/list/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询服务项目详细
- * @param id
- */
-export const getService = (id: string | number): AxiosPromise<ServiceVO> => {
-  return request({
-    url: '/service/list/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 新增服务项目
- * @param data
- */
-export const addService = (data: ServiceForm) => {
-  return request({
-    url: '/service/list',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改服务项目
- * @param data
- */
-export const updateService = (data: ServiceForm) => {
-  return request({
-    url: '/service/list',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除服务项目
- * @param id
- */
-export const delService = (id: string | number | Array<string | number>) => {
-  return request({
-    url: '/service/list/' + id,
-    method: 'delete'
-  });
-};
-
-/**
- * 获取服务项目列表
- * @Author Huanyi
- */
-export const listOnStore = (): AxiosPromise<ServiceOnStoreVo[]> => {
-  return request({
-    url: '/service/list/listOnStore',
-    method: 'GET'
-  });
-};
-
-/**
- * 查询下单页的服务列表
- * @returns {*}
- */
-export const listServiceOnOrder = (): AxiosPromise<ServiceOrderVO[]> => {
-  return request({
-    url: '/service/list/listOnOrder',
-    method: 'get'
-  });
-};

+ 0 - 92
template/api/service/list/types.ts

@@ -1,92 +0,0 @@
-export interface ServiceVO {
-  /**
-   * 序号
-   */
-  id: string | number;
-
-  /**
-   * 服务名称
-   */
-  name: string;
-
-  /**
-   * 服务图标
-   */
-  icon: number;
-
-  /**
-   * 服务图标Url
-   */
-  iconUrl: string;
-  /**
-   * 服务模式
-   */
-  mode: number;
-
-  /**
-   * 排序权重
-   */
-  sort: number;
-
-  /**
-   * 备注说明
-   */
-  remark: string;
-
-  /**
-   * 创建时间
-   */
-  createTime: string;
-}
-
-export interface ServiceForm extends BaseEntity {
-  /**
-   * 序号
-   */
-  id?: string | number;
-
-  /**
-   * 服务名称
-   */
-  name?: string;
-
-  /**
-   * 服务图标
-   */
-  icon?: number;
-
-  /**
-   * 服务模式
-   */
-  mode?: number;
-
-  /**
-   * 排序权重
-   */
-  sort?: number;
-
-  /**
-   * 备注说明
-   */
-  remark?: string;
-}
-
-export interface ServiceQuery extends PageQuery {
-  /**
-   * 日期范围参数
-   */
-  params?: any;
-}
-
-export interface ServiceOnStoreVo {
-  id?: number | string;
-  name?: string;
-}
-
-export interface ServiceOrderVO {
-  id: number;
-  name: string;
-  remark: string;
-  icon: string;
-  mode: number;
-}

+ 0 - 11
template/api/service/mode/index.ts

@@ -1,11 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { SysServiceModeVo } from '@/api/service/mode/types';
-
-export const list = (): AxiosPromise<SysServiceModeVo[]> => {
-  return request({
-    url: '/service/mode/list',
-    method: 'GET'
-  });
-};
-

+ 0 - 4
template/api/service/mode/types.ts

@@ -1,4 +0,0 @@
-export interface SysServiceModeVo {
-  value: number;
-  label: string;
-}

+ 0 - 85
template/api/system/areaStation/index.ts

@@ -1,85 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { AreaStationVO, AreaStationForm, AreaStationQuery, SysAreaStationTypeVo, SysAreaStationOnStoreVo } from '@/api/system/areaStation/types';
-
-/**
- * 查询区域站点列表
- * @param query
- * @returns {*}
- */
-
-export const listAreaStation = (query?: AreaStationQuery): AxiosPromise<AreaStationVO[]> => {
-  return request({
-    url: '/system/areaStation/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询区域站点详细
- * @param id
- */
-export const getAreaStation = (id: string | number): AxiosPromise<AreaStationVO> => {
-  return request({
-    url: '/system/areaStation/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 新增区域站点
- * @param data
- */
-export const addAreaStation = (data: AreaStationForm) => {
-  return request({
-    url: '/system/areaStation',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改区域站点
- * @param data
- */
-export const updateAreaStation = (data: AreaStationForm) => {
-  return request({
-    url: '/system/areaStation',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除区域站点
- * @param id
- */
-export const delAreaStation = (id: string | number | Array<string | number>) => {
-  return request({
-    url: '/system/areaStation/' + id,
-    method: 'delete'
-  });
-};
-
-/**
- * 获取区域类型
- * @Author Huanyi
- */
-export const listType = (): AxiosPromise<SysAreaStationTypeVo[]> => {
-  return request({
-    url: '/system/areaStation/listType',
-    method: 'GET'
-  });
-};
-
-/**
- * 获取区域列表
- * @Author Huanyi
- */
-export const listOnStore = (): AxiosPromise<SysAreaStationOnStoreVo[]> => {
-  return request({
-    url: '/system/areaStation/listOnStore',
-    method: 'GET'
-  });
-};

+ 0 - 145
template/api/system/areaStation/types.ts

@@ -1,145 +0,0 @@
-export interface AreaStationVO {
-  /**
-   * 序号
-   */
-  id: string | number;
-
-  /**
-   * 区域名称
-   */
-  name: string;
-
-  /**
-   * 省市编码
-   */
-  code: string;
-
-  /**
-   * 排序权重
-   */
-  sort: number;
-
-  /**
-   * 详细地址
-   */
-  address: string;
-
-  /**
-   * 站长姓名
-   */
-  leaderName: string;
-
-  /**
-   * 联系电话
-   */
-  contactPhone: string;
-
-  /**
-   * 经度
-   */
-  longitude: number;
-
-  /**
-   * 纬度
-   */
-  latitude: number;
-
-  /**
-   * 类型
-   */
-  type: number;
-
-  /**
-   * 状态
-   */
-  status: number;
-
-    /**
-     * 子对象
-     */
-    children: AreaStationVO[];
-}
-
-export interface AreaStationForm extends BaseEntity {
-  /**
-   * 序号
-   */
-  id?: string | number;
-
-  /**
-   * 区域名称
-   */
-  name?: string;
-
-  /**
-   * 父级ID
-   */
-  parentId?: string | number;
-
-  /**
-   * 省市编码
-   */
-  code?: string;
-
-  /**
-   * 排序权重
-   */
-  sort?: number;
-
-  /**
-   * 详细地址
-   */
-  address?: string;
-
-  /**
-   * 站长姓名
-   */
-  leaderName?: string;
-
-  /**
-   * 联系电话
-   */
-  contactPhone?: string;
-
-  /**
-   * 经度
-   */
-  longitude?: number;
-
-  /**
-   * 纬度
-   */
-  latitude?: number;
-
-  /**
-   * 类型
-   */
-  type?: number;
-
-  /**
-   * 状态
-   */
-  status?: number;
-
-}
-
-export interface AreaStationQuery {
-
-  /**
-   * 日期范围参数
-   */
-  params?: any;
-}
-
-export interface SysAreaStationTypeVo {
-  value?: number;
-  label?: string;
-  style?: string;
-}
-
-export interface SysAreaStationOnStoreVo {
-  id?: number | string;
-  name?: string;
-  type?: number;
-  parentId?: number | string;
-}

+ 0 - 80
template/api/system/client/index.ts

@@ -1,80 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { ClientVO, ClientForm, ClientQuery } from '@/api/system/client/types';
-
-/**
- * 查询客户端管理列表
- * @param query
- * @returns {*}
- */
-
-export const listClient = (query?: ClientQuery): AxiosPromise<ClientVO[]> => {
-  return request({
-    url: '/system/client/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询客户端管理详细
- * @param id
- */
-export const getClient = (id: string | number): AxiosPromise<ClientVO> => {
-  return request({
-    url: '/system/client/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 新增客户端管理
- * @param data
- */
-export const addClient = (data: ClientForm) => {
-  return request({
-    url: '/system/client',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改客户端管理
- * @param data
- */
-export const updateClient = (data: ClientForm) => {
-  return request({
-    url: '/system/client',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除客户端管理
- * @param id
- */
-export const delClient = (id: string | number | Array<string | number>) => {
-  return request({
-    url: '/system/client/' + id,
-    method: 'delete'
-  });
-};
-
-/**
- * 状态修改
- * @param clientId 客户端id
- * @param status 状态
- */
-export function changeStatus(clientId: string, status: string) {
-  const data = {
-    clientId,
-    status
-  };
-  return request({
-    url: '/system/client/changeStatus',
-    method: 'put',
-    data: data
-  });
-}

+ 0 - 135
template/api/system/client/types.ts

@@ -1,135 +0,0 @@
-export interface ClientVO {
-  /**
-   * id
-   */
-  id: string | number;
-
-  /**
-   * 客户端id
-   */
-  clientId: string;
-
-  /**
-   * 客户端key
-   */
-  clientKey: string;
-
-  /**
-   * 客户端秘钥
-   */
-  clientSecret: string;
-
-  /**
-   * 授权类型
-   */
-  grantTypeList: string[];
-
-  /**
-   * 设备类型
-   */
-  deviceType: string;
-
-  /**
-   * token活跃超时时间
-   */
-  activeTimeout: number;
-
-  /**
-   * token固定超时
-   */
-  timeout: number;
-
-  /**
-   * 状态(0正常 1停用)
-   */
-  status: string;
-}
-
-export interface ClientForm extends BaseEntity {
-  /**
-   * id
-   */
-  id?: string | number;
-
-  /**
-   * 客户端id
-   */
-  clientId?: string | number;
-
-  /**
-   * 客户端key
-   */
-  clientKey?: string;
-
-  /**
-   * 客户端秘钥
-   */
-  clientSecret?: string;
-
-  /**
-   * 授权类型
-   */
-  grantTypeList?: string[];
-
-  /**
-   * 设备类型
-   */
-  deviceType?: string;
-
-  /**
-   * token活跃超时时间
-   */
-  activeTimeout?: number;
-
-  /**
-   * token固定超时
-   */
-  timeout?: number;
-
-  /**
-   * 状态(0正常 1停用)
-   */
-  status?: string;
-}
-
-export interface ClientQuery extends PageQuery {
-  /**
-   * 客户端id
-   */
-  clientId?: string | number;
-
-  /**
-   * 客户端key
-   */
-  clientKey?: string;
-
-  /**
-   * 客户端秘钥
-   */
-  clientSecret?: string;
-
-  /**
-   * 授权类型
-   */
-  grantType?: string;
-
-  /**
-   * 设备类型
-   */
-  deviceType?: string;
-
-  /**
-   * token活跃超时时间
-   */
-  activeTimeout?: number;
-
-  /**
-   * token固定超时
-   */
-  timeout?: number;
-
-  /**
-   * 状态(0正常 1停用)
-   */
-  status?: string;
-}

+ 0 - 74
template/api/system/config/index.ts

@@ -1,74 +0,0 @@
-import request from '@/utils/request';
-import { ConfigForm, ConfigQuery, ConfigVO } from './types';
-import { AxiosPromise } from 'axios';
-
-// 查询参数列表
-export function listConfig(query: ConfigQuery): AxiosPromise<ConfigVO[]> {
-  return request({
-    url: '/system/config/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 查询参数详细
-export function getConfig(configId: string | number): AxiosPromise<ConfigVO> {
-  return request({
-    url: '/system/config/' + configId,
-    method: 'get'
-  });
-}
-
-// 根据参数键名查询参数值
-export function getConfigKey(configKey: string): AxiosPromise<string> {
-  return request({
-    url: '/system/config/configKey/' + configKey,
-    method: 'get'
-  });
-}
-
-// 新增参数配置
-export function addConfig(data: ConfigForm) {
-  return request({
-    url: '/system/config',
-    method: 'post',
-    data: data
-  });
-}
-
-// 修改参数配置
-export function updateConfig(data: ConfigForm) {
-  return request({
-    url: '/system/config',
-    method: 'put',
-    data: data
-  });
-}
-
-// 修改参数配置
-export function updateConfigByKey(key: string, value: any) {
-  return request({
-    url: '/system/config/updateByKey',
-    method: 'put',
-    data: {
-      configKey: key,
-      configValue: value
-    }
-  });
-}
-
-// 删除参数配置
-export function delConfig(configId: string | number | Array<string | number>) {
-  return request({
-    url: '/system/config/' + configId,
-    method: 'delete'
-  });
-}
-
-// 刷新参数缓存
-export function refreshCache() {
-  return request({
-    url: '/system/config/refreshCache',
-    method: 'delete'
-  });
-}

+ 0 - 23
template/api/system/config/types.ts

@@ -1,23 +0,0 @@
-export interface ConfigVO extends BaseEntity {
-  configId: number | string;
-  configName: string;
-  configKey: string;
-  configValue: string;
-  configType: string;
-  remark: string;
-}
-
-export interface ConfigForm {
-  configId: number | string | undefined;
-  configName: string;
-  configKey: string;
-  configValue: string;
-  configType: string;
-  remark: string;
-}
-
-export interface ConfigQuery extends PageQuery {
-  configName: string;
-  configKey: string;
-  configType: string;
-}

+ 0 - 65
template/api/system/dept/index.ts

@@ -1,65 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { DeptForm, DeptQuery, DeptTreeVO, DeptVO } from './types';
-
-// 查询部门列表
-export const listDept = (query?: DeptQuery) => {
-  return request({
-    url: '/system/dept/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 通过deptIds查询部门
- * @param deptIds
- */
-export const optionSelect = (deptIds: (number | string)[]): AxiosPromise<DeptVO[]> => {
-  return request({
-    url: '/system/dept/optionselect?deptIds=' + deptIds,
-    method: 'get'
-  });
-};
-
-// 查询部门列表(排除节点)
-export const listDeptExcludeChild = (deptId: string | number): AxiosPromise<DeptVO[]> => {
-  return request({
-    url: '/system/dept/list/exclude/' + deptId,
-    method: 'get'
-  });
-};
-
-// 查询部门详细
-export const getDept = (deptId: string | number): AxiosPromise<DeptVO> => {
-  return request({
-    url: '/system/dept/' + deptId,
-    method: 'get'
-  });
-};
-
-// 新增部门
-export const addDept = (data: DeptForm) => {
-  return request({
-    url: '/system/dept',
-    method: 'post',
-    data: data
-  });
-};
-
-// 修改部门
-export const updateDept = (data: DeptForm) => {
-  return request({
-    url: '/system/dept',
-    method: 'put',
-    data: data
-  });
-};
-
-// 删除部门
-export const delDept = (deptId: number | string) => {
-  return request({
-    url: '/system/dept/' + deptId,
-    method: 'delete'
-  });
-};

+ 0 - 60
template/api/system/dept/types.ts

@@ -1,60 +0,0 @@
-/**
- * 部门查询参数
- */
-export interface DeptQuery extends PageQuery {
-  deptName?: string;
-  deptCategory?: string;
-  status?: number;
-}
-
-/**
- * 部门类型
- */
-export interface DeptVO extends BaseEntity {
-  id: number | string;
-  parentName: string;
-  parentId: number | string;
-  children: DeptVO[];
-  deptId: number | string;
-  deptName: string;
-  deptCategory: string;
-  orderNum: number;
-  leader: string;
-  phone: string;
-  email: string;
-  status: string;
-  delFlag: string;
-  ancestors: string;
-  menuId: string | number;
-}
-
-/**
- * 部门类型
- */
-export interface DeptTreeVO extends BaseEntity {
-  id: number | string;
-  label: string;
-  parentId: number | string;
-  weight: number;
-  children: DeptTreeVO[];
-  disabled: boolean;
-}
-
-/**
- * 部门表单类型
- */
-export interface DeptForm {
-  parentName?: string;
-  parentId?: number | string;
-  children?: DeptForm[];
-  deptId?: number | string;
-  deptName?: string;
-  deptCategory?: string;
-  orderNum?: number;
-  leader?: string;
-  phone?: string;
-  email?: string;
-  status?: string;
-  delFlag?: string;
-  ancestors?: string;
-}

+ 0 - 53
template/api/system/dict/data/index.ts

@@ -1,53 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { DictDataForm, DictDataQuery, DictDataVO } from './types';
-// 根据字典类型查询字典数据信息
-export function getDicts(dictType: string): AxiosPromise<DictDataVO[]> {
-  return request({
-    url: '/system/dict/data/type/' + dictType,
-    method: 'get'
-  });
-}
-
-// 查询字典数据列表
-export function listData(query: DictDataQuery): AxiosPromise<DictDataVO[]> {
-  return request({
-    url: '/system/dict/data/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 查询字典数据详细
-export function getData(dictCode: string | number): AxiosPromise<DictDataVO> {
-  return request({
-    url: '/system/dict/data/' + dictCode,
-    method: 'get'
-  });
-}
-
-// 新增字典数据
-export function addData(data: DictDataForm) {
-  return request({
-    url: '/system/dict/data',
-    method: 'post',
-    data: data
-  });
-}
-
-// 修改字典数据
-export function updateData(data: DictDataForm) {
-  return request({
-    url: '/system/dict/data',
-    method: 'put',
-    data: data
-  });
-}
-
-// 删除字典数据
-export function delData(dictCode: string | number | Array<string | number>) {
-  return request({
-    url: '/system/dict/data/' + dictCode,
-    method: 'delete'
-  });
-}

+ 0 - 26
template/api/system/dict/data/types.ts

@@ -1,26 +0,0 @@
-export interface DictDataQuery extends PageQuery {
-  dictName: string;
-  dictType: string;
-  dictLabel: string;
-}
-
-export interface DictDataVO extends BaseEntity {
-  dictCode: string;
-  dictLabel: string;
-  dictValue: string;
-  cssClass: string;
-  listClass: ElTagType;
-  dictSort: number;
-  remark: string;
-}
-
-export interface DictDataForm {
-  dictType?: string;
-  dictCode: string | undefined;
-  dictLabel: string;
-  dictValue: string;
-  cssClass: string;
-  listClass: ElTagType;
-  dictSort: number;
-  remark: string;
-}

+ 0 - 62
template/api/system/dict/type/index.ts

@@ -1,62 +0,0 @@
-import request from '@/utils/request';
-import { DictTypeForm, DictTypeVO, DictTypeQuery } from './types';
-import { AxiosPromise } from 'axios';
-
-// 查询字典类型列表
-export function listType(query: DictTypeQuery): AxiosPromise<DictTypeVO[]> {
-  return request({
-    url: '/system/dict/type/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 查询字典类型详细
-export function getType(dictId: number | string): AxiosPromise<DictTypeVO> {
-  return request({
-    url: '/system/dict/type/' + dictId,
-    method: 'get'
-  });
-}
-
-// 新增字典类型
-export function addType(data: DictTypeForm) {
-  return request({
-    url: '/system/dict/type',
-    method: 'post',
-    data: data
-  });
-}
-
-// 修改字典类型
-export function updateType(data: DictTypeForm) {
-  return request({
-    url: '/system/dict/type',
-    method: 'put',
-    data: data
-  });
-}
-
-// 删除字典类型
-export function delType(dictId: string | number | Array<string | number>) {
-  return request({
-    url: '/system/dict/type/' + dictId,
-    method: 'delete'
-  });
-}
-
-// 刷新字典缓存
-export function refreshCache() {
-  return request({
-    url: '/system/dict/type/refreshCache',
-    method: 'delete'
-  });
-}
-
-// 获取字典选择框列表
-export function optionselect(): AxiosPromise<DictTypeVO[]> {
-  return request({
-    url: '/system/dict/type/optionselect',
-    method: 'get'
-  });
-}

+ 0 - 18
template/api/system/dict/type/types.ts

@@ -1,18 +0,0 @@
-export interface DictTypeVO extends BaseEntity {
-  dictId: number | string;
-  dictName: string;
-  dictType: string;
-  remark: string;
-}
-
-export interface DictTypeForm {
-  dictId: number | string | undefined;
-  dictName: string;
-  dictType: string;
-  remark: string;
-}
-
-export interface DictTypeQuery extends PageQuery {
-  dictName: string;
-  dictType: string;
-}

+ 0 - 78
template/api/system/menu/index.ts

@@ -1,78 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { MenuQuery, MenuVO, MenuForm, MenuTreeOption, RoleMenuTree } from './types';
-
-// 查询菜单列表
-export const listMenu = (query?: MenuQuery): AxiosPromise<MenuVO[]> => {
-  return request({
-    url: '/system/menu/list',
-    method: 'get',
-    params: query
-  });
-};
-
-// 查询菜单详细
-export const getMenu = (menuId: string | number): AxiosPromise<MenuVO> => {
-  return request({
-    url: '/system/menu/' + menuId,
-    method: 'get'
-  });
-};
-
-// 查询菜单下拉树结构
-export const treeselect = (): AxiosPromise<MenuTreeOption[]> => {
-  return request({
-    url: '/system/menu/treeselect',
-    method: 'get'
-  });
-};
-
-// 根据角色ID查询菜单下拉树结构
-export const roleMenuTreeselect = (roleId: string | number): AxiosPromise<RoleMenuTree> => {
-  return request({
-    url: '/system/menu/roleMenuTreeselect/' + roleId,
-    method: 'get'
-  });
-};
-
-// 根据角色ID查询菜单下拉树结构
-export const tenantPackageMenuTreeselect = (packageId: string | number): AxiosPromise<RoleMenuTree> => {
-  return request({
-    url: '/system/menu/tenantPackageMenuTreeselect/' + packageId,
-    method: 'get'
-  });
-};
-
-// 新增菜单
-export const addMenu = (data: MenuForm) => {
-  return request({
-    url: '/system/menu',
-    method: 'post',
-    data: data
-  });
-};
-
-// 修改菜单
-export const updateMenu = (data: MenuForm) => {
-  return request({
-    url: '/system/menu',
-    method: 'put',
-    data: data
-  });
-};
-
-// 删除菜单
-export const delMenu = (menuId: string | number) => {
-  return request({
-    url: '/system/menu/' + menuId,
-    method: 'delete'
-  });
-};
-
-// 级联删除菜单
-export const cascadeDelMenu = (menuIds: Array<string | number>) => {
-  return request({
-    url: '/system/menu/cascade/' + menuIds,
-    method: 'delete'
-  });
-};

+ 0 - 70
template/api/system/menu/types.ts

@@ -1,70 +0,0 @@
-import { MenuTypeEnum } from '@/enums/MenuTypeEnum';
-
-/**
- * 菜单树形结构类型
- */
-export interface MenuTreeOption {
-  id: string | number;
-  label: string;
-  parentId: string | number;
-  weight: number;
-  children?: MenuTreeOption[];
-}
-
-export interface RoleMenuTree {
-  menus: MenuTreeOption[];
-  checkedKeys: string[];
-}
-
-/**
- * 菜单查询参数类型
- */
-export interface MenuQuery {
-  keywords?: string;
-  menuName?: string;
-  status?: string;
-  platformId?: number;
-}
-
-/**
- * 菜单视图对象类型
- */
-export interface MenuVO extends BaseEntity {
-  parentName: string;
-  parentId: string | number;
-  children: MenuVO[];
-  menuId: string | number;
-  menuName: string;
-  orderNum: number;
-  path: string;
-  component: string;
-  queryParam: string;
-  isFrame: string;
-  isCache: string;
-  menuType: MenuTypeEnum;
-  visible: string;
-  status: string;
-  icon: string;
-  remark: string;
-}
-
-export interface MenuForm {
-  parentName?: string;
-  parentId?: string | number;
-  children?: MenuForm[];
-  menuId?: string | number;
-  menuName: string;
-  orderNum: number;
-  path: string;
-  component?: string;
-  queryParam?: string;
-  isFrame?: string;
-  isCache?: string;
-  menuType?: MenuTypeEnum;
-  visible?: string;
-  status?: string;
-  icon?: string;
-  remark?: string;
-  query?: string;
-  perms?: string;
-}

+ 0 - 45
template/api/system/notice/index.ts

@@ -1,45 +0,0 @@
-import request from '@/utils/request';
-import { NoticeForm, NoticeQuery, NoticeVO } from './types';
-import { AxiosPromise } from 'axios';
-// 查询公告列表
-export function listNotice(query: NoticeQuery): AxiosPromise<NoticeVO[]> {
-  return request({
-    url: '/system/notice/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 查询公告详细
-export function getNotice(noticeId: string | number): AxiosPromise<NoticeVO> {
-  return request({
-    url: '/system/notice/' + noticeId,
-    method: 'get'
-  });
-}
-
-// 新增公告
-export function addNotice(data: NoticeForm) {
-  return request({
-    url: '/system/notice',
-    method: 'post',
-    data: data
-  });
-}
-
-// 修改公告
-export function updateNotice(data: NoticeForm) {
-  return request({
-    url: '/system/notice',
-    method: 'put',
-    data: data
-  });
-}
-
-// 删除公告
-export function delNotice(noticeId: string | number | Array<string | number>) {
-  return request({
-    url: '/system/notice/' + noticeId,
-    method: 'delete'
-  });
-}

+ 0 - 26
template/api/system/notice/types.ts

@@ -1,26 +0,0 @@
-export interface NoticeVO extends BaseEntity {
-  noticeId: number;
-  noticeTitle: string;
-  noticeType: string;
-  noticeContent: string;
-  status: string;
-  remark: string;
-  createByName: string;
-}
-
-export interface NoticeQuery extends PageQuery {
-  noticeTitle: string;
-  createByName: string;
-  status: string;
-  noticeType: string;
-}
-
-export interface NoticeForm {
-  noticeId: number | string | undefined;
-  noticeTitle: string;
-  noticeType: string;
-  noticeContent: string;
-  status: string;
-  remark: string;
-  createByName: string;
-}

+ 0 - 28
template/api/system/oss/index.ts

@@ -1,28 +0,0 @@
-import request from '@/utils/request';
-import { OssQuery, OssVO } from './types';
-import { AxiosPromise } from 'axios';
-
-// 查询OSS对象存储列表
-export function listOss(query: OssQuery): AxiosPromise<OssVO[]> {
-  return request({
-    url: '/resource/oss/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 查询OSS对象基于id串
-export function listByIds(ossId: string | number): AxiosPromise<OssVO[]> {
-  return request({
-    url: '/resource/oss/listByIds/' + ossId,
-    method: 'get'
-  });
-}
-
-// 删除OSS对象存储
-export function delOss(ossId: string | number | Array<string | number>) {
-  return request({
-    url: '/resource/oss/' + ossId,
-    method: 'delete'
-  });
-}

+ 0 - 22
template/api/system/oss/types.ts

@@ -1,22 +0,0 @@
-export interface OssVO extends BaseEntity {
-  ossId: string | number;
-  fileName: string;
-  originalName: string;
-  fileSuffix: string;
-  url: string;
-  createByName: string;
-  service: string;
-}
-
-export interface OssQuery extends PageQuery {
-  fileName: string;
-  originalName: string;
-  fileSuffix: string;
-  createTime: string;
-  service: string;
-  orderByColumn: string;
-  isAsc: string;
-}
-export interface OssForm {
-  file: undefined | string;
-}

+ 0 - 60
template/api/system/ossConfig/index.ts

@@ -1,60 +0,0 @@
-import request from '@/utils/request';
-import { OssConfigForm, OssConfigQuery, OssConfigVO } from './types';
-import { AxiosPromise } from 'axios';
-
-// 查询对象存储配置列表
-export function listOssConfig(query: OssConfigQuery): AxiosPromise<OssConfigVO[]> {
-  return request({
-    url: '/resource/oss/config/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 查询对象存储配置详细
-export function getOssConfig(ossConfigId: string | number): AxiosPromise<OssConfigVO> {
-  return request({
-    url: '/resource/oss/config/' + ossConfigId,
-    method: 'get'
-  });
-}
-
-// 新增对象存储配置
-export function addOssConfig(data: OssConfigForm) {
-  return request({
-    url: '/resource/oss/config',
-    method: 'post',
-    data: data
-  });
-}
-
-// 修改对象存储配置
-export function updateOssConfig(data: OssConfigForm) {
-  return request({
-    url: '/resource/oss/config',
-    method: 'put',
-    data: data
-  });
-}
-
-// 删除对象存储配置
-export function delOssConfig(ossConfigId: string | number | Array<string | number>) {
-  return request({
-    url: '/resource/oss/config/' + ossConfigId,
-    method: 'delete'
-  });
-}
-
-// 对象存储状态修改
-export function changeOssConfigStatus(ossConfigId: string | number, status: string, configKey: string) {
-  const data = {
-    ossConfigId,
-    status,
-    configKey
-  };
-  return request({
-    url: '/resource/oss/config/changeStatus',
-    method: 'put',
-    data: data
-  });
-}

+ 0 - 38
template/api/system/ossConfig/types.ts

@@ -1,38 +0,0 @@
-export interface OssConfigVO extends BaseEntity {
-  ossConfigId: number | string;
-  configKey: string;
-  accessKey: string;
-  secretKey: string;
-  bucketName: string;
-  prefix: string;
-  endpoint: string;
-  domain: string;
-  isHttps: string;
-  region: string;
-  status: string;
-  ext1: string;
-  remark: string;
-  accessPolicy: string;
-}
-
-export interface OssConfigQuery extends PageQuery {
-  configKey: string;
-  bucketName: string;
-  status: string;
-}
-
-export interface OssConfigForm {
-  ossConfigId: string | number | undefined;
-  configKey: string;
-  accessKey: string;
-  secretKey: string;
-  bucketName: string;
-  prefix: string;
-  endpoint: string;
-  domain: string;
-  isHttps: string;
-  accessPolicy: string;
-  region: string;
-  status: string;
-  remark: string;
-}

+ 0 - 9
template/api/system/platform/index.ts

@@ -1,9 +0,0 @@
-import request from '@/utils/request';
-
-// 查询平台列表
-export function listPlatform() {
-  return request({
-    url: '/system/platform/list',
-    method: 'get'
-  });
-}

+ 0 - 5
template/api/system/platform/types.ts

@@ -1,5 +0,0 @@
-// 平台类型
-export interface PlatformVO {
-  id: number;
-  label: string;
-}

+ 0 - 69
template/api/system/post/index.ts

@@ -1,69 +0,0 @@
-import request from '@/utils/request';
-import { PostForm, PostQuery, PostVO } from './types';
-import { AxiosPromise } from 'axios';
-import { DeptTreeVO } from '../dept/types';
-
-// 查询岗位列表
-export function listPost(query: PostQuery): AxiosPromise<PostVO[]> {
-  return request({
-    url: '/system/post/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 查询岗位详细
-export function getPost(postId: string | number): AxiosPromise<PostVO> {
-  return request({
-    url: '/system/post/' + postId,
-    method: 'get'
-  });
-}
-
-// 获取岗位选择框列表
-export function optionselect(deptId?: number | string, postIds?: (number | string)[]): AxiosPromise<PostVO[]> {
-  return request({
-    url: '/system/post/optionselect',
-    method: 'get',
-    params: {
-      postIds: postIds,
-      deptId: deptId
-    }
-  });
-}
-
-// 新增岗位
-export function addPost(data: PostForm) {
-  return request({
-    url: '/system/post',
-    method: 'post',
-    data: data
-  });
-}
-
-// 修改岗位
-export function updatePost(data: PostForm) {
-  return request({
-    url: '/system/post',
-    method: 'put',
-    data: data
-  });
-}
-
-// 删除岗位
-export function delPost(postId: string | number | (string | number)[]) {
-  return request({
-    url: '/system/post/' + postId,
-    method: 'delete'
-  });
-}
-
-/**
- * 查询部门下拉树结构
- */
-export const deptTreeSelect = (): AxiosPromise<DeptTreeVO[]> => {
-  return request({
-    url: '/system/post/deptTree',
-    method: 'get'
-  });
-};

+ 0 - 31
template/api/system/post/types.ts

@@ -1,31 +0,0 @@
-export interface PostVO extends BaseEntity {
-  postId: number | string;
-  deptId: number | string;
-  postCode: string;
-  postName: string;
-  postCategory: string;
-  deptName: string;
-  postSort: number;
-  status: string;
-  remark: string;
-}
-
-export interface PostForm {
-  postId: number | string | undefined;
-  deptId: number | string | undefined;
-  postCode: string;
-  postName: string;
-  postCategory: string;
-  postSort: number;
-  status: string;
-  remark: string;
-}
-
-export interface PostQuery extends PageQuery {
-  deptId: number | string;
-  belongDeptId: number | string;
-  postCode: string;
-  postName: string;
-  postCategory: string;
-  status: string;
-}

+ 0 - 160
template/api/system/role/index.ts

@@ -1,160 +0,0 @@
-import { UserVO } from '@/api/system/user/types';
-import { UserQuery } from '@/api/system/user/types';
-import { AxiosPromise } from 'axios';
-import { RoleQuery, RoleVO, RoleDeptTree } from './types';
-import request from '@/utils/request';
-
-export const listRole = (query: RoleQuery): AxiosPromise<RoleVO[]> => {
-  return request({
-    url: '/system/role/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 通过roleIds查询角色
- * @param roleIds
- */
-export const optionSelect = (roleIds: (number | string)[]): AxiosPromise<RoleVO[]> => {
-  return request({
-    url: '/system/role/optionselect?roleIds=' + roleIds,
-    method: 'get'
-  });
-};
-
-/**
- * 查询角色详细
- */
-export const getRole = (roleId: string | number): AxiosPromise<RoleVO> => {
-  return request({
-    url: '/system/role/' + roleId,
-    method: 'get'
-  });
-};
-
-/**
- * 新增角色
- */
-export const addRole = (data: any) => {
-  return request({
-    url: '/system/role',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改角色
- * @param data
- */
-export const updateRole = (data: any) => {
-  return request({
-    url: '/system/role',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 角色数据权限
- */
-export const dataScope = (data: any) => {
-  return request({
-    url: '/system/role/dataScope',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 角色状态修改
- */
-export const changeRoleStatus = (roleId: string | number, status: string) => {
-  const data = {
-    roleId,
-    status
-  };
-  return request({
-    url: '/system/role/changeStatus',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除角色
- */
-export const delRole = (roleId: Array<string | number> | string | number) => {
-  return request({
-    url: '/system/role/' + roleId,
-    method: 'delete'
-  });
-};
-
-/**
- * 查询角色已授权用户列表
- */
-export const allocatedUserList = (query: UserQuery): AxiosPromise<UserVO[]> => {
-  return request({
-    url: '/system/role/authUser/allocatedList',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询角色未授权用户列表
- */
-export const unallocatedUserList = (query: UserQuery): AxiosPromise<UserVO[]> => {
-  return request({
-    url: '/system/role/authUser/unallocatedList',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 取消用户授权角色
- */
-export const authUserCancel = (data: any) => {
-  return request({
-    url: '/system/role/authUser/cancel',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 批量取消用户授权角色
- */
-export const authUserCancelAll = (data: any) => {
-  return request({
-    url: '/system/role/authUser/cancelAll',
-    method: 'put',
-    params: data
-  });
-};
-
-/**
- * 授权用户选择
- */
-export const authUserSelectAll = (data: any) => {
-  return request({
-    url: '/system/role/authUser/selectAll',
-    method: 'put',
-    params: data
-  });
-};
-// 根据角色ID查询部门树结构
-export const deptTreeSelect = (roleId: string | number): AxiosPromise<RoleDeptTree> => {
-  return request({
-    url: '/system/role/deptTree/' + roleId,
-    method: 'get'
-  });
-};
-
-export default {
-  optionSelect,
-  listRole
-};

+ 0 - 52
template/api/system/role/types.ts

@@ -1,52 +0,0 @@
-/**
- * 菜单树形结构类型
- */
-export interface DeptTreeOption {
-  id: string;
-  label: string;
-  parentId: string;
-  weight: number;
-  children?: DeptTreeOption[];
-}
-
-export interface RoleDeptTree {
-  checkedKeys: string[];
-  depts: DeptTreeOption[];
-}
-
-export interface RoleVO extends BaseEntity {
-  roleId: string | number;
-  roleName: string;
-  roleKey: string;
-  roleSort: number;
-  dataScope: string;
-  menuCheckStrictly: boolean;
-  deptCheckStrictly: boolean;
-  status: string;
-  delFlag: string;
-  remark?: any;
-  flag: boolean;
-  menuIds?: Array<string | number>;
-  deptIds?: Array<string | number>;
-  admin: boolean;
-}
-
-export interface RoleQuery extends PageQuery {
-  roleName: string;
-  roleKey: string;
-  status: string;
-}
-
-export interface RoleForm {
-  roleName: string;
-  roleKey: string;
-  roleSort: number;
-  status: string;
-  menuCheckStrictly: boolean;
-  deptCheckStrictly: boolean;
-  remark: string;
-  dataScope?: string;
-  roleId: string | undefined;
-  menuIds: Array<string | number>;
-  deptIds: Array<string | number>;
-}

+ 0 - 28
template/api/system/social/auth.ts

@@ -1,28 +0,0 @@
-import request from '@/utils/request';
-
-// 获取跳转URL
-export function authRouterUrl(source: string, tenantId: string) {
-  return request({
-    url: '/auth/binding/' + source,
-    method: 'get',
-    params: {
-      tenantId: tenantId,
-      domain: window.location.host
-    }
-  });
-}
-
-// 解绑账号
-export function authUnlock(authId: string) {
-  return request({
-    url: '/auth/unlock/' + authId,
-    method: 'delete'
-  });
-}
-//获取授权列表
-export function getAuthList() {
-  return request({
-    url: '/system/social/list',
-    method: 'get'
-  });
-}

+ 0 - 87
template/api/system/store/index.ts

@@ -1,87 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { StoreVO, StoreForm, StoreQuery, StoreStatusVO, SysStorePageBo, StoreOrderQuery, StoreOrderVO } from '@/api/system/store/types';
-
-/**
- * 查询门店管理列表
- * @param query
- * @returns {*}
- */
-
-export const listStore = (query?: SysStorePageBo): AxiosPromise<StoreVO[]> => {
-  return request({
-    url: '/system/store/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询门店管理详细
- * @param id
- */
-export const getStore = (id: string | number): AxiosPromise<StoreVO> => {
-  return request({
-    url: '/system/store/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 新增门店管理
- * @param data
- */
-export const addStore = (data: StoreForm) => {
-  return request({
-    url: '/system/store',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改门店管理
- * @param data
- */
-export const updateStore = (data: StoreForm) => {
-  return request({
-    url: '/system/store',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除门店管理
- * @param id
- */
-export const delStore = (id: string | number | Array<string | number>) => {
-  return request({
-    url: '/system/store/' + id,
-    method: 'delete'
-  });
-};
-
-/**
- * 获取状态列表
- */
-export const listStoreStatus = (): AxiosPromise<StoreStatusVO[]> => {
-  return request({
-    url: '/system/store/listStatus',
-    method: 'get'
-  });
-};
-
-/**
- * 下单时查询门店列表
- * @param query
- * @returns {*}
- */
-export const listStoreOnOrder = (query?: StoreOrderQuery): AxiosPromise<{ total: number, rows: StoreOrderVO[] }> => {
-  return request({
-    url: '/system/store/listOnOrder',
-    method: 'get',
-    params: query
-  });
-};
-

+ 0 - 260
template/api/system/store/types.ts

@@ -1,260 +0,0 @@
-export interface StoreVO {
-  /**
-   * 序号
-   */
-  id: string | number;
-
-  /**
-   * LOGO
-   */
-  logo: number;
-
-  /**
-   * LOGOUrl
-   */
-  logoUrl: string;
-  /**
-   * 营业执照
-   */
-  businessLicense: number;
-
-  /**
-   * 营业执照Url
-   */
-  businessLicenseUrl: string;
-  /**
-   * 门店名称
-   */
-  name: string;
-
-  /**
-   * 商户分类
-   */
-  tenantCatergories: number;
-
-  /**
-   * 开始营业时间
-   */
-  startBusinessTime: string;
-
-  /**
-   * 结束营业时间
-   */
-  endBusinessTime: string;
-
-  /**
-   * 联系人
-   */
-  contact: string;
-
-  /**
-   * 联系电话
-   */
-  contactNumber: string;
-
-  /**
-   * 有效期至
-   */
-  validity: string | number;
-
-  /**
-   * 归属站点
-   */
-  site: number;
-
-  /**
-   * 详细地址
-   */
-  detailAddress: string;
-
-  /**
-   * 状态
-   */
-  status: number;
-
-  /**
-   * 服务项目
-   */
-  services: number[];
-
-  /**
-   * 商户ID
-   */
-  tenantId: string;
-
-  /**
-   * 服务单
-   */
-  serviceOrder: number | string;
-
-  /**
-   * 区域编码
-   */
-  areaCode?: string;
-
-}
-
-export interface StoreForm extends BaseEntity {
-  /**
-   * 序号
-   */
-  id?: string | number;
-
-  /**
-   * LOGO
-   */
-  logo?: number;
-
-  /**
-   * 营业执照
-   */
-  businessLicense?: number;
-
-  /**
-   * 门店名称
-   */
-  name?: string;
-
-  /**
-   * 商户分类
-   */
-  tenantCatergories?: number;
-
-  /**
-   * 开始营业时间
-   */
-  startBusinessTime?: string;
-
-  /**
-   * 结束营业时间
-   */
-  endBusinessTime?: string;
-
-  /**
-   * 联系人
-   */
-  contact?: string;
-
-  /**
-   * 联系电话
-   */
-  contactNumber?: string;
-
-  /**
-   * 有效期至
-   */
-  validity?: string | number;
-
-  /**
-   * 归属站点
-   */
-  site?: number;
-
-  /**
-   * 详细地址
-   */
-  detailAddress?: string;
-
-  /**
-   * 状态
-   */
-  status?: number;
-
-  /**
-   * 经度
-   */
-  longitude?: number;
-
-  /**
-   * 维度
-   */
-  latitude?: number;
-
-  /**
-   * 服务项目
-   */
-  services?: number[];
-
-  /**
-   * 商户ID
-   */
-  tenantId?: string;
-
-  /**
-   * 区域ID
-   */
-  regionId?: number;
-
-  /**
-   * 区域编码
-   */
-  areaCode?: string;
-
-}
-
-export interface StoreQuery extends PageQuery {
-
-  /**
-   * 营业执照
-   */
-  businessLicense?: number;
-
-  /**
-   * 门店名称
-   */
-  name?: string;
-
-  /**
-   * 商户分类
-   */
-  tenantCatergories?: number;
-
-  /**
-   * 联系人
-   */
-  contact?: string;
-
-  /**
-   * 有效期至
-   */
-  validity?: string | number;
-
-  /**
-   * 归属站点
-   */
-  site?: number;
-
-  /**
-   * 状态
-   */
-  status?: number;
-
-  /**
-   * 日期范围参数
-   */
-  params?: any;
-}
-
-export interface SysStorePageBo extends PageQuery {
-  storeOrContact?: string;
-  area?: number | string;
-  station?: number | string;
-  status?: number;
-  params?: any;
-}
-
-export interface StoreStatusVO {
-  value: number;
-  label: string;
-  style: string;
-}
-
-export interface StoreOrderQuery extends PageQuery {
-  name?: string;
-}
-
-export interface StoreOrderVO {
-  id: number;
-  name: string;
-  services: number[];
-}

+ 0 - 118
template/api/system/tenant/index.ts

@@ -1,118 +0,0 @@
-import request from '@/utils/request';
-import { TenantForm, TenantQuery, TenantVO } from './types';
-import { AxiosPromise } from 'axios';
-
-// 查询租户列表
-export function listTenant(query: TenantQuery): AxiosPromise<TenantVO[]> {
-  return request({
-    url: '/system/tenant/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 查询租户详细
-export function getTenant(id: string | number): AxiosPromise<TenantVO> {
-  return request({
-    url: '/system/tenant/' + id,
-    method: 'get'
-  });
-}
-
-// 新增租户
-export function addTenant(data: TenantForm) {
-  return request({
-    url: '/system/tenant',
-    method: 'post',
-    headers: {
-      isEncrypt: true,
-      repeatSubmit: false
-    },
-    data: data
-  });
-}
-
-// 修改租户
-export function updateTenant(data: TenantForm) {
-  return request({
-    url: '/system/tenant',
-    method: 'put',
-    data: data
-  });
-}
-
-// 租户状态修改
-export function changeTenantStatus(id: string | number, tenantId: string | number, status: string) {
-  const data = {
-    id,
-    tenantId,
-    status
-  };
-  return request({
-    url: '/system/tenant/changeStatus',
-    method: 'put',
-    data: data
-  });
-}
-
-// 删除租户
-export function delTenant(id: string | number | Array<string | number>) {
-  return request({
-    url: '/system/tenant/' + id,
-    method: 'delete'
-  });
-}
-
-// 动态切换租户
-export function dynamicTenant(tenantId: string | number) {
-  return request({
-    url: '/system/tenant/dynamic/' + tenantId,
-    method: 'get'
-  });
-}
-
-// 清除动态租户
-export function dynamicClear() {
-  return request({
-    url: '/system/tenant/dynamic/clear',
-    method: 'get'
-  });
-}
-
-// 同步租户套餐
-export function syncTenantPackage(tenantId: string | number, packageId: string | number) {
-  const data = {
-    tenantId,
-    packageId
-  };
-  return request({
-    url: '/system/tenant/syncTenantPackage',
-    method: 'get',
-    params: data
-  });
-}
-
-// 同步租户字典
-export function syncTenantDict() {
-  return request({
-    url: '/system/tenant/syncTenantDict',
-    method: 'get'
-  });
-}
-
-// 同步租户字典
-export function syncTenantConfig() {
-  return request({
-    url: '/system/tenant/syncTenantConfig',
-    method: 'get'
-  });
-}
-
-// 查询门店品牌列表
-export function listOnStore(query?: any) {
-  return request({
-    url: '/system/tenant/listOnStore',
-    method: 'get',
-    params: query
-  });
-}

+ 0 - 46
template/api/system/tenant/types.ts

@@ -1,46 +0,0 @@
-export interface TenantVO extends BaseEntity {
-  id: number | string;
-  tenantId: number | string;
-  username: string;
-  contactUserName: string;
-  contactPhone: string;
-  companyName: string;
-  licenseNumber: string;
-  address: string;
-  domain: string;
-  intro: string;
-  remark: string;
-  packageId: string | number;
-  expireTime: string;
-  accountCount: number;
-  status: string;
-}
-
-export interface TenantQuery extends PageQuery {
-  tenantId: string | number;
-
-  contactUserName: string;
-
-  contactPhone: string;
-
-  companyName: string;
-}
-
-export interface TenantForm {
-  id: number | string | undefined;
-  tenantId: number | string | undefined;
-  username: string;
-  password: string;
-  contactUserName: string;
-  contactPhone: string;
-  companyName: string;
-  licenseNumber: string;
-  domain: string;
-  address: string;
-  intro: string;
-  remark: string;
-  packageId: string | number;
-  expireTime: string;
-  accountCount: number;
-  status: string;
-}

+ 0 - 75
template/api/system/tenantCategories/index.ts

@@ -1,75 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { TenantCategoriesVO, TenantCategoriesForm, TenantCategoriesQuery, SysTenantCategoriesOnStoreVo } from '@/api/system/tenantCategories/types';
-
-/**
- * 查询商户分类列表
- * @param query
- * @returns {*}
- */
-
-export const listTenantCategories = (query?: TenantCategoriesQuery): AxiosPromise<TenantCategoriesVO[]> => {
-  return request({
-    url: '/system/tenantCategories/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询商户分类详细
- * @param id
- */
-export const getTenantCategories = (id: string | number): AxiosPromise<TenantCategoriesVO> => {
-  return request({
-    url: '/system/tenantCategories/' + id,
-    method: 'get'
-  });
-};
-
-/**
- * 新增商户分类
- * @param data
- */
-export const addTenantCategories = (data: TenantCategoriesForm) => {
-  return request({
-    url: '/system/tenantCategories',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改商户分类
- * @param data
- */
-export const updateTenantCategories = (data: TenantCategoriesForm) => {
-  return request({
-    url: '/system/tenantCategories',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除商户分类
- * @param id
- */
-export const delTenantCategories = (id: string | number | Array<string | number>) => {
-  return request({
-    url: '/system/tenantCategories/' + id,
-    method: 'delete'
-  });
-};
-
-/**
- * 获取商户分类的列表
- * @Author Huanyi
- */
-export const listOnStore = (query: PageQuery): AxiosPromise<SysTenantCategoriesOnStoreVo[]> => {
-  return request({
-    url: '/system/tenantCategories/listOnStore',
-    method: 'GET',
-    params: query
-  });
-};

+ 0 - 113
template/api/system/tenantCategories/types.ts

@@ -1,113 +0,0 @@
-export interface TenantCategoriesVO {
-  /**
-   * 序号
-   */
-  id: string | number;
-
-  /**
-   * 分类名称
-   */
-  name: string;
-
-  /**
-   * 排序
-   */
-  sort: number;
-
-  /**
-   * 图标
-   */
-  icon: number;
-
-  /**
-   * 图标Url
-   */
-  iconUrl: string;
-  /**
-   * 状态
-   */
-  status: number;
-
-  /**
-   * 创建者
-   */
-  createBy: number;
-
-  /**
-   * 创建时间
-   */
-  createTime: string;
-
-  /**
-   * 更新者
-   */
-  updateBy: number;
-
-  /**
-   * 更新时间
-   */
-  updateTime: string;
-
-}
-
-export interface TenantCategoriesForm extends BaseEntity {
-  /**
-   * 序号
-   */
-  id?: string | number;
-
-  /**
-   * 分类名称
-   */
-  name?: string;
-
-  /**
-   * 排序
-   */
-  sort?: number;
-
-  /**
-   * 图标
-   */
-  icon?: number;
-
-  /**
-   * 状态
-   */
-  status?: number;
-
-}
-
-export interface TenantCategoriesQuery extends PageQuery {
-
-  /**
-   * 分类名称
-   */
-  name?: string;
-
-  /**
-   * 状态
-   */
-  status?: number;
-
-  /**
-   * 创建时间
-   */
-  createTime?: string;
-
-  /**
-   * 更新时间
-   */
-  updateTime?: string;
-
-  /**
-   * 日期范围参数
-   */
-  params?: any;
-}
-
-export interface SysTenantCategoriesOnStoreVo {
-  id?: number | string;
-  name?: string;
-}
-

+ 0 - 67
template/api/system/tenantPackage/index.ts

@@ -1,67 +0,0 @@
-import request from '@/utils/request';
-import { TenantPkgForm, TenantPkgQuery, TenantPkgVO } from './types';
-import { AxiosPromise } from 'axios';
-
-// 查询租户套餐列表
-export function listTenantPackage(query?: TenantPkgQuery): AxiosPromise<TenantPkgVO[]> {
-  return request({
-    url: '/system/tenant/package/list',
-    method: 'get',
-    params: query
-  });
-}
-
-// 查询租户套餐下拉选列表
-export function selectTenantPackage(): AxiosPromise<TenantPkgVO[]> {
-  return request({
-    url: '/system/tenant/package/selectList',
-    method: 'get'
-  });
-}
-
-// 查询租户套餐详细
-export function getTenantPackage(packageId: string | number): AxiosPromise<TenantPkgVO> {
-  return request({
-    url: '/system/tenant/package/' + packageId,
-    method: 'get'
-  });
-}
-
-// 新增租户套餐
-export function addTenantPackage(data: TenantPkgForm) {
-  return request({
-    url: '/system/tenant/package',
-    method: 'post',
-    data: data
-  });
-}
-
-// 修改租户套餐
-export function updateTenantPackage(data: TenantPkgForm) {
-  return request({
-    url: '/system/tenant/package',
-    method: 'put',
-    data: data
-  });
-}
-
-// 租户套餐状态修改
-export function changePackageStatus(packageId: number | string, status: string) {
-  const data = {
-    packageId,
-    status
-  };
-  return request({
-    url: '/system/tenant/package/changeStatus',
-    method: 'put',
-    data: data
-  });
-}
-
-// 删除租户套餐
-export function delTenantPackage(packageId: string | number | Array<string | number>) {
-  return request({
-    url: '/system/tenant/package/' + packageId,
-    method: 'delete'
-  });
-}

+ 0 - 20
template/api/system/tenantPackage/types.ts

@@ -1,20 +0,0 @@
-export interface TenantPkgVO extends BaseEntity {
-  packageId: string | number;
-  packageName: string;
-  menuIds: string;
-  remark: string;
-  menuCheckStrictly: boolean;
-  status: string;
-}
-
-export interface TenantPkgQuery extends PageQuery {
-  packageName: string;
-}
-
-export interface TenantPkgForm {
-  packageId: string | number | undefined;
-  packageName: string;
-  menuIds: string;
-  remark: string;
-  menuCheckStrictly: boolean;
-}

+ 0 - 229
template/api/system/user/index.ts

@@ -1,229 +0,0 @@
-import { DeptTreeVO } from './../dept/types';
-import { RoleVO } from '@/api/system/role/types';
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { UserForm, UserQuery, UserVO, UserInfoVO } from './types';
-import { parseStrEmpty } from '@/utils/ruoyi';
-
-/**
- * 查询用户列表
- * @param query
- */
-export const listUser = (query: UserQuery): AxiosPromise<UserVO[]> => {
-  return request({
-    url: '/system/user/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 通过用户ids查询用户
- * @param userIds
- */
-export const optionSelect = (userIds: (number | string)[]): AxiosPromise<UserVO[]> => {
-  return request({
-    url: '/system/user/optionselect?userIds=' + userIds,
-    method: 'get'
-  });
-};
-
-/**
- * 获取用户详情
- * @param userId
- */
-export const getUser = (userId?: string | number): AxiosPromise<UserInfoVO> => {
-  return request({
-    url: '/system/user/' + parseStrEmpty(userId),
-    method: 'get'
-  });
-};
-
-/**
- * 新增用户
- */
-export const addUser = (data: UserForm) => {
-  return request({
-    url: '/system/user',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改用户
- */
-export const updateUser = (data: UserForm) => {
-  return request({
-    url: '/system/user',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除用户
- * @param userId 用户ID
- */
-export const delUser = (userId: Array<string | number> | string | number) => {
-  return request({
-    url: '/system/user/' + userId,
-    method: 'delete'
-  });
-};
-
-/**
- * 用户密码重置
- * @param userId 用户ID
- * @param password 密码
- */
-export const resetUserPwd = (userId: string | number, password: string) => {
-  const data = {
-    userId,
-    password
-  };
-  return request({
-    url: '/system/user/resetPwd',
-    method: 'put',
-    headers: {
-      isEncrypt: true,
-      repeatSubmit: false
-    },
-    data: data
-  });
-};
-
-/**
- * 用户状态修改
- * @param userId 用户ID
- * @param status 用户状态
- */
-export const changeUserStatus = (userId: number | string, status: string) => {
-  const data = {
-    userId,
-    status
-  };
-  return request({
-    url: '/system/user/changeStatus',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 查询用户个人信息
- */
-export const getUserProfile = (): AxiosPromise<UserInfoVO> => {
-  return request({
-    url: '/system/user/profile',
-    method: 'get'
-  });
-};
-
-/**
- * 修改用户个人信息
- * @param data 用户信息
- */
-export const updateUserProfile = (data: UserForm) => {
-  return request({
-    url: '/system/user/profile',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 用户密码重置
- * @param oldPassword 旧密码
- * @param newPassword 新密码
- */
-export const updateUserPwd = (oldPassword: string, newPassword: string) => {
-  const data = {
-    oldPassword,
-    newPassword
-  };
-  return request({
-    url: '/system/user/profile/updatePwd',
-    method: 'put',
-    headers: {
-      isEncrypt: true,
-      repeatSubmit: false
-    },
-    data: data
-  });
-};
-
-/**
- * 用户头像上传
- * @param data 头像文件
- */
-export const uploadAvatar = (data: FormData) => {
-  return request({
-    url: '/system/user/profile/avatar',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 查询授权角色
- * @param userId 用户ID
- */
-export const getAuthRole = (userId: string | number): AxiosPromise<{ user: UserVO; roles: RoleVO[] }> => {
-  return request({
-    url: '/system/user/authRole/' + userId,
-    method: 'get'
-  });
-};
-
-/**
- * 保存授权角色
- * @param data 用户ID
- */
-export const updateAuthRole = (data: { userId: string; roleIds: string }) => {
-  return request({
-    url: '/system/user/authRole',
-    method: 'put',
-    params: data
-  });
-};
-
-/**
- * 查询当前部门的所有用户信息
- * @param deptId
- */
-export const listUserByDeptId = (deptId: string | number): AxiosPromise<UserVO[]> => {
-  return request({
-    url: '/system/user/list/dept/' + deptId,
-    method: 'get'
-  });
-};
-
-/**
- * 查询部门下拉树结构
- */
-export const deptTreeSelect = (): AxiosPromise<DeptTreeVO[]> => {
-  return request({
-    url: '/system/user/deptTree',
-    method: 'get'
-  });
-};
-
-export default {
-  listUser,
-  getUser,
-  optionSelect,
-  addUser,
-  updateUser,
-  delUser,
-  resetUserPwd,
-  changeUserStatus,
-  getUserProfile,
-  updateUserProfile,
-  updateUserPwd,
-  uploadAvatar,
-  getAuthRole,
-  updateAuthRole,
-  deptTreeSelect,
-  listUserByDeptId
-};

+ 0 - 87
template/api/system/user/types.ts

@@ -1,87 +0,0 @@
-import { RoleVO } from '@/api/system/role/types';
-import { PostVO } from '@/api/system/post/types';
-
-/**
- * 用户信息
- */
-export interface UserInfo {
-  user: UserVO;
-  roles: string[];
-  permissions: string[];
-}
-
-/**
- * 用户查询对象类型
- */
-export interface UserQuery extends PageQuery {
-  userName?: string;
-  nickName?: string;
-  phonenumber?: string;
-  status?: string;
-  deptId?: string | number;
-  roleId?: string | number;
-  userIds?:  string | number | (string | number)[] | undefined;
-}
-
-/**
- * 用户返回对象
- */
-export interface UserVO extends BaseEntity {
-  userId: string | number;
-  tenantId: string;
-  deptId: number;
-  userName: string;
-  nickName: string;
-  userType: string;
-  email: string;
-  phonenumber: string;
-  sex: string;
-  avatar: string;
-  avatarUrl: string;
-  status: string;
-  delFlag: string;
-  loginIp: string;
-  loginDate: string;
-  remark: string;
-  deptName: string;
-  roles: RoleVO[];
-  roleIds: any;
-  postIds: any;
-  roleId: any;
-  admin: boolean;
-}
-
-/**
- * 用户表单类型
- */
-export interface UserForm {
-  id?: string;
-  userId?: string;
-  deptId?: number;
-  userName: string;
-  nickName?: string;
-  password: string;
-  phonenumber?: string;
-  email?: string;
-  sex?: string;
-  status: string;
-  remark?: string;
-  postIds: string[];
-  roleIds: string[];
-}
-
-export interface UserInfoVO {
-  user: UserVO;
-  roles: RoleVO[];
-  roleIds: string[];
-  posts: PostVO[];
-  postIds: string[];
-  roleGroup: string;
-  postGroup: string;
-}
-
-export interface ResetPwdForm {
-  oldPassword: string;
-  newPassword: string;
-  confirmPassword: string;
-}

+ 0 - 86
template/api/tool/gen/index.ts

@@ -1,86 +0,0 @@
-import request from '@/utils/request';
-import { DbTableQuery, DbTableVO, TableQuery, TableVO, GenTableVO, DbTableForm } from './types';
-import { AxiosPromise } from 'axios';
-
-// 查询生成表数据
-export const listTable = (query: TableQuery): AxiosPromise<TableVO[]> => {
-  return request({
-    url: '/tool/gen/list',
-    method: 'get',
-    params: query
-  });
-};
-// 查询db数据库列表
-export const listDbTable = (query: DbTableQuery): AxiosPromise<DbTableVO[]> => {
-  return request({
-    url: '/tool/gen/db/list',
-    method: 'get',
-    params: query
-  });
-};
-
-// 查询表详细信息
-export const getGenTable = (tableId: string | number): AxiosPromise<GenTableVO> => {
-  return request({
-    url: '/tool/gen/' + tableId,
-    method: 'get'
-  });
-};
-
-// 修改代码生成信息
-export const updateGenTable = (data: DbTableForm): AxiosPromise<GenTableVO> => {
-  return request({
-    url: '/tool/gen',
-    method: 'put',
-    data: data
-  });
-};
-
-// 导入表
-export const importTable = (data: { tables: string; dataName: string }): AxiosPromise<GenTableVO> => {
-  return request({
-    url: '/tool/gen/importTable',
-    method: 'post',
-    params: data
-  });
-};
-
-// 预览生成代码
-export const previewTable = (tableId: string | number) => {
-  return request({
-    url: '/tool/gen/preview/' + tableId,
-    method: 'get'
-  });
-};
-
-// 删除表数据
-export const delTable = (tableId: string | number | Array<string | number>) => {
-  return request({
-    url: '/tool/gen/' + tableId,
-    method: 'delete'
-  });
-};
-
-// 生成代码(自定义路径)
-export const genCode = (tableId: string | number) => {
-  return request({
-    url: '/tool/gen/genCode/' + tableId,
-    method: 'get'
-  });
-};
-
-// 同步数据库
-export const synchDb = (tableId: string | number) => {
-  return request({
-    url: '/tool/gen/synchDb/' + tableId,
-    method: 'get'
-  });
-};
-
-// 获取数据源名称
-export const getDataNames = () => {
-  return request({
-    url: '/tool/gen/getDataNames',
-    method: 'get'
-  });
-};

+ 0 - 181
template/api/tool/gen/types.ts

@@ -1,181 +0,0 @@
-export interface TableVO extends BaseEntity {
-  createDept: number | string;
-  tableId: string | number;
-  dataName: string;
-  tableName: string;
-  tableComment: string;
-  subTableName?: any;
-  subTableFkName?: any;
-  className: string;
-  tplCategory: string;
-  packageName: string;
-  moduleName: string;
-  businessName: string;
-  functionName: string;
-  functionAuthor: string;
-  genType: string;
-  genPath: string;
-  pkColumn?: any;
-  columns?: any;
-  options?: any;
-  remark?: any;
-  treeCode?: any;
-  treeParentCode?: any;
-  treeName?: any;
-  menuIds?: any;
-  parentMenuId?: any;
-  parentMenuName?: any;
-  tree: boolean;
-  crud: boolean;
-}
-
-export interface TableQuery extends PageQuery {
-  tableName: string;
-  tableComment: string;
-  dataName: string;
-}
-
-export interface DbColumnVO extends BaseEntity {
-  createDept?: any;
-  columnId?: any;
-  tableId?: any;
-  columnName?: any;
-  columnComment?: any;
-  columnType?: any;
-  javaType?: any;
-  javaField?: any;
-  isPk?: any;
-  isIncrement?: any;
-  isRequired?: any;
-  isInsert?: any;
-  isEdit?: any;
-  isList?: any;
-  isQuery?: any;
-  queryType?: any;
-  htmlType?: any;
-  dictType?: any;
-  sort?: any;
-  increment: boolean;
-  capJavaField?: any;
-  usableColumn: boolean;
-  superColumn: boolean;
-  list: boolean;
-  pk: boolean;
-  insert: boolean;
-  edit: boolean;
-  query: boolean;
-  required: boolean;
-}
-
-export interface DbTableVO {
-  createDept?: any;
-  tableId?: any;
-  tableName: string;
-  tableComment: string;
-  subTableName?: any;
-  subTableFkName?: any;
-  className?: any;
-  tplCategory?: any;
-  packageName?: any;
-  moduleName?: any;
-  businessName?: any;
-  functionName?: any;
-  functionAuthor?: any;
-  genType?: any;
-  genPath?: any;
-  pkColumn?: any;
-  columns: DbColumnVO[];
-  options?: any;
-  remark?: any;
-  treeCode?: any;
-  treeParentCode?: any;
-  treeName?: any;
-  menuIds?: any;
-  parentMenuId?: any;
-  parentMenuName?: any;
-  tree: boolean;
-  crud: boolean;
-  platformId?: number;
-}
-
-export interface DbTableQuery extends PageQuery {
-  dataName: string;
-  tableName: string;
-  tableComment: string;
-}
-
-export interface GenTableVO {
-  info: DbTableVO;
-  rows: DbColumnVO[];
-  tables: DbTableVO[];
-}
-
-export interface DbColumnForm extends BaseEntity {
-  createDept: number;
-  columnId: string;
-  tableId: string;
-  columnName: string;
-  columnComment: string;
-  columnType: string;
-  javaType: string;
-  javaField: string;
-  isPk: string;
-  isIncrement: string;
-  isRequired: string;
-  isInsert?: any;
-  isEdit: string;
-  isList: string;
-  isQuery?: any;
-  queryType: string;
-  htmlType: string;
-  dictType: string;
-  sort: number;
-  increment: boolean;
-  capJavaField: string;
-  usableColumn: boolean;
-  superColumn: boolean;
-  list: boolean;
-  pk: boolean;
-  insert: boolean;
-  edit: boolean;
-  query: boolean;
-  required: boolean;
-}
-
-export interface DbParamForm {
-  treeCode?: any;
-  treeName?: any;
-  treeParentCode?: any;
-  parentMenuId: string;
-}
-
-export interface DbTableForm extends BaseEntity {
-  createDept?: any;
-  tableId: string | string;
-  tableName: string;
-  tableComment: string;
-  subTableName?: any;
-  subTableFkName?: any;
-  className: string;
-  tplCategory: string;
-  packageName: string;
-  moduleName: string;
-  businessName: string;
-  functionName: string;
-  functionAuthor: string;
-  genType: string;
-  genPath: string;
-  pkColumn?: any;
-  columns: DbColumnForm[];
-  options: string;
-  remark?: any;
-  treeCode?: any;
-  treeParentCode?: any;
-  treeName?: any;
-  menuIds?: any;
-  parentMenuId: string;
-  parentMenuName?: any;
-  tree: boolean;
-  crud: boolean;
-  params: DbParamForm;
-}

+ 0 - 60
template/api/types.ts

@@ -1,60 +0,0 @@
-/**
- * 注册
- */
-export type RegisterForm = {
-  tenantId: string;
-  username: string;
-  password: string;
-  confirmPassword?: string;
-  code?: string;
-  uuid?: string;
-  userType?: string;
-};
-
-/**
- * 登录请求
- */
-export interface LoginData {
-  platformId?: number;
-  tenantId?: string;
-  username?: string;
-  password?: string;
-  rememberMe?: boolean;
-  socialCode?: string;
-  socialState?: string;
-  source?: string;
-  code?: string;
-  uuid?: string;
-  clientId: string;
-  grantType: string;
-}
-
-/**
- * 登录响应
- */
-export interface LoginResult {
-  access_token: string;
-}
-
-/**
- * 验证码返回
- */
-export interface VerifyCodeResult {
-  captchaEnabled: boolean;
-  uuid?: string;
-  img?: string;
-}
-
-/**
- * 租户
- */
-export interface TenantVO {
-  companyName: string;
-  domain: any;
-  tenantId: string;
-}
-
-export interface TenantInfo {
-  tenantEnabled: boolean;
-  voList: TenantVO[];
-}

+ 0 - 76
template/api/workflow/category/index.ts

@@ -1,76 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { CategoryVO, CategoryForm, CategoryQuery, CategoryTreeVO } from '@/api/workflow/category/types';
-
-/**
- * 查询流程分类列表
- * @param query
- * @returns {*}
- */
-
-export const listCategory = (query?: CategoryQuery): AxiosPromise<CategoryVO[]> => {
-  return request({
-    url: '/workflow/category/list',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询流程分类详细
- * @param categoryId
- */
-export const getCategory = (categoryId: string | number): AxiosPromise<CategoryVO> => {
-  return request({
-    url: '/workflow/category/' + categoryId,
-    method: 'get'
-  });
-};
-
-/**
- * 新增流程分类
- * @param data
- */
-export const addCategory = (data: CategoryForm) => {
-  return request({
-    url: '/workflow/category',
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改流程分类
- * @param data
- */
-export const updateCategory = (data: CategoryForm) => {
-  return request({
-    url: '/workflow/category',
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 删除流程分类
- * @param categoryId
- */
-export const delCategory = (categoryId: string | number | Array<string | number>) => {
-  return request({
-    url: '/workflow/category/' + categoryId,
-    method: 'delete'
-  });
-};
-
-/**
- * 获取流程分类树列表
- * @param query 流程实例id
- * @returns
- */
-export const categoryTree = (query?: CategoryForm): AxiosPromise<CategoryTreeVO[]> => {
-  return request({
-    url: `/workflow/category/categoryTree`,
-    method: 'get',
-    params: query
-  });
-};

+ 0 - 67
template/api/workflow/category/types.ts

@@ -1,67 +0,0 @@
-export interface CategoryTreeVO {
-  id: number | string;
-  label: string;
-  parentId: number | string;
-  weight: number;
-  children: CategoryTreeVO[];
-}
-export interface CategoryVO {
-  /**
-   * 流程分类ID
-   */
-  categoryId: string | number;
-
-  /**
-   * 父级id
-   */
-  parentId: string | number;
-
-  /**
-   * 流程分类名称
-   */
-  categoryName: string;
-
-  /**
-   * 显示顺序
-   */
-  orderNum: number;
-
-  /**
-   * 创建时间
-   */
-  createTime: string;
-
-  /**
-   * 子对象
-   */
-  children: CategoryVO[];
-}
-
-export interface CategoryForm extends BaseEntity {
-  /**
-   * 流程分类ID
-   */
-  categoryId?: string | number;
-
-  /**
-   * 流程分类名称
-   */
-  categoryName?: string;
-
-  /**
-   * 父流程分类id
-   */
-  parentId?: string | number;
-
-  /**
-   * 显示顺序
-   */
-  orderNum?: number;
-}
-
-export interface CategoryQuery {
-  /**
-   * 流程分类名称
-   */
-  categoryName?: string;
-}

+ 0 - 170
template/api/workflow/definition/index.ts

@@ -1,170 +0,0 @@
-import request from '@/utils/request';
-import { FlowDefinitionQuery, definitionXmlVO, FlowDefinitionForm, FlowDefinitionVo } from '@/api/workflow/definition/types';
-import { AxiosPromise } from 'axios';
-
-/**
- * 获取流程定义列表
- * @param query 流程实例id
- * @returns
- */
-export const listDefinition = (query: FlowDefinitionQuery): AxiosPromise<FlowDefinitionVo[]> => {
-  return request({
-    url: `/workflow/definition/list`,
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询未发布的流程定义列表
- * @param query 流程实例id
- * @returns
- */
-export const unPublishList = (query: FlowDefinitionQuery): AxiosPromise<FlowDefinitionVo[]> => {
-  return request({
-    url: `/workflow/definition/unPublishList`,
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 通过流程定义id获取xml
- * @param definitionId 流程定义id
- * @returns
- */
-export const definitionXml = (definitionId: string): AxiosPromise<definitionXmlVO> => {
-  return request({
-    url: `/workflow/definition/definitionXml/${definitionId}`,
-    method: 'get'
-  });
-};
-
-/**
- * 删除流程定义
- * @param id 流程定义id
- * @returns
- */
-export const deleteDefinition = (id: string | string[]) => {
-  return request({
-    url: `/workflow/definition/${id}`,
-    method: 'delete'
-  });
-};
-
-/**
- * 挂起/激活
- * @param definitionId 流程定义id
- * @param activityStatus 状态
- * @returns
- */
-export const active = (definitionId: string, activityStatus: boolean) => {
-  return request({
-    url: `/workflow/definition/active/${definitionId}`,
-    method: 'put',
-    params: {
-      active: activityStatus
-    }
-  });
-};
-
-/**
- * 通过zip或xml部署流程定义
- * @returns
- */
-export function importDef(data: any) {
-  return request({
-    url: '/workflow/definition/importDef',
-    method: 'post',
-    data: data,
-    headers: {
-      repeatSubmit: false
-    }
-  });
-}
-
-/**
- * 发布流程定义
- * @param id 流程定义id
- * @returns
- */
-export const publish = (id: string) => {
-  return request({
-    url: `/workflow/definition/publish/${id}`,
-    method: 'put'
-  });
-};
-
-/**
- * 取消发布流程定义
- * @param id 流程定义id
- * @returns
- */
-export const unPublish = (id: string) => {
-  return request({
-    url: `/workflow/definition/unPublish/${id}`,
-    method: 'put'
-  });
-};
-
-/**
- * 获取流程定义xml字符串
- * @param id 流程定义id
- * @returns
- */
-export const xmlString = (id: string) => {
-  return request({
-    url: `/workflow/definition/xmlString/${id}`,
-    method: 'get'
-  });
-};
-
-/**
- * 新增
- * @param data 参数
- * @returns
- */
-export const add = (data: FlowDefinitionForm) => {
-  return request({
-    url: `/workflow/definition`,
-    method: 'post',
-    data: data
-  });
-};
-
-/**
- * 修改
- * @param data 参数
- * @returns
- */
-export const edit = (data: FlowDefinitionForm) => {
-  return request({
-    url: `/workflow/definition`,
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 查询详情
- * @param id 参数
- * @returns
- */
-export const getInfo = (id: number | string) => {
-  return request({
-    url: `/workflow/definition/${id}`,
-    method: 'get'
-  });
-};
-
-/**
- * 复制流程定义
- * @param id 流程定义id
- * @returns
- */
-export const copy = (id: string) => {
-  return request({
-    url: `/workflow/definition/copy/${id}`,
-    method: 'post'
-  });
-};

+ 0 - 34
template/api/workflow/definition/types.ts

@@ -1,34 +0,0 @@
-export interface FlowDefinitionQuery extends PageQuery {
-  flowCode?: string;
-  flowName?: string;
-  category: string | number;
-  isPublish?: number;
-}
-
-export interface FlowDefinitionVo {
-  id: string;
-  flowName: string;
-  flowCode: string;
-  formPath: string;
-  version: string;
-  isPublish: number;
-  activityStatus: number;
-  createTime: Date;
-  updateTime: Date;
-}
-
-export interface FlowDefinitionForm {
-  id: string;
-  flowName: string;
-  flowCode: string;
-  category: string;
-  ext: string;
-  formPath: string;
-  formCustom: string;
-  modelValue: string;
-}
-
-export interface definitionXmlVO {
-  xml: string[];
-  xmlStr: string;
-}

+ 0 - 125
template/api/workflow/instance/index.ts

@@ -1,125 +0,0 @@
-import request from '@/utils/request';
-import { FlowInstanceQuery, FlowInstanceVO } from '@/api/workflow/instance/types';
-import { AxiosPromise } from 'axios';
-
-/**
- * 查询运行中实例列表
- * @param query
- * @returns {*}
- */
-export const pageByRunning = (query: FlowInstanceQuery): AxiosPromise<FlowInstanceVO[]> => {
-  return request({
-    url: '/workflow/instance/pageByRunning',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 查询已完成实例列表
- * @param query
- * @returns {*}
- */
-export const pageByFinish = (query: FlowInstanceQuery): AxiosPromise<FlowInstanceVO[]> => {
-  return request({
-    url: '/workflow/instance/pageByFinish',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 通过业务id获取历史流程图
- */
-export const flowHisTaskList = (businessId: string | number) => {
-  return request({
-    url: `/workflow/instance/flowHisTaskList/${businessId}` + '?t' + Math.random(),
-    method: 'get'
-  });
-};
-
-/**
- * 分页查询当前登录人单据
- * @param query
- * @returns {*}
- */
-export const pageByCurrent = (query: FlowInstanceQuery): AxiosPromise<FlowInstanceVO[]> => {
-  return request({
-    url: '/workflow/instance/pageByCurrent',
-    method: 'get',
-    params: query
-  });
-};
-
-/**
- * 撤销流程
- * @param data 参数
- * @returns
- */
-export const cancelProcessApply = (data: any) => {
-  return request({
-    url: `/workflow/instance/cancelProcessApply`,
-    method: 'put',
-    data: data
-  });
-};
-
-/**
- * 获取流程变量
- * @param instanceId 实例id
- * @returns
- */
-export const instanceVariable = (instanceId: string | number) => {
-  return request({
-    url: `/workflow/instance/instanceVariable/${instanceId}`,
-    method: 'get'
-  });
-};
-
-/**
- * 删除
- * @param instanceIds 流程实例id
- * @returns
- */
-export const deleteByInstanceIds = (instanceIds: Array<string | number> | string | number) => {
-  return request({
-    url: `/workflow/instance/deleteByInstanceIds/${instanceIds}`,
-    method: 'delete'
-  });
-};
-
-/**
- * 删除历史流程实例
- * @param instanceIds
- */
-export const deleteHisByInstanceIds = (instanceIds: Array<string | number> | string | number) => {
-  return request({
-    url: `/workflow/instance/deleteHisByInstanceIds/${instanceIds}`,
-    method: 'delete'
-  });
-};
-
-/**
- * 作废流程
- * @param data 参数
- * @returns
- */
-export const invalid = (data: any) => {
-  return request({
-    url: `/workflow/instance/invalid`,
-    method: 'post',
-    data: data
-  });
-};
-/**
- * 修改流程变量
- * @param data 参数
- * @returns
- */
-export const updateVariable = (data: any) => {
-  return request({
-    url: `/workflow/instance/updateVariable`,
-    method: 'put',
-    data: data
-  });
-};

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini