duhe
2025-11-26 bd7f9985d283a7950c2a29f4d8a2d027f8b45b9d
src/views/warehouse/shipment/Kf_StockOutRequestBill.vue
@@ -1 +1,913 @@
<template></template>
<template>
    <div v-loading="formLoading" v-if="formShow">
        <div style=" margin-bottom: 10px; border-bottom: 1px solid #f6f6f6;">
            <el-button type="primary" @click="submitForm" :disabled="subDisabled">保 存</el-button>
            <el-button type="primary" @click="close">退 出</el-button>
            <!-- <el-button @click="cancel">取 消</el-button> -->
        </div>
        <div style="margin: 10px; font-size: 28px; font-weight: bold; text-align: center;">出库申请单</div>
        <el-form ref="form" :model="form" :rules="rules" label-width="80px">
            <el-tabs v-model="activeName" type="card">
                <el-tab-pane label="基本信息" name="first">
                    <el-row>
                        <el-col :span="6">
                            <el-form-item label="单据编号" prop="HBillNo">
                                <el-input v-model="form.HBillNo" placeholder="请输入单据编号" disabled />
                            </el-form-item>
                        </el-col>
                        <el-col :span="6">
                            <el-form-item label="日期" prop="HDate">
                                <el-date-picker v-model="form.HDate" type="date" placeholder="选择日期"
                                    value-format="yyyy-MM-ddT">
                                </el-date-picker>
                            </el-form-item>
                        </el-col>
                        <el-col :span="6">
                            <el-form-item label="辅助字段" prop="HInnerBillNo">
                                <el-input v-model="form.HInnerBillNo" placeholder="请输入辅助字段" />
                            </el-form-item>
                        </el-col>
                        <el-col :span="6">
                            <el-form-item label="业务员" prop="HEmpName">
                                <el-input v-model="form.HEmpName" placeholder="请输入业务员" disabled>
                                    <el-button slot="append" icon="el-icon-search"
                                        @click="openDataDialog(4, zhiyuanType = 'yewuyuan')"></el-button>
                                </el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="6">
                            <el-form-item label="保管员" prop="HKeeperName">
                                <el-input v-model="form.HKeeperName" placeholder="请输入保管员" disabled>
                                    <el-button slot="append" icon="el-icon-search"
                                        @click="openDataDialog(4, zhiyuanType = 'baoguanyuan')"></el-button>
                                </el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="6">
                            <el-form-item label="主管" prop="HMangerName">
                                <el-input v-model="form.HMangerName" placeholder="请输入主管" disabled>
                                    <el-button slot="append" icon="el-icon-search"
                                        @click="openDataDialog(4, zhiyuanType = 'zhuguan')"></el-button>
                                </el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="6">
                            <el-form-item label="验收" prop="HSecManagerName">
                                <el-input v-model="form.HSecManagerName" placeholder="请输入验收" disabled>
                                    <el-button slot="append" icon="el-icon-search"
                                        @click="openDataDialog(4, zhiyuanType = 'yanshou')"></el-button>
                                </el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="6">
                            <el-form-item label="仓库" prop="HWHName">
                                <el-input v-model="form.HWHName" placeholder="请输入仓库" disabled>
                                    <el-button slot="append" icon="el-icon-search"
                                        @click="openDataDialog(2, ckType = 'form')"></el-button>
                                </el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="6">
                            <el-form-item label="部门" prop="HDeptName">
                                <el-input v-model="form.HDeptName" placeholder="请输入部门" disabled>
                                    <el-button slot="append" icon="el-icon-search"
                                        @click="openDataDialog(1)"></el-button>
                                </el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="6">
                            <el-form-item label="往来单位" prop="HSupName">
                                <el-input v-model="form.HSupName" placeholder="请输入往来单位" disabled>
                                    <el-button slot="append" icon="el-icon-search"
                                        @click="openDataDialog(6)"></el-button>
                                </el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="备注" prop="HRemark">
                                <el-input v-model="form.HRemark" placeholder="请输入备注" />
                            </el-form-item>
                        </el-col>
                    </el-row>
                </el-tab-pane>
                <el-tab-pane label="制单信息" name="third">
                    <el-row>
                        <el-col :span="6">
                            <el-form-item label="制单人" prop="HMaker">
                                <el-input v-model="form.HMaker" placeholder="请输入制单人" disabled />
                            </el-form-item>
                        </el-col>
                        <el-col :span="6">
                            <el-form-item label="修改人" prop="HUpDater">
                                <el-input v-model="form.HUpDater" placeholder="请输入修改人" disabled />
                            </el-form-item>
                        </el-col>
                        <el-col :span="6">
                            <el-form-item label="审核人" prop="HChecker">
                                <el-input v-model="form.HChecker" placeholder="请输入审核人" disabled />
                            </el-form-item>
                        </el-col>
                        <el-col :span="6">
                            <el-form-item label="关闭人" prop="HCloseMan">
                                <el-input v-model="form.HCloseMan" placeholder="请输入关闭人" disabled />
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="6">
                            <el-form-item label="制单日期" prop="HMakeDate">
                                <el-date-picker v-model="form.HMakeDate" type="date" placeholder="选择制单日期" disabled>
                                </el-date-picker>
                            </el-form-item>
                        </el-col>
                        <el-col :span="6">
                            <el-form-item label="修改日期" prop="HUpDateDate">
                                <el-date-picker v-model="form.HUpDateDate" type="date" placeholder="选择审核日期" disabled>
                                </el-date-picker>
                            </el-form-item>
                        </el-col>
                        <el-col :span="6">
                            <el-form-item label="审核日期" prop="HCheckDate">
                                <el-date-picker v-model="form.HCheckDate" type="date" placeholder="选择审核日期" disabled>
                                </el-date-picker>
                            </el-form-item>
                        </el-col>
                        <el-col :span="6">
                            <el-form-item label="关闭日期" prop="HCloseDate">
                                <el-date-picker v-model="form.HCloseDate" type="date" placeholder="选择关闭日期" disabled>
                                </el-date-picker>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="6">
                            <el-form-item label="作废人" prop="HDeleteMan">
                                <el-input v-model="form.HDeleteMan" placeholder="请输入作废人" disabled />
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="6">
                            <el-form-item label="作废日期" prop="HDeleteDate">
                                <el-date-picker v-model="form.HDeleteDate" type="date" placeholder="选择作废日期" disabled>
                                </el-date-picker>
                            </el-form-item>
                        </el-col>
                    </el-row>
                </el-tab-pane>
            </el-tabs>
            <div style="margin-bottom: 10px;">
                <el-button type="success" plain icon="el-icon-plus" @click="handleAddSysZb()"
                    size="mini">增加一行</el-button>
                <el-button type="success" plain icon="el-icon-plus" @click="handleAddSysZb(zbIndex, 1)"
                    size="mini">插入一行</el-button>
                <el-button type="success" plain icon="el-icon-plus" @click="handleCopyZbRow"
                    size="mini">复制一行</el-button>
                <el-button type="success" plain icon="el-icon-arrow-up" @click="handleMoveRowUp(zbSelForm)"
                    size="mini">上移</el-button>
                <el-button type="success" plain icon="el-icon-arrow-down" @click="handleMoveRowDown(zbSelForm)"
                    size="mini">下移</el-button>
            </div>
            <el-table :data="editData" style="width: 100%" height="300" width="100%" ref="zbTable"
                @selection-change="handleTableZbEdit" :row-class-name="rowSysZbIndex" show-summary border>
                <el-table-column type="selection" width="55" align="center" />
                <el-table-column align="center" label="序号" type="index" width="80" />
                <el-table-column align="center" label="物料代码" width="120">
                    <template slot-scope="scope">
                        <el-input v-model="scope.row.物料代码" placeholder="请输入物料代码"
                            @keyup.native.f7="openDataDialog(3, scope.row)"
                            @dblclick.native="openDataDialog(3, scope.row)" />
                    </template>
                </el-table-column>
                <el-table-column align="center" label="物料名称" width="120">
                    <template slot-scope="scope">
                        <span>{{ scope.row.物料名称 }}</span>
                    </template>
                </el-table-column>
                <el-table-column align="center" label="规格型号" width="120">
                    <template slot-scope="scope">
                        <span>{{ scope.row.规格型号 }}</span>
                    </template>
                </el-table-column>
                <el-table-column align="center" label="计量单位" width="120">
                    <template slot-scope="scope">
                        <el-input v-model="scope.row.计量单位" placeholder="请输入计量单位"
                            @keyup.native.f7="openDataDialog('单位页面还没有', scope.row, dwType = 'jldw')"
                            @dblclick.native="openDataDialog('单位页面还没有', scope.row, dwType = 'jldw')" />
                    </template>
                </el-table-column>
                <el-table-column align="center" label="仓库" width="120">
                    <template slot-scope="scope">
                        <el-input v-model="scope.row.仓库" placeholder="请输入仓库"
                            @keyup.native.f7="openDataDialog(2, scope.row, ckType = 'zb')"
                            @dblclick.native="openDataDialog(2, scope.row, ckType = 'zb')" />
                    </template>
                </el-table-column>
                <el-table-column align="center" label="仓位" width="120">
                    <template slot-scope="scope">
                        <el-input v-model="scope.row.仓位" placeholder="请输入仓位"
                            @keyup.native.f7="openDataDialog(9, scope.row)"
                            @dblclick.native="openDataDialog(9, scope.row)" />
                    </template>
                </el-table-column>
                <el-table-column align="center" label="库存辅单位" width="120">
                    <template slot-scope="scope">
                        <el-input v-model="scope.row.库存辅单位" placeholder="请输入库存辅单位"
                            @keyup.native.f7="openDataDialog('单位页面还没有', scope.row, dwType = 'kcfdw')"
                            @dblclick.native="openDataDialog('单位页面还没有', scope.row, dwType = 'kcfdw')" />
                    </template>
                </el-table-column>
                <el-table-column align="center" label="基本单位" width="120">
                    <template slot-scope="scope">
                        <el-input v-model="scope.row.基本单位" placeholder="请输入基本单位"
                            @keyup.native.f7="openDataDialog('单位页面还没有', scope.row, dwType = 'jbdw')"
                            @dblclick.native="openDataDialog('单位页面还没有', scope.row, dwType = 'jbdw')" />
                    </template>
                </el-table-column>
                <el-table-column align="center" label="辅单位" width="120">
                    <template slot-scope="scope">
                        <el-input v-model="scope.row.辅单位" placeholder="请输入辅单位"
                            @keyup.native.f7="openDataDialog('单位页面还没有', scope.row, dwType = 'fdw')"
                            @dblclick.native="openDataDialog('单位页面还没有', scope.row, dwType = 'fdw')" />
                    </template>
                </el-table-column>
                <el-table-column align="center" label="应收数量" width="120">
                    <template slot-scope="scope">
                        <el-input-number v-model="scope.row.HQtyMust" :min="1" style="width: 90px;"
                            controls-position="right"></el-input-number>
                    </template>
                </el-table-column>
                <el-table-column align="center" label="实收数量" width="120">
                    <template slot-scope="scope">
                        <el-input-number v-model="scope.row.HQty" :min="1" style="width: 90px;"
                            controls-position="right"></el-input-number>
                    </template>
                </el-table-column>
                <el-table-column align="center" label="单价" width="120">
                    <template slot-scope="scope">
                        <el-input-number v-model="scope.row.HPrice" :min="0" style="width: 90px;"
                            controls-position="right"></el-input-number>
                    </template>
                </el-table-column>
                <el-table-column align="center" label="金额" width="120">
                    <template slot-scope="scope">
                        <span>{{ scope.row.HMoney }}</span>
                    </template>
                </el-table-column>
                <el-table-column align="center" label="操作" width="55" fixed="right">
                    <template slot-scope="scope">
                        <el-button type="danger" icon="el-icon-delete" size="mini" circle
                            @click="handleDeleteSysZb(scope.row)"></el-button>
                    </template>
                </el-table-column>
            </el-table>
        </el-form>
        <!-- 部门弹窗 -->
        <el-dialog :title="dialogTitle" :visible.sync="openData" width="1280px" append-to-body>
            <Dept @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="deptShow" />
            <Warehouse @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="warehouseShow" />
            <Material @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="materialShow" />
            <GyEmployee @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="gyEmployeeShow" />
            <GySupplier @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="gySupplierShow" />
            <GyStockPlace @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="gyStockPlaceShow" />
            <div slot="footer" class="dialog-footer">
                <el-button type="primary" @click="deptClickSub">确 定</el-button>
                <el-button @click="deptClose">取 消</el-button>
            </div>
        </el-dialog>
        <el-dialog title="隐藏列设置" :visible.sync="openRowHide" width="816px" append-to-body>
            <RowSettings :colName="btResList" :HModName="HModName" @rowEditClose="rowSetClose" v-if="rowHideShow" />
        </el-dialog>
    </div>
