1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150 |
- <template>
- <el-drawer
- title="外协单信息"
- :with-header="false"
- v-model="visible"
- direction="rtl"
- size="100%"
- >
- <div class="form-container column-container">
- <div class="form-btns-container">
- <span class="title-label">
- <el-icon>
- <Document />
- </el-icon>
- <span>外协单信息</span>
- </span>
- <el-button
- v-show="editStatus && form.isSubmit == 1"
- type="primary"
- icon="Download"
- @click="handleExport"
- v-hasPermi="['business:outsource:export']"
- >导出</el-button
- >
- <el-button
- v-show="editStatus && form.isSubmit == 1"
- type="warning"
- icon="Download"
- @click="handlePrint"
- v-hasPermi="['business:outsource:export']"
- >
- 打印
- </el-button>
- <el-button
- v-if="editStatus"
- type="primary"
- icon="Finished"
- @click="handleSubmit"
- >保存</el-button
- >
- <el-button
- v-if="editStatus && form.isSubmit == 1"
- type="info"
- icon="Calendar"
- @click="handleViewRecords"
- >历史记录</el-button
- >
- <div class="close-btn" @click="cancel">
- <i class="fa fa-times" aria-hidden="true" />
- <!-- <span>关闭</span> -->
- </div>
- </div>
- <el-form
- ref="formRef"
- class="master-container"
- :model="form"
- v-loading="loading"
- :rules="rules"
- label-width="120px"
- >
- <el-row :gutter="20">
- <el-col :span="6">
- <el-form-item label="单据号" prop="formCode">
- <el-input
- v-if="editStatus"
- v-model="form.formCode"
- disabled
- placeholder="系统自动生成"
- />
- <span v-else>{{ form.formCode }}</span>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="表单日期" prop="formDate">
- <el-date-picker
- v-if="editStatus && hasReturnReceiptDetailFlag"
- :clearable="false"
- v-model="form.formDate"
- type="date"
- value-format="YYYY-MM-DD"
- placeholder="请选择表单日期"
- style="width: 100%"
- >
- </el-date-picker>
- <span v-else>{{ parseTime(form.formDate, "{y}-{m}-{d}") }}</span>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="外协工段" prop="outsourceDeptId">
- <el-select
- v-if="editStatus &&form.isSubmit ==0"
- v-model="form.outsourceDeptId "
- placeholder="请选择"
- @change="handleChangeDept"
- >
- <el-option
- v-for="dict in outsourceDeptList"
- :key="dict.value"
- :label="dict.label"
- :value="dict.value"
- />
- </el-select>
- <span v-else>{{ form.outsourceDeptName }}</span>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="外协商名称" prop="supplierName">
- <el-input
- v-if="editStatus"
- v-model="form.supplierName"
- disabled
- />
- <span v-else >{{ form.supplierName }}</span>
- </el-form-item>
- </el-col>
- <el-col :span="6" v-if="false">
- <el-form-item label="运费单价" prop="freightPrice">
- <el-input-number
- v-if="editStatus && hasReturnReceiptDetailFlag"
- v-model="form.freightPrice"
- :min="0"
- :precision="2"
- controls-position="right"
- />
- <span v-else>{{ form.freightPrice }}</span>
- </el-form-item>
- </el-col>
- <el-col :span="6" v-if="false">
- <el-form-item label="运费总价" prop="freightAmount">
- <el-input-number
- v-if="editStatus && hasReturnReceiptDetailFlag"
- v-model="form.freightAmount"
- :min="0"
- :precision="2"
- controls-position="right"
- />
- <span v-else>{{ form.freightAmount }}</span>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="送货方式" prop="deliveryMethod">
- <el-select
- v-if="editStatus && hasReturnReceiptDetailFlag"
- v-model="form.deliveryMethod"
- placeholder="请选择"
- @change="handleChangeDeliveryMethod"
- >
- <el-option
- v-for="dict in deliveryMethod"
- :key="dict.value"
- :label="dict.label"
- :value="dict.value"
- />
- </el-select>
- <span v-else>{{
- selectText(form.deliveryMethod, deliveryMethod)
- }}</span>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="带箱方式" prop="packagingMethod">
- <el-select
- v-if="editStatus && hasReturnReceiptDetailFlag"
- v-model="form.packagingMethod"
- placeholder="请选择"
- @change="handleChangePackagingMethod"
- >
- <el-option
- v-for="dict in packagingMethod"
- :key="dict.value"
- :label="dict.label"
- :value="dict.value"
- />
- </el-select>
- <span v-else>{{
- selectText(form.packagingMethod, packagingMethod)
- }}</span>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="结算方式" prop="settlementType">
- <el-select
- v-if="editStatus && hasReturnReceiptDetailFlag"
- v-model="form.settlementType"
- placeholder="请选择"
- >
- <el-option
- v-for="dict in settlementType"
- :key="dict.value"
- :label="dict.label"
- :value="dict.value"
- />
- </el-select>
- <span v-else>{{
- selectText(form.settlementType, settlementType)
- }}</span>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="备注" prop="remark">
- <el-input
- v-if="editStatus"
- v-model.trim="form.remark"
- placeholder="请输入备注"
- />
- <span v-else>{{ form.remark }}</span>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="总箱数" prop="remark">
- <span>{{ totalCarriersNum }}</span>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <!-- 渲染数据区 -->
- <div class="form-details-btns-container">
- <el-button
- v-show="editStatus"
- type="primary"
- icon="Plus"
- @click="handleShowDialogProducts"
- v-hasPermi="['business:innerOutsource:add']"
- >
- 添加外协产品明细
- </el-button>
- <el-button
- v-show="editStatus"
- type="success"
- icon="Check"
- :disabled="form.details.length === 0"
- @click="handleCheckPackage"
- v-hasPermi="['business:innerOutsource:add']"
- >
- 一键包装签票
- </el-button>
- </div>
- <div class="el-table-container">
- <div class="el-table-inner-container">
- <el-table
- v-loading="loading"
- :data="form.details"
- size="small"
- border
- height="100%"
- >
- <el-table-column
- label="行号"
- type="index"
- align="center"
- width="48"
- />
- <el-table-column
- label="批次号"
- align="center"
- prop="lotCode"
- width="104"
- />
- <el-table-column
- label="产品描述"
- align="center"
- prop="productDescription"
- width="300"
- />
- <el-table-column
- label="产品数"
- align="center"
- width="160"
- prop="productNum"
- >
- <template #default="scope">
- <el-input-number
- v-if="editStatus && !scope.row.hasNextInfo"
- :min="0"
- v-model="scope.row.productNum"
- placeholder="产品数"
- :controls="false"
- />
- <span v-else>{{ scope.row.productNum }}</span>
- </template>
- </el-table-column>
- <el-table-column
- label="箱数"
- align="center"
- prop="carrierNum"
- width="50"
- />
- <el-table-column
- :label="form.packagingMethod === '0' ? '箱号' : '原箱号'"
- align="center"
- prop="originalCarrier"
- width="320"
- />
- <el-table-column
- label="新箱号"
- align="center"
- prop="newCarrier"
- width="320"
- >
- <template #default="scope">
- <el-button
- link
- type="primary"
- icon="Refresh"
- v-if="!scope.row.editStatus && editStatus"
- @click="handleChangeCarrier(scope.row)"
- >换箱</el-button
- >
- <el-select
- v-if="
- editStatus &&
- scope.row.editStatus &&
- !scope.row.hasNextInfo
- "
- v-model="scope.row.carrierIds"
- multiple
- filterable
- remote
- reserve-keyword
- placeholder="请选择箱号"
- :remote-method="
- (arg) =>
- remoteCarriers(arg, scope.row.newCarriers, scope.row)
- "
- :loading="loadingCarrier"
- @change="(arg) => handleCarrierChange(arg, scope.row)"
- >
- <el-option
- v-for="item in scope.row.carriers"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- />
- </el-select>
- <span v-if="!editStatus">{{ scope.row.newCarrier }}</span>
- </template>
- </el-table-column>
- <el-table-column
- label="外协工序"
- align="center"
- prop="processNames"
- width="320"
- >
- <template #default="scope">
- <el-input
- v-if="editStatus && !scope.row.hasNextInfo"
- v-model="scope.row.processNames"
- readonly
- placeholder="请选择工序"
- >
- <template #append>
- <el-button
- icon="Search"
- @click="handleShowDialogProcesses(scope.row)"
- />
- </template>
- </el-input>
- <span v-else>{{ scope.row.processNames }}</span>
- </template>
- </el-table-column>
- <el-table-column label="是否包装签票" align="center" prop="isPackage" >
- <template #default="scope">
- <el-switch :disabled="!editStatus || scope.row.hasNextInfo" v-model="scope.row.isPackage" style="
- --el-switch-on-color: #13ce66;
- --el-switch-off-color: #ff4949;
- " :active-value="1" :inactive-value="0" active-text="是" inactive-text="否" />
- </template>
- </el-table-column>
- <el-table-column label="备注" align="center" prop="remark">
- <template #default="scope">
- <el-input
- v-if="editStatus && !scope.row.hasNextInfo"
- v-model="scope.row.remark"
- placeholder="备注"
- />
- <span v-else>{{ scope.row.remark }}</span>
- </template>
- </el-table-column>
- <el-table-column
- v-if="editStatus"
- label="操作"
- align="center"
- class-name="small-padding fixed-width"
- width="64"
- >
- <template #default="scope">
- <el-button
- circle
- type="danger"
- v-if="editStatus && !scope.row.hasNextInfo"
- icon="Delete"
- @click="handleDelete(scope.$index)"
- v-hasPermi="['business:outsource:remove']"
- />
- </template>
- </el-table-column>
- </el-table>
- </div>
- </div>
- </div>
- <!-- 外协商选择 -->
- <dialog-suppliers
- ref="dialogSuppliersRef"
- :single-selected="handleSingleSelectedSupplier"
- />
- <!-- 产品选择 -->
- <dialog-products
- ref="dialogProductsRef"
- :supplier-id="form.supplierId"
- :multiple-selected="handleMultipleSelectedProducts"
- />
- <!-- 工序选择 -->
- <dialog-processes
- ref="dialogProcessesRef"
- :multiple-selected="handleMultipleSelectedProcesses"
- />
- <!-- 新箱号选择 -->
- <dialog-carrier
- ref="dialogCarrierRef"
- :multiple-selected="handleMultipleSelectedOutsourceCarriers"
- />
- <!-- 历史记录弹窗 -->
- <dialog-outsourced-records ref="dialogOutsourcedRecordsRef" />
- </el-drawer>
- </template>
- <script setup>
- import {
- getInnerOrder,
- saveOrder,
- carrierForOutsource,
- submitOrder,
- exportOutsource,
- printOutsource,
- submitInnerDetails,
- } from "@/api/business/outsourcedOrder";
- import {
- listOutsourceDeptList
- } from "@/api/business/supplier"
- import dialogCarrier from "./DialogCarrier";
- import dialogSuppliers from "./DialogSuppliers";
- import dialogProducts from "./DialogProducts";
- import dialogProcesses from "./DialogProcesses";
- import dialogOutsourcedRecords from "./DialogOutsourcedRecords";
- // import FormDetailsRecycling from "./detailsRecyclingForm";
- const { proxy } = getCurrentInstance();
- /** 父组件传参 */
- const props = defineProps({
- getList: {
- type: Function,
- default: () => {},
- },
- deliveryMethod: {
- type: Array,
- default: [],
- },
- settlementType: {
- type: Array,
- default: [],
- },
- packagingMethod: {
- type: Array,
- default: [],
- },
- });
- const { getList, deliveryMethod, packagingMethod, settlementType } =
- toRefs(props);
- /** 字典数组区 */
- /** 表单抽屉 页变量 */
- const loading = ref(false);
- const multiple = ref(true);
- const visible = ref(false);
- const editStatus = ref(true);
- const hasReturnReceiptDetailFlag = ref(true);
- const totalCarriersNum = ref(0);
- const detailInfo = ref({});
- const loadingCarrier = ref(false);
- const carriers = ref([]);
- const details = ref([]);
- const form = ref({});
- const outsourceDeptList = ref([])
- const deptList = ref([])
- // const formatDetails = ref([])
- const currentDetail = ref({});
- const rules = {
- supplierName: [
- { required: true, message: "外协商名称不能为空", trigger:"" },
- ],
- };
- /*********************** 方法区 ****************************/
- /** 导出按钮操作 */
- function handleExport() {
- exportOutsource({ id: form.value.id });
- }
- /** 打印按钮操作 */
- function handlePrint() {
- printOutsource({ id: form.value.id });
- }
- /** 打开抽屉 */
- function open(row) {
- reset();
- totalCarriersNum.value = 0;
- getOutsorceDeptList()
- visible.value = true;
- if (row) {
- console.log(row);
- detailInfo.value = row;
- form.value.id = row.id;
- getForm();
- } else {
- editStatus.value = true;
- hasReturnReceiptDetailFlag.value = true;
- }
- }
- /** 查询表单信息 */
- function getForm() {
- loading.value = true;
- getInnerOrder({id:form.value.id}).then((response) => {
- form.value = response.data;
- details.value = proxy.deepClone(response.data.details);
- console.log(details.value);
- //如果发出单明细里收回单,主表除了备注之外不能编辑
- form.value.details.forEach((item) => {
- item.hasReturnReceiptDetailFlag = true;
- if (
- item.returnReceiptDetailList &&
- item.returnReceiptDetailList.length > 0
- ) {
- hasReturnReceiptDetailFlag.value = false;
- }
- if (
- item.returnReceiptDetailList &&
- item.returnReceiptDetailList.length > 0 &&
- item.returnReceiptDetailList[0].status == 1
- ) {
- item.hasReturnReceiptDetailFlag = false;
- }
- });
- form.value.details.forEach((item) => {
- item.editStatus = false;
- if (!form.value.id) {
- item.carrierNum = item.originalCarrier.split(",").length;
- } else {
- if (item.newCarrier != null) {
- item.carrierNum = item.newCarrier.split(",").length;
- } else {
- item.carrierNum = item.originalCarrier.split(",").length;
- }
- }
- totalCarriersNum.value += item.carrierNum;
- });
- editStatus.value = form.value.isSubmit == 1;
- if (!detailInfo.value.flag) {
- editStatus.value = false;
- console.log(editStatus.value);
- }
- console.log(hasReturnReceiptDetailFlag.value);
- loading.value = false;
- });
- }
- //改变带箱方式
- function handleChangePackagingMethod() {
- totalCarriersNum.value = 0;
- if (!editStatus) {
- if (form.value.packagingMethod == 1 && form.value.details.length > 0) {
- form.value.details.forEach((item) => {
- item.newCarriers = [];
- item.carrierIds = [];
- item.carriers = carriers.value;
- });
- }
- if (form.value.packagingMethod == 0 && form.value.details.length > 0) {
- form.value.details.forEach((item) => {
- item.carriers = carriers.value;
- item.newCarriers = [];
- item.carrierIds = [];
- item.newCarriers.push(
- ...item.originalCarrierList.map((v) => ({
- id: v.carrierId,
- code: v.carrierCode,
- }))
- );
- item.carriers.push(
- ...item.originalCarrierList.map((v) => ({
- value: v.carrierId,
- label: v.carrierCode,
- }))
- );
- item.carrierIds = item.originalCarrierList.map((info) => {
- return info.carrierId;
- });
- });
- }
- } else {
- form.value.details.forEach((item) => {
- console.log(item.editStatus);
- if (item.editStatus) {
- item.newCarriers = [];
- item.carrierIds = [];
- item.carriers = carriers.value;
- }
- });
- }
- console.log(form.value.details);
- for (let i = 0; i < form.value.details.length; i++) {
- if (form.value.packagingMethod == 1) {
- form.value.details[i].carrierNum = form.value.details[i].newCarriers
- ? form.value.details[i].newCarriers.length
- : 0;
- } else {
- form.value.details[i].carrierNum =
- form.value.details[i].newCarriers &&
- form.value.details[i].newCarriers.length > 0
- ? form.value.details[i].newCarriers.length
- : form.value.details[i].originalCarrier.split(",").length;
- }
- console.log(form.value.details);
- totalCarriersNum.value += form.value.details[i].carrierNum;
- }
- }
- //改变送货方式
- function handleChangeDeliveryMethod() {
- if (form.value.deliveryMethod == 1) {
- form.value.freightAmount = form.value.freightPrice * totalCarriersNum.value;
- } else {
- form.value.freightAmount = 0.0;
- }
- }
- //外协工段
- function getOutsorceDeptList() {
- listOutsourceDeptList({}).then((response) => {
- if(response.data && response.data.length > 0) {
- deptList.value = response.data
- outsourceDeptList.value = response.data.map(item => {
- return {
- value: item.outsourceDeptId,
- label: item.outsourceDeptName
- }
- })
- }
- form.value.outsourceDeptList = response.data;
- });
- }
- //外协工段选择事件
- function handleChangeDept(){
- let data = deptList.value.filter(item => item.outsourceDeptId == form.value.outsourceDeptId)[0]
- form.value.isInnerOutsource = 1
- form.value.outsourceDeptName = data.outsourceDeptName
- form.value.supplierName = data.supplierName
- form.value.supplierId = data.id;
- form.value.lossLimit = data.lossLimit;
- form.value.supplierName = data.name;
- form.value.supplierCode = data.mnemonicCode;
- form.value.deliveryMethod = data.deliveryMethod;
- form.value.freightPrice = data.freightPrice;
- form.value.settlementType = data.settlementType;
- }
- //一键包装签票
- function handleCheckPackage(){
- form.value.details.forEach((item) => {
- if(!item.hasNextInfo){
- item.isPackage = 1
- }
-
- })
- }
- //打开历史记录弹窗
- function handleViewRecords() {
- proxy.$refs.dialogOutsourcedRecordsRef.open(form.value.id);
- }
- function selectText(value, data) {
- if (value) {
- return data.filter((item) => item.value == value)[0].label;
- }
- }
- /** 取消按钮 */
- function cancel() {
- visible.value = false;
- // reset();
- }
- const handleDelete = (index) => {
- totalCarriersNum.value -= form.value.details[index].carrierNum;
- if (form.value.deliveryMethod == 1) {
- form.value.freightAmount = form.value.freightPrice * totalCarriersNum.value;
- } else {
- form.value.freightAmount = 0.0;
- }
- form.value.details.splice(index, 1);
- };
- /** 表单重置 */
- function reset() {
- // console.log(proxy.parseTime(new Date(), "{y}-{m}-{d}"))
- form.value = {
- id: null,
- tenantId: null,
- formCode: null,
- formDate: proxy.parseTime(new Date(), "{y}-{m}-{d}"),
- supplierId: "0",
- supplierName: "",
- deliveryMethod: "0",
- freightPrice: 0.0,
- freightAmount: 0.0,
- packagingMethod: "0",
- remark: null,
- details: [],
- isSubmit: 0,
- };
- proxy.resetForm("formRef");
- }
- /** 保存 */
- function saveFrom() {
- if (!form.value.details || form.value.details.length == 0) {
- proxy.$modal.msgError("请添加产品明细");
- return;
- }
- proxy.$refs["formRef"].validate((valid) => {
- for (const item of form.value.details) {
- if (!item.processNames) {
- proxy.$modal.msgError("请选择" + item.lotCode + "批次的工序");
- return;
- }
- }
- if (form.value.packagingMethod == 1) {
- console.log("form.value.details", form.value.details);
- for (const item of form.value.details) {
- if (item.newCarriers.length == 0) {
- proxy.$modal.msgError("请选择" + item.lotCode + "批次的新箱号");
- return;
- }
- }
- }
- if (valid) {
- saveOrder(form.value).then((response) => {
- if (response.code == 200) {
- proxy.$modal.msgSuccess("保存成功");
- visible.value = false;
- getList.value();
- }
- });
- }
- });
- }
- /** 保存并提交 */
- function submitFrom() {
- console.log("from", form.value);
- proxy.$modal
- .confirm("是否确定提交,提交后不可修改,删除")
- .then(function () {
- return;
- })
- .then(() => {
- if (!form.value.details || form.value.details.length == 0) {
- proxy.$modal.msgError("请添加产品明细");
- return;
- }
- proxy.$refs["formRef"].validate((valid) => {
- for (const item of form.value.details) {
- if (!item.processNames) {
- proxy.$modal.msgError("请选择" + item.lotCode + "批次的工序");
- return;
- }
- }
- if (form.value.packagingMethod == 1) {
- console.log("form.value.details", form.value.details);
- for (const item of form.value.details) {
- if (item.newCarriers.length == 0) {
- proxy.$modal.msgError("请选择" + item.lotCode + "批次的新箱号");
- return;
- }
- }
- }
- if (valid) {
- console.log(form.value);
- submitOrder(form.value).then((response) => {
- proxy.$modal.msgSuccess("提交成功");
- visible.value = false;
- getList.value();
- });
- }
- });
- })
- .catch(() => {});
- }
- //5.29保存
- function handleSubmit() {
- if (form.value.isSubmit == 0) {
- proxy.$modal
- .confirm("是否确定保存,保存后外协商不可编辑!")
- .then(function () {
- return;
- })
- .then(() => {
- if (!form.value.details || form.value.details.length == 0) {
- proxy.$modal.msgError("请添加产品明细");
- return;
- }
- if (form.value.supplierName == "") {
- proxy.$modal.msgError("外协商名称不能为空");
- return;
- }
- proxy.$refs["formRef"].validate((valid) => {
- for (const item of form.value.details) {
- if (!item.processNames) {
- proxy.$modal.msgError("请选择" + item.lotCode + "批次的工序");
- return;
- }
- }
- if (form.value.packagingMethod == 1) {
- console.log("form.value.details", form.value.details);
- for (const item of form.value.details) {
- if (item.newCarriers.length == 0) {
- proxy.$modal.msgError("请选择" + item.lotCode + "批次的新箱号");
- return;
- }
- }
- }
- if (valid) {
- console.log(form.value);
- submitInnerDetails(form.value).then((response) => {
- proxy.$modal.msgSuccess("提交成功");
- visible.value = false;
- getList.value();
- });
- }
- });
- });
- } else {
- if (!form.value.details || form.value.details.length == 0) {
- proxy.$modal.msgError("请添加产品明细");
- return;
- }
- proxy.$refs["formRef"].validate((valid) => {
- for (const item of form.value.details) {
- if (!item.processNames) {
- proxy.$modal.msgError("请选择" + item.lotCode + "批次的工序");
- return;
- }
- }
- if (form.value.packagingMethod == 1) {
- console.log("form.value.details", form.value.details);
- for (const item of form.value.details) {
- if (item.newCarriers.length == 0) {
- proxy.$modal.msgError("请选择" + item.lotCode + "批次的新箱号");
- return;
- }
- }
- }
- if (valid) {
- console.log(form.value);
- submitInnerDetails(form.value).then((response) => {
- proxy.$modal.msgSuccess("提交成功");
- visible.value = false;
- getList.value();
- });
- }
- });
- }
- }
- /***************************** 外协商对话框相关 *****************************/
- // 打开外协商选择对话框
- const handleShowDialogSuppliers = () => {
- proxy.$refs.dialogSuppliersRef.open();
- };
- // 外协商选择带回
- const handleSingleSelectedSupplier = (data) => {
- console.log(data);
- form.value.supplierId = data.id;
- form.value.lossLimit = data.lossLimit;
- form.value.supplierName = data.name;
- form.value.supplierCode = data.mnemonicCode;
- form.value.deliveryMethod = data.deliveryMethod;
- form.value.freightPrice = data.freightPrice;
- form.value.settlementType = data.settlementType;
- if (form.value.deliveryMethod == 1) {
- form.value.freightAmount = form.value.freightPrice * totalCarriersNum.value;
- } else {
- form.value.freightAmount = 0.0;
- }
- };
- /***************************** 外协收回明细相关 *****************************/
- //打开收回明细表单
- function handleDetailsRecycling() {
- proxy.$refs.formDetailsRecyclingRef.open(row);
- }
- function handleSingleSelectedRecycling() {}
- /***************************** 产品对话框相关 *****************************/
- // 打开产品选择对话框
- const handleShowDialogProducts = () => {
- const dayworkIds = form.value.details.map((item) => item.dayworkId);
- // console.log(dayworkIds);
- proxy.$refs.dialogProductsRef.open(dayworkIds);
- };
- // 产品选择带回
- const handleMultipleSelectedProducts = (selection) => {
- selection.forEach((item) => {
- const newDetail = {
- lotId: item.lotId,
- lotCode: item.lotCode,
- dayworkId: item.id,
- productId: item.productId,
- productDescription: item.productDescription,
- technologicalProcessId: item.technologicalProcessId,
- technologicalProcessDetailId: item.lastDayworkItem.technologicalProcessDetailId,
- productionPlanDetailId: item.lastDayworkItem.productionPlanDetailId,
- processId: item.lastDayworkItem.processId,
- processAlias:item.lastDayworkItem.processAlias,
- dayworkItemId: item.lastDayworkItem.id,
- technologyVersion: item.technologyVersion,
- productionPlanDetailId: item.productionPlanDetailId,
- productionPlanNo: item.productionPlanNo,
- lineNumber:item.lineNumber,
- originalCarrier: item.originalCarrier,
- originalCarrierCount: item.originalCarrier.split(",").length,
- carrierNum: item.originalCarrier.split(",").length,
- originalCarrierList: item.originalCarrierList,
- productNum: item.productNum,
- productCode: item.productCode,
- newCarrier: "",
- carriers: [],
- newCarrierCount: 0,
- newCarriers: [],
- processNames: "",
- remark: item.remark,
- processes: [],
- hasReturnReceiptDetailFlag: true,
- };
- form.value.details.push(newDetail);
- console.log(newDetail);
- totalCarriersNum.value += newDetail.originalCarrierCount;
- if (form.value.deliveryMethod == 1) {
- form.value.freightAmount =
- form.value.freightPrice * totalCarriersNum.value;
- } else {
- form.value.freightAmount = 0.0;
- }
- // console.log("form.value.details", form.value.details);
- });
- };
- /***************************** 外协箱子对话框相关 *****************************/
- // 打开外协箱子选择对话框
- const handleShowDialogOutsourceCarriers = (row) => {};
- function remoteCarriers(code, newCarrier, row) {
- loadingCarrier.value = true;
- // console.log(row, carriers.value)
- console.log("row", row);
- // if (true) {
- // carriers.value = [{ value: '"1747500987856662535"', label: '000319' }]
- // return
- // }
- let categoryId;
- if (form.value.packagingMethod == 1) {
- categoryId = "1783783697558847489";
- } else {
- categoryId = "2";
- }
- if (code == "") {
- return;
- }
- carrierForOutsource({
- categoryId: categoryId,
- code: code,
- dayworkId: row.dayworkId,
- }).then((res) => {
- if (res.code === 200) {
- carriers.value = res.rows.map((v) => ({ value: v.id, label: v.code }));
- row.carriers = res.rows.map((v) => ({ value: v.id, label: v.code }));
- if (Array.isArray(newCarrier)) {
- // 安全地更新 carriers
- row.carriers.push(
- ...newCarrier
- .filter((v) => !row.carriers.map((e) => e.value).includes(v.id))
- .map((v) => ({ value: v.id, label: v.code }))
- );
- }
- } else {
- row.carriers = [];
- row.carriers.push(...newCarrier);
- }
- loadingCarrier.value = false;
- });
- }
- //换箱
- function handleChangeCarrier(row) {
- console.log(row);
- if (editStatus.value && !form.value.id) {
- if (form.value.packagingMethod == 0) {
- row.newCarriers.push(
- ...row.originalCarrierList.map((v) => ({
- id: v.carrierId,
- code: v.carrierCode,
- }))
- );
- row.carriers.push(
- ...row.originalCarrierList.map((v) => ({
- value: v.carrierId,
- label: v.carrierCode,
- }))
- );
- row.carrierIds = row.originalCarrierList.map((info) => {
- return info.carrierId;
- });
- } else {
- row.newCarriers = null;
- }
- }
- if (editStatus.value && form.value.id) {
- row.carriers = [];
- row.newCarriers.map((v) => ({ id: v.value, code: v.label }));
- console.log(row.newCarriers);
- row.carriers = row.newCarriers.map((v) => ({ value: v.id, label: v.code }));
- row.carrierIds = row.newCarriers.map((info) => {
- return info.id;
- });
- console.log(row);
- }
- row.editStatus = true;
- }
- function handleCarrierChange(arg, item) {
- totalCarriersNum.value = 0;
- item.newCarriers = item.carriers
- .filter((v) => arg.includes(v.value))
- .map((v) => ({ id: v.value, code: v.label }));
- console.log(item.newCarriers);
- item.carrierNum = item.newCarriers.length;
- for (let i = 0; i < form.value.details.length; i++) {
- if (form.value.packagingMethod == 1) {
- form.value.details[i].carrierNum = form.value.details[i].newCarriers
- ? form.value.details[i].newCarriers.length
- : 0;
- } else {
- //原厂蓝箱
- form.value.details[i].carrierNum = form.value.details[i].newCarriers
- ? form.value.details[i].newCarriers.length
- : form.value.details[i].originalCarrier.split(",").length;
- }
- console.log(form.value.details);
- totalCarriersNum.value += form.value.details[i].carrierNum;
- }
- if (form.value.deliveryMethod == 1) {
- form.value.freightAmount = form.value.freightPrice * totalCarriersNum.value;
- } else {
- form.value.freightAmount = 0.0;
- }
- }
- /** 使用新方式 */
- // const handleShowDialogOutsourceCarriers = (row) => {
- // // 确保 form.details 存在且不是 undefined
- // let allNewCarriers;
- // if (form.value && form.value.details && Array.isArray(form.value.details)) {
- // allNewCarriers = form.value.details
- // .flatMap((detail) =>
- // detail.newCarriers ? detail.newCarriers.filter((item) => item) : []
- // )
- // .filter(Boolean);
- // // 现在 allNewCarriers 包含了所有非空的 newCarriers 数组的元素
- // }
- // // form.value.details.newCarriers
- // // const allNewCarriers = form.details.flatMap((detail) => detail.newCarriers);
- // console.log("allNewCarriers", allNewCarriers);
- // proxy.$refs.dialogCarrierRef.open(row.lotId, from.value.deliveryMethod);
- // };
- // 箱子选择带回
- const handleMultipleSelectedOutsourceCarriers = (selection, lotId) => {
- const carrierNames = selection.map((item) => item.code);
- let carrierNamesString = carrierNames.join(",");
- form.value.details.map((item) => {
- if (item.lotId == lotId) {
- item.newCarrier = carrierNamesString;
- item.newCarrierCount = selection.length;
- item.newCarriers = selection;
- }
- });
- };
- /***************************** 外协工序对话框相关 *****************************/
- // 打开外协工序选择对话框
- const handleShowDialogProcesses = (row) => {
- currentDetail.value = row;
- proxy.$refs.dialogProcessesRef.open(row);
- };
- // 工序选择带回
- const handleMultipleSelectedProcesses = (selection) => {
- let currentOriginal = details.value.filter(
- (item) => (item.id = currentDetail.value.id)
- );
- let flag = true;
- if (
- currentDetail.value.returnReceiptDetailList &&
- currentDetail.value.returnReceiptDetailList.length > 0
- ) {
- selection.forEach((item) => {
- if (
- currentOriginal[0].processes.findIndex(
- (info) => info.processStepNumber == item.processStepNumber
- ) < 0
- ) {
- flag = false;
- }
- });
- }
- if (flag) {
- const processNames = selection
- .sort((a, b) => a.processStepNumber - b.processStepNumber)
- .map((item) => item.processAlias);
- // 使用join方法将数组转换为以逗号分隔的字符串
- let commaSeparatedString = processNames.join(",");
- currentDetail.value.processes = [];
- currentDetail.value.processNames = commaSeparatedString;
- selection.forEach((item) => {
- const newProcess = {
- processId: item.processId,
- processCode: item.processCode,
- processAlias: item.processAlias,
- processStepNumber: item.processStepNumber,
- technologicalProcessDetailId: item.id,
- };
- currentDetail.value.processes.push(newProcess);
- });
- } else {
- proxy.$modal.msgError("外协厂/德迈仕已收回,不可添加新工序");
- }
- };
- /** 暴露给父组件的方法 */
- defineExpose({
- open,
- });
- </script>
|