From 904a4217bf766b6a0937395312f63ed1388064b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A3=B7=E5=8F=B6?= <14103883+leaf-phos@user.noreply.gitee.com> Date: Fri, 8 Nov 2024 15:50:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9E=8B=E5=8F=B7=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Business/Model/ModelSimpleSelect.vue | 4 +- src/views/system/model/index.vue | 129 +++++++++++++----- 2 files changed, 100 insertions(+), 33 deletions(-) diff --git a/src/components/Business/Model/ModelSimpleSelect.vue b/src/components/Business/Model/ModelSimpleSelect.vue index ab923c1..fb63807 100644 --- a/src/components/Business/Model/ModelSimpleSelect.vue +++ b/src/components/Business/Model/ModelSimpleSelect.vue @@ -55,7 +55,9 @@ export default { loading: false, queryParams: { pageNum: 1, - pageSize: 100 + pageSize: 100, + orderByColumn: 'sort', + isAsc: 'asc' }, options: [] } diff --git a/src/views/system/model/index.vue b/src/views/system/model/index.vue index b105608..af6d41d 100644 --- a/src/views/system/model/index.vue +++ b/src/views/system/model/index.vue @@ -9,7 +9,7 @@ @keyup.enter.native="handleQuery" /> </el-form-item> - <el-form-item label="型号" prop="model"> + <el-form-item label="型号编码" prop="model"> <el-input v-model="queryParams.model" placeholder="请输入型号" @@ -63,25 +63,42 @@ v-hasPermi="['system:model:export']" >导出</el-button> </el-col> - <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> </el-row> - <el-table v-loading="loading" :data="modelList" @selection-change="handleSelectionChange"> + <el-table v-loading="loading" :data="modelList" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="onSortChange"> <el-table-column type="selection" width="55" align="center" /> - <el-table-column label="ID" align="center" prop="modelId" width="80"/> - <el-table-column label="名称" align="center" prop="modelName" /> - <el-table-column label="型号编码" align="center" prop="model" /> - <el-table-column label="产品ID" align="center" prop="productId" /> - <el-table-column label="型号功能" align="center" prop="tags" width="300"> - <dict-tag slot-scope="d" :value="d.row.tags" :options="dict.type.sm_model_tag"/> - </el-table-column> - <el-table-column label="图片" align="center" prop="picture" width="100"> - <template slot-scope="scope"> - <image-preview :src="scope.row.picture" :width="50" :height="50"/> - </template> - </el-table-column> - <el-table-column label="产品介绍" align="center" prop="introduce" width="300"/> - <el-table-column label="备注" align="center" prop="remark" width="300"/> + <template v-for="column of showColumns"> + <el-table-column + :key="column.key" + :label="column.label" + :prop="column.key" + :align="column.align" + :min-width="column.minWidth" + :sort-orders="orderSorts" + :sortable="column.sortable" + :show-overflow-tooltip="column.overflow" + :width="column.width" + > + <template slot-scope="d"> + <template v-if="column.key === 'modelId'"> + {{d.row[column.key]}} + </template> + <template v-else-if="column.key === 'picture'"> + <image-preview :src="d.row[column.key]" :width="50" :height="50"/> + </template> + <template v-else-if="column.key === 'tags'"> + <dict-tag :options="dict.type.sm_model_tag" :value="d.row[column.key]"/> + </template> + <template v-else-if="column.key === 'serviceType'"> + <dict-tag :options="dict.type.service_type" :value="d.row[column.key]"/> + </template> + <template v-else> + {{d.row[column.key]}} + </template> + </template> + </el-table-column> + </template> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button @@ -117,18 +134,25 @@ <form-col :span="span" label="图片" prop="picture"> <image-upload v-model="form.picture" :limit="1"/> </form-col> - <form-col :span="span" label="名称" prop="modelName"> - <el-input v-model="form.modelName" placeholder="请输入型号名称" /> - </form-col> - <form-col :span="span" label="型号编码" prop="model"> - <el-input v-model="form.model" placeholder="请输入型号编码"/> - </form-col> - <form-col :span="span" label="产品ID" prop="productId"> - <el-input v-model="form.productId" placeholder="请输入OneNet产品ID"/> - </form-col> - <form-col :span="span" label="SN前缀" prop="snPrefix"> - <el-input v-model="form.snPrefix" placeholder="请输入SN前缀"/> - </form-col> + <el-col :span="span"> + <el-row> + <form-col :span="24" label="名称" prop="modelName"> + <el-input v-model="form.modelName" placeholder="请输入型号名称" /> + </form-col> + <form-col :span="24" label="型号编码" prop="model"> + <el-input v-model="form.model" placeholder="请输入型号编码"/> + </form-col> + <form-col :span="24" label="产品ID" prop="productId"> + <el-input v-model="form.productId" placeholder="请输入OneNet产品ID"/> + </form-col> + <form-col :span="24" label="SN前缀" prop="snPrefix"> + <el-input v-model="form.snPrefix" placeholder="请输入SN前缀"/> + </form-col> + <form-col :span="24" label="排序" prop="sort"> + <el-input-number v-model="form.sort" placeholder="请输入排序" style="width: 100%"/> + </form-col> + </el-row> + </el-col> <form-col :span="span * 2" label="型号功能" prop="tags"> <el-checkbox-group v-model="form.tags"> <el-checkbox v-for="option of dict.type.sm_model_tag" :label="option.value" :key="option.value">{{option.label}}</el-checkbox> @@ -167,14 +191,38 @@ <script> import {listModel, getModel, addModel, updateModel, logicDelModel} from "@/api/system/model"; -import { $serviceType } from '@/utils/mixins' +import { $serviceType, $showColumns } from '@/utils/mixins' + +// 默认排序字段 +const defaultSort = { + prop: "sort", + order: "asc" +} export default { name: "Model", - mixins: [$serviceType], + mixins: [$serviceType, $showColumns], dicts: ['sm_model_tag', 'service_type'], data() { return { + defaultSort, + // 字段列表 + columns: [ + {key: 'modelId', visible: true, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"}, + {key: 'modelName', visible: true, label: '名称', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + {key: 'picture', visible: true, label: '图片', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + {key: 'model', visible: true, label: '型号编码', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + {key: 'productId', visible: true, label: '产品ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + {key: 'introduce', visible: true, label: '产品介绍', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + {key: 'remark', visible: false, label: '备注', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + {key: 'tags', visible: true, label: '型号功能', minWidth: null, sortable: true, overflow: false, align: 'center', width: "300"}, + {key: 'serviceType', visible: false, label: '默认服务费类型', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + {key: 'serviceRate', visible: false, label: '默认服务费', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + {key: 'snPrefix', visible: true, label: 'SN前缀', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + {key: 'sort', visible: true, label: '排序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, + ], + // 排序方式 + orderSorts: ['ascending', 'descending', null], span: 12, // 遮罩层 loading: true, @@ -198,6 +246,8 @@ export default { queryParams: { pageNum: 1, pageSize: 20, + orderByColumn: defaultSort.prop, + isAsc: defaultSort.order, modelName: null, model: null, idCode: null, @@ -222,7 +272,10 @@ export default { ], productId: [ { required: true, message: "OneNet产品ID不能为空", trigger: "blur" } - ] + ], + sort: [ + { required: true, message: "排序不允许为空", trigger: "blur" } + ], } }; }, @@ -235,6 +288,17 @@ export default { this.getList(); }, methods: { + /** 当排序按钮被点击时触发 **/ + onSortChange(column) { + if (column.order == null) { + this.queryParams.orderByColumn = defaultSort.prop; + this.queryParams.isAsc = defaultSort.order; + } else { + this.queryParams.orderByColumn = column.prop; + this.queryParams.isAsc = column.order; + } + this.getList(); + }, /** 查询型号列表列表 */ getList() { this.loading = true; @@ -267,6 +331,7 @@ export default { serviceType: "1", serviceRate: null, tags: [], + sort: 1, }; this.resetForm("form"); },