From ae6b431a4f859535fdc23bab4cfffbb1a47a6bfb Mon Sep 17 00:00:00 2001 From: liuyiliang <azc78910> Date: Mon, 15 Jul 2024 18:55:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/spares/manufacturerinfo.js | 69 ++++ src/api/spares/materialclassification.js | 49 +++ src/api/spares/supplierinfo.js | 70 ++++ src/api/spares/warehouse.js | 69 ++++ src/views/leger/equipmentledgerDetail.vue | 12 + src/views/smart/workorder.vue | 10 +- src/views/smart/workorderDetail.vue | 13 +- src/views/spares/manufacturerinfo.vue | 325 +++++++++++++++++++ src/views/spares/materialclassification.vue | 246 +++++++++++++++ src/views/spares/supplierinfo.vue | 333 ++++++++++++++++++++ src/views/spares/warehouse.vue | 309 ++++++++++++++++++ 11 files changed, 1493 insertions(+), 12 deletions(-) create mode 100644 src/api/spares/manufacturerinfo.js create mode 100644 src/api/spares/materialclassification.js create mode 100644 src/api/spares/supplierinfo.js create mode 100644 src/api/spares/warehouse.js create mode 100644 src/views/spares/manufacturerinfo.vue create mode 100644 src/views/spares/materialclassification.vue create mode 100644 src/views/spares/supplierinfo.vue create mode 100644 src/views/spares/warehouse.vue diff --git a/src/api/spares/manufacturerinfo.js b/src/api/spares/manufacturerinfo.js new file mode 100644 index 0000000..eca297f --- /dev/null +++ b/src/api/spares/manufacturerinfo.js @@ -0,0 +1,69 @@ +import request from '@/router/axios'; + +export const getList = (current, size, params) => { + return request({ + url: '/api/manufacturerinfo/list', + method: 'get', + params: { + ...params, + current, + size, + } + }) +} + +export const getDetail = (id) => { + return request({ + url: '/api/manufacturerinfo/detail', + method: 'get', + params: { + id + } + }) +} + +export const remove = (ids) => { + return request({ + url: '/api/manufacturerinfo/remove', + method: 'post', + params: { + ids, + } + }) +} + +export const add = (row) => { + return request({ + url: '/api/manufacturerinfo/submit', + method: 'post', + data: row + }) +} + +export const update = (row) => { + return request({ + url: '/api/manufacturerinfo/submit', + method: 'post', + data: row + }) +} + +export const auditing = (ids) => { + return request({ + url: '/api/manufacturerinfo/auditing', + method: 'post', + params: { + ids, + } + }) +} + +export const reject = (ids) => { + return request({ + url: '/api/manufacturerinfo/reject', + method: 'post', + params: { + ids, + } + }) +} diff --git a/src/api/spares/materialclassification.js b/src/api/spares/materialclassification.js new file mode 100644 index 0000000..c9db673 --- /dev/null +++ b/src/api/spares/materialclassification.js @@ -0,0 +1,49 @@ +import request from '@/router/axios'; + +export const getList = (current, size, params) => { + return request({ + url: '/api/materialclassification/list', + method: 'get', + params: { + ...params, + current, + size, + } + }) +} + +export const getDetail = (id) => { + return request({ + url: '/api/materialclassification/detail', + method: 'get', + params: { + id + } + }) +} + +export const remove = (ids) => { + return request({ + url: '/api/materialclassification/remove', + method: 'post', + params: { + ids, + } + }) +} + +export const add = (row) => { + return request({ + url: '/api/materialclassification/submit', + method: 'post', + data: row + }) +} + +export const update = (row) => { + return request({ + url: '/api/materialclassification/submit', + method: 'post', + data: row + }) +} diff --git a/src/api/spares/supplierinfo.js b/src/api/spares/supplierinfo.js new file mode 100644 index 0000000..38a0d04 --- /dev/null +++ b/src/api/spares/supplierinfo.js @@ -0,0 +1,70 @@ +import request from '@/router/axios'; + +export const getList = (current, size, params) => { + return request({ + url: '/api/supplierinfo/list', + method: 'get', + params: { + ...params, + current, + size, + } + }) +} + +export const getDetail = (id) => { + return request({ + url: '/api/supplierinfo/detail', + method: 'get', + params: { + id + } + }) +} + +export const remove = (ids) => { + return request({ + url: '/api/supplierinfo/remove', + method: 'post', + params: { + ids, + } + }) +} + +export const add = (row) => { + return request({ + url: '/api/supplierinfo/submit', + method: 'post', + data: row + }) +} + +export const update = (row) => { + return request({ + url: '/api/supplierinfo/submit', + method: 'post', + data: row + }) +} + +export const auditing = (ids) => { + return request({ + url: '/api/supplierinfo/auditing', + method: 'post', + params: { + ids, + } + }) +} + +export const reject = (ids) => { + return request({ + url: '/api/supplierinfo/reject', + method: 'post', + params: { + ids, + } + }) +} + diff --git a/src/api/spares/warehouse.js b/src/api/spares/warehouse.js new file mode 100644 index 0000000..d5a66d5 --- /dev/null +++ b/src/api/spares/warehouse.js @@ -0,0 +1,69 @@ +import request from '@/router/axios'; + +export const getList = (current, size, params) => { + return request({ + url: '/api/warehouse/list', + method: 'get', + params: { + ...params, + current, + size, + } + }) +} + +export const getDetail = (id) => { + return request({ + url: '/api/warehouse/detail', + method: 'get', + params: { + id + } + }) +} + +export const remove = (ids) => { + return request({ + url: '/api/warehouse/remove', + method: 'post', + params: { + ids, + } + }) +} + +export const add = (row) => { + return request({ + url: '/api/warehouse/submit', + method: 'post', + data: row + }) +} + +export const update = (row) => { + return request({ + url: '/api/warehouse/submit', + method: 'post', + data: row + }) +} + +export const auditing = (ids) => { + return request({ + url: '/api/warehouse/auditing', + method: 'post', + params: { + ids, + } + }) +} + +export const reject = (ids) => { + return request({ + url: '/api/warehouse/reject', + method: 'post', + params: { + ids, + } + }) +} diff --git a/src/views/leger/equipmentledgerDetail.vue b/src/views/leger/equipmentledgerDetail.vue index 9768d34..f4d05b2 100644 --- a/src/views/leger/equipmentledgerDetail.vue +++ b/src/views/leger/equipmentledgerDetail.vue @@ -56,6 +56,7 @@ @row-update="document_rowUpdate" @row-save="document_rowSave" @row-del="document_rowDel" + :upload-before="uploadBefore" :upload-after="uploadAfter" :upload-preview="(file) => handleUploadPreview(file)" :upload-delete="(file) => handleUploadDelete(file)"> @@ -624,7 +625,9 @@ dataType: 'object', fileType: 'img',//img/video/audio type: 'upload', + accept: '.pdf', // hide: true, + tip: '仅能支持上传pdf文件格式', limit: 1, propsHttp: { res: 'data', @@ -950,6 +953,15 @@ handleDownload(row) { window.open(`/api/system/file/download?daf-auth=${getToken()}&fileName=${row.accessoryName}`); }, + uploadBefore(file, done, loading) { + if (file && file.name && file.name.toLowerCase().endsWith('.pdf')) { + done(); + } else { + this.$message.error('只能上传 PDF 格式的文件'); + loading(); + return false; + } + }, uploadAfter(response, done) { // response 是服务器响应 this.document_form.accessoryName = response.fileName; diff --git a/src/views/smart/workorder.vue b/src/views/smart/workorder.vue index cec0ade..5b01df2 100644 --- a/src/views/smart/workorder.vue +++ b/src/views/smart/workorder.vue @@ -22,10 +22,10 @@ <el-button type="danger" size="small" icon="el-icon-delete" plain v-if="permission.workorder_delete" @click="handleDelete">批量删除</el-button> </template> <template slot="menuRight"> - <el-button type="primary" size="small" plain @click="handleDetailAdd">新增</el-button> - <el-button type="primary" size="small" plain @click="handleReject">批量驳回</el-button> - <el-button type="primary" size="small" plain @click="handleAuditing">批量审核</el-button> - <el-button type="primary" size="small" plain @click="handleExport()">导出</el-button> + <el-button type="primary" size="small" plain @click="handleDetailAdd" v-if="permission.workorder_add">新增</el-button> + <el-button type="primary" size="small" plain @click="handleReject" v-if="permission.workorder_reject">批量驳回</el-button> + <el-button type="primary" size="small" plain @click="handleAuditing" v-if="permission.workorder_audit">批量审核</el-button> + <el-button type="primary" size="small" plain @click="handleExport" v-if="permission.workorder_export">导出</el-button> </template> <template #menu="{row,index}"> <el-button @click="handleDetailSearch(row,index)" type="text" size="small" icon="el-icon-view">查看详情</el-button> @@ -217,7 +217,7 @@ }, { label: "责任人", - prop: "responsibleUserName", + prop: "managerUserName", rules: [{ required: true, message: "请输入负责人", diff --git a/src/views/smart/workorderDetail.vue b/src/views/smart/workorderDetail.vue index 9458f6c..d67886a 100644 --- a/src/views/smart/workorderDetail.vue +++ b/src/views/smart/workorderDetail.vue @@ -22,11 +22,11 @@ <div class="container"> <span> <el-button size="small" @click="back">取消</el-button> - <el-button type="primary" size="small" @click="handleFormSubmit" v-if="addupdateShowButton">确定</el-button> - <el-button type="primary" size="small" @click="auditing" v-if="shouldShowButton">审核</el-button> - <el-button type="primary" size="small" @click="reject" v-if="shouldShowButton">驳回</el-button> - <el-button type="primary" size="small" @click="seachToUpdate" v-if="shouldShowButton">修改</el-button> - <el-button type="primary" size="small" @click="del" v-if="shouldShowButton">删除</el-button> + <el-button type="primary" size="small" @click="handleFormSubmit" v-if="addupdateShowButton && permission.workorder_add">确定</el-button> + <el-button type="primary" size="small" @click="auditing" v-if="shouldShowButton && permission.workorder_audit">审核</el-button> + <el-button type="primary" size="small" @click="reject" v-if="shouldShowButton && permission.workorder_reject">驳回</el-button> + <el-button type="primary" size="small" @click="seachToUpdate" v-if="shouldShowButton && permission.workorder_edit">修改</el-button> + <el-button type="primary" size="small" @click="del" v-if="shouldShowButton && permission.workorder_delete">删除</el-button> </span> </div> </basic-container> @@ -180,7 +180,7 @@ maxlength: 400 }, { label: "责任人", - prop: "responsibleUserId", + prop: "managerUserId", type: 'select', loadingText: '加载中', placeholder: '请输入用户编号或名称', @@ -372,7 +372,6 @@ cancelButtonText: "取消", type: "warning" }).then(() => { - this.tab1_form.checkStatus = "1" add(this.tab1_form).then(() => { this.$router.push({ path: "/smart/workorder", diff --git a/src/views/spares/manufacturerinfo.vue b/src/views/spares/manufacturerinfo.vue new file mode 100644 index 0000000..a1a529f --- /dev/null +++ b/src/views/spares/manufacturerinfo.vue @@ -0,0 +1,325 @@ +<template> + <basic-container> + <avue-crud :option="option" + :table-loading="loading" + :data="data" + :page="page" + :permission="permissionList" + :before-open="beforeOpen" + v-model="form" + :search.sync="search" + ref="crud" + @row-update="rowUpdate" + @row-save="rowSave" + @row-del="rowDel" + @search-change="searchChange" + @search-reset="searchReset" + @selection-change="selectionChange" + @current-change="currentChange" + @size-change="sizeChange" + @on-load="onLoad"> + <template slot="menuLeft"> + <el-button type="danger" size="small" icon="el-icon-delete" plain v-if="permission.manufacturerinfo_delete" @click="handleDelete">批量删除</el-button> + </template> + <template slot="menuRight"> + <el-button type="primary" size="small" plain @click="handleDetailAdd" v-if="permission.manufacturerinfo_add">新增</el-button> + <el-button type="primary" size="small" plain @click="handleReject" v-if="permission.manufacturerinfo_reject">批量驳回</el-button> + <el-button type="primary" size="small" plain @click="handleAuditing" v-if="permission.manufacturerinfo_audit">批量审核</el-button> + <el-button type="primary" size="small" plain @click="handleExport()" v-if="permission.manufacturerinfo_export">导出</el-button> + </template> + </avue-crud> + </basic-container> +</template> + +<script> + import {getList, getDetail, add, update, remove, reject, auditing} from "@/api/spares/manufacturerinfo"; + import {getToken} from "@/util/auth"; + import expUtil from "@/util/exportUtil"; + import {mapGetters} from "vuex"; + + export default { + data() { + return { + form: {}, + search: {}, + query: {}, + loading: true, + page: { + pageSize: 10, + currentPage: 1, + total: 0 + }, + selectionList: [], + option: { + height: 'auto', + calcHeight: 210, + searchShow: true, + searchMenuSpan: 6, + tip: false, + border: true, + index: true, + viewBtn: true, + selection: true, + column: [ + { + label: "统一社会信用代码/组织机构", + prop: "creditCode", + search: true, + rules: [{ + required: true, + message: "请输入统一社会信用代码/组织机构", + trigger: "blur" + }] + }, + { + label: "制造商名称", + prop: "manufacturerName", + search: true, + rules: [{ + required: true, + message: "请输入制造商名称", + trigger: "blur" + }] + }, + { + label: "注册地址", + prop: "registeredAddress", + rules: [{ + required: true, + message: "请输入注册地址", + trigger: "blur" + }] + }, + { + label: "生产地址", + prop: "productionAddress", + rules: [{ + required: true, + message: "请输入生产地址", + trigger: "blur" + }] + }, + { + label: "联系电话", + prop: "contactNumber", + rules: [{ + required: true, + message: "请输入联系电话", + trigger: "blur" + }] + }, + { + label: "电子邮箱", + prop: "email", + rules: [{ + required: true, + message: "请输入电子邮箱", + trigger: "blur" + }] + }, + { + label: "经营范围", + prop: "businessScope", + }, + { + label: "执行标准", + prop: "approvalStatus", + type: "select", + dicUrl: "/api/daf-system/dict/dictionary?code=check_status", + props: { + label: "dictValue", + value: "dictKey" + }, + }, + ] + }, + data: [] + }; + }, + computed: { + ...mapGetters(["permission"]), + permissionList() { + return { + addBtn: false, + viewBtn: false, + delBtn: this.vaildData(this.permission.manufacturerinfo_delete, false), + editBtn: this.vaildData(this.permission.manufacturerinfo_edit, false) + }; + }, + ids() { + let ids = []; + this.selectionList.forEach(ele => { + ids.push(ele.id); + }); + return ids.join(","); + } + }, + methods: { + rowSave(row, done, loading) { + add(row).then(() => { + done(); + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + }, error => { + window.console.log(error); + loading(); + }); + }, + rowUpdate(row, index, done, loading) { + update(row).then(() => { + done(); + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + }, error => { + window.console.log(error); + loading(); + }); + }, + rowDel(row) { + this.$confirm("确定将选择数据删除?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return remove(row.id); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + }); + }, + handleDelete() { + if (this.selectionList.length === 0) { + this.$message.warning("请选择至少一条数据"); + return; + } + this.$confirm("确定将选择数据删除?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return remove(this.ids); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + this.$refs.crud.toggleSelection(); + }); + }, + beforeOpen(done, type) { + if (["edit", "view"].includes(type)) { + getDetail(this.form.id).then(res => { + this.form = res.data.data; + }); + } + done(); + }, + searchReset() { + this.query = {}; + this.onLoad(this.page); + }, + searchChange(params, done) { + this.query = params; + this.page.currentPage = 1; + this.onLoad(this.page, params); + done(); + }, + selectionChange(list) { + this.selectionList = list; + }, + selectionClear() { + this.selectionList = []; + this.$refs.crud.toggleSelection(); + }, + currentChange(currentPage){ + this.page.currentPage = currentPage; + }, + sizeChange(pageSize){ + this.page.pageSize = pageSize; + }, + onLoad(page, params = {}) { + this.loading = true; + getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { + const data = res.data.data; + this.page.total = data.total; + this.data = data.records; + this.loading = false; + this.selectionClear(); + }); + }, + handleDetailAdd() { + this.$refs.crud.rowAdd(); + }, + handleAuditing() { + if (this.selectionList.length === 0) { + this.$message.warning("请选择至少一条数据"); + return; + } + this.$confirm("是否将选择数据审核?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return auditing(this.ids); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + this.$refs.crud.toggleSelection(); + }); + }, + handleReject() { + if (this.selectionList.length === 0) { + this.$message.warning("请选择至少一条数据"); + return; + } + this.$confirm("是否将选择数据审核?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return reject(this.ids); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + this.$refs.crud.toggleSelection(); + }); + }, + handleExport() { + this.$confirm("是否导出数据?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }).then(() => { + expUtil.excelExportEasy(`/api/warehouse/export?daf-auth=${getToken()}`, this.search); + }); + }, + } + }; +</script> + +<style> +</style> diff --git a/src/views/spares/materialclassification.vue b/src/views/spares/materialclassification.vue new file mode 100644 index 0000000..a0d1b86 --- /dev/null +++ b/src/views/spares/materialclassification.vue @@ -0,0 +1,246 @@ +<template> + <basic-container> + <avue-crud :option="option" + :table-loading="loading" + :data="data" + :page="page" + :permission="permissionList" + :before-open="beforeOpen" + v-model="form" + :search.sync="search" + ref="crud" + @row-update="rowUpdate" + @row-save="rowSave" + @row-del="rowDel" + @search-change="searchChange" + @search-reset="searchReset" + @selection-change="selectionChange" + @current-change="currentChange" + @size-change="sizeChange" + @on-load="onLoad"> + <template slot="menuLeft"> + <el-button type="danger" size="small" icon="el-icon-delete" plain v-if="permission.materialclassification_delete" @click="handleDelete">批量删除</el-button> + </template> + <template slot="menuRight"> + <el-button type="primary" size="small" plain @click="handleDetailAdd" v-if="permission.materialclassification_add">新增</el-button> + <el-button type="primary" size="small" plain @click="handleExport()" v-if="permission.materialclassification_export">导出</el-button> + </template> + </avue-crud> + </basic-container> +</template> + +<script> + import {getList, getDetail, add, update, remove} from "@/api/spares/materialclassification"; + import {getToken} from "@/util/auth"; + import expUtil from "@/util/exportUtil"; + import {mapGetters} from "vuex"; + + export default { + data() { + return { + form: {}, + search: {}, + query: {}, + loading: true, + page: { + pageSize: 10, + currentPage: 1, + total: 0 + }, + selectionList: [], + option: { + height: 'auto', + calcHeight: 210, + searchShow: true, + searchMenuSpan: 6, + tip: false, + border: true, + index: true, + viewBtn: true, + selection: true, + column: [ + { + label: "物资分配码", + prop: "code", + search: true, + }, + { + label: "物资类型", + search: true, + prop: "type", + type: "select", + dicUrl: "/api/daf-system/dict/dictionary?code=supplies_type", + props: { + label: "dictValue", + value: "dictKey" + }, + }, + { + label: "创建时间", + prop: "createTime", + type: 'datetime', + disabled: true, + }, + { + label: "创建人", + prop: "createUser", + type: 'select', + loadingText: '加载中', + placeholder: '请输入用户编号或名称', + remote: true, + disabled: true, + props: { + label: 'name', + value: 'id', + desc: 'code' + }, + dicUrl: "/api/daf-user/listBySearch?search={{key}}", + }, + ] + }, + data: [] + }; + }, + computed: { + ...mapGetters(["permission"]), + permissionList() { + return { + addBtn: false, + viewBtn: false, + delBtn: this.vaildData(this.permission.materialclassification_delete, false), + editBtn: this.vaildData(this.permission.materialclassification_edit, false) + }; + }, + ids() { + let ids = []; + this.selectionList.forEach(ele => { + ids.push(ele.id); + }); + return ids.join(","); + } + }, + methods: { + rowSave(row, done, loading) { + add(row).then(() => { + done(); + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + }, error => { + window.console.log(error); + loading(); + }); + }, + rowUpdate(row, index, done, loading) { + update(row).then(() => { + done(); + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + }, error => { + window.console.log(error); + loading(); + }); + }, + rowDel(row) { + this.$confirm("确定将选择数据删除?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return remove(row.id); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + }); + }, + handleDelete() { + if (this.selectionList.length === 0) { + this.$message.warning("请选择至少一条数据"); + return; + } + this.$confirm("确定将选择数据删除?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return remove(this.ids); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + this.$refs.crud.toggleSelection(); + }); + }, + beforeOpen(done, type) { + if (["edit", "view"].includes(type)) { + getDetail(this.form.id).then(res => { + this.form = res.data.data; + }); + } + done(); + }, + searchReset() { + this.query = {}; + this.onLoad(this.page); + }, + searchChange(params, done) { + this.query = params; + this.page.currentPage = 1; + this.onLoad(this.page, params); + done(); + }, + selectionChange(list) { + this.selectionList = list; + }, + selectionClear() { + this.selectionList = []; + this.$refs.crud.toggleSelection(); + }, + currentChange(currentPage){ + this.page.currentPage = currentPage; + }, + sizeChange(pageSize){ + this.page.pageSize = pageSize; + }, + onLoad(page, params = {}) { + this.loading = true; + getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { + const data = res.data.data; + this.page.total = data.total; + this.data = data.records; + this.loading = false; + this.selectionClear(); + }); + }, + handleDetailAdd() { + this.$refs.crud.rowAdd(); + }, + handleExport() { + this.$confirm("是否导出数据?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }).then(() => { + expUtil.excelExportEasy(`/api/warehouse/export?daf-auth=${getToken()}`, this.search); + }); + }, + } + }; +</script> + +<style> +</style> diff --git a/src/views/spares/supplierinfo.vue b/src/views/spares/supplierinfo.vue new file mode 100644 index 0000000..4201fd3 --- /dev/null +++ b/src/views/spares/supplierinfo.vue @@ -0,0 +1,333 @@ +<template> + <basic-container> + <avue-crud :option="option" + :table-loading="loading" + :data="data" + :page="page" + :permission="permissionList" + :before-open="beforeOpen" + v-model="form" + :search.sync="search" + ref="crud" + @row-update="rowUpdate" + @row-save="rowSave" + @row-del="rowDel" + @search-change="searchChange" + @search-reset="searchReset" + @selection-change="selectionChange" + @current-change="currentChange" + @size-change="sizeChange" + @on-load="onLoad"> + <template slot="menuLeft"> + <el-button type="danger" size="small" icon="el-icon-delete" plain v-if="permission.supplierinfo_delete" @click="handleDelete">批量删除</el-button> + </template> + <template slot="menuRight"> + <el-button type="primary" size="small" plain @click="handleDetailAdd" v-if="permission.supplierinfo_add">新增</el-button> + <el-button type="primary" size="small" plain @click="handleReject" v-if="permission.supplierinfo_reject">批量驳回</el-button> + <el-button type="primary" size="small" plain @click="handleAuditing" v-if="permission.supplierinfo_audit">批量审核</el-button> + <el-button type="primary" size="small" plain @click="handleExport()" v-if="permission.supplierinfo_export">导出</el-button> + </template> + </avue-crud> + </basic-container> +</template> + +<script> + import {getList, getDetail, add, update, remove, reject, auditing} from "@/api/spares/supplierinfo"; + import {getToken} from "@/util/auth"; + import expUtil from "@/util/exportUtil"; + import {mapGetters} from "vuex"; + + export default { + data() { + return { + form: {}, + search: {}, + query: {}, + loading: true, + page: { + pageSize: 10, + currentPage: 1, + total: 0 + }, + selectionList: [], + option: { + height: 'auto', + calcHeight: 210, + searchShow: true, + searchMenuSpan: 6, + tip: false, + border: true, + index: true, + viewBtn: true, + selection: true, + column: [ + { + label: "统一社会信用代码/组织机构", + prop: "creditCode", + search: true, + rules: [{ + required: true, + message: "请输入统一社会信用代码/组织机构", + trigger: "blur" + }] + }, + { + label: "供应商名称", + prop: "supplierName", + search: true, + rules: [{ + required: true, + message: "请输入供应商名称", + trigger: "blur" + }] + }, + { + label: "注册地址", + prop: "registeredAddress", + rules: [{ + required: true, + message: "请输入注册地址", + trigger: "blur" + }] + }, + { + label: "生产地址", + prop: "productionAddress", + rules: [{ + required: true, + message: "请输入生产地址", + trigger: "blur" + }] + }, + { + label: "联系电话", + prop: "contactNumber", + rules: [{ + required: true, + message: "请输入联系电话", + trigger: "blur" + }] + }, + { + label: "电子邮箱", + prop: "email", + rules: [{ + required: true, + message: "请输入电子邮箱", + trigger: "blur" + }] + }, + { + label: "经营范围", + prop: "businessScope", + }, + { + label: "执行标准", + prop: "approvalStatus", + type: "select", + dicUrl: "/api/daf-system/dict/dictionary?code=check_status", + props: { + label: "dictValue", + value: "dictKey" + }, + }, + { + label: "付款条约", + prop: "paymentTerms", + }, + { + label: "价格条款", + prop: "priceTerms", + }, + ] + }, + data: [] + }; + }, + computed: { + ...mapGetters(["permission"]), + permissionList() { + return { + addBtn: false, + viewBtn: false, + delBtn: this.vaildData(this.permission.supplierinfo_delete, false), + editBtn: this.vaildData(this.permission.supplierinfo_edit, false) + }; + }, + ids() { + let ids = []; + this.selectionList.forEach(ele => { + ids.push(ele.id); + }); + return ids.join(","); + } + }, + methods: { + rowSave(row, done, loading) { + add(row).then(() => { + done(); + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + }, error => { + window.console.log(error); + loading(); + }); + }, + rowUpdate(row, index, done, loading) { + update(row).then(() => { + done(); + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + }, error => { + window.console.log(error); + loading(); + }); + }, + rowDel(row) { + this.$confirm("确定将选择数据删除?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return remove(row.id); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + }); + }, + handleDelete() { + if (this.selectionList.length === 0) { + this.$message.warning("请选择至少一条数据"); + return; + } + this.$confirm("确定将选择数据删除?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return remove(this.ids); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + this.$refs.crud.toggleSelection(); + }); + }, + beforeOpen(done, type) { + if (["edit", "view"].includes(type)) { + getDetail(this.form.id).then(res => { + this.form = res.data.data; + }); + } + done(); + }, + searchReset() { + this.query = {}; + this.onLoad(this.page); + }, + searchChange(params, done) { + this.query = params; + this.page.currentPage = 1; + this.onLoad(this.page, params); + done(); + }, + selectionChange(list) { + this.selectionList = list; + }, + selectionClear() { + this.selectionList = []; + this.$refs.crud.toggleSelection(); + }, + currentChange(currentPage){ + this.page.currentPage = currentPage; + }, + sizeChange(pageSize){ + this.page.pageSize = pageSize; + }, + onLoad(page, params = {}) { + this.loading = true; + getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { + const data = res.data.data; + this.page.total = data.total; + this.data = data.records; + this.loading = false; + this.selectionClear(); + }); + }, + handleDetailAdd() { + this.$refs.crud.rowAdd(); + }, + handleAuditing() { + if (this.selectionList.length === 0) { + this.$message.warning("请选择至少一条数据"); + return; + } + this.$confirm("是否将选择数据审核?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return auditing(this.ids); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + this.$refs.crud.toggleSelection(); + }); + }, + handleReject() { + if (this.selectionList.length === 0) { + this.$message.warning("请选择至少一条数据"); + return; + } + this.$confirm("是否将选择数据审核?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return reject(this.ids); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + this.$refs.crud.toggleSelection(); + }); + }, + handleExport() { + this.$confirm("是否导出数据?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }).then(() => { + expUtil.excelExportEasy(`/api/warehouse/export?daf-auth=${getToken()}`, this.search); + }); + }, + } + }; +</script> + +<style> +</style> diff --git a/src/views/spares/warehouse.vue b/src/views/spares/warehouse.vue new file mode 100644 index 0000000..c63eeba --- /dev/null +++ b/src/views/spares/warehouse.vue @@ -0,0 +1,309 @@ +<template> + <basic-container> + <avue-crud :option="option" + :table-loading="loading" + :data="data" + :page="page" + :permission="permissionList" + :before-open="beforeOpen" + v-model="form" + :search.sync="search" + ref="crud" + @row-update="rowUpdate" + @row-save="rowSave" + @row-del="rowDel" + @search-change="searchChange" + @search-reset="searchReset" + @selection-change="selectionChange" + @current-change="currentChange" + @size-change="sizeChange" + @on-load="onLoad"> + <template slot="menuLeft"> + <el-button type="danger" size="small" icon="el-icon-delete" plain v-if="permission.warehouse_delete" @click="handleDelete">批量删除</el-button> + </template> + <template slot="menuRight"> + <el-button type="primary" size="small" plain @click="handleDetailAdd" v-if="permission.warehouse_add">新增</el-button> + <el-button type="primary" size="small" plain @click="handleReject" v-if="permission.warehouse_reject">批量驳回</el-button> + <el-button type="primary" size="small" plain @click="handleAuditing" v-if="permission.warehouse_audit">批量审核</el-button> + <el-button type="primary" size="small" plain @click="handleExport()" v-if="permission.warehouse_export">导出</el-button> + </template> + </avue-crud> + </basic-container> +</template> + +<script> + import {getList, getDetail, add, update, remove, reject, auditing} from "@/api/spares/warehouse"; + import {getToken} from "@/util/auth"; + import expUtil from "@/util/exportUtil"; + import {mapGetters} from "vuex"; + + export default { + data() { + return { + form: {}, + search: {}, + query: {}, + loading: true, + page: { + pageSize: 10, + currentPage: 1, + total: 0 + }, + selectionList: [], + option: { + height: 'auto', + calcHeight: 210, + searchShow: true, + searchMenuSpan: 6, + tip: false, + border: true, + index: true, + viewBtn: true, + selection: true, + column: [ + { + label: "仓库编号", + prop: "code", + search: true, + }, + { + label: "仓库名称", + search: true, + prop: "name", + }, + { + label: "仓库地址", + prop: "address", + search: true, + }, + { + label: "仓库类型", + search: true, + prop: "type", + type: "select", + dicUrl: "/api/daf-system/dict/dictionary?code=warehouse_type", + props: { + label: "dictValue", + value: "dictKey" + }, + }, + { + label: "仓库责任人", + prop: "managerUserId", + type: 'select', + loadingText: '加载中', + placeholder: '请输入用户编号或名称', + remote: true, + props: { + label: 'name', + value: 'id', + desc: 'code' + }, + dicUrl: "/api/daf-user/listBySearch?search={{key}}", + }, + { + label: "联系电话", + prop: "contactNumber", + }, + { + label: "审批状态", + prop: "approvalStatus", + type: "select", + dicUrl: "/api/daf-system/dict/dictionary?code=check_status", + props: { + label: "dictValue", + value: "dictKey" + }, + }, + ] + }, + data: [] + }; + }, + computed: { + ...mapGetters(["permission"]), + permissionList() { + return { + addBtn: false, + viewBtn: false, + delBtn: this.vaildData(this.permission.warehouse_delete, false), + editBtn: this.vaildData(this.permission.warehouse_edit, false) + }; + }, + ids() { + let ids = []; + this.selectionList.forEach(ele => { + ids.push(ele.id); + }); + return ids.join(","); + } + }, + methods: { + rowSave(row, done, loading) { + add(row).then(() => { + done(); + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + }, error => { + window.console.log(error); + loading(); + }); + }, + rowUpdate(row, index, done, loading) { + update(row).then(() => { + done(); + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + }, error => { + window.console.log(error); + loading(); + }); + }, + rowDel(row) { + this.$confirm("确定将选择数据删除?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return remove(row.id); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + }); + }, + handleDelete() { + if (this.selectionList.length === 0) { + this.$message.warning("请选择至少一条数据"); + return; + } + this.$confirm("确定将选择数据删除?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return remove(this.ids); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + this.$refs.crud.toggleSelection(); + }); + }, + beforeOpen(done, type) { + if (["edit", "view"].includes(type)) { + getDetail(this.form.id).then(res => { + this.form = res.data.data; + }); + } + done(); + }, + searchReset() { + this.query = {}; + this.onLoad(this.page); + }, + searchChange(params, done) { + this.query = params; + this.page.currentPage = 1; + this.onLoad(this.page, params); + done(); + }, + selectionChange(list) { + this.selectionList = list; + }, + selectionClear() { + this.selectionList = []; + this.$refs.crud.toggleSelection(); + }, + currentChange(currentPage){ + this.page.currentPage = currentPage; + }, + sizeChange(pageSize){ + this.page.pageSize = pageSize; + }, + onLoad(page, params = {}) { + this.loading = true; + getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { + const data = res.data.data; + this.page.total = data.total; + this.data = data.records; + this.loading = false; + this.selectionClear(); + }); + }, + handleDetailAdd() { + this.$refs.crud.rowAdd(); + }, + handleAuditing() { + if (this.selectionList.length === 0) { + this.$message.warning("请选择至少一条数据"); + return; + } + this.$confirm("是否将选择数据审核?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return auditing(this.ids); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + this.$refs.crud.toggleSelection(); + }); + }, + handleReject() { + if (this.selectionList.length === 0) { + this.$message.warning("请选择至少一条数据"); + return; + } + this.$confirm("是否将选择数据审核?", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + return reject(this.ids); + }) + .then(() => { + this.onLoad(this.page); + this.$message({ + type: "success", + message: "操作成功!" + }); + this.$refs.crud.toggleSelection(); + }); + }, + handleExport() { + this.$confirm("是否导出数据?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }).then(() => { + expUtil.excelExportEasy(`/api/warehouse/export?daf-auth=${getToken()}`, this.search); + }); + }, + } + }; +</script> + +<style> +</style>