From 356f54467f525f437f41271fb62f6be66f2ab1e5 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期一, 18 十二月 2023 17:36:11 +0800 Subject: [PATCH] 1. 调整飞羽环境用户信息的编辑 --- src/views/fytz/user/UserInfo.vue | 368 +++++++++++++++++---------------------------------- 1 files changed, 125 insertions(+), 243 deletions(-) diff --git a/src/views/fytz/user/UserInfo.vue b/src/views/fytz/user/UserInfo.vue index 50acda9..ac17524 100644 --- a/src/views/fytz/user/UserInfo.vue +++ b/src/views/fytz/user/UserInfo.vue @@ -1,295 +1,177 @@ <template> - <el-row ref="searchRef"> - <el-col> - <el-form :inline="true" :model="formSearch"> - <el-form-item label="鐪�/甯�/鍖�/闀�" prop="_locations"> - <el-cascader - v-model="formSearch._locations" - :options="locations" - placeholder="鐪�/甯�/鍖�/闀�" - :props="props" - style="width: 280px" - /> - </el-form-item> - <el-form-item label="鍦烘櫙鍚嶇О" prop="searchText"> - <el-input - clearable - v-model="formSearch.searchText" - placeholder="杈撳叆鎼滅储鍦烘櫙鍚嶇О" - /> - </el-form-item> - <el-form-item label="鐢ㄦ埛绫诲瀷" prop="scensetypeid"> - <el-select - v-model="formSearch.scensetypeid" - placeholder="鐢ㄦ埛绫诲瀷" - style="width: 75px" - > - <el-option - v-for="s in sceneTypes" - :key="s.value" - :label="s.label" - :value="s.value" - /> - </el-select> - </el-form-item> - <el-form-item label="涓婄嚎鐘舵��" prop="online"> - <el-select - v-model="formSearch.online" - placeholder="鍏ㄩ儴" - style="width: 75px" - > - <el-option - v-for="s in onlineStatus" - :key="s.value" - :label="s.label" - :value="s.value" - /> - </el-select> - </el-form-item> - <el-form-item> - <el-button icon="Search" type="primary" @click="onSearch" - >鏌ヨ</el-button - > - </el-form-item> - </el-form> - </el-col> - </el-row> - <el-table - :data="tableData" - v-loading="loading" - table-layout="fixed" - :row-class-name="tableRowClassName" - :height="tableHeight" - > - <el-table-column prop="realname" label="鍏徃" align="center"> - <template #default="scope"> - <el-tooltip - effect="dark" - :content="scope.row.realname" - placement="top-start" - :show-after="500" - > - {{ scope.row.realname }} - </el-tooltip> - </template> - </el-table-column> - <el-table-column prop="telephone" label="鐢佃瘽" align="center" /> - <el-table-column - prop="extension1" - label="鍖哄幙" - width="120" - align="center" - /> - <el-table-column prop="usertype" label="绫诲瀷" align="center" /> - <el-table-column prop="departmentname" label="鍚嶇О"> - <template #default="scope"> - <el-tooltip - effect="dark" - :content="scope.row.departmentname" - placement="top-start" - :show-after="500" - > - {{ scope.row.departmentname }} - </el-tooltip> - </template> - </el-table-column> - <el-table-column fixed="right" label="鎿嶄綔" width="140"> - <template #header> - <el-button icon="DocumentAdd" type="success" @click="drawer = true" - >鏂板鐢ㄦ埛</el-button - > - </template> - <template #default="scope"> - <el-button - :loading="scope.row.loading1" - type="default" - size="small" - @click="editRow(scope)" - >缂栬緫</el-button - > - <el-button - :loading="scope.row.loading2" - :type="scope.row.extension1 != '0' ? 'danger' : 'primary'" - size="small" - @click="itemActive(scope)" - >{{ scope.row.extension1 != '0' ? '涓嬬嚎' : '涓婄嚎' }}</el-button - > - </template> - </el-table-column> - </el-table> + <FYTable @search="onSearch" :row-class-name="tableRowClassName"> + <template #options> + <FYOptionLocation + :allOption="true" + :level="4" + v-model:value="formSearch._locations" + ></FYOptionLocation> + <FYOptionText + label="鍏抽敭瀛�" + placeholder="杈撳叆鍚嶇О鍏抽敭瀛�" + v-model:value="formSearch.searchText" + ></FYOptionText> + <FYOptionScene + :allOption="true" + :type="1" + v-model:value="formSearch.scensetype" + ></FYOptionScene> + <FYOptionOnlineStatus + :allOption="true" + v-model:value="formSearch.online" + ></FYOptionOnlineStatus> + </template> - <el-pagination - ref="paginationRef" - class="el-pagination" - v-model:current-page="currentPage" - v-model:page-size="pageSize" - :page-sizes="[10, 20, 50, 100]" - :background="true" - layout="total, sizes, prev, pager, next, jumper" - :total="total" - /> - + <template #table-column> + <el-table-column type="index" fixed="left" prop="userInfo.realname" label="鍚嶇О" width="400"> + <template #default="scope"> + <el-tooltip + effect="dark" + :content="scope.row.userInfo.realname" + placement="top-start" + :show-after="500" + > + {{ scope.row.userInfo.realname }} + </el-tooltip> + </template> + </el-table-column> + <el-table-column prop="userInfo.acountname" label="璐﹀彿" width="110" /> + <el-table-column prop="sceneTypeName" label="绫诲瀷" width="130" /> + <el-table-column prop="biProvinceName" label="鐪�" width="90" /> + <el-table-column prop="biCityName" label="甯�" width="90" /> + <!-- <el-table-column prop="districtname" label="鍖哄幙" width="90" /> --> + <el-table-column prop="userInfo.extension1" label="鍖哄幙" width="90" /> + <el-table-column prop="biTownName" label="琛楅亾" width="110" /> + <el-table-column prop="biArea" label="闆嗕腑鍖�" width="110" /> + <el-table-column prop="biManagementCompany" label="鐗╀笟" min-width="110" /> + <el-table-column prop="userInfo.isenable" label="鐘舵��" width="90"> + <template #default="scope"> + {{ scope.row.userInfo.isenable ? '涓婄嚎涓�' : '宸蹭笅绾�' }} + </template> + </el-table-column> + <el-table-column prop="userInfo.usertype" label="鐢ㄦ埛绫诲瀷" width="90" /> + <el-table-column fixed="right" align="right" label="鎿嶄綔" width="160"> + <template #header> + <el-button icon="DocumentAdd" size="default" type="success" @click="drawer = true" + >鏂板鐢ㄦ埛</el-button + > + </template> + <template #default="scope"> + <el-button + :loading="scope.row.loading1" + type="primary" + size="small" + @click="editRow(scope)" + >鏌ョ湅</el-button + > + <el-button + :loading="scope.row.loading2" + :type="scope.row.userInfo.isenable != '0' ? 'danger' : 'primary'" + size="small" + @click="itemActive(scope)" + >{{ scope.row.userInfo.isenable != '0' ? '涓嬬嚎' : '涓婄嚎' }}</el-button + > + </template> + </el-table-column> + </template> + </FYTable> <CompUserInfoAddDrawer v-model:drawer="drawer"></CompUserInfoAddDrawer> </template> <script> -import { enumScene_1 } from '@/enum/scene'; -import { enumLocation } from '@/enum/location'; -import { enumOnlineStatus } from '@/enum/onlineStatus'; import userApi from '@/api/fytz/userApi'; import { useLoadingStore } from '@/stores/loadingStore'; import { mapStores } from 'pinia'; import { useMessageBoxTip } from '@/composables/messageBox'; -import CompUserInfoAddDrawer from './components/CompUserInfoAddDrawer.vue'; +import CompUserInfoAddDrawer from '@/views/fytz/user/components/CompUserInfoAddDrawer.vue'; export default { components: { - CompUserInfoAddDrawer, + CompUserInfoAddDrawer }, data() { return { - locations: enumLocation(), - sceneTypes: enumScene_1(), - onlineStatus: enumOnlineStatus(), formSearch: { - _locations: [], + _locations: {}, searchText: '', - scensetypeid: '', - online: '', + scensetype: {}, + online: {} }, - - props: { - checkStrictly: true, - }, - - tableData: [], - tableHeight: '500', - loading: false, - - currentPage: 1, - pageSize: 20, - total: 0, - - drawer: false, + drawer: false }; }, - watch: { - currentPage(nValue, oValue) { - if (nValue != oValue) { - this.onSearch(); - } - }, - pageSize(nValue, oValue) { - if (nValue != oValue) { - this.onSearch(); - } - }, - }, computed: { - ...mapStores(useLoadingStore), + ...mapStores(useLoadingStore) }, methods: { - onSearch() { - this.loading = true; + onSearch(page, func) { const f = this.formSearch; const area = {}; // 琛屾斂鍖哄垝 - f._locations.length > 0 - ? ([area.provinceCode, area.provinceName] = f._locations[0]) - : ([area.provinceCode, area.provinceName] = [null, null]); - if (area.provinceCode == '0') - [area.provinceCode, area.provinceName] = [null, null]; - f._locations.length > 1 - ? (area.citycode = f._locations[1][0]) - : (area.citycode = null); - f._locations.length > 2 - ? ([area.districtCode, area.districtName] = f._locations[2]) - : ([area.districtCode, area.districtName] = [null, null]); - f._locations.length > 3 - ? (area.towncode = f._locations[3][0]) - : (area.towncode = null); + area.provinceCode = f._locations.pCode; + area.provinceName = f._locations.pName; + if (area.provinceCode == null) { + area.provinceCode = null; + area.provinceName = null; + } + area.cityCode = f._locations.cCode; + area.cityName = f._locations.cName; + area.districtCode = f._locations.dCode; + area.districtName = f._locations.dName; + area.townCode = f._locations.tCode; + area.townName = f._locations.tName; // 鍦烘櫙绫诲瀷 - area.scensetypeid = f.scensetypeid; - if (area.scensetypeid == '0') area.scensetypeid = null; + area.sceneTypes = []; + f.scensetype.value == null + ? (area.sceneTypes = []) + : (area.sceneTypes = [f.scensetype.value]); // 涓婁笅绾跨姸鎬� - area.online = f.online; + area.online = f.online.value; // 鍏抽敭瀛� area.searchText = f.searchText; - userApi - .fetchUser('00EQQVnE9QFvbkQr', this.currentPage, this.pageSize, area) - .then((res) => { - if (res) { - this.tableData = res.data; - this.currentPage = res.headers.currentPage; - console.log(res.headers); - this.total = parseInt(res.headers.totalPage) * this.pageSize; - } - }) - .finally(() => { - this.loading = false; - }); - }, - calcTableHeight() { - const h1 = this.$refs.searchRef.$el.offsetHeight; - const h2 = this.$refs.paginationRef.$el.offsetHeight; - // return `calc(100vh - ${h1}px - ${h2}px - var(--el-main-padding) * 2 - var(--el-header-height))`; - return `calc(100vh - ${h1}px - ${h2}px - 60px - var(--el-main-padding) * 2)`; + userApi.fetchUser(page.currentPage, page.pageSize, area).then((res) => { + if (res) { + func({ + data: res.data, + total: res.head.totalCount + }); + } + }); }, editRow(scope) { scope.row.loading1 = true; - this.loadingStore.loadingStatus.push(() => (scope.row.loading1 = false)); - this.$router.push(`userEdit/${scope.row.guid}`); + this.loadingStore.pushLoading(() => (scope.row.loading1 = false)); + this.$router.push(`userEdit/${scope.row.userInfo.guid}`); }, itemActive(scope) { - const rb = {}; - rb.guid = scope.row.guid; - rb.extension1 = scope.row.extension1 != '0' ? '0' : '1'; - const msg = scope.row.extension1 != '0' ? '涓嬬嚎' : '涓婄嚎'; + const param = { + guid: scope.row.userInfo.guid, + isenable: !scope.row.userInfo.isenable + }; + const msg = scope.row.userInfo.isenable ? '涓嬬嚎' : '涓婄嚎'; useMessageBoxTip({ confirmMsg: `纭${msg}璇ュ満鏅紵`, confirmTitle: msg, - onConfirm: () => { + onConfirm: async () => { scope.row.loading2 = true; - userApi - .updateScene(rb) + return userApi + .updateUserInfo(param) .then((res) => { - if (res == 1) { - scope.row.extension1 = rb.extension1; + if (res.success) { + scope.row.userInfo.isenable = param.isenable; } }) .finally(() => { scope.row.loading2 = false; }); - }, + } }); }, tableRowClassName({ row }) { - return row.extension1 != '0' ? 'online-row' : 'offline-row'; - }, - }, - mounted() { - this.formSearch.scensetypeid = this.sceneTypes[0].value; - this.formSearch._locations = [this.locations[0].value]; - this.formSearch.online = this.onlineStatus[0].value; - this.tableHeight = this.calcTableHeight(); - this.onSearch(); - }, + return row.userInfo.isenable ? 'online-row' : 'offline-row'; + } + } }; </script> -<style> -.el-table .offline-row { - background-color: var(--el-disabled-bg-color); - color: var(--el-disabled-text-color); -} -.el-table .cell { - white-space: nowrap; - color: var(--el-disabled-text-color); -} -.el-pagination { - background-color: var(--el-color-white); - padding-top: 20px; - border-top: 1px solid rgba(0, 0, 0, 0.096); - /* margin-top: 2px; */ -} -</style> +<style></style> -- Gitblit v1.9.3