<template>
|
<div class="page-list-container">
|
<!--数据Table-->
|
<yrt-data-list :ref="dataListRef" :editor-ref="editorRef" :data-options="dataOptions" :fields.sync="dataListOptions.fields" :buttons="dataListOptions.buttons" :button-click="buttonClick" :data-list-selections.sync="dataListSelections" :auth-nodes="authNodes">
|
<template slot="common-column-slot" slot-scope="{row, col}">
|
<template v-if="col.prop=='statusText'">
|
<template>
|
<el-tag v-if="row[col.prop]=='确认出库'" color="#00fa9a" style="color:white;border:0">
|
{{ row[col.prop] }}
|
</el-tag>
|
<el-tag v-else-if="row[col.prop]=='终止'" color="#ff0066" style="color:white;border:0">
|
{{ row[col.prop] }}
|
</el-tag>
|
<el-tag v-else color="#ffff99" style="color:#888;">
|
{{ row[col.prop] }}
|
</el-tag>
|
</template>
|
</template>
|
<!--审核字段-->
|
<template v-else-if="col.prop=='auditing'">
|
<template>
|
<el-tag v-if="row[col.prop]==0" color="#ffff33" style="color:black;border:0">
|
{{ dataList.translateText(col.prop, row[col.prop], col.dropdown_Id) }}
|
</el-tag>
|
<el-tag v-else-if="row[col.prop]==1" color="#ff0033" style="color:white;border:0">
|
{{ dataList.translateText(col.prop, row[col.prop], col.dropdown_Id) }}
|
</el-tag>
|
<el-tag v-else-if="row[col.prop]==2" color="#33cc33" style="color:black;border:0;color:#fff;">
|
{{ dataList.translateText(col.prop, row[col.prop], col.dropdown_Id) }}
|
</el-tag>
|
<span v-else>
|
{{ row[col.prop] }}
|
</span>
|
</template>
|
</template>
|
<!--分拣状态字段-->
|
<template v-else-if="col.prop == 'sortingStatus'">
|
<template>
|
<el-tag v-if="row[col.prop] == 1" color="#ffff33" style="color:black;border:0">
|
{{ dataList.translateText( col.prop, row[col.prop], col.dropdown_Id ) }}
|
</el-tag>
|
<el-tag v-else-if="row[col.prop] == 2" color="#00ff99" style="color:black;border:0">
|
{{ dataList.translateText( col.prop, row[col.prop], col.dropdown_Id ) }}
|
</el-tag>
|
<el-tag v-else-if="row[col.prop] == 3" color="#ff0000" style="color:black;border:0;color:#fff;">
|
{{ dataList.translateText( col.prop, row[col.prop], col.dropdown_Id ) }}
|
</el-tag>
|
<el-tag v-else-if="row[col.prop] == 5" color="#6699FF" style="color:black;border:0;color:#fff;">
|
{{ dataList.translateText( col.prop, row[col.prop], col.dropdown_Id ) }}
|
</el-tag>
|
<span v-else>
|
{{ row[col.prop] }}
|
</span>
|
</template>
|
</template>
|
<!--连接字段-->
|
<template v-else-if="col.prop==dataOptions.linkColumn">
|
<el-link type="primary" @click.native="()=>{linkEditor(row[dataOptions.idField]);}">{{ row[col.prop] }}</el-link>
|
</template>
|
<template v-else>
|
<template v-if="['date', 'datetime'].indexOf(col.dataType)>=0 && col.formatter">
|
{{ common.formatDate(row[col.prop], col.formatter) }}
|
</template>
|
<template v-else-if="['byte', 'int32', 'int64', 'decimal', 'double'].indexOf(col.dataType)>=0 && col.formatter">
|
{{ common.formatNumber(row[col.prop], col.formatter) }}
|
</template>
|
<template v-else>
|
{{ row[col.prop] }}
|
</template>
|
</template>
|
</template>
|
</yrt-data-list>
|
|
<!--数据编辑器Editor-->
|
<yrt-editor :ref="editorRef" :data-list-ref="dataListRef" v-bind="editorOptions" :data-options="dataOptions" :action.sync="editorOptions.action" :top.sync="editorOptions.top" :visible.sync="editorOptions.config.visible" :detail-button-click="detailButtonClick" :auth-nodes="authNodes" :on-save-before="onSaveBefore" :btn-read-only="btnReadOnly" @on-change="onChange" @on-add-load-after="onEditLoadAfter" @on-edit-load-after="onEditLoadAfter" @on-blur="onBlur" @on-detail-change="onDetailChange" @on-row-change="onRowChange">
|
<!--自定义按钮插槽-->
|
<template slot="footer-button-region" slot-scope="{ formData }">
|
<el-button :disabled="btnReadOnly.sorting" type="success" icon="el-icon-yrt-shuaxin" @click.native="multiBatchSort(formData)">分拣</el-button>
|
<!--自定义审核按钮-->
|
<el-button :disabled="btnReadOnly.confirm" type="success" icon="el-icon-yrt-qiyong" @click.native="onConfirm(formData)">审核</el-button>
|
</template>
|
</yrt-editor>
|
|
<!--明细选择器-->
|
<yrt-selector ref="selector-position-dialog" :config="selectorPositionConfig" :visible.sync="selectorPositionConfig.visible" :url="selectorPositionConfig.url" :set-search-default="setSearchDefault" :get-custom-where="getCustomWhere" @on-selected="onPositionSelected">
|
<template slot="search-form-item">
|
<el-select v-model="operationType" splaceholder="账面库存量" class="w-150">
|
<el-option label="库存大于0" value=">0">
|
</el-option>
|
<el-option label="库存大于等于0" value=">=0">
|
</el-option>
|
<el-option label="库存等于0" value="=0">
|
</el-option>
|
<el-option label="全部" value="">
|
</el-option>
|
</el-select>
|
</template>
|
</yrt-selector>
|
</div>
|
</template>
|
<script>
|
import baseLayout from "@/components/common/base-layout.vue";
|
import yrtSelector from "@/components/common/yrtSelector.vue";
|
|
export default {
|
name: "storage-borrow-enterreturn",
|
components: {
|
yrtSelector
|
// outerImport
|
},
|
mixins: [baseLayout],
|
data() {
|
return {
|
selectorConfig: {
|
title: "物料选择器",
|
width: "1000px",
|
visible: false,
|
// 配置路由
|
router: "/selector/s-product-selector",
|
// 编辑规则验证
|
rules: {
|
positionType: [{ required: true, message: "请选择货位类型", trigger: "blur" }]
|
}
|
},
|
selectorPositionConfig: {
|
title: "物料库存选择器",
|
width: "1000px",
|
visible: false,
|
// 配置路由
|
router: "/selector/x-product-selector",
|
url: "/api/common/GroupDataList"
|
},
|
// 自动加载借入单字段
|
jiazaienter: [
|
"consignorName",
|
"consignor_Id",
|
"consignorCode",
|
"storageName",
|
"dept_Id",
|
"deptName",
|
"applyDate",
|
"provider_Id",
|
"providerCode",
|
"providerShortName",
|
"shippingName",
|
"shippingAddress",
|
"mobile",
|
"storage_Id"
|
]
|
};
|
},
|
// 自定义初始化数据
|
init(the) {
|
var userInfo = the.common.getUserInfo();
|
// 设置经手人不是超级管理员,不允许编辑
|
if (!userInfo.isAdministrator) {
|
the.editorOptions.fields.forEach(cols => {
|
cols.columns &&
|
cols.columns.forEach(col => {
|
col.fields.forEach(item => {
|
if (item.options.prop === "UserTrueName") {
|
item.options.disabled = true;
|
}
|
});
|
});
|
});
|
}
|
},
|
methods: {
|
// 明细按钮点击事件
|
detailButtonClick(authNode) {
|
switch (authNode) {
|
case "detailAdd":
|
// 明细添加
|
this.openPositionSelected();
|
return true;
|
}
|
},
|
// 打开库存选择器
|
openPositionSelected() {
|
var editorRef = this.editor;
|
if (!editorRef.formData.consignorName) {
|
this.$message({
|
message: "请选择货主!",
|
type: "warning"
|
});
|
return;
|
}
|
const selector = this.$refs["selector-position-dialog"];
|
selector.setSearchValue("consignor_Id", [editorRef.formData.consignor_Id]);
|
selector.setSearchValue("storage_Id", [editorRef.formData.storage_Id]);
|
if (editorRef.formData.positionType) {
|
selector.setSearchValue("positionType", [editorRef.formData.positionType]);
|
}
|
selector.setReadOnly("storage_Id", true); // 设为只读
|
selector.setReadOnly("consignor_Id", true); // 设为只读
|
selector.loadData();
|
this.selectorPositionConfig.visible = true;
|
},
|
// 将选择器选择中的数据填充到明细表中
|
onPositionSelected(rows) {
|
rows.forEach(item => {
|
item.weight = 0;
|
if (item.productStorage !== 0 && item.totalWeight) {
|
item.weight = Math.Round(item.totalWeight / item.productStorage, 2);
|
item.totalWeight = 0;
|
item.quantity = item.usingStorage;
|
}
|
});
|
this.editor.addDetailDataRow(rows);
|
this.selectorPositionConfig.visible = false;
|
},
|
// 分拣
|
multiBatchSort(formData) {
|
this.$confirm("请点击“开始分拣”按钮进行出库单分拣,判断库存是否满足出库?", "分拣", {
|
confirmButtonText: "开始分拣",
|
cancelButtonText: "取消",
|
type: "warning"
|
}).then(() => {
|
if (!formData.borrowEnterReturn_Id) {
|
this.$message({
|
message: "当前数据没有保存!",
|
type: "warning"
|
});
|
return;
|
}
|
const the = this;
|
this.isAuditing = true;
|
if (formData.statusText !== "新建") {
|
this.$message({
|
message: "只有新建状态才允许审核操作!",
|
type: "warning"
|
});
|
return;
|
}
|
const url = "/api/storage/borrowEnterReturn/startSorting";
|
const borrowEnterReturn_Id = formData.borrowEnterReturn_Id;
|
const params = {
|
borrowEnterReturn_Id: borrowEnterReturn_Id
|
};
|
var callback = res => {
|
the.common.showMsg(res);
|
if (res.msg) {
|
this.dataList.reload();
|
this.editorOptions.config.visible = false;
|
}
|
};
|
this.common.ajax(url, params, callback, true);
|
});
|
},
|
// 开始审核
|
onConfirm(formData) {
|
this.$confirm("请点击“确认审核”按钮进行审核?", "确认审核", {
|
confirmButtonText: "确认审核",
|
cancelButtonText: "取消",
|
type: "warning"
|
}).then(() => {
|
if (!formData.borrowEnterReturn_Id) {
|
this.$message({
|
message: "当前数据没有保存!",
|
type: "warning"
|
});
|
return;
|
}
|
const the = this;
|
this.isAuditing = true;
|
if (formData.sortingStatus !== 2) {
|
this.$message({
|
message: "只有分拣成功状态允许确认审核操作!",
|
type: "warning"
|
});
|
return;
|
}
|
const url = "/api/storage/borrowEnterReturn/onConfirm";
|
const borrowEnterReturn_Id = formData.borrowEnterReturn_Id;
|
const params = {
|
borrowEnterReturn_Id: borrowEnterReturn_Id
|
};
|
var callback = res => {
|
the.common.showMsg(res);
|
if (res.msg) {
|
this.dataList.reload();
|
this.editorOptions.config.visible = false;
|
}
|
};
|
this.common.ajax(url, params, callback, true);
|
});
|
},
|
// 输入预到货单失去焦点加载主表信息
|
// onBlur(ref, val, row, field) {
|
// if (field.label === "借入单号") {
|
// const borrowEnterCode = val;
|
// const url = "/api/storage/borrowEnterReturn/getByCode";
|
// const params = {
|
// borrowEnterCode: borrowEnterCode
|
// };
|
// const callback = res => {
|
// this.common.showMsg(res);
|
// if (res.result) {
|
// this.jiazaienter.forEach(fieldName => {
|
// this.$set(this.editor.formData, fieldName, res.data[fieldName]);
|
// });
|
// if (res.data.storageBorrowEnterList) {
|
// // 默认为第一个明细表名称
|
// var rows = this.editor.formData["Storage_BorrowEnterReturnList"].rows;
|
|
// res.data.storageBorrowEnterList.forEach(item => {
|
// var isExist = false;
|
// rows.forEach(temp => {
|
// if (item.borrowEnterList_Id === temp.borrowEnterList_Id) {
|
// isExist = true;
|
// }
|
// });
|
// if (!isExist) {
|
// this.editor.addDetailDataRow([item]);
|
// }
|
// });
|
// }
|
// }
|
// };
|
// this.common.ajax(url, params, callback, true);
|
// }
|
// },
|
|
// 主表数据改变
|
onChange(ref, val, field, formData) {
|
switch (field.options.prop) {
|
case "storageName":
|
this.$refs["selector-position-dialog"].setSearchValue("storageName", formData.storageName);
|
this.$refs["selector-position-dialog"].loadData();
|
break;
|
case "consignorName":
|
this.$refs["selector-position-dialog"].setSearchValue("consignorName", formData.consignorName);
|
this.$refs["selector-position-dialog"].loadData();
|
break;
|
}
|
if (field.label === "借入单号") {
|
const url = "/api/storage/borrowEnterReturn/getByCode";
|
const ref = this.dataList;
|
const params = {
|
code: formData.borrowEnterCode,
|
consignor_Id: formData.consignor_Id
|
};
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res);
|
if (res) {
|
this.jiazaienter.forEach(rows => {
|
this.$set(this.editor.formData, rows, res.rows);
|
});
|
this.$set(formData, "consignor_Id", res.data.consignor_Id);
|
this.$set(formData, "consignorCode", res.data.consignorCode);
|
this.$set(formData, "consignorName", res.data.consignorName);
|
this.$set(formData, "storage_Id", res.data.storage_Id);
|
this.$set(formData, "storageName", res.data.storageName);
|
this.$set(formData, "applyDate", res.data.applyDate);
|
if (res.data.storageBorrowEnterList) {
|
// 默认为第一个明细表名称
|
var subTableView = this.editor.detailFields[0].subTableView;
|
var rows = this.editor.formData[subTableView].rows;
|
if (rows.length) {
|
rows = this.editor.formData[subTableView].rows = [];
|
}
|
for (var i = 0; i < res.data.storageBorrowEnterList.length; i++) {
|
var item = res.data.storageBorrowEnterList[i];
|
if (rows.length) {
|
rows.forEach(temp => {
|
if (item.borrowEnterList_Id !== temp.borrowEnterList_Id) {
|
this.editor.addDetailDataRow(item);
|
}
|
});
|
} else {
|
this.editor.addDetailDataRow(res.data.storageBorrowEnterList);
|
break;
|
}
|
}
|
}
|
}
|
},
|
ref
|
);
|
}
|
},
|
// 对选择器默认值操作
|
setSearchDefault(searchData) {},
|
|
// 表格下拉框字段改变事件
|
onRowChange(ref, val, field) {
|
// 货主和仓库改变
|
if (["consignorName", "storageName"].indexOf(field.options.prop) >= 0) {
|
window.setTimeout(() => {
|
this.getDefaultItems();
|
}, 200);
|
}
|
}
|
}
|
};
|
</script>
|