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.

357 lines
9.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<lay-form :model="dataInfo" class="dataInfo">
<lay-form-item label="原配方" prop="formula1" required label-width="120" style="margin-bottom:30px;">
<lay-select v-model="formula1" placeholder="请选择">
<lay-select-option v-for="(fIdv, fIdx) in formulaList" key="fIdx" :value="fIdv.FID" :label="fIdv.FName"></lay-select-option>
</lay-select>
<p class="note">注:配方号+版本号+描述</p>
</lay-form-item>
<lay-form-item label="变更后的配方" prop="formula2" required label-width="120" style="margin-bottom:30px;">
<lay-select v-model="formula2" placeholder="请选择">
<lay-select-option v-for="(fIdv, fIdx) in formulaList" key="fIdx" :value="fIdv.FID" :label="fIdv.FName"></lay-select-option>
</lay-select>
<p class="note">注:配方号+版本号+描述</p>
</lay-form-item>
<lay-form-item label="模式" prop="FFormulaName" required label-width="120" style="margin-bottom:30px;">
<lay-select v-model="dataInfo.FCreateFactoryID" placeholder="请选择">
<lay-select-option v-for="(fIdv, fIdx) in factoryLists" key="fIdx" :value="fIdv.FID" :label="fIdv.FName"></lay-select-option>
</lay-select>
</lay-form-item>
<lay-form-item>
<p class="note3">配方变更影响的旧物料</p>
<lay-table :columns="dataColumn" v-model:selected-key="selectedKey" id="FID"
:dataSource="dataList">
</lay-table>
</lay-form-item>
<lay-form-item class="remark">
<p>备注配方变更需要重新下载BOM配方配方变更后一下内容需要重新更新到SAP</p>
<p>1如果实验号变更那么实验号对应的受影响的物料会自动更新实验号</p>
<p>2配方变更会重新下载BOM配方</p>
<p>3新BOM配方对应的配方视图重新生成同时用户需要更新到SAP</p>
<p>4新BOM配方中的新的物料需要用户维护视图并更新到SAP</p>
</lay-form-item>
</lay-form>
<div v-if="showButton" style="text-align: center;">
<lay-form-item>
<lay-button type="normal" @click="submitClick(true)">确认</lay-button>
<lay-button @click="cancelClick"></lay-button>
</lay-form-item>
</div>
</template>
<style scoped>
.dataInfo {
max-width: 90%;
height: 600px;
margin: 30px auto;
padding-right: 30px;
overflow-y: auto;
}
.search-btn2 {
position: absolute;
right: 0;
top: 0;
}
.note2 {
display: inline-block;
margin-left: 16px;
}
.note3 {
display: inline-flex;
line-height: 38px;
}
.note2,
.note {
color: #999;
font-size: 12px;
}
.note {
margin-top: 4px;
position: absolute;
left: 0;
}
.note .layui-form-radio,
.note .layui-form-radio i {
margin: 0 1px 0 0;
padding: 0;
font-size: 14px;
margin-top: -2px;
line-height: 0;
}
.FSearchName {
color: var(--global-primary-color)
}
.remark{
line-height: 2;
font-size: 18px;
}
</style>
<script>
import {
ref,
watch
} from 'vue';
import {
getDataCode,
getPageList,
getBasicList,
insertDataInfo,
updateDataInfo,
getDataModel
} from "/src/api/api/common";
import {
getFactoryList
} from "/src/api/api/factory";
import{
getFormulaList
} from '/src/api/api/formula'
export default {
setup() {
const dataInfo = ref({
FMaterialType: "ZMAT",
FWeightUnit: "KG"
});
const formulaList = ref([]);
const seletList = ref([
[],
[]
]);
const typeList = ref([]);
let dataColumn = [ {
title: "物料号",
key: "F1",
width: "160px"
},
{
title: "试验号",
key: "F2",
width: "160px"
},
{
title: "物料描述",
key: "F3",
width: "110px",
width: "260px"
},
{
title: "产品分类",
key: "F4",
width: "160px"
}
];
dataColumn.forEach((item) => {
item.align = "center";
});
const pageInfo = ref({
total: 0,
limit: 5,
current: 1
});
const dataList = ref([]);
const selectedKey = ref("");
watch(selectedKey, function () {
const chose = dataList.value.find(s => s.FID == selectedKey.value) || null;
if (chose != null) {
dataInfo.value.FFormulaName = chose.FName + "+" + chose.FTestCode + "+" + chose.FVersionCode;
dataInfo.value.FFormulaID = chose.FID;
dataInfo.value.FVersionCode = chose.FVersionCode;
dataInfo.value.FFormulaTestCode = chose.FTestCode;
}
});
const showEditBox = ref(false);
const showButton = ref(true);
const saleList = ref([]);
const factoryLists = ref([]);
const factoryValue=ref(null);
const formula1=ref(null);
const formula2=ref(null);
return {
dataInfo,
formulaList,
seletList,
typeList,
dataColumn,
dataList,
pageInfo,
selectedKey,
showEditBox,
showButton,
saleList,
factoryLists,
factoryValue,
formula1,
formula2
}
},
props: {
dataInfoObj: {
type: Object,
default: () => { },
}
},
mounted() {
//其他地方过来获取数据
if (this.dataInfoObj && this.dataInfoObj.FTeamID) {
this._getTeamData(this.dataInfoObj.FTeamID);
this.showButton = this.dataInfoObj.FCanEdit != 2
}
this._getSelectList();
this._getFactoryList();
this._getFormulaList();
},
methods: {
cancelClick(isFirst) {
this.$emit('cancelClick', isFirst ? isFirst : false);
},
async _getFactoryList() {
this.factoryLists = await getFactoryList() || [];
},
async _getTeamData(dataId) {
let result = await getDataModel({
FID: dataId,
FKey: "FID,FTestCode,FWeightUnit,FSaleCode,FMaterialType,FMaterialGroup,FFormulaTestCode,FFormulaName,FFormulaID,FPackCode,FCreateFactoryID"
}, "Teamwork");
this.dataInfo = result || this.dataInfo;
},
async _getFormulaList(){
this.formulaList=await getFormulaList();
},
async _getSelectList() {
let result = await getDataCode({
FType: '1,2'
});
this.seletList[0] = result.FType1 || [];
this.seletList[1] = result.FType2 || [];
this.typeList = await getBasicList(37) || [];
this._getPageList();
},
async _inputSaleCode(val) {
let pData = {
FPageIndex: 1,
FPageSize: 10,
FName: val || ""
};
this.saleList = [];
if (pData.FName != "") {
let result = await getPageList(pData, "Material");
this.saleList = result.Data.List || [];
}
},
//配方检索
_searchPageList(value) {
this._getPageList(true);
},
//配方翻页
changePage(obj) {
this.pageInfo.current = obj.current;
this.pageInfo.limit = obj.limit;
this._getPageList();
},
//配方接口
async _getPageList(isFirst) {
if (isFirst) {
this.pageInfo.current = 1;
this.pageInfo.total = 0;
}
let postData = {
FPageIndex: this.pageInfo.current,
FPageSize: this.pageInfo.limit
}
let search = this.dataInfo.FSearchName;
if (search && search != "") {
postData.Or_FPlmCode = postData.Or_FTestCode = postData.Or_FName = postData.Or_FVersionCode =
search;
}
let result = await getPageList(postData, "Formula");
result.Data.List = result.Data.List || [];
result.Data.List.forEach((item) => {
let type = this.typeList.find(s => s.FValue == item.FType);
item.FTypeName = type == null ? item.FType : type.FName;
if (this.dataInfo.FFormulaID == item.FID) this.selectedKey = item.FID
});
this.pageInfo.total = result.Data.Total || 0;
this.dataList = [{F1:"10000271",F2:"KTFTS22111101",F3:"KTFTS22111101-K001@测试",F4:"产成品"},
{F1:"",F2:"KTFTS22111101",F3:"12",F4:"半成品"},
{F1:"10000270",F2:"KTFTS22111101",F3:"KTFTS22111101-K001@测试",F4:"产成品"}];
},
//数据-验证
async submitClick(isCreate) {
let postData = this.dataInfo;
postData.FSaleCode = (postData.FSaleCode || "").trim();
postData.FTestCode = (postData.FTestCode || "").trim();
postData.FMaterialGroup = (postData.FMaterialGroup || "").trim();
postData.FWeightUnit = (postData.FWeightUnit || "").trim();
postData.FFormulaName = (postData.FFormulaName || "").trim();
postData.FCreateFactoryID=(postData.FCreateFactoryID==-1?"":postData.FCreateFactoryID);
for (let key in postData) {
if (postData[key] == "") return false;
}
// let indexs = [postData.FSaleCode.indexOf("-"), postData.FSaleCode.indexOf("@")];
// if (indexs[0] == -1 || indexs[1] == -1 || indexs[1] - indexs[0] < 2) {
// layer.msg('必须要输入包材代码')
// return false;
// }
postData.FState = isCreate ? 1 : 0;
postData = JSON.parse(JSON.stringify(postData));
if (postData.FTestCode != postData.FFormulaTestCode) {
this.sureTextCode(postData);
return false;
}
this._postTermData(postData);
},
//数据-确认
sureTextCode(postData) {
let $this = this;
layer.confirm("选择的配方和订单试验号不一致,请确认使用选择的配方嘛?", {
title: "提示",
btn: [{
text: '暂时保存',
callback: function (id) {
layer.close(id);
postData["FState"] = 0;
$this._postTermData(postData);
}
},
{
text: '确认提交',
callback: function (id) {
layer.close(id);
postData["FState"] = 1;
$this._postTermData(postData);
}
}
]
});
},
//数据-提交
async _postTermData(postData) {
delete postData["FSearchName"];
let result = 0;
let idx = layer.load(2);
if (postData.FID && postData.FID > 0) {
result = await updateDataInfo(postData, "Teamwork") || 0;
} else {
result = await insertDataInfo(postData, "Teamwork") || 0;
}
if (result > 0) {
this.cancelClick(true);
}
layer.close(idx);
}
}
}
</script>