Browse Source

Merge branch 'pre-production'

fix_bug_pro20231227
pref_mail@163.com 1 year ago
parent
commit
0eda9bec26
  1. 1
      package.json
  2. 2
      src/option/basic/basicMaterial.js
  3. 2
      src/page/index/top/index.vue
  4. 672
      src/views/basic/material/basicMaterial.vue
  5. 12
      src/views/distribution/checkInventoryTask/createTask.vue
  6. 2513
      yarn.lock

1
package.json

@ -32,6 +32,7 @@
"vue": "^3.2.40", "vue": "^3.2.40",
"vue-baidu-map": "^0.21.22", "vue-baidu-map": "^0.21.22",
"vue-i18n": "^9.1.9", "vue-i18n": "^9.1.9",
"vue-qr": "^4.0.9",
"vue-router": "^4.2.4", "vue-router": "^4.2.4",
"vuex": "^4.0.2" "vuex": "^4.0.2"
}, },

2
src/option/basic/basicMaterial.js

@ -8,7 +8,7 @@ export default {
index: true, index: true,
viewBtn: true, viewBtn: true,
delBtn: true, delBtn: true,
selection: false, selection: true,
indexLabel: '序号', indexLabel: '序号',
indexWidth: '80', indexWidth: '80',
dialogClickModal: false, dialogClickModal: false,

2
src/page/index/top/index.vue

@ -67,7 +67,7 @@
</div> </div>
<el-dialog v-model="isshow" title="切换仓库" width="30%"> <el-dialog v-model="isshow" title="切换仓库" width="30%">
<div style="display: flex; flex-direction: column; align-items: center"> <div style="display: flex; flex-direction: column; align-items: center">
<el-select class="selecin" v-model="warehousevalue" placeholder="请选择切换的仓库"> <el-select class="selecin" v-model="warehousevalue" filterable placeholder="请选择切换的仓库">
<el-option <el-option
v-for="(item, index) in datalist" v-for="(item, index) in datalist"
:key="item.id" :key="item.id"

672
src/views/basic/material/basicMaterial.vue

@ -1,42 +1,45 @@
<template> <template>
<basic-container> <basic-container>
<avue-crud :option="option" <avue-crud
v-model:search="search" :option="option"
v-model:page="page" v-model:search="search"
v-model="form" v-model:page="page"
:table-loading="loading" v-model="form"
:data="data" :table-loading="loading"
:permission="permissionList" :data="data"
:before-open="beforeOpen" :permission="permissionList"
ref="crud" :before-open="beforeOpen"
@row-update="rowUpdate" ref="crud"
@row-save="rowSave" @row-update="rowUpdate"
@row-del="rowDel" @row-save="rowSave"
@search-change="searchChange" @row-del="rowDel"
@search-reset="searchReset" @search-change="searchChange"
@selection-change="selectionChange" @search-reset="searchReset"
@current-change="currentChange" @selection-change="selectionChange"
@size-change="sizeChange" @current-change="currentChange"
@refresh-change="refreshChange" @size-change="sizeChange"
@on-load="onLoad"> @refresh-change="refreshChange"
@on-load="onLoad"
>
<template #menu-left> <template #menu-left>
<el-button type="danger" <el-button type="danger" icon="el-icon-delete" plain @click="handleImport"
icon="el-icon-delete" >
plain
@click="handleImport">
</el-button> </el-button>
<!-- v-if="permission.basicMaterial_delete"--> <!-- v-if="permission.basicMaterial_delete"-->
<el-button type="warning" <el-button type="warning" plain icon="el-icon-download" @click="handleExport"
plain >
icon="el-icon-download" </el-button>
@click="handleExport"> <el-button type="warning" plain icon="Printer" @click="handleBatchPrinter">
批量打印
</el-button> </el-button>
</template> </template>
<template #menu="{row,index,size}"> <template #menu="{ row, index, size }">
<el-button type="text" <el-button type="text" plain icon="el-icon-edit" @click="rowDelTripartite(row, index)">
plain 三方物料
icon="el-icon-edit" </el-button>
@click="rowDelTripartite(row,index)">三方物料</el-button> <el-button type="text" plain icon="Printer" @click="handlePrinter(row, index, size)">
打印
</el-button>
</template> </template>
</avue-crud> </avue-crud>
<el-dialog title="物料导入" append-to-body v-model="excelBox" width="555px"> <el-dialog title="物料导入" append-to-body v-model="excelBox" width="555px">
@ -48,280 +51,381 @@
</template> </template>
</avue-form> </avue-form>
</el-dialog> </el-dialog>
<el-dialog title="物料二维码" append-to-body v-model="printStock" width="555px">
<div
class="PrinterValue"
style="width: 100%; border: 1px solid rgb(0, 0, 0); margin-bottom: 10px"
v-for="item in printList"
:key="item.productCode"
>
<div
style="
border-bottom: 1px solid #000;
font-size: 20px;
width: 100%;
text-align: center;
font-weight: bold;
padding: 10px;
box-sizing: border-box;
"
>
物料编码
</div>
<div style="display: flex; justify-content: center; align-items: center">
<div style="display: flex; width: 40%; justify-content: center; border-right: 1px solid">
<vue-qr
ref="qrCode"
:text="item.productCode"
style="display: block; height: 120px; width: 120px"
></vue-qr>
</div>
<div style="text-align: left; height: 120px; box-sizing: border-box; flex: 1; zoom: 0.9">
<div
style="
height: 40px;
line-height: 40px;
border-bottom: 1px solid #000;
box-sizing: border-box;
padding-left: 10px;
font-size: 14px;
"
>
产品名称: {{ item.name }}
</div>
<div
style="
height: 40px;
line-height: 40px;
border-bottom: 1px solid #000;
box-sizing: border-box;
padding-left: 10px;
font-size: 14px;
"
>
产品编码: {{ item.productCode }}
</div>
<div
style="
height: 40px;
line-height: 40px;
box-sizing: border-box;
padding-left: 10px;
font-size: 14px;
"
>
SKU: {{ item.sku }}
</div>
</div>
</div>
</div>
<div class="flex-c-c mt10">
<el-button @click="() => (printStock = false)">关闭</el-button>
<el-button type="primary" icon="Printer" @click="handlePrinterValue">打印</el-button>
</div>
</el-dialog>
</basic-container> </basic-container>
</template> </template>
<script> <script>
import {getList, getDetail, add, update, remove} from "@/api/basic/basicMaterial"; import { getList, getDetail, add, update, remove } from '@/api/basic/basicMaterial';
import option from "@/option/basic/basicMaterial"; import option from '@/option/basic/basicMaterial';
import {mapGetters} from "vuex"; import { mapGetters } from 'vuex';
import {exportBlob} from "@/api/common"; import { exportBlob } from '@/api/common';
import {getToken} from '@/utils/auth'; import { getToken } from '@/utils/auth';
import {downloadXls} from "@/utils/util"; import { downloadXls } from '@/utils/util';
import {dateNow} from "@/utils/date"; import print from '@/utils/print.js';
import NProgress from 'nprogress'; import { dateNow } from '@/utils/date';
import 'nprogress/nprogress.css'; import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import VueQr from 'vue-qr/src/packages/vue-qr.vue';
export default { export default {
data() { components: {
return { VueQr,
form: {}, },
query: {}, data() {
search: {}, return {
loading: true, form: {},
excelBox: false, query: {},
excelForm: {}, search: {},
page: { loading: true,
pageSize: 30, excelBox: false,
currentPage: 1, excelForm: {},
total: 0 page: {
}, pageSize: 30,
selectionList: [], currentPage: 1,
option: option, total: 0,
data: [], },
excelOption: { selectionList: [],
submitBtn: false, option: option,
emptyBtn: false, data: [],
column: [ excelOption: {
{ submitBtn: false,
label: '文件上传', emptyBtn: false,
prop: 'excelFile', column: [
type: 'upload', {
drag: true, label: '文件上传',
loadText: '文件上传,请稍等', prop: 'excelFile',
span: 24, type: 'upload',
propsHttp: { drag: true,
res: 'data', loadText: '文件上传,请稍等',
}, span: 24,
tip: '请上传 .xls,.xlsx 标准格式文件', propsHttp: {
action: '/api/logpm-basic/material/import-basicMaterial', res: 'data',
},
{
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
}, },
], tip: '请上传 .xls,.xlsx 标准格式文件',
}, action: '/api/logpm-basic/material/import-basicMaterial',
},
{
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
},
],
},
/** 物料编码二维码打印弹窗 */
printStock: false,
textValue: '',
printList: [],
};
},
computed: {
...mapGetters(['permission']),
permissionList() {
return {
addBtn: this.validData(this.permission.basicMaterial_add, false),
viewBtn: this.validData(this.permission.basicMaterial_view, false),
delBtn: this.validData(this.permission.basicMaterial_delete, false),
editBtn: this.validData(this.permission.basicMaterial_edit, false),
}; };
}, },
computed: { ids() {
...mapGetters(["permission"]), let ids = [];
permissionList() { this.selectionList.forEach(ele => {
return { ids.push(ele.id);
addBtn: this.validData(this.permission.basicMaterial_add, false), });
viewBtn: this.validData(this.permission.basicMaterial_view, false), return ids.join(',');
delBtn: this.validData(this.permission.basicMaterial_delete, false),
editBtn: this.validData(this.permission.basicMaterial_edit, false)
};
},
ids() {
let ids = [];
this.selectionList.forEach(ele => {
ids.push(ele.id);
});
return ids.join(",");
}
}, },
},
watch:{ watch: {
'excelForm.isCovered'() { 'excelForm.isCovered'() {
if (this.excelForm.isCovered !== '') { if (this.excelForm.isCovered !== '') {
const column = this.findObject(this.excelOption.column, 'excelFile'); const column = this.findObject(this.excelOption.column, 'excelFile');
column.action = `/api/logpm-warehouse/warehouseWarehousingEntry/import-WarehousingEntry?isCovered=${this.excelForm.isCovered}`; column.action = `/api/logpm-warehouse/warehouseWarehousingEntry/import-WarehousingEntry?isCovered=${this.excelForm.isCovered}`;
}
},
},
methods: {
rowDelTripartite(row, num) {
console.log('><><><><', row, num);
this.$router.push({
path: '/basic/material/basicTripartiteMaterial',
query: {
id: row.id,
name: row.name,
},
});
// this.$router.push({
// path: '/distribution/inventory/distrilbutionBillLading',
// query:{
// id: this.ids,
//
//
// }
// });
},
rowSave(row, done, loading) {
add(row).then(
() => {
this.onLoad(this.page);
this.$message({
type: 'success',
message: '操作成功!',
});
done();
},
error => {
loading();
window.console.log(error);
} }
}, );
}, },
methods: { rowUpdate(row, index, done, loading) {
//
rowDelTripartite(row,num){ update(row).then(
console.log("><><><><",row,num); () => {
this.$router.push({ this.onLoad(this.page);
path: '/basic/material/basicTripartiteMaterial', this.$message({
query:{ type: 'success',
id: row.id, message: '操作成功!',
name: row.name
}
});
// this.$router.push({
// path: '/distribution/inventory/distrilbutionBillLading',
// query:{
// id: this.ids,
//
//
// }
// });
},
rowSave(row, done, loading) {
add(row).then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
done();
}, error => {
loading();
window.console.log(error);
});
},
rowUpdate(row, index, done, loading) {
//
update(row).then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
done();
}, error => {
loading();
console.log(error);
});
},
rowDel(row) {
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
return remove(row.id);
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
}); });
}, done();
handleDelete() { },
if (this.selectionList.length === 0) { error => {
this.$message.warning("请选择至少一条数据"); loading();
return; console.log(error);
} }
this.$confirm("确定将选择数据删除?", { );
confirmButtonText: "确定", },
cancelButtonText: "取消", rowDel(row) {
type: "warning" this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
return remove(row.id);
}) })
.then(() => { .then(() => {
return remove(this.ids); this.onLoad(this.page);
}) this.$message({
.then(() => { type: 'success',
this.onLoad(this.page); message: '操作成功!',
this.$message({
type: "success",
message: "操作成功!"
});
this.$refs.crud.toggleSelection();
}); });
},
uploadAfter(res, done, loading, column) {
window.console.log(column);
this.excelBox = false;
this.refreshChange();
done();
},
handleExport() {
let downloadUrl = `/api/logpm-basic/material/export-basicMaterial?${this.website.tokenHeader}=${getToken()}`;
const {
} = this.query;
let values = {
};
this.$confirm("是否导出数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
NProgress.start();
exportBlob(downloadUrl, values).then(res => {
downloadXls(res.data, `物料基础信息${dateNow()}.xlsx`);
NProgress.done();
})
}); });
}, },
// handleDelete() {
handleImport(){ if (this.selectionList.length === 0) {
this.excelBox = true; this.$message.warning('请选择至少一条数据');
}, return;
// }
handleTemplate() { this.$confirm('确定将选择数据删除?', {
console.log("下载模板!!!"); confirmButtonText: '确定',
exportBlob( cancelButtonText: '取消',
`/api/logpm-basic/material/export-basicMaterialMb?${this.website.tokenHeader}=${getToken()}` type: 'warning',
).then(res => { })
downloadXls(res.data, '物料数据模板.xlsx'); .then(() => {
}); return remove(this.ids);
}, })
beforeOpen(done, type) { .then(() => {
if (["edit", "view"].includes(type)) { this.onLoad(this.page);
getDetail(this.form.id).then(res => { this.$message({
this.form = res.data.data; type: 'success',
message: '操作成功!',
}); });
} this.$refs.crud.toggleSelection();
done(); });
}, },
searchReset() { uploadAfter(res, done, loading, column) {
this.query = {}; window.console.log(column);
this.onLoad(this.page); this.excelBox = false;
}, this.refreshChange();
searchChange(params, done) { done();
this.query = params; },
this.page.currentPage = 1; handleExport() {
this.onLoad(this.page, params); let downloadUrl = `/api/logpm-basic/material/export-basicMaterial?${
done(); this.website.tokenHeader
}, }=${getToken()}`;
selectionChange(list) { const {} = this.query;
this.selectionList = list; let values = {};
}, this.$confirm('是否导出数据?', '提示', {
selectionClear() { confirmButtonText: '确定',
this.selectionList = []; cancelButtonText: '取消',
this.$refs.crud.toggleSelection(); type: 'warning',
}, }).then(() => {
currentChange(currentPage){ NProgress.start();
this.page.currentPage = currentPage; exportBlob(downloadUrl, values).then(res => {
}, downloadXls(res.data, `物料基础信息${dateNow()}.xlsx`);
sizeChange(pageSize){ NProgress.done();
this.page.pageSize = pageSize; });
}, });
refreshChange() { },
this.onLoad(this.page, this.query); //
}, handleImport() {
onLoad(page, params = {}) { this.excelBox = true;
this.loading = true; },
//
const { handleTemplate() {
productCode, console.log('下载模板!!!');
name, exportBlob(
brandId `/api/logpm-basic/material/export-basicMaterialMb?${this.website.tokenHeader}=${getToken()}`
} = this.query; ).then(res => {
let values = { downloadXls(res.data, '物料数据模板.xlsx');
productCode:productCode, });
name:name, },
brandId:brandId, beforeOpen(done, type) {
hide:1 if (['edit', 'view'].includes(type)) {
}; getDetail(this.form.id).then(res => {
this.form = res.data.data;
getList(page.currentPage, page.pageSize, values).then(res => {
const data = res.data.data;
this.page.total = data.total;
this.data = data.records;
this.loading = false;
this.selectionClear();
}); });
} }
} 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;
},
refreshChange() {
this.onLoad(this.page, this.query);
},
onLoad(page, params = {}) {
this.loading = true;
const { productCode, name, brandId } = this.query;
let values = {
productCode: productCode,
name: name,
brandId: brandId,
hide: 1,
};
getList(page.currentPage, page.pageSize, values).then(res => {
const data = res.data.data;
this.page.total = data.total;
this.data = data.records;
this.loading = false;
this.selectionClear();
});
},
/** 开启打印弹窗 */
handlePrinter(row, index, size) {
this.printList = [row];
this.printStock = true;
},
/** 打印 */
handlePrinterValue() {
const printerNode = document.querySelectorAll('.PrinterValue');
console.log('printerNode :>> ', printerNode);
print(printerNode);
},
handleBatchPrinter() {
this.printList = this.selectionList;
this.printStock = true;
},
},
};
</script> </script>
<style scoped lang='scss'> <style scoped lang="scss">
:deep(.no-print ){ :deep(.no-print) {
margin-left: auto !important; margin-left: auto !important;
} }
:deep(.el-form-item__label){ :deep(.el-form-item__label) {
width:auto !important; width: auto !important;
} }
</style> </style>

