Merge branch 'dev-scheduling' of http://42.192.7.176:3000/suojin/jonhon-mes-web into dev-scheduling

dev-scheduling
zhangdi 1 month ago
commit 7eff2a8a7d
  1. 15
      src/api/costManagement/costStatistics.js
  2. 1
      src/views/basicData/jobTransferManagement.vue
  3. 115
      src/views/basicData/shiftManagement.vue
  4. 38
      src/views/basicData/teamManagement.vue
  5. 42
      src/views/basicData/workCenter.vue
  6. 101
      src/views/costStatistics/index.vue
  7. 48
      src/views/processManagement/processCapability.vue

@ -47,3 +47,18 @@ export const getDetail = (params) =>
method: 'get',
params
});
// 导出材料费用
export const exportMaterial = (params) => {
return exportBlob('/api/blade-desk/costStatistics/exportMaterialCost', params);
};
// 导出作业中心材料费用
export const exportWorkCenterMaterial = (params) => {
return exportBlob('/api/blade-desk/costStatistics/exportWorkCenterMaterialCost', params);
};
// 导出辅助人员材料费用
export const exportAuxiliaryPersonMaterial = (params) => {
return exportBlob('/api/blade-desk/costStatistics/exportAssistantMaterialCost', params);
};

@ -111,7 +111,6 @@
search-key="id"
:debounce-time="500"
@change="changeTeacher"
/>
</el-form-item>
</el-form>

