Browse Source

修改配置环境

sgc 3 tuần trước cách đây
mục cha
commit
1b844920da

+ 1 - 1
.env.production

@@ -31,4 +31,4 @@ VITE_API_URL_SECOND = /api/alienSecond
 
 
 # 生产环境跨域代理,支持配置多个
-VITE_PROXY = [["/alienStore","https://api.ailien.shop/alienStore"]]
+VITE_PROXY = [["/alienLawyer","https://192.168.2.251:8999"]]

+ 15 - 6
src/views/lawyerManagement/lawyer/index.vue

@@ -64,14 +64,18 @@ const columns = reactive<ColumnProps<any>[]>([
   { label: "联系电话", prop: "phone", width: 140, search: { el: "input", props: { placeholder: "请输入联系电话" } } },
   {
     label: "从业时间",
-    prop: "practiceStartDate",
-    width: 140,
+    prop: "time",
+    isShow: false,
     search: {
       el: "date-picker",
       props: {
-        type: "date",
+        type: "datetimerange",
         valueFormat: "YYYY-MM-DD",
-        placeholder: "请选择从业时间"
+        format: "YYYY-MM-DD",
+        startPlaceholder: "开始日期",
+        endPlaceholder: "结束日期",
+        rangeSeparator: "至",
+        unlinkPanels: true
       }
     }
   },
@@ -100,6 +104,11 @@ const getTableList = async (params: any) => {
   if (!isAdmin.value && loginFirmId.value) {
     newParams.firmId = loginFirmId.value;
   }
+  if (params.time) {
+    newParams.startTime = params.time[0];
+    newParams.endTime = params.time[1];
+  }
+  delete newParams.time;
   return getLawyerPage(newParams);
 };
 
@@ -124,7 +133,7 @@ const handleCreate = () => {
         firstLevelScenario: payload.firstLevelScenario,
         status: payload.status,
         paymentNum: payload.paymentNum,
-        lawFirmId: payload.lawFirmId
+        firmId: payload.lawFirmId
       };
       await addLawyerUser(params);
       ElMessage.success("新增成功");
@@ -147,7 +156,7 @@ const handleEdit = (row: any) => {
         firstLevelScenario: payload.firstLevelScenario,
         status: payload.status,
         paymentNum: payload.paymentNum,
-        lawFirmId: payload.lawFirmId
+        firmId: payload.lawFirmId
       };
       await editLawyerUser(params);
       ElMessage.success("编辑成功");

+ 26 - 1
src/views/userManagement/components/UserDialog.vue

@@ -5,7 +5,16 @@
         <el-input v-model="form.userName" placeholder="请输入登录账号" clearable />
       </el-form-item>
       <el-form-item label="关联律所" prop="roleId">
-        <el-select v-model="form.roleId" placeholder="请选择关联律所" filterable>
+        <el-select
+          v-model="form.roleId"
+          placeholder="请选择关联律所"
+          remote
+          filterable
+          reserve-keyword
+          :remote-method="handleFirmRemote"
+          :loading="props.lawFirmLoading"
+          @visible-change="handleFirmDropdown"
+        >
           <el-option v-for="item in lawFirmOptions" :key="item.value" :label="item.label" :value="item.value" />
         </el-select>
       </el-form-item>
@@ -40,6 +49,8 @@ interface DialogOptions {
 
 const props = defineProps<{
   lawFirmOptions: { label: string; value: string | number }[];
+  lawFirmLoading?: boolean;
+  fetchLawFirms?: (keyword?: string) => Promise<void>;
 }>();
 
 const visible = ref(false);
@@ -94,6 +105,10 @@ const open = (payload: DialogOptions) => {
     Object.assign(form, payload.row);
     form.roleId = (payload.row?.roleId as string) || "";
   }
+  const keyword = payload.row?.roleName || "";
+  if (!props.lawFirmOptions.length || keyword) {
+    props.fetchLawFirms?.(keyword);
+  }
   visible.value = true;
   nextTick(() => formRef.value?.clearValidate());
 };
@@ -142,6 +157,16 @@ const handleSubmit = () => {
   });
 };
 
+const handleFirmRemote = (keyword = "") => {
+  props.fetchLawFirms?.(keyword.trim());
+};
+
+const handleFirmDropdown = (visible: boolean) => {
+  if (visible && !props.lawFirmOptions.length) {
+    props.fetchLawFirms?.("");
+  }
+};
+
 defineExpose({
   open
 });

+ 24 - 13
src/views/userManagement/index.vue

@@ -10,31 +10,32 @@
       </template>
     </ProTable>
 
-    <UserDialog ref="userDialogRef" :law-firm-options="lawFirmOptions" @success="refreshTable" />
+    <UserDialog
+      ref="userDialogRef"
+      :law-firm-options="lawFirmOptions"
+      :law-firm-loading="lawFirmLoading"
+      :fetch-law-firms="fetchLawFirmOptions"
+      @success="refreshTable"
+    />
   </div>
 </template>
 
 <script setup lang="ts">
-import { ref, reactive, onMounted, computed } from "vue";
+import { ref, reactive, onMounted } from "vue";
 import { ElMessage, ElMessageBox } from "element-plus";
 import ProTable from "@/components/ProTable/index.vue";
 import type { ProTableInstance, ColumnProps } from "@/components/ProTable/interface";
 import type { User } from "@/api/interface";
 import { getUserList, addUser, editUser, deleteUser } from "@/api/modules/user";
-import { getLawFirmPage } from "@/api/modules/lawyer";
+import { getSelectList } from "@/api/modules/lawyer";
 import { CirclePlus, Delete, EditPen } from "@element-plus/icons-vue";
 import UserDialog from "./components/UserDialog.vue";
 
 const proTable = ref<ProTableInstance>();
 const userDialogRef = ref<InstanceType<typeof UserDialog>>();
 const lawFirmOptions = ref<{ label: string; value: string | number }[]>([]);
-const lawFirmMap = computed<Record<string, string>>(() => {
-  const map: Record<string, string> = {};
-  lawFirmOptions.value.forEach(item => {
-    map[String(item.value)] = item.label;
-  });
-  return map;
-});
+const lawFirmLoading = ref(false);
+const lawFirmMap = ref<Record<string, string>>({});
 type UserRow = Partial<User.ResUserList> & { userName?: string };
 
 const statusOptions = [
@@ -136,17 +137,27 @@ const handleDelete = (row: UserRow) => {
     .catch(() => {});
 };
 
-const fetchLawFirmOptions = async () => {
+const fetchLawFirmOptions = async (keyword = "") => {
+  lawFirmLoading.value = true;
   try {
-    const res: any = await getLawFirmPage({ page: 1, size: 999 });
-    const list = res?.records || res?.data?.records || res?.data?.list || [];
+    const res: any = await getSelectList({ firmName: keyword });
+    const list = res?.data || [];
     lawFirmOptions.value = list.map((item: any) => ({
       label: item.firmName,
       value: item.id
     }));
+    if (list.length) {
+      const map = { ...lawFirmMap.value };
+      list.forEach((item: any) => {
+        map[String(item.id)] = item.firmName;
+      });
+      lawFirmMap.value = map;
+    }
   } catch (error) {
     console.error("获取律所列表失败", error);
     lawFirmOptions.value = [];
+  } finally {
+    lawFirmLoading.value = false;
   }
 };