12
src/views/distribution/checkInventoryTask/createTask.vue

@ -2463,7 +2463,7 @@ const InventorySubmit = () => {
loading.value = true; // loading.value = true; //
console.log(SubData, '处理好的数据'); console.log(SubData, '处理好的数据');
postAddtaskQuest(SubData).then(res => { postAddtaskQuest(SubData).then(res => {
onLoad(); //
if ((res.data.code = 200)) { if ((res.data.code = 200)) {
ElMessage({ ElMessage({
message: res.data.msg, message: res.data.msg,
@ -2495,9 +2495,17 @@ const InventorySubmit = () => {
SubData.startTime = formInventory.value.time[0]; SubData.startTime = formInventory.value.time[0];
console.log(SubData, '处理好要提交的数据'); console.log(SubData, '处理好要提交的数据');
InventoryPopup.value = false; // InventoryPopup.value = false; //
loading.value = true; //
postAddtaskQuest(SubData).then(res => { postAddtaskQuest(SubData).then(res => {
if ((res.data.code = 200)) {
ElMessage({
message: res.data.msg,
type: 'success',
});
onLoad(); //
}
console.log(res, '盘点计划提交成功'); console.log(res, '盘点计划提交成功');
onLoad(); //
}); });
}; };
// //

2513
yarn.lock

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save