From 24f914a80d01fa8e5c6cfcba14ae59a6c0a117a8 Mon Sep 17 00:00:00 2001
From: username@email.com <yzy2002yzy@163.com>
Date: 星期一, 25 八月 2025 09:39:22 +0800
Subject: [PATCH] 修改

---
 Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/index.vue |  310 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 310 insertions(+), 0 deletions(-)

diff --git a/Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/index.vue b/Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/index.vue
new file mode 100644
index 0000000..2eeca98
--- /dev/null
+++ b/Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/index.vue
@@ -0,0 +1,310 @@
+锘�<script lang="ts" setup name="fBS_Customer">
+import { ref, reactive, onMounted } from "vue";
+import { auth } from '/@/utils/authFunction';
+import { ElMessageBox, ElMessage } from "element-plus";
+import { downloadStreamFile } from "/@/utils/download";
+import { useFBS_CustomerApi } from '/@/api/Customer/fBS_Customer';
+import editDialog from '/@/views/Customer/fBS_Customer/component/editDialog.vue'
+import printDialog from '/@/views/system/print/component/hiprint/preview.vue'
+import ModifyRecord from '/@/components/table/modifyRecord.vue';
+import ImportData from "/@/components/table/importData.vue";
+
+const fBS_CustomerApi = useFBS_CustomerApi();
+const printDialogRef = ref();
+const editDialogRef = ref();
+const importDataRef = ref();
+const state = reactive({
+  exportLoading: false,
+  tableLoading: false,
+  stores: {},
+  showAdvanceQueryUI: false,
+  dropdownData: {} as any,
+  selectData: [] as any[],
+  tableQueryParams: {} as any,
+  tableParams: {
+    page: 1,
+    pageSize: 20,
+    total: 0,
+    field: 'createTime', // 榛樿鐨勬帓搴忓瓧娈�
+    order: 'descending', // 鎺掑簭鏂瑰悜
+    descStr: 'descending', // 闄嶅簭鎺掑簭鐨勫叧閿瓧绗�
+  },
+  tableData: [],
+});
+
+// 椤甸潰鍔犺浇鏃�
+onMounted(async () => {
+});
+
+// 鏌ヨ鎿嶄綔
+const handleQuery = async (params: any = {}) => {
+  state.tableLoading = true;
+  state.tableParams = Object.assign(state.tableParams, params);
+  const result = await fBS_CustomerApi.page(Object.assign(state.tableQueryParams, state.tableParams)).then(res => res.data.result);
+  state.tableParams.total = result?.total;
+  state.tableData = result?.items ?? [];
+  state.tableLoading = false;
+};
+
+// 鍒楁帓搴�
+const sortChange = async (column: any) => {
+  state.tableParams.field = column.prop;
+  state.tableParams.order = column.order;
+  await handleQuery();
+};
+
+// 鍒犻櫎
+const delFBS_Customer = (row: any) => {
+  ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, "鎻愮ず", {
+    confirmButtonText: "纭畾",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  }).then(async () => {
+    await fBS_CustomerApi.delete({ id: row.id });
+    handleQuery();
+    ElMessage.success("鍒犻櫎鎴愬姛");
+  }).catch(() => {});
+};
+
+// 鎵归噺鍒犻櫎
+const batchDelFBS_Customer = () => {
+  ElMessageBox.confirm(`纭畾瑕佸垹闄�${state.selectData.length}鏉¤褰曞悧?`, "鎻愮ず", {
+    confirmButtonText: "纭畾",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  }).then(async () => {
+    await fBS_CustomerApi.batchDelete(state.selectData.map(u => ({ id: u.id }) )).then(res => {
+      ElMessage.success(`鎴愬姛鎵归噺鍒犻櫎${res.data.result}鏉¤褰昤);
+      handleQuery();
+    });
+  }).catch(() => {});
+};
+
+// 璁剧疆鐘舵��
+const changeFBS_CustomerStatus = async (row: any) => {
+  await fBS_CustomerApi.setStatus({ id: row.id, status: row.status }).then(() => ElMessage.success('鐘舵�佽缃垚鍔�'));
+};
+
+// 瀵煎嚭鏁版嵁
+const exportFBS_CustomerCommand = async (command: string) => {
+  try {
+    state.exportLoading = true;
+    if (command === 'select') {
+      const params = Object.assign({}, state.tableQueryParams, state.tableParams, { selectKeyList: state.selectData.map(u => u.id) });
+      await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res));
+    } else if (command === 'current') {
+      const params = Object.assign({}, state.tableQueryParams, state.tableParams);
+      await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res));
+    } else if (command === 'all') {
+      const params = Object.assign({}, state.tableQueryParams, state.tableParams, { page: 1, pageSize: 99999999 });
+      await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res));
+    }
+  } finally {
+    state.exportLoading = false;
+  }
+}
+
+handleQuery();
+</script>
+<template>
+  <div class="fBS_Customer-container" v-loading="state.exportLoading">
+    <el-card shadow="hover" :body-style="{ paddingBottom: '0' }"> 
+      <el-form :model="state.tableQueryParams" ref="queryForm" labelWidth="90">
+        <el-row>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
+            <el-form-item label="鍏抽敭瀛�">
+              <el-input v-model="state.tableQueryParams.keyword" clearable placeholder="璇疯緭鍏ユā绯婃煡璇㈠叧閿瓧"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="璐﹀彿">
+              <el-input v-model="state.tableQueryParams.account" clearable placeholder="璇疯緭鍏ヨ处鍙�"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="鐪熷疄濮撳悕">
+              <el-input v-model="state.tableQueryParams.realName" clearable placeholder="璇疯緭鍏ョ湡瀹炲鍚�"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="鏄电О">
+              <el-input v-model="state.tableQueryParams.nickName" clearable placeholder="璇疯緭鍏ユ樀绉�"/>
+            </el-form-item>
+          </el-col>
+          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="璇佷欢绫诲瀷">
+              <g-sys-dict v-model="state.tableQueryParams.cardType" code="CardTypeEnum" render-as="select" placeholder="璇烽�夋嫨璇佷欢绫诲瀷" clearable filterable />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="韬唤璇�">
+              <el-input v-model="state.tableQueryParams.idCardPath" clearable placeholder="璇疯緭鍏ヨ韩浠借瘉"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="鏂囧寲绋嬪害">
+              <g-sys-dict v-model="state.tableQueryParams.cultureLevel" code="CultureLevelEnum" render-as="select" placeholder="璇烽�夋嫨鏂囧寲绋嬪害" clearable filterable />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="姣曚笟闄㈡牎">
+              <el-input v-model="state.tableQueryParams.college" clearable placeholder="璇疯緭鍏ユ瘯涓氶櫌鏍�"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="鍔炲叕鐢佃瘽">
+              <el-input v-model="state.tableQueryParams.officePhone" clearable placeholder="璇疯緭鍏ュ姙鍏數璇�"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="绱ф�ヨ仈绯讳汉">
+              <el-input v-model="state.tableQueryParams.emergencyContact" clearable placeholder="璇疯緭鍏ョ揣鎬ヨ仈绯讳汉"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="绱ф�ヨ仈绯讳汉鐢佃瘽">
+              <el-input v-model="state.tableQueryParams.emergencyPhone" clearable placeholder="璇疯緭鍏ョ揣鎬ヨ仈绯讳汉鐢佃瘽"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="绱ф�ヨ仈绯讳汉鍦板潃">
+              <el-input v-model="state.tableQueryParams.emergencyAddress" clearable placeholder="璇疯緭鍏ョ揣鎬ヨ仈绯讳汉鍦板潃"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="涓汉绠�浠�">
+              <el-input v-model="state.tableQueryParams.introduction" clearable placeholder="璇疯緭鍏ヤ釜浜虹畝浠�"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="鎺掑簭">
+              <el-input-number v-model="state.tableQueryParams.orderNo"  clearable placeholder="璇疯緭鍏ユ帓搴�"/>
+            </el-form-item>
+          </el-col> -->
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="鐘舵��">
+              <g-sys-dict v-model="state.tableQueryParams.status" code="StatusEnum" render-as="select" placeholder="璇烽�夋嫨鐘舵��" clearable filterable />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="澶囨敞">
+              <el-input v-model="state.tableQueryParams.remark" clearable placeholder="璇疯緭鍏ュ娉�"/>
+            </el-form-item>
+          </el-col>
+          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="鑱岀骇">
+              <el-input v-model="state.tableQueryParams.posLevel" clearable placeholder="璇疯緭鍏ヨ亴绾�"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
+            <el-form-item label="鑱岀О">
+              <el-input v-model="state.tableQueryParams.posTitle" clearable placeholder="璇疯緭鍏ヨ亴绉�"/>
+            </el-form-item>
+          </el-col> -->
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
+            <el-form-item >
+              <el-button-group style="display: flex; align-items: center;">
+                <el-button type="primary"  icon="ele-Search" @click="handleQuery" v-auth="'fBS_Customer:page'" v-reclick="1000"> 鏌ヨ </el-button>
+                <el-button icon="ele-Refresh" @click="() => state.tableQueryParams = {}"> 閲嶇疆 </el-button>
+                <el-button icon="ele-ZoomIn" @click="() => state.showAdvanceQueryUI = true" v-if="!state.showAdvanceQueryUI" style="margin-left:5px;"> 楂樼骇鏌ヨ </el-button>
+                <el-button icon="ele-ZoomOut" @click="() => state.showAdvanceQueryUI = false" v-if="state.showAdvanceQueryUI" style="margin-left:5px;"> 闅愯棌 </el-button>
+                <el-button type="danger" style="margin-left:5px;" icon="ele-Delete" @click="batchDelFBS_Customer" :disabled="state.selectData.length == 0" v-auth="'fBS_Customer:batchDelete'"> 鍒犻櫎 </el-button>
+                <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="editDialogRef.openDialog(null, '鏂板瀹㈡埛琛�')" v-auth="'fBS_Customer:add'"> 鏂板 </el-button>
+                <el-dropdown :show-timeout="70" :hide-timeout="50" @command="exportFBS_CustomerCommand">
+                  <el-button type="primary" style="margin-left:5px;" icon="ele-FolderOpened" v-reclick="20000" v-auth="'fBS_Customer:export'"> 瀵煎嚭 </el-button>
+                  <template #dropdown>
+                    <el-dropdown-menu>
+                      <el-dropdown-item command="select" :disabled="state.selectData.length == 0">瀵煎嚭閫変腑</el-dropdown-item>
+                      <el-dropdown-item command="current">瀵煎嚭鏈〉</el-dropdown-item>
+                      <el-dropdown-item command="all">瀵煎嚭鍏ㄩ儴</el-dropdown-item>
+                    </el-dropdown-menu>
+                  </template>
+                </el-dropdown>
+                <el-button type="warning" style="margin-left:5px;" icon="ele-MostlyCloudy" @click="importDataRef.openDialog()" v-auth="'fBS_Customer:import'"> 瀵煎叆 </el-button>
+              </el-button-group>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-card>
+    <el-card class="full-table" shadow="hover" style="margin-top: 5px">
+      <el-table :data="state.tableData" @selection-change="(val: any[]) => { state.selectData = val; }" style="width: 100%" v-loading="state.tableLoading" tooltip-effect="light" row-key="id" @sort-change="sortChange" border>
+        <el-table-column type="selection" width="40" align="center" v-if="auth('fBS_Customer:batchDelete') || auth('fBS_Customer:export')" />
+        <el-table-column type="index" label="搴忓彿" width="55" align="center"/>
+        <el-table-column prop='account' label='璐﹀彿' sortable='custom' show-overflow-tooltip />
+        <!-- <el-table-column prop='password' label='瀵嗙爜' show-overflow-tooltip /> -->
+        <el-table-column prop='realName' label='鐪熷疄濮撳悕' sortable='custom' show-overflow-tooltip />
+        <el-table-column prop='nickName' label='鏄电О' sortable='custom' show-overflow-tooltip />
+        <!-- <el-table-column prop='avatar' label='澶村儚' show-overflow-tooltip /> -->
+        <!-- <el-table-column prop='sex' label='鎬у埆' show-overflow-tooltip>
+          <template #default="scope">
+            <g-sys-dict v-model="scope.row.sex" code="GenderEnum" />
+          </template>
+        </el-table-column>
+        <el-table-column prop='age' label='骞撮緞' show-overflow-tooltip />
+        <el-table-column prop='birthday' label='鍑虹敓鏃ユ湡' show-overflow-tooltip />
+        <el-table-column prop='nation' label='姘戞棌' show-overflow-tooltip /> -->
+        <el-table-column prop='phone' label='鎵嬫満鍙风爜' show-overflow-tooltip />
+        <!-- <el-table-column prop='cardType' label='璇佷欢绫诲瀷' show-overflow-tooltip>
+          <template #default="scope">
+            <g-sys-dict v-model="scope.row.cardType" code="CardTypeEnum" />
+          </template>
+        </el-table-column> -->
+        <!-- <el-table-column prop='idCardNum' label='韬唤璇佸彿' show-overflow-tooltip />
+        <el-table-column prop='idCardPath' label='韬唤璇�' show-overflow-tooltip />
+        <el-table-column prop='email' label='閭' show-overflow-tooltip />
+        <el-table-column prop='address' label='鍦板潃' show-overflow-tooltip />
+        <el-table-column prop='cultureLevel' label='鏂囧寲绋嬪害' show-overflow-tooltip>
+          <template #default="scope">
+            <g-sys-dict v-model="scope.row.cultureLevel" code="CultureLevelEnum" />
+          </template>
+        </el-table-column> -->
+        <!-- <el-table-column prop='politicalOutlook' label='鏀挎不闈㈣矊' show-overflow-tooltip /> -->
+        <!-- <el-table-column prop='college' label='姣曚笟闄㈡牎' show-overflow-tooltip />
+        <el-table-column prop='officePhone' label='鍔炲叕鐢佃瘽' show-overflow-tooltip />
+        <el-table-column prop='emergencyContact' label='绱ф�ヨ仈绯讳汉' show-overflow-tooltip />
+        <el-table-column prop='emergencyPhone' label='绱ф�ヨ仈绯讳汉鐢佃瘽' show-overflow-tooltip />
+        <el-table-column prop='emergencyAddress' label='绱ф�ヨ仈绯讳汉鍦板潃' show-overflow-tooltip />
+        <el-table-column prop='introduction' label='涓汉绠�浠�' show-overflow-tooltip />
+        <el-table-column prop='orderNo' label='鎺掑簭' show-overflow-tooltip /> -->
+        <el-table-column prop='status' label='鐘舵��' v-auth="'fBS_Customer:setStatus'" show-overflow-tooltip>
+          <template #default="scope">
+            <el-switch v-model="scope.row.status" :active-value="1" :inactive-value="2" size="small" @change="changeFBS_CustomerStatus(scope.row)" />
+          </template>
+        </el-table-column>
+        <el-table-column prop='remark' label='澶囨敞' show-overflow-tooltip />
+        <!-- <el-table-column prop='posLevel' label='鑱岀骇' show-overflow-tooltip />
+        <el-table-column prop='posTitle' label='鑱岀О' show-overflow-tooltip /> -->
+        <!-- <el-table-column label="淇敼璁板綍" width="100" align="center" show-overflow-tooltip>
+          <template #default="scope">
+            <ModifyRecord :data="scope.row" />
+          </template>
+        </el-table-column> -->
+        <el-table-column label="鎿嶄綔" width="70" align="center" fixed="right" show-overflow-tooltip v-if="auth('fBS_Customer:update') || auth('fBS_Customer:delete')">
+          <template #default="scope">
+            <el-button icon="ele-Edit" size="small" text type="primary" @click="editDialogRef.openDialog(scope.row, '缂栬緫瀹㈡埛琛�')" v-auth="'fBS_Customer:update'">  </el-button>
+            <el-button icon="ele-Delete" size="small" text type="primary" @click="delFBS_Customer(scope.row)" v-auth="'fBS_Customer:delete'">  </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination 
+              v-model:currentPage="state.tableParams.page"
+              v-model:page-size="state.tableParams.pageSize"
+              @size-change="(val: any) => handleQuery({ pageSize: val })"
+              @current-change="(val: any) => handleQuery({ page: val })"
+              layout="total, sizes, prev, pager, next, jumper"
+              :page-sizes="[10, 20, 50, 100, 200, 500]"
+              :total="state.tableParams.total"
+              size="small"
+              background />
+      <ImportData ref="importDataRef" :import="fBS_CustomerApi.importData" :download="fBS_CustomerApi.downloadTemplate" v-auth="'fBS_Customer:import'" @refresh="handleQuery"/>
+      <printDialog ref="printDialogRef" :title="'鎵撳嵃瀹㈡埛琛�'" @reloadTable="handleQuery" />
+      <editDialog ref="editDialogRef" @reloadTable="handleQuery" />
+    </el-card>
+  </div>
+</template>
+<style scoped>
+:deep(.el-input), :deep(.el-select), :deep(.el-input-number) {
+  width: 100%;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.1