</template>
<script>
import axios from 'axios'
import RowSettings from '@/views/component/rowSettings'
import Dept from '@/views/basic/gy/gyDepartment.vue'
import Warehouse from '@/views/basic/gyWarehouse/gyWarehouse.vue'
import Material from '@/views/gyMaterial/GyMaterial.vue'
import GyEmployee from '@/views/basic/gyEmployee/gyEmployee.vue'
import GySupplier from '@/views/basic/gy/gySupplier.vue'
import GyStockPlace from '@/views/basic/gyStockPlace/gyStockPlace.vue'
import moment from 'moment';
export default {
    name: 'Kf_StockOutRequestBill',
    components: { Dept, Warehouse, Material, RowSettings, GyEmployee, GySupplier, GyStockPlace },
    props: {
        OperationType: { type: Number, },
        linterid: { type: Number, },
        HSouceBillType: { type: String, },
        propsData: { type: String, },
        copyType: { type: Number, },
    },
    data() {
        return {
            HModName: "Kf_StockOutRequestBill",
            allVal: undefined,
            zhiyuanType: '',
            ckType: '',
            formShow: false,
            temp: undefined,
            formLoading: true,
            zzSelDis: false,
            rowHideShow: false,
            openRowHide: false,
            hPriceTypeList: ['成本价', '结算价'],
            addBtnShow: false,
            zbIndex: null,
            zbSelForm: {},//子表选中数据
            dialogTypeNum: null,//部门弹窗1,仓库弹窗2
            deptShow: false,//部门数据组件
            warehouseShow: false,//仓库数据组件
            materialShow: false,//物料数据组件
            gyEmployeeShow: false,//销售员数据组件
            gySupplierShow: false,
            gyStockPlaceShow: false,
            deptform: {},//弹窗选中数据
            openData: false,//数据弹窗
            dialogTitle: '',
            organizationList: [],//组织列表
            subDisabled: false,//编辑页面保存按钮是否禁用(true禁用,false可用)
            // OperationType: this.$route.query.OperationType,//保存类型(新增1修改3)
            HInterID: null,
            baseURL: process.env.VUE_APP_BASE_API,
            checkedSysZb: [],
            editData: [],//销售出库单子表
            editBtData: [],//子表表头
            activeName: 'first',
            // 弹出层标题
            title: "",
            // 是否显示弹出层
            open: false,
            // 日期范围
            dateRange: [],
            // 查询参数
            queryParams: {
                HBillNo: '',
                HInitTimeCycle: 29,
                HProjectNumber: '',
                HCusID: null,
                HMaterNumber: '',
                HMaterName: '',
                ColName1: '',
                ColName2: '',
                ColName: '',
                Comparator1: '',
                Comparator2: '',
                Comparator: '',
                ColContent1: '',
                ColContent2: '',
                ColContent: '',
            },
            // 显示搜索条件
            showSearch: true,
            // 选中数组
            ids: [],
            // 非单个禁用
            single: true,
            // 非多个禁用
            multiple: true,
            // 遮罩层
            loading: true,
            btResList: [],
            // 表单参数
            form: {},
            // 表单校验
            rules: {
                HDate: [
                    { required: true, message: "日期不能为空", trigger: "blur" }
                ],
                HExRate: [
                    { required: true, message: "汇率不能为空", trigger: "blur" }
                ]
            }
        };
    },
    created() {
        this.fetchData()
        this.getdata()
    },
    methods: {
        fetchData() {
            axios.get(this.baseURL + "/Web/GetOrganizations", {
            }).then(response => {
                if (response.data.count == 1) {
                    this.organizationList = response.data.data;//组织列表
                }
            }).catch(error => {
                this.$modal.msgError("接口请求失败!");
            });
        },
        getdata() {
            this.formShow = false
            this.formLoading = true
            if ((this.OperationType == 1 && this.copyType != 1) || (!this.OperationType && !this.copyType)) {
                this.handleAdd()
            } else if (this.OperationType == 3 || this.copyType == 1) {
                this.handleUpdate()
            }
        },
        // 获取参数_传递的JSON格式参数
        getUrlVars_JSON() {
            var datajson;
            var str = this.propsData; //获取链接中传递的参数
            var arr = str.substring(str.lastIndexOf("=") + 1);
            datajson = JSON.parse(decodeURI(arr));
            return datajson;
        },
        //根据主内码与子内码获取源单销售订单数据
        getPushSourceBillInit(HSourceInterID, HSourceEntryID) {
            axios.get(this.baseURL + '/Xs_SeOrderBill/loadXs_SeOrderBill_Push', {
                params: {
                    "HInterID": HSourceInterID
                    , "HSubID": HSourceEntryID
                },
            }).then(response => {
                let result = response.data
                if (result.code == 1) { // 说明验证成功了,
                    this.temp = result.data[0];
                } else {
                    this.temp = result.data;
                }
            }).catch(error => {
                this.$modal.msgError("接口请求失败!");
            });
        },
        handleRowHide() {
            this.rowHideShow = true
            this.openRowHide = true
        },
        rowSetClose(val) {
            this.rowHideShow = false
            this.openRowHide = val
        },
        organizationChange(val) {
            // let options=undefined
            //  this.form=this.organizationList.find(option => option.ID === val)?.Name || '';
        },
        //部门弹窗赋值
        dbEmitData(deptRow, num) {
            // num=1部门 num=2出库仓库
            if (deptRow.HItemID) {
                if (num == 1) {
                    this.form.HDeptName = deptRow.部门名称
                    this.form.HDeptID = deptRow.HItemID
                    this.deptShow = false
                    this.openData = false
                } else if (num == 2) {
                    if (this.ckType == 'form') {
                        this.form.HWHID = deptRow.HItemID;
                        this.form.HWHName = deptRow.仓库名称;
                    } else if (this.ckType == 'zb') {
                        this.editData[this.zbIndex].HWHID = deptRow.HItemID;
                        this.editData[this.zbIndex].仓库 = deptRow.仓库名称;
                    }
                    this.warehouseShow = false
                    this.openData = false
                } else if (num == 3) {
                    this.editData[this.zbIndex].HMaterID = deptRow.HItemID;
                    this.editData[this.zbIndex].物料代码 = deptRow.物料代码;
                    this.editData[this.zbIndex].物料名称 = deptRow.物料名称;
                    this.editData[this.zbIndex].HUnitID = deptRow.HUnitID;
                    this.editData[this.zbIndex].规格型号 = deptRow.规格型号
                    this.editData[this.zbIndex].计量单位 = deptRow.计量单位名称
                    this.editData[this.zbIndex].HTaxPrice = deptRow.含税成本价
                    this.editData[this.zbIndex].HTaxRate = deptRow.默认税率
                    this.materialShow = false
                    this.openData = false
                } else if (num == 4) {
                    if (this.zhiyuanType == 'yewuyuan') {
                        this.form.HEmpName = deptRow.职员名称
                        this.form.HEmpID = deptRow.HItemID
                    } else if (this.zhiyuanType == 'baoguanyuan') {
                        this.form.HKeeperName = deptRow.职员名称
                        this.form.HKeeperID = deptRow.HItemID
                    } else if (this.zhiyuanType == 'zhuguan') {
                        this.form.HMangerName = deptRow.职员名称
                        this.form.HMangerID = deptRow.HItemID
                    } else if (this.zhiyuanType == 'yanshou') {
                        this.form.HSecManagerName = deptRow.职员名称
                        this.form.HSecManagerID = deptRow.HItemID
                    }
                    this.gyEmployeeShow = false
                    this.openData = false
                } else if (num == 6) {
                    this.form.HSupName = deptRow.供应商名称
                    this.form.HSupID = deptRow.HItemID
                    this.gySupplierShow = false
                    this.openData = false
                } else if (num == 9) {
                    this.editData[this.zbIndex].HSPID = deptRow.HMainID;
                    this.editData[this.zbIndex].仓位 = deptRow.仓位名称;
                    this.gyStockPlaceShow = false
                    this.openData = false
                }
            } else {
                this.$modal.msgError("请选择单条数据!");
            }
        },
        emitData(deptRow, num) {
            this.dialogTypeNum = num
            this.deptform = deptRow
        },
        deptClickSub() {
            this.dbEmitData(this.deptform, this.dialogTypeNum)
            this.deptform = {}
        },
        deptClose() {
            this.deptform = {}
            this.openData = false
        },
        //销售出库单新增编辑表单初始化
        reset() {
            this.form = {
                HBillNo:'',
                HDate: moment(new Date()).format('YYYY-MM-DD'),
                HSSDate:moment(new Date()).format('YYYY-MM-DD'),
                HAddress:'',
                HDeptName:'',
                HDeptID:0,
                HSupID:0,
                HSupName:'',
                HEmpID:0,
                HEmpName:'',
                HCurID:0,
                HCurName:'',
                HExRate:'',
                HManagerName:'',
                HManagerID:0,
                HPSStyleID:0,
                HPSStyleName:'',
                HSSID:0,
                HSSName:'',
                HLinkMan:'',
                HLinkPhone:'',
                HInnerBillNo:'',
                HRemark:'',
                HMaker:sessionStorage["HSupName"],
                HChecker:'',
                HCloseMan:'',
                HMakeDate:'',
                HCheckDate:'',
                HCloseDate:'',
                HUpDateDate:'',
                HDeleteDate:'',
            }
            this.editData = []
            this.editBtData = []
            this.ids = []
            this.subDisabled = false
            this.addBtnShow = false
            // this.$refs.tableData.clearSelection()
            this.activeName = 'first'
            this.resetForm("form");
        },
        //退出
        close() {
            this.reset()
            if (!this.OperationType && !this.copyType) {
                const obj = { fullPath: this.$route.path, path: this.$route.path, name: this.$route.name, };
                this.$tab.closePage(obj).then(res => {
                    const latestView = res.visitedViews.slice(-1)[0]
                    if (latestView) {
                        this.$router.push(latestView.fullPath)
                    } else {
                        if (obj.name === 'Dashboard') {
                            this.$router.replace({ path: '/redirect' + obj.fullPath })
                        } else {
                            this.$router.push('/')
                        }
                    }
                });
            } else {
                this.formShow = false
                this.$emit('editClose', false)
            }
        },
        //根据用户获取对应职员、部门、销售主管
        getCzyglByUser() {
            axios.get(this.baseURL + '/Xs_SeOrderBill/getCzyglByUser', {
                params: { "CurUserName": sessionStorage["HUserName"] }
            }).then(response => {
                let dataForm = response.data.data[0]
                this.form.HDeptID = dataForm.HDeptID
                this.form.HDeptName = dataForm.HDeptName
                this.form.HEmpID = dataForm.HEmpID
                this.form.HEmpName = dataForm.HEmpName
                this.form.HManagerID = dataForm.HManagerID
                this.form.HManagerName = dataForm.HManagerName
            }).catch(error => {
                this.$modal.msgError("接口请求失败!");
            });
        },
        /** 新增按钮操作 */
        handleAdd() {
            this.reset()
            //新增获取单据号
            this.getHBillNo()
            this.form.HDate = moment(new Date()).format('YYYY-MM-DDTHH:mm:ss')
            if (this.OperationType == 1) {
                this.handleAddSysZb()
            }
            this.$nextTick(() => {
                this.formShow = true
                this.formLoading = false
            })
        },
        getHBillNo() {
            axios.get(this.baseURL + "/Web/GetMAXNum", {
                params: {
                    HBillType: '1242'
                }
            }).then(response => {
                this.form.HMaker = sessionStorage["HUserName"]
                this.form.HBillNo = response.data.data[0].HBillNo
                this.form.HInterID = response.data.data[0].HInterID
                // this.copyType = 0
                // this.getCzyglByUser()
            }).catch(error => {
                this.$modal.msgError("接口请求失败!");
            });
        },
        /** 修改按钮操作 */
        handleUpdate() {
            this.reset()
            let rowHmainid = this.linterid
            axios.get(this.baseURL + "/Kf_StockOutRequestBill/cx", {
                params: { 'HInterID': rowHmainid }
            }).then(response => {
                if (response.data.count == 1) {
                    var result = response.data
                    var data = response.data.data[0]
                    this.allVal = data
                    this.form.BillType = data.HSourceBillType
                    if (this.copyType == 1) {
                        this.getHBillNo()
                        let date = new Date()
                        this.form.HDate = moment(date).format('YYYY-MM-DD')
                    } else {
                        this.form.HBillNo = data.单据号
                        // this.form.HInterID = data.HInterID
                        this.form.HDate = data.日期
                        this.form.HMaker = data.制单人
                        this.form.HUpDater = data.修改人
                        this.form.HChecker = data.审核人
                        this.form.HMakeDate = data.制单日期
                        this.form.HUpDateDate = data.修改日期
                        this.form.HCheckDate = data.审核日期
                        this.form.HCloseMan = data.关闭人
                        this.form.HDeleteMan = data.作废人
                        this.form.HCloseDate = data.关闭日期
                        this.form.HDeleteDate = data.作废日期
                    }
                    this.form.HAddress = data.交货地点
                    this.form.HDeptName = data.部门
                    this.form.HDeptID = data.HDeptID
                    this.form.HSupID = data.HSupID
                    this.form.HSupName = data.供应商
                    this.form.HEmpID = data.HEmpID
                    this.form.HEmpName = data.业务员
                    this.form.HCurID = data.HCurID
                    this.form.HCurName = data.币别
                    this.form.HExRate = data.汇率
                    this.form.HManagerName = data.主管
                    this.form.HManagerID = data.HManagerID
                    this.form.HPSStyleID = data.HPSStyleID
                    this.form.HPSStyleName = data.采购方式
                    this.form.HSSID = data.HSSID
                    this.form.HSSName = data.结算方式
                    this.form.HLinkMan = data.联系人
                    this.form.HLinkPhone = data.联系电话
                    this.form.HInnerBillNo = data.辅助字段
                    this.form.HRemark = data.表头备注
                    for (var i = 0; i < result.data.length; i++) {
                        this.editData.push(
                            {
                                "HMaterID": result.data[i].HMaterID,
                                "物料代码": result.data[i].物料代码,
                                "物料名称": result.data[i].物料名称,
                                "规格型号": result.data[i].规格型号,
                                "HUnitID": result.data[i].HUnitID,
                                "计量单位": result.data[i].计量单位,
                                "HQty": result.data[i].数量,
                                "HRemark": result.data[i].表体备注,
                                "HPrice": result.data[i].单价,
                                "HMoney": result.data[i].金额,
                                "HTaxRate": result.data[i].税率,
                                "HTaxMoney": result.data[i].金额 * result.data[i].税率,
                                "HlineTotal": result.data[i].金额 + result.data[i].税额,
                                "HlineTotalBB": (result.data[i].金额 + result.data[i].税额) * result.data[i].汇率, "HTaxPrice": result.data[i].含税单价,
                                "HDiscountRate": result.data[i].折扣率,
                                "HRelTaxPrice": data.实际含税单价,
                                "HDate": moment(result.data[i].交货日期).format('YYYY-MM-DD')
                            }
                        );
                    }
                    this.formShow = true
                    this.formLoading = false
                }
            }).catch(error => {
                this.$modal.msgError("接口请求失败!");
            });
        },
        /** 子表明细序号 */
        rowSysZbIndex({ row, rowIndex }) {
            row.index = rowIndex + 1;
        },
        /** 编辑页子表添加按钮操作 */
        handleAddSysZb(index, num) {
            if (num == 1 && !index) {
                this.$modal.msgError("请选择一行数据编辑!");
            } else {
                let obj = {
                    "HMaterID": 0, "物料代码": "", "物料名称": "", "规格型号": "", "HUnitID": 1, "计量单位": "", "HWHID": "0", "仓库": "",
                    "HSPID": "0", "仓位": "", "HSecUnitID": "1", "库存辅单位": "", "HBASEUNITID": "1", "基本单位": "",
                    "HEXTAUXUNITID": "1", "辅单位": "", "HQtyMust": "0", "HQty": "0", "HPrice": "0", "HMoney": "0", "HRemark": ""
                }
                if (index) {
                    this.editData.splice(index, 0, obj);
                    this.$set(this.editData, index, obj)
                } else {
                    this.editData.push(obj);
                }
            }
        },
        handleCopyZbRow() {
            if (!this.zbIndex) {
                this.$modal.msgError("请选择一行数据")
            } else {
                let copyRow = JSON.parse(JSON.stringify(this.zbSelForm))
                this.editData.push(copyRow);
            }
        },
        handleMoveRowUp(zbSelForm) {
            if (!this.zbIndex) {
                this.$modal.msgError("请选择一行数据")
            } else {
                if (zbSelForm.index == 1) {
                    this.$modal.msgError("第一行数据无法上移");
                } else { // 确保不是第一行
                    let num = zbSelForm.index - 1
                    const record = this.editData.splice(num, 1)[0];
                    this.editData.splice(num - 1, 0, record);
                }
            }
        },
        handleMoveRowDown(zbSelForm) {
            if (!this.zbIndex) {
                this.$modal.msgError("请选择一行数据")
            } else {
                if (zbSelForm.index == this.editData.length) {
                    this.$modal.msgError("最后一行数据无法下移");
                } else { // 确保不是第一行
                    let num = zbSelForm.index - 1
                    const record = this.editData.splice(num, 1)[0];
                    this.editData.splice(num + 1, 0, record);
                }
            }
        },
        /** 编辑页子表删除按钮操作 */
        handleDeleteSysZb(row) {
            this.checkedSysZb = []
            this.checkedSysZb.push(row.index)
            if (this.checkedSysZb.length == 0) {
                this.$modal.msgError("请先选择要删除的商品订单明细数据");
            } else {
                const editData = this.editData;
                const checkedSysZb = this.checkedSysZb;
                this.editData = editData.filter(function (item) {
                    return checkedSysZb.indexOf(item.index) == -1
                });
            }
        },
        /** 编辑页子表复选框选中数据 */
        handleTableZbEdit(selection) {
            this.checkedSysZb = selection.map(item => item.index)
            this.zbSelForm = selection[0]
            this.zbIndex = this.checkedSysZb[0]
            if (selection.length > 1) {
                const del_row = selection.shift()
                this.$refs.zbTable.toggleRowSelection(del_row, false) //设置这一行取消选中
            }
        },
        // 编辑提交保存
        submitForm() {
            this.$refs["form"].validate(valid => {
                if (valid) {
                    let fhck = false
                    this.editData.map((item, index) => {
                        if (!item.仓库) {
                            fhck = true
                            this.$modal.msgError("第" + (index + 1) + "行:仓库未选择!");
                        }
                    })
                    this.$nextTick(() => {
                        if (!fhck) {
                            var sMainStr = JSON.stringify(this.form);
                            var sSubStr = JSON.stringify(this.editData);
                            var sAllStr = JSON.stringify(this.allVal)
                            var sMainSub = sMainStr + ';' + sSubStr + ';' + this.OperationType + ";" + sessionStorage["HUserName"] + ';' + sAllStr;
                            axios({
                                method: 'post',
                                url: this.baseURL + "/Kf_StockOutRequestBill/StockOutRequestBillEdit",
                                data: {
                                    'sMainSub': sMainSub
                                },
                            }).then(response => {
                                if (response.data.count == 1) {
                                    this.subDisabled = true//设置保存按钮不可用
                                    this.$modal.msgSuccess(response.data.Message);
                                    this.close()
                                } else {
                                    this.$modal.msgError(response.data.Message);
                                }
                            }).catch(error => {
                                this.$modal.msgError("接口请求失败!");
                            });
                        }
                    })
                }
            });
        },
        // 反审核/审核数据
        set_CheckBill(num, form) {
            var InterID = form.hmainid || form.HInterID
            //逻辑审核方法
            axios.get(this.baseURL + "/Kf_SellOutBill/AuditKf_SellOutBill", {
                params: { "HInterID": InterID, "IsAudit": num, "CurUserName": sessionStorage["HUserName"] }
            }).then(response => {
                let result = response.data
                if (result.code == 1) {
                    this.$modal.msgSuccess('操作成功');
                }
                else {
                    this.$modal.msgError("错误:" + result.code + result.Message,);
                }
            }).catch(error => {
                this.$modal.msgError("接口请求失败!");
            });
        },
        showReset() {
            this.deptShow = false
            this.warehouseShow = false
            this.materialShow = false
            this.gyEmployeeShow = false
            this.gySupplierShow = false
            this.gyStockPlaceShow = false
        },
        //  打开数据列表弹窗
        openDataDialog(num, row) {
            //num1部门,2出库仓库,3物料,4销售员
            if (row) {
                this.zbIndex = row.index - 1
            }
            this.showReset()
            if (num == 1) {
                this.dialogTitle = '部门列表'
                this.deptShow = true
                this.openData = true
            } else if (num == 2) {
                this.dialogTitle = '出库仓库列表'
                this.warehouseShow = true
                this.openData = true
            } else if (num == 3) {
                this.dialogTitle = '物料列表'
                this.materialShow = true
                this.openData = true
            } else if (num == 4) {
                this.dialogTitle = '职员列表'
                this.gyEmployeeShow = true
                this.openData = true
            } else if (num == 6) {
                this.dialogTitle = '往来单位列表'
                this.gySupplierShow = true
                this.openData = true
            } else if (num == 9) {
                this.dialogTitle = '往来单位列表'
                this.gyStockPlaceShow = true
                this.openData = true
            }
        },
    }
};
</script>
<style>
.xsckdBox .el-date-editor.el-input {
    width: 100%;
}
</style>