@ -17,13 +17,16 @@
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
@sort-change="sortChange"
:permission="permissionList"
>
</avue-crud>
</basic-container>
</template>
<script>
import {getList,addShift,updateShift} from "@/api/basicData/shiftManagement"
import { getList, addShift, updateShift } from '@/api/basicData/shiftManagement';
import { mapGetters } from 'vuex';
export default {
data() {
return {
@ -39,8 +42,8 @@ export default {
excelBox: false,
option: {
tip: false,
height: "auto",
rowKey: "csId",
height: 'auto',
rowKey: 'csId',
calcHeight: 32,
simplePage: false,
searchShow: true,
@ -53,9 +56,9 @@ export default {
selection: false,
viewBtn: false,
delBtn: false,
editBtnText: "修改",
editBtnIcon: " ",
viewBtnText: "详情",
editBtnText: '修改',
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 120,
menuWidth: 120,
dialogWidth: 300,
@ -65,22 +68,22 @@ export default {
searchShowBtn: false,
excelBtn: true,
showOverflowTooltip: true,
searchLabelPosition: "left",
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: "center",
menuAlign: 'center',
gridBtn: false,
searchMenuPosition: "right",
searchMenuPosition: 'right',
searchLabelWidth: 'auto',
addBtnIcon: " ",
viewBtnIcon: " ",
delBtnIcon: " ",
editBtnIcon: " ",
align: "center",
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
align: 'center',
column: [
{
label: "班次",
prop: "name",
label: '班次',
prop: 'name',
search: true,
sortable: true,
filter: true,
@ -90,8 +93,8 @@ export default {
rules: [
{
required: true,
message: "请输入班次",
trigger: "blur",
message: '请输入班次',
trigger: 'blur',
},
],
},
@ -102,21 +105,21 @@ export default {
emptyBtn: false,
column: [
{
label: "模板上传",
prop: "excelFile",
type: "upload",
label: '模板上传',
prop: 'excelFile',
type: 'upload',
drag: true,
loadText: "模板上传中,请稍等",
loadText: '模板上传中,请稍等',
span: 24,
propsHttp: {
res: "data",
res: 'data',
},
tip: "请上传 .xls,.xlsx 标准格式文件",
action: "/blade-system/user/import-user",
tip: '请上传 .xls,.xlsx 标准格式文件',
action: '/blade-system/user/import-user',
},
{
label: "模板下载",
prop: "excelTemplate",
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
},
@ -125,7 +128,15 @@ export default {
selectionList: [],
};
},
mounted() {},
computed: {
...mapGetters(['permission']),
permissionList() {
return {
addBtn: this.validData(this.permission.shiftManagement_add, false),
editBtn: this.validData(this.permission.shiftManagement_edit, false),
};
},
},
methods: {
handleImport() {
this.excelBox = true;
@ -141,20 +152,20 @@ export default {
rowUpdate(row, index, done, loading) {
updateShift(row).then(res => {
if (res.data.code == 200) {
this.$message.success("修改成功")
this.onLoad()
done()
this.$message.success('修改成功');
this.onLoad();
done();
}
})
});
},
rowSave(row, done, loading) {
addShift(row).then(res => {
if (res.data.code == 200) {
this.$message.success("新增成功")
this.onLoad()
done()
this.$message.success('新增成功');
this.onLoad();
done();
}
})
});
// done();
},
searchReset() {
@ -168,10 +179,10 @@ export default {
done();
},
rowDel(row, index, done) {
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {});
},
currentChange(currentPage) {
@ -183,17 +194,31 @@ export default {
refreshChange() {
this.onLoad(this.page, this.query);
},
//
sortChange({ prop, order }) {
if (!prop) {
//
this.query.orderByField = undefined;
this.query.isAsc = undefined;
} else {
const orderByField = prop.replace(/([a-z])([A-Z0-9])/g, '$1_$2').toUpperCase();
this.query.orderByField = orderByField;
this.query.isAsc = order === 'ascending' ? true : false;
}
//
this.onLoad();
},
onLoad() {
this.loading = true;
getList({
current: 1,
size: 10,
...this.query
...this.query,
}).then(res => {
this.data = res.data.data.records
this.page.total = res.data.data.total
this.loading = false
})
this.data = res.data.data.records;
this.page.total = res.data.data.total;
this.loading = false;
});
},
},
};

@ -18,21 +18,23 @@
@refresh-change="refreshChange"
:before-open="beforeOpen"
@on-load="onLoad"
@sort-change="sortChange"
:permission="permissionList"
>
<template #menu-left>
<el-button type="danger" @click="handleDelete"> </el-button>
<el-button type="danger" v-if="permission.teamManagement_del" @click="handleDelete"> </el-button>
<!-- <el-button type="success" icon="el-icon-upload" @click="handleImport"
>导入
</el-button> -->
</template>
<template #menu-right>
<el-button type="primary" @click="handleImport">导入</el-button>
<el-button type="primary" v-if="permission.teamManagement_import" @click="handleImport">导入</el-button>
</template>
<template #menu="scope">
<el-button type="text" @click="setCrew(scope.row)">设置班组人员</el-button>
<el-button type="text" @click="changeTime(scope.row, 0)">日分派时间</el-button>
<el-button type="text" @click="changeTime(scope.row, 1)">特殊日分派时间</el-button>
<el-button type="text" @click="changeTime(scope.row, 2)">轮换时间</el-button>
<el-button type="text" v-if="permission.teamManagement_setTeamMembers" @click="setCrew(scope.row)">设置班组人员</el-button>
<el-button type="text" v-if="permission.teamManagement_dailyDispatchTime" @click="changeTime(scope.row, 0)">日分派时间</el-button>
<el-button type="text" v-if="permission.teamManagement_specialDayDistributionTime" @click="changeTime(scope.row, 1)">特殊日分派时间</el-button>
<el-button type="text" v-if="permission.teamManagement_rotationTime" @click="changeTime(scope.row, 2)">轮换时间</el-button>
</template>
<template #teamLeader="{ row }">
{{ row.teamLeaderRealName }}
@ -263,6 +265,7 @@ import {
} from '@/api/basicData/teamManagement.js';
import basicImport from '@/components/basic-import/main.vue';
import treeTransfer from 'tree-transfer-vue3'; //
import { mapGetters } from 'vuex';
export default {
components: {
basicImport,
@ -585,6 +588,15 @@ export default {
checkId: '',
checkTimeType: 0,
};
},
computed: {
...mapGetters(['permission']),
permissionList() {
return {
addBtn: this.validData(this.permission.teamManagement_add, false),
editBtn: this.validData(this.permission.teamManagement_edit, false),
};
},
},
mounted() {},
methods: {
@ -886,6 +898,20 @@ export default {
},
refreshChange() {
this.onLoad(this.page, this.query);
},
//
sortChange({ prop, order }) {
if (!prop) {
//
this.query.orderByField = undefined;
this.query.isAsc = undefined;
} else {
const orderByField = prop.replace(/([a-z])([A-Z0-9])/g, '$1_$2').toUpperCase();
this.query.orderByField = orderByField;
this.query.isAsc = order === 'ascending' ? true : false;
}
//
this.onLoad();
},
onLoad() {
this.loading = true;

@ -16,14 +16,26 @@
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
@sort-change="sortChange"
:beforeOpen="beforeOpen"
:permission="permissionList"
>
<template #menu-left>
<el-button type="danger" @click="handleDelete">删除</el-button>
<el-button type="danger" v-if="permission.workCenter_del" @click="handleDelete">
删除
</el-button>
</template>
<template #menu="{ row }">
<el-button type="text" @click="setTeam(row)">设置班组</el-button>
<el-button type="text" @click="setCapability(row)">设置工艺能力</el-button>
<el-button type="text" v-if="permission.workCenter_setTeam" @click="setTeam(row)">
设置班组
</el-button>
<el-button
type="text"
v-if="permission.workCenter_setCapability"
@click="setCapability(row)"
>
设置工艺能力
</el-button>
</template>
</avue-crud>
<el-dialog title="设置班组" append-to-body v-model="teamDialog" width="700">
@ -131,6 +143,7 @@ import {
deleteWorkCenter,
getAllUser,
} from '@/api/basicData/workCenter';
import { mapGetters } from 'vuex';
export default {
data() {
return {
@ -465,6 +478,15 @@ export default {
checkId: '',
};
},
computed: {
...mapGetters(['permission']),
permissionList() {
return {
addBtn: this.validData(this.permission.workCenter_add, false),
editBtn: this.validData(this.permission.workCenter_edit, false),
};
},
},
mounted() {
this.getAbilityData();
},
@ -699,6 +721,20 @@ export default {
});
}
},
//
sortChange({ prop, order }) {
if (!prop) {
//
this.query.orderByField = undefined;
this.query.isAsc = undefined;
} else {
const orderByField = prop.replace(/([a-z])([A-Z0-9])/g, '$1_$2').toUpperCase();
this.query.orderByField = orderByField;
this.query.isAsc = order === 'ascending' ? true : false;
}
//
this.onLoad();
},
onLoad() {
getList({
current: this.page.currentPage,

@ -18,6 +18,8 @@
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
@cell-click="cellClick"
:cell-class-name="tableCellClassName"
>
<template #menu-left>
<el-button type="primary" @click="handleCost">成本计算</el-button>
@ -72,8 +74,7 @@
</template>
<script>
import {getList,deleteTable,verifyTable,calculateTable,exportData,getDetail} from "@/api/costManagement/costStatistics"
import { tr } from 'element-plus/es/locales.mjs'
import {getList,deleteTable,verifyTable,calculateTable,exportData,getDetail,exportMaterial,exportWorkCenterMaterial,exportAuxiliaryPersonMaterial} from "@/api/costManagement/costStatistics"
export default {
data(){
return{
@ -307,6 +308,92 @@ export default {
},
methods:{
cellClick(row, column, cell, event){
console.log('row----------',row)
console.log('column----------',column)
if(column.property == 'materialCost'){
this.$confirm('是否导出数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
// this.loading = true;
exportMaterial({ month: row.month,workCenterId:row.workCenterId }).then(res => {
const blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
const url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = `${row.month}${row.workCenterName}材料费用.xlsx`;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(url);
this.$message.success('导出成功');
this.loading = false;
}).catch(() => {
this.loading = false;
});
});
}else if(column.property == 'workCenterMaterialCost'){
this.$confirm('是否导出数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
exportWorkCenterMaterial({ month: row.month,workCenterId:row.workCenterId }).then(res => {
const blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
const url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = `${row.month}${row.workCenterName}作业中心材料费用.xlsx`;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(url);
this.$message.success('导出成功');
this.loading = false;
}).catch(() => {
this.loading = false;
});
})
}else if(column.property == 'assistantMaterialCost'){
this.$confirm('是否导出数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
exportAuxiliaryPersonMaterial({ month: row.month }).then(res => {
const blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
const url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = `${row.month}月辅助人员材料费用.xlsx`;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(url);
this.$message.success('导出成功');
this.loading = false;
}).catch(() => {
this.loading = false;
});
})
}else{
return
}
},
tableCellClassName({ row, column, rowIndex, columnIndex }){
const monthProps = [
'materialCost',
'workCenterMaterialCost',
"assistantMaterialCost"
];
if(monthProps.includes(column.property)){
return "high_row"
}
return ''
},
handleCurrentRowChange(row){
if (!row) {
this.detailData = [];
@ -538,4 +625,14 @@ export default {
::v-deep .el-table__row.current-row td {
background-color: yellow !important;
}
//
::v-deep .high_row {
cursor: pointer !important;
// 线
&:hover {
text-decoration: underline;
color: #284c89 !important; /* Element UI 主题蓝,你可以改为 blue 或其他颜色 */
}
}
</style>

@ -18,9 +18,17 @@
@refresh-change="refreshChange"
@on-load="onLoad"
:before-open="beforeOpen"
@sort-change="sortChange"
:permission="permissionList"
>
<template #menu-left>
<el-button type="danger" plain @click="handleDelete()">删除</el-button>
<el-button
type="danger"
plain
v-if="permission.processCapability_del"
@click="handleDelete()"
>删除</el-button
>
</template>
<template #menu-right>
@ -36,9 +44,22 @@
value: 'dictKey',
}"
style="width: 200px; margin-right: 12px"
v-if="permission.processCapability_batchSettings"
></avue-select>
<el-button type="primary" @click="batchSet()">批量设置</el-button>
<el-button type="primary" @click="handleImport">导入</el-button>
<el-button
type="primary"
v-if="permission.processCapability_batchSettings"
@click="batchSet()"
>
批量设置
</el-button>
<el-button
type="primary"
v-if="permission.processCapability_import"
@click="handleImport"
>
导入
</el-button>
</span>
</template>
@ -326,10 +347,9 @@ export default {
...mapGetters(['userInfo', 'permission']),
permissionList() {
return {
addBtn: this.validData(this.permission.menu_add, false),
viewBtn: this.validData(this.permission.menu_view, false),
delBtn: this.validData(this.permission.menu_delete, false),
editBtn: this.validData(this.permission.menu_edit, false),
addBtn: this.validData(this.permission.processCapability_add, false),
delBtn: this.validData(this.permission.processCapability_del, false),
editBtn: this.validData(this.permission.processCapability_edit, false),
};
},
ids() {
@ -563,6 +583,20 @@ export default {
refreshChange() {
this.onLoad(this.page, this.query);
},
//
sortChange({ prop, order }) {
if (!prop) {
//
this.query.orderByField = undefined;
this.query.isAsc = undefined;
} else {
const orderByField = prop.replace(/([a-z])([A-Z0-9])/g, '$1_$2').toUpperCase();
this.query.orderByField = orderByField;
this.query.isAsc = order === 'ascending' ? true : false;
}
//
this.onLoad();
},
//
onLoad(page, params = {}) {

Loading…
Cancel
Save