src/components/scTable/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/utils/request.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/console/basic-data/material-warehousing-data/reservoir-location/reservoir-location.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/components/scTable/index.vue
@@ -3,17 +3,23 @@ * @version: 1.10 * @Author: sakuya * @Date: 2021年11月29日21:51:15 * @LastEditors: gaoshp * @LastEditTime: 2024-04-08 14:47:10 * @LastEditors: Sneed * @LastEditTime: 2024-05-12 13:00:03 --> <template> <div class="scTable" :style="{'height':_height}" ref="scTableMain" v-loading="loading"> <div class="scTable-table" :style="{'height':_table_height}"> <el-table v-bind="$attrs" :data="tableData" :row-key="rowKey" :key="toggleIndex" ref="scTable" :height="height=='auto'?null:'100%'" :size="config.size" :border="config.border" :stripe="config.stripe" :summary-method="remoteSummary?remoteSummaryMethod:summaryMethod" @sort-change="sortChange" @filter-change="filterChange"> <el-table v-bind="$attrs" :data="tableData" :row-key="rowKey" :key="toggleIndex" ref="scTable" :height="height == 'auto' ? null : '100%'" :size="config.size" :border="config.border" :stripe="config.stripe" :summary-method="remoteSummary ? remoteSummaryMethod : summaryMethod" @sort-change="sortChange" @filter-change="filterChange"> <slot></slot> <template v-for="(item, index) in userColumn" :key="index"> <el-table-column v-if="!item.hide" :column-key="item.prop" :label="item.label" :prop="item.prop" :width="item.width" :sortable="item.sortable" :fixed="item.fixed" :filters="item.filters" :filter-method="remoteFilter||!item.filters?null:filterHandler" :show-overflow-tooltip="item.showOverflowTooltip"> <el-table-column v-if="!item.hide" :column-key="item.prop" :label="item.label" :prop="item.prop" :width="item.width" :sortable="item.sortable" :fixed="item.fixed" :filters="item.filters" :filter-method="remoteFilter || !item.filters ? null : filterHandler" :show-overflow-tooltip="item.showOverflowTooltip"> <template #default="scope"> <slot :name="item.prop" v-bind="scope"> {{scope.row[item.prop]}} @@ -29,17 +35,23 @@ </div> <div class="scTable-page" v-if="!hidePagination || !hideDo"> <div class="scTable-pagination"> <el-pagination v-if="!hidePagination" background :small="true" :layout="paginationLayout" :total="total" :page-size="scPageSize" :page-sizes="pageSizes" v-model:currentPage="currentPage" @current-change="paginationChange" @update:page-size="pageSizeChange"></el-pagination> <el-pagination v-if="!hidePagination" background :small="true" :layout="paginationLayout" :total="total" :page-size="scPageSize" :page-sizes="pageSizes" v-model:currentPage="currentPage" @current-change="paginationChange" @update:page-size="pageSizeChange"></el-pagination> </div> <div class="scTable-do" v-if="!hideDo"> <el-button v-if="!hideRefresh" @click="refresh" icon="el-icon-refresh" circle style="margin-left:15px"></el-button> <el-popover v-if="column" placement="top" title="列设置" :width="500" trigger="click" :hide-after="0" @show="customColumnShow=true" @after-leave="customColumnShow=false"> <el-button v-if="!hideRefresh" @click="refresh" icon="el-icon-refresh" circle style="margin-left:15px"></el-button> <el-popover v-if="column" placement="top" title="列设置" :width="500" trigger="click" :hide-after="0" @show="customColumnShow = true" @after-leave="customColumnShow = false"> <template #reference> <el-button icon="el-icon-set-up" circle style="margin-left:15px"></el-button> </template> <columnSetting v-if="customColumnShow" ref="columnSetting" @userChange="columnSettingChange" @save="columnSettingSave" @back="columnSettingBack" :column="userColumn"></columnSetting> <columnSetting v-if="customColumnShow" ref="columnSetting" @userChange="columnSettingChange" @save="columnSettingSave" @back="columnSettingBack" :column="userColumn"></columnSetting> </el-popover> <el-popover v-if="!hideSetting" placement="top" title="表格设置" :width="400" trigger="click" :hide-after="0"> <el-popover v-if="!hideSetting" placement="top" title="表格设置" :width="400" trigger="click" :hide-after="0"> <template #reference> <el-button icon="el-icon-setting" circle style="margin-left:15px"></el-button> </template> @@ -212,7 +224,7 @@ this.summary = response.summary || {}; this.loading = false; } this.$refs.scTable.setScrollTop(0) this.$refs?.scTable?.setScrollTop(0) this.$emit('dataChange', res, this.tableData) }, //分页点击 @@ -397,10 +409,34 @@ <style scoped> .scTable {} .scTable-table {height: calc(100% - 50px);} .scTable-page {height:50px;display: flex;align-items: center;justify-content: space-between;padding:0 15px;} .scTable-do {white-space: nowrap;} .scTable:deep(.el-table__footer) .cell {font-weight: bold;} .scTable:deep(.el-table__body-wrapper) .el-scrollbar__bar.is-horizontal {height: 12px;border-radius: 12px;} .scTable:deep(.el-table__body-wrapper) .el-scrollbar__bar.is-vertical {width: 12px;border-radius: 12px;} .scTable-table { height: calc(100% - 50px); } .scTable-page { height: 50px; display: flex; align-items: center; justify-content: space-between; padding: 0 15px; } .scTable-do { white-space: nowrap; } .scTable:deep(.el-table__footer) .cell { font-weight: bold; } .scTable:deep(.el-table__body-wrapper) .el-scrollbar__bar.is-horizontal { height: 12px; border-radius: 12px; } .scTable:deep(.el-table__body-wrapper) .el-scrollbar__bar.is-vertical { width: 12px; border-radius: 12px; } </style> src/utils/request.js
@@ -35,11 +35,12 @@ axios.interceptors.response.use( (response) => { if (response.data.code && response.data.code !== 200) { ElNotification.error({ title: '请求错误', message: response.data.msg }); return Promise.reject(response); ElMessage({ message: response.data.msg, type: 'warning', }) return new Error() // return new Error(); } return response; }, @@ -72,10 +73,10 @@ }).catch(() => { }) } } else { ElNotification.error({ title: '请求错误', message: error.message || `Status:${error.response.status},未知错误!` }); // ElNotification.error({ // title: '请求错误', // message: error.message || `Status:${error.response.status},未知错误!` // }); } } else { ElNotification.error({ src/views/console/basic-data/material-warehousing-data/reservoir-location/reservoir-location.vue
@@ -1,7 +1,7 @@ <!-- * @Date: 2024-05-07 22:51:22 * @LastEditors: Sneed * @LastEditTime: 2024-05-10 23:16:26 * @LastEditTime: 2024-05-12 13:14:41 * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/console/basic-data/material-warehousing-data/reservoir-location/reservoir-location.vue --> <template> @@ -12,7 +12,21 @@ <el-container> <el-main> <el-tree default-expand-all ref="group" node-key="id" :data="treeData" :props="props" @node-click="nodeClick" highlight-current :current-node-key="params.areaId"></el-tree> @node-click="nodeClick" highlight-current :current-node-key="params.areaId"> <template #default="{ node, data }"> <div class="custom-tree-node"> <span :class="data.isArea ? 'treedisabled' : ''">{{ node.label }}</span> <el-icon class="icon" @click.stop="renameArea(data)" v-if="data.status" style="margin-left: auto;margin-right: 4px;"> <ElIconEditPen /> </el-icon> <el-icon class="icon" v-if="data.status" @click.stop="delArea(data)"> <ElIconDelete /> </el-icon> </div> </template> </el-tree> </el-main> <el-footer> <el-button @click="addArea" type="primary" icon="el-icon-plus" size="small">添加库区</el-button> @@ -25,7 +39,7 @@ <!-- <el-button type="primary">导入</el-button> --> <import-table style="margin:0 8px" :exportUrl="exportUrl" :uploadUrl="uploadUrl"></import-table> <el-button type="primary" @click="getExport">导出</el-button> <el-popconfirm width="220" title="确定将选择的数据删除" @confirm="table_del([scope.row], '0')"> <el-popconfirm width="220" title="确定将选择的数据删除" @confirm="table_del(selection, '0')"> <template #reference> <el-button :disabled="selection.length == 0" type="danger" plain icon="el-icon-delete"></el-button> @@ -69,10 +83,10 @@ </el-container> </el-container> </el-card> <el-dialog v-model="areaVisible" title="添加" width="500"> <el-dialog v-model="areaVisible" title="库区信息" width="500"> <el-form :model="form" :rules="rules" ref="dialogForm" label-width="120px" label-position="center"> <el-form-item label="库区编号" prop="code"> <el-input v-model="form.code" /> <el-input :disabled="form.id" v-model="form.code" /> </el-form-item> <el-form-item label="库区名称" prop="name"> <el-input v-model="form.name" /> @@ -81,6 +95,26 @@ <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="saveArea"> 确定 </el-button> </div> </template> </el-dialog> <el-dialog v-model="optionVisible" title="库位信息" width="500"> <el-form :model="form1" :rules="rules1" ref="dialogForm1" label-width="120px" label-position="center"> <el-form-item v-show="form1.warehouseCode" label="库位编号" prop="warehouseCode"> <el-input disabled v-model="form1.warehouseCode" /> </el-form-item> <el-form-item label="库位名称" prop="warehouseName"> <el-input v-model="form1.warehouseName" /> </el-form-item> <el-form-item label="备注" prop="remark"> <el-input v-model="form1.remark" /> </el-form-item> </el-form> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="savePosition"> 确定 </el-button> </div> @@ -129,6 +163,13 @@ }) } }, optionVisible: false, form1: {}, rules1: { warehouseName: [ { required: true, message: '必填' } ] }, } }, mounted() { @@ -145,13 +186,45 @@ this.params.areaId = node.id this.$refs?.table?.reload(this.params) }, renameArea(data) { this.form = { ...data } this.areaVisible = true }, addArea() { this.form = {} this.areaVisible = true }, delArea({ id }) { this.$confirm(`确定删除选中当前库区?`, '提示', { type: 'warning' }).then(() => { const loading = this.$loading(); this.$HTTP.get(`/api/blade-cps/warehouse-area/station-count?id=${id}`).then(res => { if (res.data > 0) { this.$message.warning("该库区已经绑定库位,请先清除库位!") } else { this.$HTTP.delete(`/api/blade-cps/warehouse-area/remove`, {}, { data: [id] }).then(res => { this.$message.success('操作成功') this.init() }) } }) loading.close(); }).catch(() => { }) }, saveArea() { this.$refs.dialogForm.validate(async (valid) => { if (valid) { if (this.form.id) { return this.$HTTP.put(`/api/blade-cps/warehouse-area/update`, { ...this.form }).then(res => { this.$message.success('操作成功') this.areaVisible = false this.init() }) } this.$HTTP.post(`/api/blade-cps/warehouse-area/insert`, { ...this.form, parentId: 1 }).then(res => { this.$message.success('操作成功') this.areaVisible = false @@ -164,13 +237,36 @@ this.$refs.table.reload() }, table_add() { this.form1 = {} this.optionVisible = true }, table_del() { table_del(ids) { this.$HTTP.delete(`/api/blade-cps/warehouse-station/remove`, {}, { data: ids.map(v => v.id) }).then(res => { this.$message.success('操作成功') this.search() }) }, table_edit() { table_edit(row) { this.form1 = { ...row } this.optionVisible = true }, savePosition() { this.$refs.dialogForm1.validate(async (valid) => { if (valid) { if (this.form1.id) { return this.$HTTP.put(`/api/blade-cps/warehouse-station/update`, { ...this.form1, areaId: this.params.areaId }).then(res => { this.$message.success('操作成功') this.optionVisible = false this.search() }) } this.$HTTP.post(`/api/blade-cps/warehouse-station/insert`, { ...this.form1, areaId: this.params.areaId }).then(res => { this.$message.success('操作成功') this.optionVisible = false this.search() }) } }) }, handleSelectionChange(selection) { this.selection = selection @@ -186,4 +282,19 @@ } </script> <style lang="scss" scoped></style> <style lang="scss" scoped> .custom-tree-node { width: 100%; display: flex; .icon { visibility: hidden; } } .custom-tree-node:hover { .icon { visibility: visible; } } </style>