|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- <!--
- * @Description: 服装库管理
- * @Author: syy
- * @Date: 2024-7-18
- -->
- <template>
- <div class="main-box">
- <TreeFilter
- ref="treeFilter"
- label="clothSetName"
- id="clothSetId"
- width="300px"
- :show-all="true"
- :request-api="userManageClothApi.getList"
- @change="changeTreeFilter"
- >
- <template v-slot:header>
- <s-button suffix="服装库" @click="addClass(FormOptEnum.ADD)" style="margin-bottom: 15px" />
- </template>
- <template v-slot:label="{ row }">
- <span class="custom-tree-node">
- <span>{{ row.node.label }}</span>
- <span v-if="row.node.label != '全部'">
- <a @click.stop="addClass(FormOptEnum.EDIT, row.node.data)">
- <el-icon><Edit /></el-icon>
- </a>
- <a style="margin-left: 8px" @click.stop="addDelete(row.node.data.clothSetId, '删除服装库')">
- <el-icon><Delete /></el-icon>
- </a>
- </span>
- </span>
- </template>
- </TreeFilter>
- <div class="table-box">
- <ProTable ref="proTable" title="服装库管理" :columns="columns" rowKey="clothId" :data="tableData.clothes">
- <!-- 表格 header 按钮 -->
- <template #tableHeader="scope">
- <s-button suffix="服装" @click="onOpen(FormOptEnum.ADD, { clothSetId: clothSetId }, treeFilter.treeAllData)" />
- <s-button
- type="danger"
- :opt="FormOptEnum.DELETE"
- plain
- suffix="服装"
- :disabled="!scope.isSelected"
- @click="onDelete(scope.selectedListIds, '删除所选服装')"
- />
- </template>
- <!-- 表格操作栏 -->
- <template #operation="scope">
- <el-space>
- <s-button link :opt="FormOptEnum.DELETE" @click="onDelete([scope.row.clothId], `删除服装`)" />
- </el-space>
- </template>
- </ProTable>
- </div>
- <!-- 人员新增/编辑表单 -->
- <Form ref="formRef"></Form>
- <!-- 班级新增/编辑表单 -->
- <Form1 ref="formRefC" />
- <!-- 预览头像 -->
- <el-dialog v-model="visible" title="查看头像" width="830px" :before-close="handleClose">
- <div style="display: flex; align-items: center; justify-content: center">
- <img style="max-width: 100%; max-height: 600px" class="detailpic" :src="faceUrl" alt="" />
- </div>
- <template #footer>
- <div class="dialog-footer">
- <el-button @click="visible = false">关闭</el-button>
- </div>
- </template>
- </el-dialog>
- </div>
- </template>
- <script setup lang="tsx" name="SysUserClothing">
- import { userManageClothApi,userClothButtonCode,SysUserCloth } from "@/api";
- import { useHandleData } from "@/hooks/useHandleData";
- import { FormOptEnum } from "@/enums";
- import Form from "./components/form/index.vue";
- import Form1 from "./components/form1/index.vue";
- import { ColumnProps, ProTableInstance } from "@/components/ProTable/interface";
- import TreeFilter from "@/components/TreeFilter/index.vue";
- import { useUserStore } from "@/stores/modules";
- // 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
- const faceUrl = ref('');
- const visible = ref(false); //是否显示人员表单
- const proTable = ref<ProTableInstance>();
- const treeFilter = ref<any>({});
- const userStore = useUserStore();
- const { accessToken } = userStore;
- const tableData = ref<any>([])
- // 表格配置项
- const columns: ColumnProps<SysUserCloth.list>[] = [
- { type: "selection", fixed: "left", width: 50 },
- {
- prop: "clothUrl",
- label: "服装图",
- render: scope => {
- return (
- <img src={scope.row.clothUrl} onClick={() => viewHeadImage(scope)} style='width:50px;height:50px' alt=''/>
- );
- }
- },
- { prop: "operation", label: "操作", width: 250, fixed: "right" }
- ];
- const viewHeadImage = (scope: any) => {
- faceUrl.value = scope.row.clothUrl;
- visible.value = true
- };
- const handleClose = () => {
- visible.value = false;
- };
- // 人员表单引用
- const formRef = ref<InstanceType<typeof Form> | null>(null);
- // 班级表单引用
- const formRefC = ref<InstanceType<typeof Form1> | null>(null);
- /**
- * 打开服装表单
- * @param opt 操作类型
- * @param record 记录
- */
- function onOpen(opt: FormOptEnum, record: {},treeAllData:any) {
- formRef.value?.onOpen({ opt: opt, record: record,treeAllData:treeAllData, successful: RefreshTable });
- }
-
- /**
- * 打开服装库表单
- * @param opt 操作类型
- * @param record 记录
- */
-
- function addClass(opt: FormOptEnum, record: {} | SysUserCloth.list = {}) {
- formRefC.value?.onOpen({ opt: opt, record: JSON.parse(JSON.stringify(record)), successful: RefreshTree });
- }
- /**
- * 服装库删除
- * @param ids id数组
- */
- async function addDelete(clothSetId: string[],msg: string) {
- // 二次确认 => 请求api => 刷新表格
- await useHandleData(userManageClothApi.deleteClothDataBaseD, { clothSetId }, msg);
- RefreshTree(); //刷新表格
- }
-
- /**
- * 服装删除
- * @param ids id数组
- */
- async function onDelete(ids: string[], msg: string) {
- // 二次确认 => 请求api => 刷新表格
- await useHandleData(userManageClothApi.delete, {clothId: ids.join(","), clothSetId:tableData.value.clothSetId}, msg);
- RefreshTable(); //刷新表格
- }
-
- // 刷新表格
- const RefreshTable = () => {
- getList(clothSetId.value)
- }
- // 刷新表格+树
- const RefreshTree = () => {
- getList(clothSetId.value)
- treeFilter.value?.refresh(); //刷新树形筛选器
- }
-
-
-
- /** 服装库切换切换 */
- const clothSetId = ref<number | string>()
- function changeTreeFilter(val: number | string) {
- clothSetId.value = val
- proTable.value!.pageable.pageNum = 1;
- getList(val)
- }
- // 获取列表
- const getList = (clothSetId:any)=>{
- if(!clothSetId) return false
- userManageClothApi.page({clothSetId:clothSetId}).then((resp:any)=>{
- if(resp.code == 200){
- tableData.value = resp.data
- }
- })
- }
- </script>
- <style scoped lang="scss">
- .table-box {
- width: 100%;
- height: 100%;
- }
- .custom-tree-node {
- display: flex;
- flex: 1;
- align-items: center;
- justify-content: space-between;
- padding-right: 8px;
- font-size: 14px;
- }
- </style>
|