You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1492 lines
51 KiB

4 years ago
<!--未知总成管理页-->
<template>
<div class="cr-body-content">
<flexbox class="content-header">
<el-form
:model="listQuery"
ref="queryForm"
v-show="showSearch"
:inline="true"
>
<el-form-item label="KNR" prop="KNR">
<el-input
v-model="listQuery.KNR"
placeholder="请输入KNR号"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="底盘号" prop="VIN">
<el-input
v-model="listQuery.VIN"
placeholder="请输入底盘号"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="车型代码" prop="VehicleModelCode">
<el-input
v-model="listQuery.VehicleModelCode"
placeholder="请输入车型代码"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="版本" prop="Version">
<el-input
v-model="listQuery.Version"
placeholder="请输入版本"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="上线日期">
<el-date-picker
v-model="OnlineTimeVale"
size="small"
style="width: 380px"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button
class="filter-item"
size="mini"
type="primary"
icon="el-icon-plus"
@click="handleUpdate()"
>重新解析(批量操作)
</el-button>
</el-form-item>
<el-form-item>
<el-button
class="addAssy"
size="mini"
type="primary"
icon="el-icon-plus"
@click="handleCreate"
>添加总成
</el-button>
</el-form-item>
<el-form-item label="扫描点" prop="ScanPoint">
<el-input
v-model="listQuery.ScanPoint"
placeholder="请输入扫描点"
clearable
size="small"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleFilter"
>搜索</el-button
>
<el-button
icon="el-icon-refresh"
size="mini"
@click="resetQuery('queryForm')"
>重置</el-button
>
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
style="margin-left: 15px"
@click="handleDownload()"
>导出(Excel)
</el-button>
<el-button
class="filter-item"
plain
size="mini"
type="success"
icon="el-icon-check"
@click="handleUpdateAll()"
>重新解析(执行全部)
</el-button>
</el-form-item>
</el-form>
</flexbox>
<div class="l-table">
<!--表格渲染-->
<el-table
ref="multipleTable"
v-loading="listLoading"
element-loading-text="拼命加载中..."
element-loading-spinner="el-icon-loading"
class="cr-table"
:data="list"
:height="tableHeight"
:cell-style="cellStyle"
:header-cell-style="headerRowStyle"
size="small"
stripe
highlight-current-row
style="width: 100%"
@sort-change="sortChange"
@selection-change="handleSelectionChange"
@row-click="handleRowClick"
>
<el-table-column type="selection" width="44px"></el-table-column>
<el-table-column
label="底盘号"
prop="vin"
sortable
align="center"
fixed
width="180px"
>
<template slot-scope="scope">
<span class="link-type" @click="handleDrawerOpen(scope.row)">{{
scope.row.vin
}}</span>
</template>
</el-table-column>
<el-table-column
v-for="(item, index) in getDefaultField"
:key="index"
:prop="item.prop"
:label="item.label"
:min-width="item.width"
:formatter="fieldFormatter"
sortable
show-overflow-tooltip
:gutter="0"
>
<template slot="header" slot-scope="scope">
{{ scope.column.label }}
</template>
</el-table-column>
<!-- <el-table-column label="操作" align="center" width="128px">
<template slot-scope="{ row }">
<el-button
type="primary"
size="mini"
@click="handleUpdate(row)"
icon="el-icon-edit"
/>
</template>
</el-table-column> -->
</el-table>
</div>
<div class="table-footer">
<!-- 分页控件 style="margin-top: -25px;margin-bottom:-25px;float:right;"-->
<pagination
v-show="totalCount > 0"
:total="totalCount"
:page.sync="page"
:limit.sync="listQuery.MaxResultCount"
@pagination="getList"
/>
<!-- 抽屉控件 -->
<el-drawer
title="信息详细页"
size="75%"
direction="rtl"
:visible.sync="drawer"
:before-close="handleDrawerClose"
>
<div>
<Detail
v-bind:customerInfos="customerInfos"
style="margin-top: -35px"
></Detail>
</div>
</el-drawer>
<!--添加总成-->
<el-dialog
:visible.sync="dialogFormVisible"
:close-on-click-modal="false"
:title="formTitle"
append-to-body
width="1000px"
>
<div style="width:980px;height:600px">
<el-row>
<el-col :span="8">
<div style="border:1px;width:280px">
<el-row>
<div class="app">
<!-- handleCurrentChange -->
<el-table border style="margin:0px;width:280px;" height="260px" ref="asTable" :data="erpAssemblyCfgList" highlight-current-row @row-click="rowClickass" @select="selectAss">
<el-table-column type="selection" width="40px"></el-table-column>
<el-table-column prop="erpAssemblyCode" label="总成编号" align="center" width="178px"></el-table-column>
<!-- 添加删除按钮 -->
<el-table-column align="center" width="61px">
<!-- type="button" :render-header="renderHeader" -->
<!-- <template slot="header" slot-scope="scope">
<el-button @click="addzc(scope.$index,scope.row)" icon="el-icon-plus">
</el-button>
</template> -->
<template slot-scope="scope">
<el-button @click="delzc(scope.$index,scope.row)" icon="el-icon-minus" size="mini" align="left">
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-row>
<el-row>
<div style="width:280px;border:1px" >
<el-divider content-position="center">添加Erp总成</el-divider>
<el-form style="border:1px" :label-position="labelPosition" label-width="100px" :model="assly" ref="assly" border>
<el-form-item label="Erp总成编码" style="height:40px;width:280px">
<el-input v-model="assly.erpAssemblyCode" clearable placeholder="请输入Erp总成编码"></el-input>
</el-form-item>
<el-form-item label="Erp总成名称" style="height:40px;width:280px">
<el-input v-model="assly.erpAssemblyName" clearable placeholder="请输入Erp总成名称"></el-input>
</el-form-item>
<el-form-item label="车型" style="height:40px;">
<!-- <el-input v-model="assly.carModel" clearable></el-input> -->
<el-select v-model="assly.carModel" clearable placeholder="请选择车型">
<el-option
v-for="item in vehicleModelList"
:key="item.id"
:label="item.dicItemName"
:value="item.dicItemCode"/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitAssyForm('assly')">添加</el-button>
</el-form-item>
</el-form>
</div>
</el-row>
</div>
</el-col>
<el-col :span="7">
<div style="border:1px;height:570px;width:270px">
<el-table :data="tempdetails" ref="leftTable" height="550" stripe border highlight-current-row @row-click="rowClickLeft" @select="selectLeft">
<el-table-column type="selection" width="40px"></el-table-column>
<el-table-column prop="partCode" label="结算件代码" width="150px" align="center"></el-table-column>
<el-table-column prop="partNum" label="数量" width="78px" align="center"></el-table-column>
</el-table>
</div>
</el-col>
<el-col :span="2">
<!-- 左右穿梭按钮 -->
<div align="center" style="height:570px;width:70px">
<el-row style="line-height: 300px;">
<el-button @click="btnleftclick()" icon="el-icon-caret-left"></el-button>
</el-row>
<el-row>
<el-button @click="btnrightclick()" icon="el-icon-caret-right"></el-button>
</el-row>
</div>
</el-col>
<el-col :span="7">
<div style="border:1px;height:570px;width:270px">
<el-table :data="data2" ref="rightTable" height="550" stripe border highlight-current-row @row-click="rowClickRight" @select="selectRight">
<el-table-column type="selection" width="40px"></el-table-column>
<el-table-column prop="partCode" label="结算件代码" width="150px" align="center"></el-table-column>
<el-table-column prop="partNum" label="数量" width="78px" align="center"></el-table-column>
</el-table>
</div>
</el-col>
<!-- <el-table-transfer
leftTitle="结算件"
rightTitle="未知总成"
:columns='columns'
:dataLeft="data1"
:dataRight="data2"
>
<template v-slot:default="{scope}">
<div>
{{scope.row[scope.col.value]}}
</div>
</template>
</el-table-transfer> -->
<!-- 可以使用插槽获取到列信息和行信息从而进行数据的处理 -->
<!-- <el-col :span="17"></el-col> -->
</el-row>
<div slot="footer" class="dialog-footer" align="right" style="width:950px">
<el-button v-loading="formLoading" type="primary" @click="save">确认</el-button>
</div>
</div>
</el-dialog>
<!-- 移动数量窗体 -->
<el-dialog
:visible.sync="dialogNumVisible"
:close-on-click-modal="false"
:title="numTitle"
append-to-body
width="570px"
>
<div>
<el-form :model="numFormData" ref="numFormData" label-width="100px" class="num-ruleForm">
<el-form-item
label="数量"
prop="num"
:rules="[
{ required: true, message: '数量不能为空且至少为1'},
]"
>
<el-input type="text" v-model="numFormData.num"></el-input>
</el-form-item>
</el-form>
</div>
<div slot="footer" class="dialog-footer">
<el-button v-loading="formLoading" type="primary" @click="saveNum()">确认</el-button>
<el-button type="text" @click="dialogNumVisible = false">取消</el-button>
</div>
</el-dialog>
</div>
</div>
</template>
<script>
import Pagination from "@/components/Pagination";
import permission from "@/directive/permission/index.js";
import CRMTableHead from "../../components/CRMTableHead";
import importExcel from "@/components/ImportExcel-vw";
import moment from "moment";
import Detail from "./detail.vue";
//组件计量单位
const bomUnit = [
{ key: 0, display_name: "PC" },
{ key: 1, display_name: "TON" },
{ key: 2, display_name: "Other" },
];
const projectTypeKeyValue = bomUnit.reduce((acc, cur) => {
acc[cur.key] = cur.display_name;
return acc;
}, {});
export default {
name: "UnknownAssembly",
components: { Pagination, CRMTableHead, importExcel, Detail},
directives: { permission },
filters: {
IsCustomerSignFilter(status) {
//翻译是否签字
const statusMap = {
true: "是",
false: "否",
};
return statusMap[status];
},
},
data() {
const validVersion = (rule, value, callback) => {
let numberReg = /^\d{6}$/;
if (!numberReg.test(value)) {
callback(new Error("只能为6位数字!"));
} else {
callback();
}
};
return {
crmType: "bomdatabase",
rules: {
erpAssemblyName: [
{ required: true, message: "必须输入!", trigger: "blur" },
],
},
valueSelect: "",
OnlineTimeVale: [],//上线时间
customerInfos: [],
dialogOptions: [],
versionValue: "",
asTemp:[],//总成编号点击缓存
rightRowTemp: [],//右侧移动点击缓存
leftRowTemp: [],//左侧移动点击缓存
selectioned:'',//单选中的值
carModels:[],//车型下拉框数据源
currentRow: "",
versionList: [], //版本列表
searchContent: "", // 输入内容
showExcelImport: false,
form: {},
drawer: false,
list: null,
totalCount: 0,
listLoading: true,
customerInfo: {
bomId: "",
},
// 高级搜索
filterObj: {
type: Object,
default: () => {
return {};
},
},
listQuery: {
SkipCount: 0,
MaxResultCount: 15,
OnlineTimeBegin: undefined,
OnlineTimeEnd: undefined,
KNR: undefined,
VIN: undefined,
ScanPoint: undefined,
},
listUnknownAssemblyQuery: {
billId:'',
//apply:"",
vin:'',
},
page: 1,
// 显示搜索条件
showSearch: true,
bomUnit,
multipleSelection: [],
drawer: false,
dialogFormVisible: false,
dialogNumVisible: false,
formTitle: "",
numTitle: "",
isEdit: false,
formLoading: false,
//dialogFormVisible: false,
tableHeight: document.documentElement.clientHeight - 220,
//columns: [
// {name: '结算件代码', value: 'partCode', width: '180px'},
// {name: '数量', value: 'partNum',},
// ],
// data1: [
// ],
numFormData:{
num: 1
},
zcCode:[],
/*最终提交缓存*/
tempAssCfgList: [
],
/*右侧数据源*/
data2: [],
/*中间数据源*/
tempdetails:[
//{
// partCode: "1",
// partNum: 0,
// isKey: true
//}
],
/*左侧总成数据源*/
erpAssemblyCfgList: [],
// {
// erpAssemblyCode: "string",
// erpAssemblyName: "string",
// isCover: true,
// carModel: "",
// previousVersionId: "3fa85f64-5717-4562-b3fc-2c963f66afa6",
// details: [
// {
// partCode: "string",
// partNum: 0,
// description: "string",
// isKey: true
// }
// ]
// }
labelPosition: 'left',
assly: {
erpAssemblyCode: '',
erpAssemblyName: '',
carModel: ''
},
vehicleModelQuery:{
dicTypeName:"派格车型",
},
vehicleModelList:[],//车型list
};
},
mounted() {
var self = this;
window.onresize = function () {
var offsetHei = document.documentElement.clientHeight;
self.tableHeight = offsetHei - 220;
};
},
created() {
this.getList();
},
computed: {
getDefaultField() {
var tempsTabs = [];
tempsTabs.push({
label: "大众顺序号",
prop: "hostSN",
width: 150,
});
tempsTabs.push({
label: "KNR",
prop: "knr",
width: 120,
});
tempsTabs.push({
label: "上线时间",
prop: "onlineTime",
width: 150,
});
tempsTabs.push({
label: "扫描点",
prop: "scanPoint",
width: 150,
});
tempsTabs.push({
label: "车型代码",
prop: "vehicleModelCode",
width: 120,
});
tempsTabs.push({
label: "车型名称",
prop: "vehicleModelName",
width: 150,
});
tempsTabs.push({
label: "版本",
prop: "version",
width: 150,
});
tempsTabs.push({ label: "客户零件数量", prop: "partNum", width: 135 });
tempsTabs.push({
label: "文件名",
prop: "fileName",
width: 180,
});
return tempsTabs;
},
},
methods: {
//抽屉
handleDrawerOpen(param) {
this.drawer = true;
var parentId = param.id; //主键id
this.customerInfos = [
{
ParentId: parentId,
},
];
},
handleDrawerClose(done) {
done();
},
handleUpdateAll() {
var params = {
isSelectAll: true,
unknownAssemblyIdList: [],
};
this.$confirm("是否要全部进行解析?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.$axios
.posts("/api/newjit/unknown-assembly/to-parse", params)
.then((response) => {
if (response.status == true) {
this.$notify({
title: "成功",
message: "操作成功!",
type: "success",
duration: 2000,
});
this.getList();
} else {
this.$message({
type: "warning",
message: response.message,
});
}
});
})
.catch(() => {});
},
/** 重新计算总成 */
handleUpdate(row) {
if (this.multipleSelection.length == 0) {
this.$message({
message: "必须选择一行",
type: "warning",
});
return;
} else {
//批量操作
var params = {
isSelectAll: false,
unknownAssemblyIdList: [],
};
if (row) {
//单行
params.unknownAssemblyIdList.push(row.id);
} else {
//多选
this.multipleSelection.forEach((element) => {
let id = element.id;
params.unknownAssemblyIdList.push(id);
});
}
console.log("未知总成详表条件:" + JSON.stringify(params));
this.$axios
.posts("/api/newjit/unknown-assembly/to-parse", params)
.then((response) => {
if (response.status == true) {
this.$notify({
title: "成功",
message: "操作成功!",
type: "success",
duration: 2000,
});
this.getList();
} else {
this.$message({
type: "warning",
message: response.message,
});
}
});
}
},
fetchData(id) {
//循环动态
this.$axios
.gets("/api/newjit/unknown-assembly/" + id)
.then((response) => {
this.form = response.item;
});
},
/** 导出功能 */
handleDownload() {
this.listLoading = true;
this.$axios
.gets("/api/newjit/unknown-assembly/export", this.listQuery)
.then((res) => {
let filename = res;
this.$axios
.BolbGets("/api/newjit/exclude-part-cfg/download/" + filename)
.then((response) => {
if (filename.indexOf("_") != -1) {
let downName =
filename.slice(0, filename.lastIndexOf("_")) +
filename.slice(filename.lastIndexOf("."));
downloadFile(response, downName);
this.$notify({
title: "成功",
message: "数据-导出成功!",
type: "success",
duration: 2000,
});
} else {
downloadFile(response, filename);
this.$notify({
title: "成功",
message: "数据-导出成功!",
type: "success",
duration: 2000,
});
}
this.listLoading = false;
});
});
},
/** 重置按钮操作 */
resetQuery(refName) {
this.OnlineTimeVale = [];
this.$refs[refName].resetFields();
this.handleQuery();
},
/** 搜索按钮操作 */
handleQuery() {
this.listQuery.SkipCount = 1;
this.getList();
},
selectValue(params) {
//版本下拉选择
this.versionValue = params.value;
this.getList();
},
selectOptionsChange(item) {
this.getList();
},
importExcelData() {
//关闭导入窗体时调用
this.showExcelImport = false;
//this.getList();
},
/* 主页面添加总成按钮事件 */
handleCreate() {
// this.$nextTick(() => {
// this.$refs["formCount"].resetFields();
// });
if (this.multipleSelection.length !== 1) {
this.$message({
message: "必须选择一行",
type: "warning",
});
return;
} else {
console.log(this.multipleSelection[0].id);
console.log(this.multipleSelection[0].vin);
this.formTitle = "添加总成";
this.isEdit = false;
this.form = {};
this.getUnknownAssemblyList();
this.getZcCode();
this.getvehicleModel();
this.dialogFormVisible = true;
}
},
/** 刷新列表 */
handleHandle(data) {
if (data.type !== "edit") {
this.getList();
}
},
/** 格式化字段 */
fieldFormatter(row, column) {
if (column.property === "billStatus") {
return { 0: "未生效", 2: "已生效", 3: "已发布" }[row[column.property]];
}
if (column.property == "onlineTime" || column.property == "receiveTime") {
var date = row[column.property];
if (date == undefined) {
return "";
}
return moment(date).format("YYYY-MM-DD HH:mm:ss");
}
return row[column.property] || "--";
},
roleFilter(type) {
return projectTypeKeyValue[type];
},
getList() {
this.listLoading = true;
this.listQuery.SkipCount = (this.page - 1) * 10;
if (this.OnlineTimeVale != []) {
this.listQuery.OnlineTimeBegin = this.OnlineTimeVale[0]//this.OnlineTimeVale
// ? this.OnlineTimeVale[0] || ""
// : "";
this.listQuery.OnlineTimeEnd = this.OnlineTimeVale[1]//this.OnlineTimeVale
// ? this.OnlineTimeVale[1] || ""
// : "";
}
this.$axios
.gets("/api/newjit/unknown-assembly/list", this.listQuery)
.then((response) => {
this.list = response.items;
setTimeout(() => {
//大数据量加载时
this.listLoading = false;
}, 500);
})
.catch(() => {
this.listLoading = false;
});
},
handleFilter() {
this.page = 1;
this.getList();
},
sortChange(data) {
const { prop, order } = data;
if (!prop || !order) {
this.handleFilter();
return;
}
this.listQuery.Sorting = prop + " " + order;
this.handleFilter();
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
/** 通过回调控制style */
cellStyle({ row, column, rowIndex, columnIndex }) {
if (column.property === "qty") {
return { textAlign: "right" };
} else {
return { textAlign: "left" };
}
},
/** 通过回调控制表头style */
headerRowStyle({ row, column, rowIndex, columnIndex }) {
if (column.property === "qty") {
return { textAlign: "right", background: "#FAFAFA" };
} else {
return { textAlign: "left", background: "#FAFAFA" };
}
},
handleRowClick(row, column, event) {
this.$refs.multipleTable.clearSelection();
this.$refs.multipleTable.toggleRowSelection(row);
},
/* 获取车型数据源 */
getCarModel(){
this.$axios
.gets("/api/newjit/dic/list"+"?dicTypeName=车型")
.then((response) => {
console.log("this is response.items",response.item);
this.carModels = response.item;
setTimeout(() => {
//大数据量加载时
this.listLoading = false;
}, 500);
})
.catch(() => {
this.listLoading = false;
});
//console.log("this is carModels",this.carModels);
},
/* 加号按钮添加事件 */
addzc()
{
//todo 添加总成左侧的 加号按钮 待做
alert("1")
},
/* 减号按钮删除事件 */
delzc(index)
{
this.erpAssemblyCfgList.splice(index, 1);
console.log(this.erpAssemblyCfgList);
},
/* 添加总成最终提交的数据事件*/
save() {
//if(this.data2.length ===0){
var lastSubmit = {
billId:this.listUnknownAssemblyQuery.billId,
scanPoint: "M100",
erpAssemblyCfgList:[]
};
lastSubmit.erpAssemblyCfgList = this.tempAssCfgList;
// var lastSubmitt = [];
// console.log("flag")
// this.tempAssCfgList.forEach(element => {
// element.details.forEach(element1 => {
// lastSubmitt.push({
// erpAssemblyCode: element.erpAssemblyCode,
// erpAssemblyName: element.erpAssemblyName,
// isCover: false,
// previousVersionId:"f7d45dba-3164-4a91-b477-3c568c81e6a0",
// vehicleModel: element.vehicleModel,
// details:{
// partCode:element1.partCode,
// partNum:element1.partNum,
// description:element1.description,
// isKey: true,
// }
// })
// });
// });
// console.log("this is lastSubmitt:",lastSubmitt)
// var lastSubmit = [];
// lastSubmitt.forEach(element => {
// lastSubmit.push({
// billID:this.listUnknownAssemblyQuery.billId,
// scanPoint: "M100",
// erpAssemblyCfgList:[{
// erpAssemblyCode: element.erpAssemblyCode,
// erpAssemblyName: element.erpAssemblyName,
// isCover: false,
// previousVersionId: null,
// vehicleModel: element.vehicleModel,
// details:element.details
// }]
// })
// });
// console.log("this is lastSubmit:",lastSubmit)
this.$axios
.posts(
"/api/newjit/unknown-assembly/add-assembly",
lastSubmit
)
.then((response) => {
if(response.status === true){
this.$notify({
title: "成功",
message: "数据导入成功!",
type: "success",
duration: 2000,
});
}
})
.catch(() => {
//this.listLoading = false;
});
this.leftRowTemp = [];
this.rightRowTemp = [];
this.tempAssCfgList = [];
this.tempdetails = [];
this.erpAssemblyCfgList =[];
this.asTemp = [];
this.dialogFormVisible = false;
// }
// else{
// alert("未知零件未分配完,请确认!")
// }
},
/* 获取未知总成零件数据源 */
getUnknownAssemblyList(){
this.listUnknownAssemblyQuery.billId=this.multipleSelection[0].id;
//console.log(this.listUnknownAssemblyQuery);
this.$axios
.gets(
"/api/newjit/unknown-assembly/"+this.listUnknownAssemblyQuery.billId
).then((response) => {
this.data2 = response.item.unknownAssemblyParts;
setTimeout(() => {
//大数据量加载时
this.listLoading = false;
}, 500);
})
.catch(() => {
this.listLoading = false;
})
},
/* 获取总成零件数据源*/
getZcCode(){
this.zcCode = [];
this.listUnknownAssemblyQuery.vin=this.multipleSelection[0].vin;
//console.log(this.listUnknownAssemblyQuery.vin);
this.$axios
.gets(
"/api/newjit/unknown-assembly/get-erp-assembly-code"+"?vin="+this.listUnknownAssemblyQuery.vin
).then((response) => {
console.log(response.item);
if(response.item.length !== 0){
console.log("has no ASSCode");
}
else{
response.item.forEach((zccode) => {
this.erpAssemblyCfgList.push({
erpAssemblyCode: zccode,
erpAssemblyName: [],
isCover: false,
carModel: "",
previousVersionId: null,
details: [
{
partCode: "",
partNum: 0,
description: "",
isKey: false
}
]
})
});
}
setTimeout(() => {
//大数据量加载时
this.listLoading = false;
}, 500);
})
},
/* 添加总成提交方法 */
submitAssyForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
if(this.assly.erpAssemblyCode !== ""){
this.erpAssemblyCfgList.push({
erpAssemblyCode: this.assly.erpAssemblyCode,
erpAssemblyName: this.assly.erpAssemblyName,
carModel: this.assly.carModel,
isCover: false,
previousVersionId: null,
details: []
})
console.log(this.erpAssemblyCfgList);
this.assly.erpAssemblyCode = '';
this.assly.erpAssemblyName = '';
this.assly.carModel = '';
}
else{
alert("请先填写Erp总成信息!")
}
}
else {
console.log('error submit!!');
return false;
}
});
},
btnleftclick(){
if(this.asTemp.length === 0){
alert("请先选择总成编号!")
}
else{
if(this.rightRowTemp.length === 0){
alert("请先选择需移动的零件")
}
else if(this.rightRowTemp.length !== 0 && parseInt(this.rightRowTemp[0].partNum) !== 1){
this.numFormData.num = parseInt(this.rightRowTemp[0].partNum);
this.dialogNumVisible = true;
this.numTitle = "输入移动结算件数量"
}
else{
console.log("R->F");
this.numFormData.num = 1;
if(this.numFormData.num <= this.rightRowTemp[0].partNum && this.numFormData.num > 0){
//数据插入最终缓存
if(this.tempAssCfgList.length !== 0){
console.log("second")
var rfMove = this.tempAssCfgList.filter(u=>u.erpAssemblyCode === this.asTemp[0].erpAssemblyCode);
if(rfMove.length !== 0){
var sameDetail = rfMove[0].details.filter(u=>u.partCode === this.rightRowTemp[0].partCode);
if(sameDetail.length !== 0){
sameDetail[0].partNum = parseInt(sameDetail[0].partNum) + parseInt(this.numFormData.num);
}
else{
rfMove[0].details.push({
description: this.rightRowTemp[0].description,
isKey: false,
partCode: this.rightRowTemp[0].partCode,
partNum: this.numFormData.num,//移动框输入的数量
})
}
}
else{
console.log("加进去了")
this.tempAssCfgList.push({
erpAssemblyCode: this.asTemp[0].erpAssemblyCode,
erpAssemblyName: this.asTemp[0].erpAssemblyName,
isCover: false,
previousVersionId: this.asTemp[0].previousVersionId,
vehicleModel: this.asTemp[0].carModel,
details:[{
description: this.rightRowTemp[0].description,
isKey: false,
partCode: this.rightRowTemp[0].partCode,
partNum: this.numFormData.num,//移动框输入的数量
}]
})
}
}
else{
console.log("first")
this.tempAssCfgList.push({
erpAssemblyCode: this.asTemp[0].erpAssemblyCode,
erpAssemblyName: this.asTemp[0].erpAssemblyName,
isCover: false,
previousVersionId: this.asTemp[0].previousVersionId,
details:[{
description: this.rightRowTemp[0].description,
isKey: false,
partCode: this.rightRowTemp[0].partCode,
partNum: this.numFormData.num,//移动框输入的数量
}]
})
}
console.log("this is tempAssCfgList 最终数据",this.tempAssCfgList)
//数据插入中间数据源
var judge = this.tempdetails.filter(u=>u.partCode === this.rightRowTemp[0].partCode);
if(judge.length === 1){
var t = parseInt(judge[0].partNum) + parseInt(this.numFormData.num);
this.tempdetails.filter(u=>u.partCode === this.rightRowTemp[0].partCode)[0].partNum = t;
}
else{
this.tempdetails.push({
description: this.rightRowTemp[0].description,
isKey: false,
partCode: this.rightRowTemp[0].partCode,
partNum: parseInt(this.numFormData.num),//移动框输入的数量
})
}
/* 右侧数据移动 */
var delid = this.data2.filter(u=>u.id === this.rightRowTemp[0].id)[0]
var n1 = parseInt(this.numFormData.num);
var n2 = parseInt(delid.partNum);
if(n1 === n2){
this.data2 = this.data2.filter(u=>u.id !== this.rightRowTemp[0].id);
this.rightRowTemp = [];
}
else{
this.data2.filter(u=>u.id === this.rightRowTemp[0].id)[0].partNum = delid.partNum - this.numFormData.num;
this.rightRowTemp[0].partNum = n2 - n1;
}
}
}
}
},
btnrightclick(){
if(this.asTemp.length === 0){
alert("请先选择总成编号!")
}
else{
if(this.leftRowTemp.length === 0){
alert("请先选择需移动的零件")
}
else if(this.leftRowTemp.length !== 0 && parseInt(this.leftRowTemp[0].partNum) !== 1){
this.numFormData.num = parseInt(this.leftRowTempnpm[0].partNum);
this.dialogNumVisible = true;
this.numTitle = "输入移动结算件数量"
}
else{
console.log("F->R");
this.numFormData.num = 1;
if(this.numFormData.num <= this.leftRowTemp[0].partNum && this.numFormData.num > 0){
//数据插入最终缓存
console.log("移除或删除")
var frMove = this.tempAssCfgList.filter(u=>u.erpAssemblyCode === this.asTemp[0].erpAssemblyCode);
var samedetail = frMove[0].details.filter(u=>u.partCode === this.leftRowTemp[0].partCode);
if(samedetail.length !== 0){
if(parseInt(samedetail[0].partNum) === parseInt(this.numFormData.num)){
frMove[0].details = frMove[0].details.filter(u=>u.partCode !== this.leftRowTemp[0].partCode);
}
else{
samedetail[0].partNum = parseInt(samedetail[0].partNum) - parseInt(this.numFormData.num);
}
}
else if(samedetail.length !== 0){
alert("没有数据!");
}
console.log("this is tempAssCfgList 最终数据",this.tempAssCfgList)
//数据插入右侧数据源
var judge = this.data2.filter(u=>u.partCode === this.leftRowTemp[0].partCode);
if(judge.length === 1){
var t = parseInt(judge[0].partNum) + parseInt(this.numFormData.num);
this.data2.filter(u=>u.partCode === this.leftRowTemp[0].partCode)[0].partNum = t;
}
else{
this.data2.push({
description: this.leftRowTemp[0].description,
isKey: false,
partCode: this.leftRowTemp[0].partCode,
partNum: parseInt(this.numFormData.num),//移动框输入的数量
})
}
/* 中间数据移动 */
var delid = this.tempdetails.filter(u=>u.partCode === this.leftRowTemp[0].partCode)[0]
var n1 = parseInt(this.numFormData.num);
var n2 = parseInt(delid.partNum);
if(n1 === n2){
this.tempdetails = this.tempdetails.filter(u=>u.partCode !== this.leftRowTemp[0].partCode);
this.leftRowTemp = [];
}
else{
this.tempdetails.filter(u=>u.partCode === this.leftRowTemp[0].partCode)[0].partNum = parseInt(delid.partNum) - parseInt(this.numFormData.num);
this.leftRowTemp[0].partNum = n2 - n1;
}
}
}
}
},
/* 保存数量事件 */
saveNum(){
if(this.asTemp.length !== 0){
//判断中间选中移动还是右侧选中移动
/* 左侧移动到右侧 */
if(this.leftRowTemp.length !== 0){
console.log("F->R");
if(this.numFormData.num <= this.leftRowTemp[0].partNum && this.numFormData.num > 0){
//数据插入最终缓存
console.log("移除或删除")
var frMove = this.tempAssCfgList.filter(u=>u.erpAssemblyCode === this.asTemp[0].erpAssemblyCode);
var samedetail = frMove[0].details.filter(u=>u.partCode === this.leftRowTemp[0].partCode);
if(samedetail.length !== 0){
if(parseInt(samedetail[0].partNum) === parseInt(this.numFormData.num)){
frMove[0].details = frMove[0].details.filter(u=>u.partCode !== this.leftRowTemp[0].partCode);
}
else{
samedetail[0].partNum = parseInt(samedetail[0].partNum) - parseInt(this.numFormData.num);
}
}
else if(samedetail.length !== 0){
alert("没有数据!");
}
console.log("this is tempAssCfgList 最终数据",this.tempAssCfgList)
//数据插入右侧数据源
var judge = this.data2.filter(u=>u.partCode === this.leftRowTemp[0].partCode);
if(judge.length === 1){
var t = parseInt(judge[0].partNum) + parseInt(this.numFormData.num);
this.data2.filter(u=>u.partCode === this.leftRowTemp[0].partCode)[0].partNum = t;
}
else{
this.data2.push({
description: this.leftRowTemp[0].description,
isKey: false,
partCode: this.leftRowTemp[0].partCode,
partNum: parseInt(this.numFormData.num),//移动框输入的数量
})
}
/* 中间数据移动 */
var delid = this.tempdetails.filter(u=>u.partCode === this.leftRowTemp[0].partCode)[0]
var n1 = parseInt(this.numFormData.num);
var n2 = parseInt(delid.partNum);
if(n1 === n2){
this.tempdetails = this.tempdetails.filter(u=>u.partCode !== this.leftRowTemp[0].partCode);
this.leftRowTemp = [];
}
else{
this.tempdetails.filter(u=>u.partCode === this.leftRowTemp[0].partCode)[0].partNum = parseInt(delid.partNum) - parseInt(this.numFormData.num);
this.leftRowTemp[0].partNum = n2 - n1;
}
}
else if(this.numFormData.num == 0){
alert("输入数字不能为0!");
}
else{
alert("输入不正确,请确认!");
}
}
/* 右侧移动到左侧 */
else if(this.rightRowTemp.length !== 0){
console.log("R->F");
if(this.numFormData.num <= this.rightRowTemp[0].partNum && this.numFormData.num > 0){
//数据插入最终缓存
if(this.tempAssCfgList.length !== 0){
console.log("second")
var rfMove = this.tempAssCfgList.filter(u=>u.erpAssemblyCode === this.asTemp[0].erpAssemblyCode);
if(rfMove.length !== 0){
var sameDetail = rfMove[0].details.filter(u=>u.partCode === this.rightRowTemp[0].partCode);
if(sameDetail.length !== 0){
sameDetail[0].partNum = parseInt(sameDetail[0].partNum) + parseInt(this.numFormData.num);
}
else{
rfMove[0].details.push({
description: this.rightRowTemp[0].description,
isKey: false,
partCode: this.rightRowTemp[0].partCode,
partNum: this.numFormData.num,//移动框输入的数量
})
}
}
else{
console.log("加进去了")
this.tempAssCfgList.push({
erpAssemblyCode: this.asTemp[0].erpAssemblyCode,
erpAssemblyName: this.asTemp[0].erpAssemblyName,
vehicleModel: this.asTemp[0].carModel,
isCover: false,
previousVersionId: this.asTemp[0].previousVersionId,
details:[{
description: this.rightRowTemp[0].description,
isKey: false,
partCode: this.rightRowTemp[0].partCode,
partNum: this.numFormData.num,//移动框输入的数量
}]
})
}
}
else{
console.log("first")
this.tempAssCfgList.push({
erpAssemblyCode: this.asTemp[0].erpAssemblyCode,
erpAssemblyName: this.asTemp[0].erpAssemblyName,
isCover: false,
previousVersionId: this.asTemp[0].previousVersionId,
vehicleModel: this.asTemp[0].carModel,
details:[{
description: this.rightRowTemp[0].description,
isKey: false,
partCode: this.rightRowTemp[0].partCode,
partNum: this.numFormData.num,//移动框输入的数量
}]
})
}
console.log("this is tempAssCfgList 最终数据",this.tempAssCfgList)
//数据插入中间数据源
var judge = this.tempdetails.filter(u=>u.partCode === this.rightRowTemp[0].partCode);
if(judge.length === 1){
var t = parseInt(judge[0].partNum) + parseInt(this.numFormData.num);
this.tempdetails.filter(u=>u.partCode === this.rightRowTemp[0].partCode)[0].partNum = t;
}
else{
this.tempdetails.push({
description: this.rightRowTemp[0].description,
isKey: false,
partCode: this.rightRowTemp[0].partCode,
partNum: parseInt(this.numFormData.num),//移动框输入的数量
})
}
/* 右侧数据移动 */
var delid = this.data2.filter(u=>u.id === this.rightRowTemp[0].id)[0]
var n1 = parseInt(this.numFormData.num);
var n2 = parseInt(delid.partNum);
if(n1 === n2){
this.data2 = this.data2.filter(u=>u.id !== this.rightRowTemp[0].id);
this.rightRowTemp = [];
}
else{
this.data2.filter(u=>u.id === this.rightRowTemp[0].id)[0].partNum = delid.partNum - this.numFormData.num;
this.rightRowTemp[0].partNum = n2 - n1;
}
}
else if(this.numFormData.num == 0){
alert("输入数字不能为0!");
}
else{
alert("输入不正确,请确认!");
}
}
this.dialogNumVisible = false;
}
else{
alert("请先选择总成编号!")
}
this.dialogNumVisible = false;
},
/* 总成编号选中事件 */
rowClickass(row) {
this.asTemp=[];
this.tempdetails=[];
this.$refs.asTable.clearSelection();
this.$refs.asTable.toggleRowSelection(row);
this.asTemp.push(row);
if(this.asTemp[0].details.length !== 0){
//选中插入中间数据源
this.tempdetails.push({
isKey: false,
partCode: this.asTemp[0].details[0].partCode,
partNum: this.asTemp[0].details[0].partNum,
vehicleModel:this.asTemp[0].details[0].carModel,
})
}
//二次选中插入最终提交中的details
var judgeSec = this.tempAssCfgList.filter(u=>u.erpAssemblyCode === this.asTemp[0].erpAssemblyCode)
console.log("this is judgeSec:",judgeSec);
if(judgeSec.length !== 0){
console.log("this is judgeSec[0].details:",judgeSec[0].details);
judgeSec[0].details.forEach(element => {
this.tempdetails.push(element)
});
}
console.log("this is this.tempdetails",this.tempdetails);
console.log("this is asTemp",this.asTemp);
},
/* 总成编号复选框单选事件 */
selectAss(selection, row) {
this.asTemp=[]; //清空已选
this.tempdetails = [];
console.log('当用户手动勾选数据行的 Checkbox 时触发的事件', selection, row)
// 选择项大于1时
if (selection.length > 1) {
let del_row = selection.shift();
// console.log('把数组的第一个元素从其中删除后', selection);
this.$refs.asTable.toggleRowSelection(del_row, false); // 用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)
}
this.asTemp.push(selection[0])
console.log('当用户手动勾选数据行', this.asTemp)
if(this.asTemp[0].details.length !== 0){
//选中插入中间数据源
this.tempdetails.push({
isKey: false,
partCode: this.asTemp[0].details[0].partCode,
partNum: this.asTemp[0].details[0].partNum,
vehicleModel:this.asTemp[0].details[0].carModel,
})
}
//二次选中插入最终提交中的details
var judgeSec = this.tempAssCfgList.filter(u=>u.erpAssemblyCode === this.asTemp[0].erpAssemblyCode)
console.log("this is judgeSec:",judgeSec);
if(judgeSec.length !== 0){
console.log("this is judgeSec[0].details:",judgeSec[0].details);
judgeSec[0].details.forEach(element => {
this.tempdetails.push(element)
});
}
console.log("this is this.tempdetails",this.tempdetails);
console.log("this is asTemp",this.asTemp);
},
/* 右侧数据选中事件 */
rowClickRight(row) {
this.rightRowTemp = [];
this.$refs.rightTable.clearSelection();
this.$refs.rightTable.toggleRowSelection(row);
this.rightRowTemp.push(row);
},
/* 左侧数据选中事件 */
rowClickLeft(row) {
this.leftRowTemp = [];
this.$refs.leftTable.clearSelection();
this.$refs.leftTable.toggleRowSelection(row);
this.leftRowTemp.push(row);
},
/* 右侧复选框单选事件 */
selectRight(selection, row) {
this.rightRowTemp=[]; //清空已选
console.log('当用户手动勾选数据行的 Checkbox 时触发的事件', selection, row)
// 选择项大于1时
if (selection.length > 1) {
let del_row = selection.shift();
// console.log('把数组的第一个元素从其中删除后', selection);
this.$refs.rightTable.toggleRowSelection(del_row, false); // 用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)
}
this.rightRowTemp.push(selection[0])
console.log('当用户手动勾选数据行', this.rightRowTemp)
},
/* 左侧复选框单选事件 */
selectLeft(selection, row) {
this.leftRowTemp=[]; //清空已选
console.log('当用户手动勾选数据行的 Checkbox 时触发的事件', selection, row)
// 选择项大于1时
if (selection.length > 1) {
let del_row = selection.shift();
// console.log('把数组的第一个元素从其中删除后', selection);
this.$refs.rightTable.toggleRowSelection(del_row, false); // 用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)
}
this.leftRowTemp.push(selection[0])
console.log('当用户手动勾选数据行', this.leftRowTemp)
},
getvehicleModel()
{
this.$axios
.gets(
"/api/newjit/dic/list",this.vehicleModelQuery
)
.then((response) => {
//console.log(response);
this.vehicleModelList = response.item;
//console.log()
})
.catch(() => {
});
},
},
};
</script>
<style lang="scss" scoped>
@import "../../../ux/styles/crmtable.scss";
</style>