yyb
2025-08-12 66a4579ac674f0f3958f2f365718c34e3bac49da
核磅录入
已修改6个文件
2172 ■■■■■ 文件已修改
common/http.api.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/sys/home/index.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/wareHouse/nuclearScale/createwriteoffform.vue 1333 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/wareHouse/nuclearScale/index.scss 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/wareHouse/nuclearScale/index.vue 796 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/wareHouse/nuclearScale/saveForm.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/http.api.js
@@ -554,6 +554,9 @@
            createMain: (params = {}) => vm.$u.post('/mes/weighingVerification/createMain', params),
            // 核磅单号
            getWeighingOrder: (params = {}) => vm.$u.get('/mes/weighingVerification/pageVerificationMain', params),
            // 核磅详情
            createDetail: (params = {}) => vm.$u.post('/mes/weighingVerification/createDetail', params),
        },
        // 取消领料
        cancelMaterialRequisition: {
pages/sys/home/index.vue
@@ -67,11 +67,11 @@
                        //     url: '/pages/wareHouse/inventory/index',
                        //     icon: 'seven'
                        // },
                        // {
                        //     name: '核磅录入',
                        //     url: '/pages/wareHouse/nuclearScale/index',
                        //     icon: 'eight'
                        // },
                        {
                            name: '核磅录入',
                            url: '/pages/wareHouse/nuclearScale/index',
                            icon: 'eight'
                        },
                        // {
                        //     name: '库存件盘点',
                        //     url: '/pages/wareHouse/InventoryCountStockItems/index',
pages/wareHouse/nuclearScale/createwriteoffform.vue
@@ -1,632 +1,805 @@
<template>
    <!-- 核磅录入 -->
    <div class="page">
        <view class="packing-registration-bg" />
        <u-navbar title="核磅录入" :background="background" :border-bottom="false" :title-bold="true" title-color="#000"
            back-icon-color="#000" />
        <u-form :model="form" ref="uForm" :label-width="210" labelAlign="left" :rules="rules" :error-type="['toast']"
            class="uForm">
            <u-form-item label="产品类型:" :border-bottom="false" prop="productType">
                <u-radio-group v-model="form.productType" @change="handleProductTypeChange">
                    <u-radio name="1">导体</u-radio>
                    <u-radio name="2">铜杆</u-radio>
                    <u-radio name="3">导体2.6</u-radio>
                </u-radio-group>
            </u-form-item>
            <u-form-item label="替换二维码:" :border-bottom="false" prop="replace">
                <u-radio-group v-model="form.replace">
                    <u-radio name="1">是</u-radio>
                    <u-radio name="0">否</u-radio>
                </u-radio-group>
            </u-form-item>
            <u-form-item label="车牌号:" :border-bottom="false" prop="licensePlate">
                <u-input v-model="form.licensePlate" type="select" placeholder="请输入车牌号" @click="lpn" />
            </u-form-item>
            <u-form-item label="客户名称1:" :border-bottom="false" prop="customerName1">
                <picker class="item-one item-two" style="width: 100%; text-align: right"
                    @change="selClientChange($event, selClientList, 'customerName1')" :value="selClientIndex1"
                    :range="selClientList" range-key="label">
                    <view>
                        <text :style="{
  <!-- 核磅录入 -->
  <div class="page">
    <view class="packing-registration-bg" />
    <u-navbar
      title="核磅录入"
      :background="background"
      :border-bottom="false"
      :title-bold="true"
      title-color="#000"
      back-icon-color="#000"
    />
    <u-form
      :model="form"
      ref="uForm"
      :label-width="235"
      labelAlign="left"
      :rules="rules"
      :error-type="['toast']"
      class="uForm"
    >
      <u-form-item
        label="产品类型:"
        :border-bottom="false"
        prop="productType"
        style="font-size: small"
      >
        <u-radio-group
          v-model="form.productType"
          @change="handleProductTypeChange"
          style="font-size: small"
        >
          <u-radio name="DT01">导体</u-radio>
          <u-radio name="TG01">铜杆</u-radio>
          <u-radio name="DT02">导体2.6</u-radio>
        </u-radio-group>
      </u-form-item>
      <u-form-item
        label="替换二维码:"
        :border-bottom="false"
        prop="replace"
        style="font-size: small"
      >
        <u-radio-group v-model="form.replace" style="font-size: small">
          <u-radio name="1">是</u-radio>
          <u-radio name="0">否</u-radio>
        </u-radio-group>
      </u-form-item>
      <u-form-item
        label="车牌号:"
        :border-bottom="false"
        prop="licensePlate"
        style="font-size: small"
      >
        <u-input
          v-model="form.licensePlate"
          type="select"
          placeholder="请输入车牌号"
          @click="lpn"
        />
      </u-form-item>
      <u-form-item
        label="客户名称1:"
        :border-bottom="false"
        prop="customerName1"
        style="font-size: small"
      >
        <picker
          class="item-one item-two"
          style="width: 100%; text-align: right"
          @change="selClientChange($event, selClientList, 'customerName1')"
          :value="selClientIndex1"
          :range="selClientList"
          range-key="label"
        >
          <view>
            <text
              :style="{
                color: selClientIndex1 == null ? '#a5abb4' : '#0c0c0c',
              }">{{
              }"
              >{{
                selClientIndex1 == null
                  ? "请选择"
                  : selClientList[selClientIndex1].label
              }}</text>
                    </view>
                </picker>
                <u-icon v-if="selClientIndex1 == null" name="arrow-right" color="#687792" size="28"></u-icon>
            </u-form-item>
            <u-form-item label="发货通知单号1:" :border-bottom="false" prop="shippingNoticeNo1">
                <u-input v-model="form.shippingNoticeNo1" placeholder="" disabled />
            </u-form-item>
            <u-form-item label="客户名称2:" :border-bottom="false" prop="customerName2">
                <picker class="item-one item-two" style="width: 100%; text-align: right"
                    @change="selClientChange($event, selClientList, 'customerName2')" :value="selClientIndex2"
                    :range="selClientList" range-key="label">
                    <view>
                        <text :style="{
              }}</text
            >
          </view>
        </picker>
        <u-icon
          v-if="selClientIndex1 == null"
          name="arrow-right"
          color="#687792"
          size="28"
        ></u-icon>
      </u-form-item>
      <u-form-item
        label="发货通知单号1:"
        :border-bottom="false"
        prop="shippingNoticeNo1"
        style="font-size: small"
        :label-width="245"
      >
        <u-input v-model="form.shippingNoticeNo1" placeholder="" disabled />
      </u-form-item>
      <u-form-item
        label="客户名称2:"
        :border-bottom="false"
        prop="customerName2"
        style="font-size: small"
      >
        <picker
          class="item-one item-two"
          style="width: 100%; text-align: right"
          @change="selClientChange($event, selClientList, 'customerName2')"
          :value="selClientIndex2"
          :range="selClientList"
          range-key="label"
        >
          <view>
            <text
              :style="{
                color: selClientIndex2 == null ? '#a5abb4' : '#0c0c0c',
              }">{{
              }"
              >{{
                selClientIndex2 == null
                  ? "请选择"
                  : selClientList[selClientIndex2].label
              }}</text>
                    </view>
                </picker>
                <u-icon v-if="selClientIndex2 == null" name="arrow-right" color="#687792" size="28"></u-icon>
            </u-form-item>
            <u-form-item label="发货通知单号2:" :border-bottom="false" prop="shippingNoticeNo2">
                <u-input v-model="form.shippingNoticeNo2" placeholder="" disabled />
            </u-form-item>
            <u-form-item label="生产车间:" :border-bottom="false" prop="workshop">
                <picker class="item-one item-two" style="width: 100%; text-align: right"
                    @change="workshopChange($event, workshopList)" :value="workshopIndex" :range="workshopList"
                    range-key="label" :disabled="!form.productType">
                    <view>
                        <text :style="{ color: workshopIndex == null ? '#a5abb4' : '#0c0c0c' }">{{
              }}</text
            >
          </view>
        </picker>
        <u-icon
          v-if="selClientIndex2 == null"
          name="arrow-right"
          color="#687792"
          size="28"
        ></u-icon>
      </u-form-item>
      <u-form-item
        label="发货通知单号2:"
        :border-bottom="false"
        prop="shippingNoticeNo2"
        style="font-size: small"
        :label-width="245"
      >
        <u-input v-model="form.shippingNoticeNo2" placeholder="" disabled />
      </u-form-item>
      <u-form-item
        label="生产车间:"
        :border-bottom="false"
        prop="workshop"
        style="font-size: small"
      >
        <picker
          class="item-one item-two"
          style="width: 100%; text-align: right"
          @change="workshopChange($event, workshopList)"
          :value="workshopIndex"
          :range="workshopList"
          range-key="label"
          :disabled="!form.productType"
        >
          <view>
            <text
              :style="{ color: workshopIndex == null ? '#a5abb4' : '#0c0c0c' }"
              >{{
                workshopIndex == null
                  ? "请选择"
                  : workshopList[workshopIndex].label
              }}</text>
                    </view>
                </picker>
                <u-icon v-if="workshopIndex == null" name="arrow-right" color="#687792" size="28"></u-icon>
            </u-form-item>
            <u-form-item label="司磅员:" :border-bottom="false" prop="weighingOperator">
                <picker class="item-one item-two" style="width: 100%; text-align: right"
                    @change="weighmanChange($event, weighmanList)" :value="weighmanIndex" :range="weighmanList"
                    range-key="label">
                    <view>
                        <text :style="{ color: weighmanIndex == null ? '#a5abb4' : '#0c0c0c' }">{{
              }}</text
            >
          </view>
        </picker>
        <u-icon
          v-if="workshopIndex == null"
          name="arrow-right"
          color="#687792"
          size="28"
        ></u-icon>
      </u-form-item>
      <u-form-item
        label="司磅员:"
        :border-bottom="false"
        prop="weighingOperator"
        style="font-size: small"
      >
        <picker
          class="item-one item-two"
          style="width: 100%; text-align: right"
          @change="weighmanChange($event, weighmanList)"
          :value="weighmanIndex"
          :range="weighmanList"
          range-key="label"
        >
          <view>
            <text
              :style="{ color: weighmanIndex == null ? '#a5abb4' : '#0c0c0c' }"
              >{{
                weighmanIndex == null
                  ? "请选择"
                  : weighmanList[weighmanIndex].label
              }}</text>
                    </view>
                </picker>
                <u-icon v-if="weighmanIndex == null" name="arrow-right" color="#687792" size="28"></u-icon>
            </u-form-item>
            <u-form-item label="叉车工:" :border-bottom="false" prop="forkliftOperator">
                <u-input v-model="form.forkliftOperator" type="select" placeholder="请选择"
                    @click="openForkliftDriverList" />
            </u-form-item>
        </u-form>
        <u-button type="primary" class="bottom-button1" @click="submit">创建</u-button>
              }}</text
            >
          </view>
        </picker>
        <u-icon
          v-if="weighmanIndex == null"
          name="arrow-right"
          color="#687792"
          size="28"
        ></u-icon>
      </u-form-item>
      <u-form-item
        label="叉车工:"
        :border-bottom="false"
        prop="forkliftOperator"
        style="font-size: small"
      >
        <u-input
          v-model="form.forkliftOperator"
          type="select"
          placeholder="请选择"
          @click="openForkliftDriverList"
        />
      </u-form-item>
    </u-form>
    <u-button type="primary" class="bottom-button1" @click="submit"
      >创建</u-button
    >
        <!--车牌号 -->
        <modalBg ref="modalBg" :confirm="confirm">
            <u-field v-model="form.licensePlate" label="车牌号:" placeholder="请输入" :border-bottom="false">
            </u-field>
        </modalBg>
        <!-- 叉车工 -->
        <u-modal v-model="showModal" title="" :show-cancel-button="true" :show-confirm-button="true"
            @confirm="confirmSelection" @cancel="cancel">
            <view class="popup-content">
                <view class="popup-header">
                    <checkbox-group @change="checkboxChange">
                        <label class="checkbox-item" v-for="(item, index) in checkboxList" :key="index">
                            <checkbox :value="item.value" :checked="item.checked" />
                            <text class="label">{{ item.label }}</text>
                        </label>
                    </checkbox-group>
                </view>
            </view>
        </u-modal>
    </div>
    <!--车牌号 -->
    <modalBg ref="modalBg" :confirm="confirm">
      <u-field
        v-model="form.licensePlate"
        label="车牌号:"
        placeholder="请输入"
        :border-bottom="false"
      >
      </u-field>
    </modalBg>
    <!-- 叉车工 -->
    <u-modal
      v-model="showModal"
      title=""
      :show-cancel-button="true"
      :show-confirm-button="true"
      @confirm="confirmSelection"
      @cancel="cancel"
    >
    <scroll-view scroll-y="true" style="height: 100%; transform: translateZ(0); -webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;"></scroll-view>
      <view class="popup-content">
        <view class="popup-header">
          <checkbox-group @change="checkboxChange">
            <label
              class="checkbox-item"
              v-for="(item, index) in checkboxList"
              :key="index"
            >
              <checkbox :value="item.value" :checked="item.checked" />
              <text class="label">{{ item.label }}</text>
            </label>
          </checkbox-group>
        </view>
      </view>
    <scroll-view/>
    </u-modal>
  </div>
</template>
<script>
    import modalBg from "@/components/modal/modal-bg.vue";
    import content_bg from "@/static/custom/packing/backBg.png";
    export default {
        components: {
            modalBg,
        },
        data() {
            return {
                checkboxList: [],
                background: {
                    backgroundImage: `url(${content_bg})`,
                    backgroundAttachment: "fixed",
                    backgroundSize: "100% auto",
                    backgroundRepeat: "no-repeat",
                },
                show: false,
                num: 1,
                form: {
                    replace: '0',
                    productType: '',
                    licensePlate: '',
                    customerName1: '',
                    shippingNoticeNo1: '',
                    customerName2: '',
                    shippingNoticeNo2: '',
                    workshop: '',
                    weighingOperator: '',
                    forkliftOperator: '',
                },
                rules: {
                    productType: [{
                        required: true,
                        message: "请选择产品类型",
                        trigger: ["change"],
                    }, ],
                    replace: [{
                        required: true,
                        message: "请选择是否替换二维码",
                        trigger: ["change", "blur"],
                    }, ],
                    licensePlate: [{
                        required: true,
                        message: "请输入车牌号",
                        trigger: ["change", "blur"],
                    }, ],
                    workshop: [{
                        required: true,
                        message: "请选择生产车间",
                        trigger: ["change"],
                    }, ],
                    weighingOperator: [{
                        required: true,
                        message: "请选择司磅员",
                        trigger: ["change"],
                    }, ],
                    forkliftOperator: [{
                        type: "string",
                        required: true,
                        message: "请至少选择一个叉车工",
                        trigger: ["change"],
                    }, ],
                },
                // 客户名称
                selClientList: [],
                selClientIndex1: null,
                selClientIndex2: null,
                // 生产车间
                workshopList: [],
                workshopIndex: null,
                // 司磅员
                weighmanList: [],
                weighmanIndex: null,
                showModal: false,
                selectedItems: [],
                id1: '',
                id2: '',
                isSubmitting: false
            };
        },
        onReady() {
            this.$refs.uForm.setRules(this.rules);
            // 仅在组件初次加载时获取数据
            if (this.selClientList.length === 0) {
                this.fetchClients();
            }
            if (this.workshopList.length === 0) {
                this.fetchWorkshops();
            }
            if (this.checkboxList.length === 0) {
                this.fetchForkliftOperators();
            }
            if (this.weighmanList.length === 0) {
                this.fetchWeighmen();
            }
        },
        onShow() {
            // 重置表单数据
            this.form = {
                replace: '0',
                productType: '',
                licensePlate: '',
                customerName1: '',
                shippingNoticeNo1: '',
                customerName2: '',
                shippingNoticeNo2: '',
                workshop: '',
                weighingOperator: '',
                forkliftOperator: '',
            };
            this.selClientIndex1 = null;
            this.selClientIndex2 = null;
            this.workshopIndex = null;
            this.weighmanIndex = null;
            this.checkboxList = this.checkboxList.map(item => ({
                ...item,
                checked: false
            }));
            this.$refs.uForm && this.$refs.uForm.resetValidation();
        },
        methods: {
            /**
             * 获取客户列表
             */
            fetchClients() {
                this.$u.api.NuclearScaleEntry.selClient().then((res) => {
                    console.log('客户名称', res)
                    if (res.code === 0) {
                        res.data.forEach((i) => {
                            const obj = Object.assign({
                                label: i.customerName,
                                value: i.customerName,
                                shippingNoticeNo: i.shippingNoticeNo,
                                id: i.id
                            });
                            this.selClientList.push(obj);
                        });
                    } else {
                        uni.showToast({
                            title: res.msg || '获取客户名称失败',
                            icon: 'none'
                        });
                    }
                }).catch(err => {
                    uni.showToast({
                        title: '网络错误,获取客户名称失败',
                        icon: 'none'
                    });
                    console.error('获取客户名称错误:', err);
                });
            },
import modalBg from "@/components/modal/modal-bg.vue";
import content_bg from "@/static/custom/packing/backBg.png";
export default {
  components: {
    modalBg,
  },
  data() {
    return {
      checkboxList: [],
      background: {
        backgroundImage: `url(${content_bg})`,
        backgroundAttachment: "fixed",
        backgroundSize: "100% auto",
        backgroundRepeat: "no-repeat",
      },
      show: false,
      num: 1,
      form: {
        replace: "0",
        productType: "",
        licensePlate: "",
        customerName1: "",
        shippingNoticeNo1: "",
        customerName2: "",
        shippingNoticeNo2: "",
        workshop: "",
        weighingOperator: "",
        forkliftOperator: "",
      },
      rules: {
        productType: [
          {
            required: true,
            message: "请选择产品类型",
            trigger: ["change"],
          },
        ],
        replace: [
          {
            required: true,
            message: "请选择是否替换二维码",
            trigger: ["change", "blur"],
          },
        ],
        licensePlate: [
          {
            required: true,
            message: "请输入车牌号",
            trigger: ["change", "blur"],
          },
        ],
        workshop: [
          {
            required: true,
            message: "请选择生产车间",
            trigger: ["change"],
          },
        ],
        weighingOperator: [
          {
            required: true,
            message: "请选择司磅员",
            trigger: ["change"],
          },
        ],
        forkliftOperator: [
          {
            type: "string",
            required: true,
            message: "请至少选择一个叉车工",
            trigger: ["change"],
          },
        ],
      },
      // 客户名称
      selClientList: [],
      selClientIndex1: null,
      selClientIndex2: null,
      // 生产车间
      workshopList: [],
      workshopIndex: null,
      // 司磅员
      weighmanList: [],
      weighmanIndex: null,
      showModal: false,
      selectedItems: [],
      id1: "",
      id2: "",
      isSubmitting: false,
    };
  },
  onReady() {
    this.$refs.uForm.setRules(this.rules);
    // 仅在组件初次加载时获取数据
    if (this.selClientList.length === 0) {
      this.fetchClients();
    }
    if (this.workshopList.length === 0) {
      this.fetchWorkshops();
    }
    if (this.checkboxList.length === 0) {
      this.fetchForkliftOperators();
    }
    if (this.weighmanList.length === 0) {
      this.fetchWeighmen();
    }
  },
  onShow() {
    // 重置表单数据
    this.form = {
      replace: "0",
      productType: "",
      licensePlate: "",
      customerName1: "",
      shippingNoticeNo1: "",
      customerName2: "",
      shippingNoticeNo2: "",
      workshop: "",
      weighingOperator: "",
      forkliftOperator: "",
    };
    this.selClientIndex1 = null;
    this.selClientIndex2 = null;
    this.workshopIndex = null;
    this.weighmanIndex = null;
    this.checkboxList = this.checkboxList.map((item) => ({
      ...item,
      checked: false,
    }));
    this.$refs.uForm && this.$refs.uForm.resetValidation();
  },
  methods: {
    /**
     * 获取客户列表
     */
    fetchClients() {
      this.$u.api.NuclearScaleEntry.selClient()
        .then((res) => {
          console.log("客户名称", res);
          if (res.code === 0) {
            res.data.forEach((i) => {
              const obj = Object.assign({
                label: i.customerName,
                value: i.customerName,
                shippingNoticeNo: i.shippingNoticeNo,
                id: i.id,
              });
              this.selClientList.push(obj);
            });
          } else {
            uni.showToast({
              title: res.msg || "获取客户名称失败",
              icon: "none",
            });
          }
        })
        .catch((err) => {
          uni.showToast({
            title: "网络错误,获取客户名称失败",
            icon: "none",
          });
          console.error("获取客户名称错误:", err);
        });
    },
            /**
             * 获取车间列表
             */
            fetchWorkshops() {
                this.$u.api.dictData({
                    dictType: 'workshop'
                }).then(res => {
                    if (res.code === 0 && res.data.length > 0) {
                        res.data.forEach(i => {
                            const obj = Object.assign({
                                label: i.label,
                                value: i.value,
                            })
                            this.workshopList.push(obj)
                        })
                    } else {
                        uni.showToast({
                            title: res.msg || '获取车间列表失败',
                            icon: 'none'
                        });
                    }
                }).catch(err => {
                    uni.showToast({
                        title: '网络错误,获取车间列表失败',
                        icon: 'none'
                    });
                    console.error('获取车间列表错误:', err);
                });
            },
    /**
     * 获取车间列表
     */
    fetchWorkshops() {
      this.$u.api
        .dictData({
          dictType: "workshop",
        })
        .then((res) => {
          if (res.code === 0 && res.data.length > 0) {
            res.data.forEach((i) => {
              const obj = Object.assign({
                label: i.label,
                value: i.value,
              });
              this.workshopList.push(obj);
            });
          } else {
            uni.showToast({
              title: res.msg || "获取车间列表失败",
              icon: "none",
            });
          }
        })
        .catch((err) => {
          uni.showToast({
            title: "网络错误,获取车间列表失败",
            icon: "none",
          });
          console.error("获取车间列表错误:", err);
        });
    },
            /**
             * 获取叉车工列表
             */
            fetchForkliftOperators() {
                this.$u.api.dictData({
                    dictType: 'forklift'
                }).then(res => {
                    if (res.code === 0 && res.data.length > 0) {
                        res.data.forEach(i => {
                            const obj = Object.assign({
                                label: i.label,
                                value: i.label,
                            })
                            this.checkboxList.push(obj)
                        })
                    } else {
                        uni.showToast({
                            title: res.msg || '获取叉车工列表失败',
                            icon: 'none'
                        });
                    }
                }).catch(err => {
                    uni.showToast({
                        title: '网络错误,获取叉车工列表失败',
                        icon: 'none'
                    });
                    console.error('获取叉车工列表错误:', err);
                });
            },
    /**
     * 获取叉车工列表
     */
    fetchForkliftOperators() {
      this.$u.api
        .dictData({
          dictType: "forklift",
        })
        .then((res) => {
          if (res.code === 0 && res.data.length > 0) {
            res.data.forEach((i) => {
              const obj = Object.assign({
                label: i.label,
                value: i.label,
              });
              this.checkboxList.push(obj);
            });
          } else {
            uni.showToast({
              title: res.msg || "获取叉车工列表失败",
              icon: "none",
            });
          }
        })
        .catch((err) => {
          uni.showToast({
            title: "网络错误,获取叉车工列表失败",
            icon: "none",
          });
          console.error("获取叉车工列表错误:", err);
        });
    },
            /**
             * 获取司磅员列表
             */
            fetchWeighmen() {
                this.$u.api.dictData({
                    dictType: 'weighing'
                }).then(res => {
                    if (res.code === 0 && res.data.length > 0) {
                        res.data.forEach(i => {
                            const obj = Object.assign({
                                label: i.label,
                                value: i.label,
                            })
                            this.weighmanList.push(obj)
                        })
                    } else {
                        uni.showToast({
                            title: res.msg || '获取司磅员列表失败',
                            icon: 'none'
                        });
                    }
                }).catch(err => {
                    uni.showToast({
                        title: '网络错误,获取司磅员列表失败',
                        icon: 'none'
                    });
                    console.error('获取司磅员列表错误:', err);
                });
            },
            // 复选框变化事件
            checkboxChange(e) {
                const values = e.detail.value;
                this.checkboxList = this.checkboxList.map((item) => {
                    return {
                        ...item,
                        checked: values.includes(item.value),
                    };
                });
            },
    /**
     * 获取司磅员列表
     */
    fetchWeighmen() {
      this.$u.api
        .dictData({
          dictType: "weighing",
        })
        .then((res) => {
          if (res.code === 0 && res.data.length > 0) {
            res.data.forEach((i) => {
              const obj = Object.assign({
                label: i.label,
                value: i.label,
              });
              this.weighmanList.push(obj);
            });
          } else {
            uni.showToast({
              title: res.msg || "获取司磅员列表失败",
              icon: "none",
            });
          }
        })
        .catch((err) => {
          uni.showToast({
            title: "网络错误,获取司磅员列表失败",
            icon: "none",
          });
          console.error("获取司磅员列表错误:", err);
        });
    },
    // 复选框变化事件
    checkboxChange(e) {
      const values = e.detail.value;
      this.checkboxList = this.checkboxList.map((item) => {
        return {
          ...item,
          checked: values.includes(item.value),
        };
      });
    },
            // 确认选择
            confirmSelection() {
                // 将选中的叉车工标签数组转为以逗号分隔的字符串
                this.form.forkliftOperator = this.checkboxList
                    .filter((item) => item.checked)
                    .map((item) => item.label)
                    .join(',');
            },
            cancel() {},
            openForkliftDriverList() {
                this.showModal = true;
            },
            // 客户名称
            selClientChange(e, storage, code) {
                if (storage.length <= 0) {
                    this.selClientIndex1 = null;
                    this.selClientIndex2 = null;
                    return;
                }
                const selectedIndex = e.target.value;
                const selectedCustomer = storage[selectedIndex];
    // 确认选择
    confirmSelection() {
      // 将选中的叉车工标签数组转为以逗号分隔的字符串
      this.form.forkliftOperator = this.checkboxList
        .filter((item) => item.checked)
        .map((item) => item.label)
        .join(",");
    },
    cancel() {},
    openForkliftDriverList() {
      this.showModal = true;
    },
    // 客户名称
    selClientChange(e, storage, code) {
      if (storage.length <= 0) {
        this.selClientIndex1 = null;
        this.selClientIndex2 = null;
        return;
      }
      const selectedIndex = e.target.value;
      const selectedCustomer = storage[selectedIndex];
                // 检查是否选择了相同的客户
                if (code === "customerName1" && this.selClientIndex2 === selectedIndex) {
                    uni.showToast({
                        title: '不能选择相同的客户',
                        icon: 'none'
                    });
                    return;
                }
                if (code === "customerName2" && this.selClientIndex1 === selectedIndex) {
                    uni.showToast({
                        title: '不能选择相同的客户',
                        icon: 'none'
                    });
                    return;
                }
      // 检查是否选择了相同的客户
      if (code === "customerName1" && this.selClientIndex2 === selectedIndex) {
        uni.showToast({
          title: "不能选择相同的客户",
          icon: "none",
        });
        return;
      }
      if (code === "customerName2" && this.selClientIndex1 === selectedIndex) {
        uni.showToast({
          title: "不能选择相同的客户",
          icon: "none",
        });
        return;
      }
                if (code === "customerName2") {
                    this.selClientIndex2 = selectedIndex;
                    this.form.customerName2 = selectedCustomer.label;
                    this.form.shippingNoticeNo2 = selectedCustomer.shippingNoticeNo;
                    this.id2 = selectedCustomer.id;
                }
                if (code === "customerName1") {
                    this.selClientIndex1 = selectedIndex;
                    this.form.customerName1 = selectedCustomer.label;
                    this.form.shippingNoticeNo1 = selectedCustomer.shippingNoticeNo;
                    this.id1 = selectedCustomer.id
                }
            },
            // 生产车间
            workshopChange(e, storage) {
                if (storage.length <= 0) {
                    this.workshopIndex = null;
                    return;
                }
      if (code === "customerName2") {
        this.selClientIndex2 = selectedIndex;
        this.form.customerName2 = selectedCustomer.label;
        this.form.shippingNoticeNo2 = selectedCustomer.shippingNoticeNo;
        this.id2 = selectedCustomer.id;
      }
      if (code === "customerName1") {
        this.selClientIndex1 = selectedIndex;
        this.form.customerName1 = selectedCustomer.label;
        this.form.shippingNoticeNo1 = selectedCustomer.shippingNoticeNo;
        this.id1 = selectedCustomer.id;
      }
    },
    // 生产车间
    workshopChange(e, storage) {
      if (storage.length <= 0) {
        this.workshopIndex = null;
        return;
      }
                const productType = this.form.productType;
                const selectedWorkshop = storage[e.target.value];
      const productType = this.form.productType;
      const selectedWorkshop = storage[e.target.value];
                // 检查产品类型是否为铜杆(值为2)
                if (productType === '2') {
                    // 铜杆只能选择铜杆相关车间
                    if (!selectedWorkshop.label.includes('铜杆')) {
                        uni.showModal({
                            title: "提示",
                            content: "铜杆产品只能选择铜杆相关车间",
                            showCancel: false
                        });
                        return;
                    }
                } else {
                    // 导体产品不能选择铜杆车间
                    if (selectedWorkshop.label.includes('铜杆')) {
                        uni.showModal({
                            title: "提示",
                            content: "导体产品不能选择铜杆车间",
                            showCancel: false
                        });
                        return;
                    }
                }
      // 检查产品类型是否为铜杆(值为TG01)
      if (productType === "TG01") {
        // 铜杆只能选择铜杆相关车间
        if (!selectedWorkshop.label.includes("铜杆")) {
          uni.showModal({
            title: "提示",
            content: "铜杆产品只能选择铜杆相关车间",
            showCancel: false,
          });
          return;
        }
      } else {
        // 导体产品不能选择铜杆车间
        if (selectedWorkshop.label.includes("铜杆")) {
          uni.showModal({
            title: "提示",
            content: "导体产品不能选择铜杆车间",
            showCancel: false,
          });
          return;
        }
      }
                this.workshopIndex = e.target.value;
                this.form.workshop = selectedWorkshop.label;
            },
            // 司磅员
            weighmanChange(e, storage) {
                if (storage.length <= 0) {
                    this.weighmanIndex = null;
                    return;
                }
                this.weighmanIndex = e.target.value;
                this.form.weighingOperator = storage[this.weighmanIndex].label;
            },
            lpn() {
                this.$refs.modalBg.open();
            },
            // 弹框保存
            confirm() {},
      this.workshopIndex = e.target.value;
      this.form.workshop = selectedWorkshop.label;
    },
    // 司磅员
    weighmanChange(e, storage) {
      if (storage.length <= 0) {
        this.weighmanIndex = null;
        return;
      }
      this.weighmanIndex = e.target.value;
      this.form.weighingOperator = storage[this.weighmanIndex].label;
    },
    lpn() {
      this.$refs.modalBg.open();
    },
    // 弹框保存
    confirm() {},
            /**
             * 产品类型变化时清空车间选择
             */
            handleProductTypeChange() {
                this.workshopIndex = null;
                this.form.workshop = '';
            },
            // 提交按钮
            async submit() {
                if (this.isSubmitting) return;
    /**
     * 产品类型变化时清空车间选择
     */
    handleProductTypeChange() {
      this.workshopIndex = null;
      this.form.workshop = "";
    },
    // 提交按钮
    async submit() {
      if (this.isSubmitting) return;
                try {
                    // 统一表单验证
                    if (!await this.validateForm()) return;
      try {
        // 统一表单验证
        if (!(await this.validateForm())) return;
                    // 构建提交数据
                    const submitData = this.buildSubmitData().customerList;
                    console.log('提交的数据',submitData)
                    this.isSubmitting = true;
                    const res = await this.$u.api.NuclearScaleEntry.createMain(submitData);
        // 构建提交数据
        const submitData = this.buildSubmitData().customerList;
        console.log("提交的数据", submitData);
        this.isSubmitting = true;
        const res = await this.$u.api.NuclearScaleEntry.createMain(submitData);
                    if (res.code === 0) {
                        this.$u.toast("提交成功");
                        uni.navigateBack();
                    } else {
                        uni.showToast({
                            title: res.msg || '提交失败:业务处理错误',
                            icon: 'none'
                        });
                        console.error('业务错误:', res);
                    }
                } catch (err) {
                    if (err.type === 'validation') {
                        uni.showToast({
                            title: err.message,
                            icon: 'none'
                        });
                    } else if (err.message.includes('Network Error')) {
                        uni.showToast({
                            title: '网络连接错误,请检查网络后重试',
                            icon: 'none'
                        });
                    } else {
                        uni.showToast({
                            title: '系统错误,请稍后重试',
                            icon: 'none'
                        });
                    }
                    console.error('提交表单错误:', err);
                } finally {
                    this.isSubmitting = false;
                }
            },
        if (res.code === 0) {
          this.$u.toast("提交成功");
          uni.navigateBack();
        } else {
          uni.showToast({
            title: res.msg || "提交失败:业务处理错误",
            icon: "none",
          });
          console.error("业务错误:", res);
        }
      } catch (err) {
        if (err.type === "validation") {
          uni.showToast({
            title: err.message,
            icon: "none",
          });
        } else if (err.message.includes("Network Error")) {
          uni.showToast({
            title: "网络连接错误,请检查网络后重试",
            icon: "none",
          });
        } else {
          uni.showToast({
            title: "系统错误,请稍后重试",
            icon: "none",
          });
        }
        console.error("提交表单错误:", err);
      } finally {
        this.isSubmitting = false;
      }
    },
            // 统一表单验证
            async validateForm() {
                // 使用uView表单验证
                if (!await this.$refs.uForm.validate()) {
                    return false;
                }
    // 统一表单验证
    async validateForm() {
      // 使用uView表单验证
      if (!(await this.$refs.uForm.validate())) {
        return false;
      }
                // 客户名称验证
                if (!this.form.customerName1 || !this.form.customerName2) {
                    throw { type: 'validation', message: '请先选择客户名称' };
                }
      // 客户名称验证
      if (!this.form.customerName1 || !this.form.customerName2) {
        throw { type: "validation", message: "请先选择客户名称" };
      }
                return true;
            },
      return true;
    },
            // 构建提交数据
            buildSubmitData() {
                // 创建客户数据的辅助函数
                const createCustomerItem = (customerIndex) => ({
                    customerName: this.form[`customerName${customerIndex}`],
                    shippingNoticeNo: this.form[`shippingNoticeNo${customerIndex}`],
                    shippingNoticeId: this[`id${customerIndex}`],
                    replace: this.form.replace,
                    productType: this.form.productType,
                    licensePlate: this.form.licensePlate,
                    workshop: this.form.workshop,
                    weighingOperator: this.form.weighingOperator,
                    forkliftOperator: this.form.forkliftOperator,
                });
    // 构建提交数据
    buildSubmitData() {
      // 创建客户数据的辅助函数
      const createCustomerItem = (customerIndex) => ({
        customerName: this.form[`customerName${customerIndex}`],
        shippingNoticeNo: this.form[`shippingNoticeNo${customerIndex}`],
        shippingNoticeId: this[`id${customerIndex}`],
        replace: this.form.replace,
        productType: this.form.productType,
        licensePlate: this.form.licensePlate,
        workshop: this.form.workshop,
        weighingOperator: this.form.weighingOperator,
        forkliftOperator: this.form.forkliftOperator,
      });
                // 构建客户列表
                const customerList = [1, 2].map(createCustomerItem);
      // 构建客户列表
      const customerList = [1, 2].map(createCustomerItem);
                return {
                    customerList
                };
            },
        },
    };
      return {
        customerList,
      };
    },
  },
};
</script>
<style lang="scss" scoped>
    @import "index.scss";
@import "index.scss";
    /* 弹窗样式 */
    .popup-content {
        padding: 30rpx;
        max-height: 70vh;
        overflow-y: auto;
    }
/* 弹窗样式 */
.popup-content {
  padding: 30rpx;
  max-height: 70vh;
  overflow-y: auto;
}
    .popup-header {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding-bottom: 20rpx;
        border-bottom: 1rpx solid #eee;
        margin-bottom: 20rpx;
    }
.popup-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-bottom: 20rpx;
  border-bottom: 1rpx solid #eee;
  margin-bottom: 20rpx;
}
    .title {
        font-size: 32rpx;
        font-weight: bold;
    }
.title {
  font-size: 32rpx;
  font-weight: bold;
}
    .confirm-btn {
        color: #007aff;
        font-size: 28rpx;
    }
.confirm-btn {
  color: #007aff;
  font-size: small;
}
    /* 复选框样式 */
    .checkbox-item {
        width: 230px;
        display: flex;
        align-items: center;
        padding: 20rpx 0;
        border-bottom: 1rpx solid #f5f5f5;
        background-color: #f8f9fa;
/* 复选框样式 */
.checkbox-item {
  width: 230px;
  display: flex;
  align-items: center;
  padding: 20rpx 0;
  border-bottom: 1rpx solid #f5f5f5;
  background-color: #f8f9fa;
        .label {
            position: relative;
            left: 130px;
        }
    }
  .label {
    position: relative;
    left: 130px;
  }
}
    .checkbox-item:last-child {
        border-bottom: none;
    }
.checkbox-item:last-child {
  border-bottom: none;
}
    .checkbox-item .label {
        margin-left: 20rpx;
    }
.checkbox-item .label {
  margin-left: 20rpx;
}
    .item-one {
        font-size: 30rpx;
        color: #0c0c0c;
        margin-right: 6rpx;
    }
.item-one {
  font-size: small;
  color: #0c0c0c;
  margin-right: 6rpx;
}
    .item-two {
        font-size: 30rpx;
        color: #a5abb4;
        margin-right: 6rpx;
    }
.item-two {
  font-size: small;
  color: #a5abb4;
  margin-right: 6rpx;
}
</style>
pages/wareHouse/nuclearScale/index.scss
@@ -130,7 +130,7 @@
        ._label-name {
          margin-left: 11rpx;
          font-size: 26rpx;
          font-size: small;
          font-weight: 500;
          color: #666666;
        }
@@ -140,7 +140,7 @@
        flex: 1.5;
        text-align: right;
        color: #909399;
        font-size: 24rpx;
        font-size: small;
      }
      .row-list .s1 {
@@ -185,7 +185,7 @@
  
        .packing-registration-param-item-left {
          .item-one {
            font-size: 30rpx;
            font-size: small;
            color: #666666;
          }
        }
@@ -195,19 +195,19 @@
          justify-content: space-between;
  
          .item-one {
            font-size: 15rpx;
            font-size: small;
            color: #060505;
            margin-right: 6rpx;
          }
  
          .item-two {
            font-size: 15rpx;
            color: #a6b4cc;
            font-size: small;
            color: #171718;
            margin-right: 6rpx;
          }
  
          .item-three {
            font-size: 30rpx;
            font-size: small;
            color: #214ded;
            margin-right: 6rpx;
          }
@@ -271,7 +271,7 @@
      .packing-registration-param-item-left {
        .item-one {
          font-size: 30rpx;
          font-size: small;
          color: #666666;
        }
      }
@@ -281,19 +281,19 @@
        justify-content: space-between;
        .item-one {
          font-size: 30rpx;
          font-size: small;
          color: #060505;
          margin-right: 6rpx;
        }
        .item-two {
          font-size: 30rpx;
          color: #a6b4cc;
          font-size: small;
          color: #0f1010;
          margin-right: 6rpx;
        }
        .item-three {
          font-size: 30rpx;
          font-size: small;
          color: #214ded;
          margin-right: 6rpx;
        }
pages/wareHouse/nuclearScale/index.vue
@@ -1,325 +1,487 @@
<template>
    <!-- 核磅录入 -->
    <div class="page">
        <view class="packing-registration-bg" />
        <u-navbar title="核磅录入" :background="background" :border-bottom="false" :title-bold="true" title-color="#000"
            back-icon-color="#000" />
        <u-form :model="form" ref="uForm" :label-width="200" :rules="rules" :error-type="['toast']" class="uForm">
            <u-form-item label="核磅单号" :border-bottom="false" prop="verificationNo">
                <u-input v-model="form.verificationNo" type="select" placeholder="请选择核磅单号" @click="openList" />
            </u-form-item>
            <u-form-item label="产品类型" :border-bottom="false" prop="productType">
                <u-input v-model="productTypeMap[form.productType] || form.productType" placeholder="" disabled />
            </u-form-item>
            <u-form-item label="车牌号" :border-bottom="false" prop="licensePlate">
                <u-input v-model="form.licensePlate" placeholder="" disabled />
            </u-form-item>
            <u-form-item label="发货通知单1" :border-bottom="false" prop="shippingNoticeNo1">
                <u-input v-model="form.shippingNoticeNo1" placeholder="" disabled />
            </u-form-item>
            <u-form-item label="客户名称1" :border-bottom="false" prop="customerName1">
                <u-input v-model="form.customerName1" placeholder="" disabled />
            </u-form-item>
            <u-form-item label="发货通知单2" :border-bottom="false" prop="shippingNoticeNo2">
                <u-input v-model="form.shippingNoticeNo2" placeholder="" disabled />
            </u-form-item>
            <u-form-item label="客户名称2" :border-bottom="false" prop="customerName2">
                <u-input v-model="form.customerName2" placeholder="" disabled />
            </u-form-item>
            <u-form-item label="司磅员" :border-bottom="false" prop="weighingOperator">
                <u-input v-model="form.weighingOperator" placeholder="" disabled />
            </u-form-item>
            <u-form-item label="叉车司机" :border-bottom="false" prop="forkliftOperator">
                <u-input v-model="form.forkliftOperator" placeholder="" disabled />
            </u-form-item>
            <u-form-item label="核磅记录" :border-bottom="false" prop="value8">
                <u-input type="select" placeholder="" @click="openNuclearScaleRecord" />
            </u-form-item>
            <u-form-item :label="`扫码记录(${ScanCodeRecord.length}条):`" :border-bottom="false" prop="shippingNoticeNo1"
                :label-width="260">
            </u-form-item>
        </u-form>
        <view class="wrap">
            <scroll-view class="packing-registration-scroll-list" scroll-y="true">
                <u-cell-group class="packing-registration-scroll-list-group" :border="false">
                    <view class="content" v-for="(item, index) in ScanCodeRecord" :key="index" :index="index"
                        @click="cancelReport(item)">
                        <view class="content-header">
                            <view class="content-header-title">{{ index + 1 }}</view>
                        </view>
                        <view class="content-body">
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-name">批号:</view>
                                </view>
                                <view class="_content">
                                    {{ item.outBatchNo }}
                                </view>
                            </view>
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-name">零件描述:</view>
                                </view>
                                <view class="_content">
                                    {{ item.netWeight }}
                                </view>
                            </view>
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-name">零件号:</view>
                                </view>
                                <view class="_content">
                                    {{ item.partNo }}
                                </view>
                            </view>
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-name">毛重:</view>
                                </view>
                                <view class="_content">
                                    {{ item.grossWeight }}
                                </view>
                            </view>
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-name">盘重:</view>
                                </view>
                                <view class="_content">
                                    {{ item.trayWeight }}
                                </view>
                            </view>
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-name">净重:</view>
                                </view>
                                <view class="_content">
                                    {{ item.netWeight }}
                                </view>
                            </view>
                        </view>
                    </view>
                </u-cell-group>
            </scroll-view>
        </view>
        <!-- 导体 -->
        <u-modal v-model="showModal" title="" :show-cancel-button="true" :show-confirm-button="true"
            @confirm="confirmDt" @cancel="cancelDt">
            <view class="popup-content">
                <view class="packing-registration-param">
                    <view class="packing-registration-param-view">
                        <view class="packing-registration-param-item param-extra">
                            <view class="packing-registration-param-item-left">
                                <text class="item-one">核磅重量:</text>
                            </view>
                            <view class="packing-registration-param-item-right">
                                <u-input class="item-one item-two" v-model="modalList.suppliedQuantity" />
                            </view>
                        </view>
                        <view class="packing-registration-param-item param-extra">
                            <view class="packing-registration-param-item-left">
                                <text class="item-one">叉车盘重:</text>
                            </view>
                            <view class="packing-registration-param-item-right">
                                <u-input class="item-one item-two" v-model="modalList.suppliedQuantity" />
                            </view>
                        </view>
                    </view>
                </view>
            </view>
        </u-modal>
        <u-button type="primary" class="bottom-button" @click="submit">提交</u-button>
        <u-modal v-model="show" @confirm="confirm" content="是否确认提交" show-cancel-button></u-modal>
        <saveForm ref="saveForm" :operationTaskList="this.form" @update="handleUpdate" />
        <scan></scan>
    </div>
  <!-- 核磅录入 -->
  <div class="page">
    <view class="packing-registration-bg" />
    <u-navbar
      title="核磅录入"
      :background="background"
      :border-bottom="false"
      :title-bold="true"
      title-color="#000"
      back-icon-color="#000"
    />
    <u-form
      :model="form"
      ref="uForm"
      :label-width="200"
      :rules="rules"
      :error-type="['toast']"
      class="uForm"
    >
      <u-form-item
        label="核磅单号"
        :border-bottom="false"
        prop="verificationNo"
        style="font-size: small"
      >
        <u-input
          v-model="form.verificationNo"
          type="select"
          placeholder="请选择核磅单号"
          @click="openList"
        />
      </u-form-item>
      <u-form-item
        label="产品类型"
        :border-bottom="false"
        prop="productType"
        style="font-size: small"
      >
        <u-input
          v-model="productTypeMap[form.productType] || form.productType"
          placeholder=""
          disabled
        />
      </u-form-item>
      <u-form-item
        label="车牌号"
        :border-bottom="false"
        prop="licensePlate"
        style="font-size: small"
      >
        <u-input v-model="form.licensePlate" placeholder="" disabled />
      </u-form-item>
      <u-form-item
        label="发货通知单1"
        :border-bottom="false"
        prop="shippingNoticeNo1"
        style="font-size: small"
      >
        <u-input v-model="form.shippingNoticeNo1" placeholder="" disabled />
      </u-form-item>
      <u-form-item
        label="客户名称1"
        :border-bottom="false"
        prop="customerName1"
        style="font-size: small"
      >
        <u-input v-model="form.customerName1" placeholder="" disabled />
      </u-form-item>
      <u-form-item
        label="发货通知单2"
        :border-bottom="false"
        prop="shippingNoticeNo2"
        style="font-size: small"
      >
        <u-input v-model="form.shippingNoticeNo2" placeholder="" disabled />
      </u-form-item>
      <u-form-item
        label="客户名称2"
        :border-bottom="false"
        prop="customerName2"
        style="font-size: small"
      >
        <u-input v-model="form.customerName2" placeholder="" disabled />
      </u-form-item>
      <u-form-item
        label="司磅员"
        :border-bottom="false"
        prop="weighingOperator"
        style="font-size: small"
      >
        <u-input v-model="form.weighingOperator" placeholder="" disabled />
      </u-form-item>
      <u-form-item
        label="叉车司机"
        :border-bottom="false"
        prop="forkliftOperator"
        style="font-size: small"
      >
        <u-input v-model="form.forkliftOperator" placeholder="" disabled />
      </u-form-item>
      <u-form-item
        label="核磅记录"
        :border-bottom="false"
        prop="value8"
        style="font-size: small"
      >
        <u-input type="select" placeholder="" @click="openNuclearScaleRecord" />
      </u-form-item>
      <u-form-item
        :label="`扫码记录(${ScanCodeRecord.length}条):`"
        :border-bottom="false"
        prop="shippingNoticeNo1"
        :label-width="260"
        style="font-size: small"
      >
      </u-form-item>
    </u-form>
    <view class="wrap">
      <scroll-view class="packing-registration-scroll-list" scroll-y="true">
        <u-cell-group
          class="packing-registration-scroll-list-group"
          :border="false"
        >
          <view
            class="content"
            v-for="(item, index) in ScanCodeRecord"
            :key="index"
            :index="index"
            @click="cancelReport(item)"
          >
            <view class="content-header">
              <view class="content-header-title">{{ index + 1 }}</view>
            </view>
            <view class="content-body">
              <view class="row-list">
                <view class="_label">
                  <view class="_label-name">批号:</view>
                </view>
                <view class="_content">
                  {{ item.outBatchNo }}
                </view>
              </view>
              <view class="row-list">
                <view class="_label">
                  <view class="_label-name">零件描述:</view>
                </view>
                <view class="_content">
                  {{ item.partName }}
                </view>
              </view>
              <view class="row-list">
                <view class="_label">
                  <view class="_label-name">零件号:</view>
                </view>
                <view class="_content">
                  {{ item.partNo }}
                </view>
              </view>
              <view class="row-list">
                <view class="_label">
                  <view class="_label-name">毛重:</view>
                </view>
                <view class="_content">
                  {{ item.grossWeight }}
                </view>
              </view>
              <view class="row-list">
                <view class="_label">
                  <view class="_label-name">盘重:</view>
                </view>
                <view class="_content">
                  {{ item.trayWeight }}
                </view>
              </view>
              <view class="row-list">
                <view class="_label">
                  <view class="_label-name">净重:</view>
                </view>
                <view class="_content">
                  {{ item.netWeight }}
                </view>
              </view>
            </view>
          </view>
        </u-cell-group>
      </scroll-view>
    </view>
    <!-- 导体 -->
    <u-modal
      v-model="showModal"
      title=""
      :show-cancel-button="true"
      :show-confirm-button="true"
      @confirm="confirmDt"
      @cancel="cancelDt"
    >
      <view class="popup-content">
        <view class="packing-registration-param">
          <view class="packing-registration-param-view">
            <view class="packing-registration-param-item param-extra">
              <view class="packing-registration-param-item-left">
                <text class="item-one">核磅重量:</text>
              </view>
              <view class="packing-registration-param-item-right">
                <u-input
                  class="item-one item-two"
                  v-model="modalList.verificationWeight"
                />
              </view>
            </view>
            <view class="packing-registration-param-item param-extra">
              <view class="packing-registration-param-item-left">
                <text class="item-one">叉车盘重:</text>
              </view>
              <view class="packing-registration-param-item-right">
                <u-input
                  class="item-one item-two"
                  v-model="modalList.suppliedQuantity"
                />
              </view>
            </view>
          </view>
        </view>
      </view>
    </u-modal>
    <u-button type="primary" class="bottom-button" @click="submit"
      >提交</u-button
    >
    <u-modal
      v-model="show"
      @confirm="confirm"
      content="是否确认提交"
      show-cancel-button
    ></u-modal>
    <saveForm
      ref="saveForm"
      :operationTaskList="this.form"
      @update="handleUpdate"
    />
    <scan></scan>
  </div>
</template>
<script>
    import scan from "@/components/scan/scan.vue";
    import content_bg from "@/static/custom/packing/backBg.png";
    import saveForm from "./saveForm.vue";
    export default {
        components: {
            scan,
            saveForm,
        },
        data() {
            return {
                modalList: {},
                showModal: false,
                productTypeMap: {
                    1: "导体",
                    2: "铜杆",
                    3: "导体2.6",
                },
                ScanCodeRecord: [],
                background: {
                    backgroundImage: `url(${content_bg})`,
                    backgroundAttachment: "fixed",
                    backgroundSize: "100% auto",
                    backgroundRepeat: "no-repeat",
                },
                show: false,
                form: {
                    value0: "",
                    verificationNo: "",
                    productType: "",
                    licensePlate: "",
                    shippingNoticeNo1: "",
                    customerName1: "",
                    weighingOperator: "",
                    forkliftOperator: "",
                    value8: "",
                    shippingNoticeNo2: "",
                    customerName2: "",
                },
                rules: {
                    verificationNo: [{
                        required: true,
                        message: "请选择核磅单号",
                        trigger: ["change", "blur"],
                    }, ],
                },
            };
        },
        onReady() {
            this.$refs.uForm.setRules(this.rules);
        },
        onShow() {
            let that = this;
            uni.$off("scan"); // 每次进来先 移除全局自定义事件监听器
            uni.$on("scan", function(data) {
                console.log("onscan");
                if (that.form.verificationNo == "") {
                    uni.showToast({
                        icon: "none",
                        title: "请先选择核磅单号!",
                        duration: 2 * 1000,
                    });
                    return;
                }
                //扫码成功后的回调,你可以写自己的逻辑代码在这里
                console.log("页面扫码结果:", data.code);
                if (data.code) {
                    try {
                        let codeInfo = JSON.parse(data.code);
                    } catch (e) {
                        uni.showToast({
                            icon: "none",
                            title: "扫码数据解析失败,请重试!",
                            duration: 2 * 1000,
                        });
                        return;
                    }
                    if (codeInfo.CN != that.form.customerName1) {
                        // 扫描报工单二维码
                        uni.showModal({
                            title: "提示",
                            content: "客户不一致:" +
                                codeInfo.CN +
                                "||" +
                                that.form.customerName1,
                            showCancel: true,
                            success: function() {
                                if (that.form.productType == "2") {
                                    that.$refs.saveForm.open(codeInfo);
                                } else {
                                    that.ScanCodeRecord.push(codeInfo);
                                }
                            },
                        });
                    } else {
                        if (that.form.productType == "2") {
                            that.$refs.saveForm.open(codeInfo);
                        } else {
                            that.ScanCodeRecord.push(codeInfo);
                        }
                    }
                }
            });
        },
        methods: {
            // 取消扫码记录
            cancelReport(item) {
                this.ScanCodeRecord = this.ScanCodeRecord.filter(a => a.outBatchNo !== item.outBatchNo);
            },
            // 导体提交
            confirmDt() {
                      const magnetic =
        Number(this.form.h) - Number(this.form.children) - Number(this.form.m);
                console.log("保存", this.form.verificationNo);
                switch (this.form.productType) {
                    case "导体":
                        if (magnetic > 0 && magnetic < 3) {
                            this.ScanCodeRecord.push(this.form);
                        } else {
                            this.$u.toast("生产核查");
                        }
                        break;
                    case "导体2.6":
                        if (magnetic > -0.5 && magnetic < 0.5) {
                            this.ScanCodeRecord.push(this.form);
                        } else {
                            this.$u.toast("生产核查");
                        }
                        break;
                }
            },
            // 取消
            cancelDt() {
                this.showModal = false;
            },
            handleUpdate(Obj) {
                this.ScanCodeRecord.push(Obj);
            },
            // 提交按钮
            submit() {
                this.showModal = true;
            },
            // 弹框保存
            confirm() {
                console.log("保存", this.form.verificationNo);
                // 请求接口,根据工单号查询其他信息并赋值
            },
            // 选择订单号
            openList() {
                uni.navigateTo({
                    url: "/pages/wareHouse/nuclearScale/nuclearScaleList",
                });
            },
            //核磅记录
            openNuclearScaleRecord() {
                if (this.form.verificationNo == "") {
                    uni.showToast({
                        icon: "none",
                        title: "请先选择核磅单号!",
                        duration: 2 * 1000,
                    });
                    return;
                }
                uni.navigateTo({
                    url: "/pages/wareHouse/nuclearScale/nuclearscalerecord",
                });
            },
            // 存订单号
            setNo(val) {
                this.form = val;
            },
            // 回显扫码的信息-报工单
            // saveForm(val) {
            //     let {
            //         WorkNo,
            //         ProcessName,
            //         ORDER_NO
            //     } = val;
            //     this.form.verificationNo = WorkNo;
            //     this.form.productType = ProcessName;
            //     this.form.licensePlate = ORDER_NO;
            // },
        },
    };
import scan from "@/components/scan/scan.vue";
import content_bg from "@/static/custom/packing/backBg.png";
import saveForm from "./saveForm.vue";
export default {
  components: {
    scan,
    saveForm,
  },
  data() {
    return {
      commitList: [],
      modalList: {},
      showModal: false,
      productTypeMap: {
        1: "导体",
        2: "铜杆",
        3: "导体2.6",
      },
      ScanCodeRecord: [],
      background: {
        backgroundImage: `url(${content_bg})`,
        backgroundAttachment: "fixed",
        backgroundSize: "100% auto",
        backgroundRepeat: "no-repeat",
      },
      show: false,
      form: {
        value0: "",
        verificationNo: "",
        productType: "",
        licensePlate: "",
        shippingNoticeNo1: "",
        customerName1: "",
        weighingOperator: "",
        forkliftOperator: "",
        value8: "",
        shippingNoticeNo2: "",
        customerName2: "",
      },
      rules: {
        verificationNo: [
          {
            required: true,
            message: "请选择核磅单号",
            trigger: ["change", "blur"],
          },
        ],
      },
    };
  },
  onReady() {
    this.$refs.uForm.setRules(this.rules);
  },
  onShow() {
    let that = this;
    uni.$off("scan"); // 每次进来先 移除全局自定义事件监听器
    uni.$on("scan", function (data) {
      console.log("onscan");
      if (that.form.verificationNo == "") {
        uni.showToast({
          icon: "none",
          title: "请先选择核磅单号!",
          duration: 2 * 1000,
        });
        return;
      }
      //扫码成功后的回调,你可以写自己的逻辑代码在这里
      console.log("页面扫码结果:", data.code);
      if (data.code) {
        let codeInfo = JSON.parse(data.code);
        // try {
        // } catch (e) {
        //     uni.showToast({
        //         icon: "none",
        //         title: "扫码数据解析失败,请重试!",
        //         duration: 2 * 1000,
        //     });
        //     return;
        // }
        let ScanCodeRecordList = {
          outBatchNo: codeInfo.BN,
          netWeight: codeInfo.NW,
          tareWeight: codeInfo.TR, // 皮重
          partNo: codeInfo.PN,
          grossWeight: codeInfo.TW,
          partNo: codeInfo.partNo,
          partName: codeInfo.ST,
          originalLength: codeInfo.LN, // 长度
          palletNo: codeInfo.PNO, // 盘号
          waivDevRejNo: codeInfo.WDR ? codeInfo.WDR : "*", // wdr号
        };
        if (codeInfo.CN != that.form.customerName1) {
          // 扫描报工单二维码
          uni.showModal({
            title: "提示",
            content:
              "客户不一致:" + codeInfo.CN + "||" + that.form.customerName1,
            showCancel: true,
            success: function () {
              if (that.form.productType == "TG01") {
                that.$refs.saveForm.open(ScanCodeRecordList);
              } else {
                that.ScanCodeRecord.push(ScanCodeRecordList);
              }
            },
          });
        } else {
          if (that.form.productType == "TG01") {
            that.$refs.saveForm.open(ScanCodeRecordList);
          } else {
            that.ScanCodeRecord.push(ScanCodeRecordList);
          }
        }
      }
    });
  },
  methods: {
    // 取消扫码记录
    cancelReport(item) {
      let that = this;
      uni.showModal({
        title: "提示",
        content: "是否确认取消选中项",
        success: function (res) {
          if (res.confirm) {
            that.ScanCodeRecord = that.ScanCodeRecord.filter(
              (a) => a.outBatchNo !== item.outBatchNo
            );
          } else if (res.cancel) {
            return;
          }
        },
      });
    },
    // 导体提交
    confirmDt() {
      const magnetic =
        Number(this.form.verificationWeight) -
        Number(this.form.voltage) -
        Number(this.form.reelWeight);
      console.log("保存", this.form.verificationNo);
      switch (this.form.productType) {
        case "导体":
          if (magnetic > 0 && magnetic < 3) {
            this.allSubmit();
            // this.ScanCodeRecord.push(this.form);
          } else {
            this.$u.toast("生产核查");
          }
          break;
        case "导体2.6":
          if (magnetic > -0.5 && magnetic < 0.5) {
            // this.ScanCodeRecord.push(this.form);
            this.allSubmit();
          } else {
            this.$u.toast("生产核查");
          }
          break;
      }
    },
    allSubmit() {
      this.form = {
        ...this.form,
        weighingVerificationList: this.ScanCodeRecord,
      };
      // 处理提交逻辑
      this.$u.api.NuclearScaleEntry.createDetail(this.form)
        .then((res) => {
          if (res.success) {
            this.$u.toast("提交成功");
          } else {
            this.$u.toast(res.message || "提交失败");
          }
        })
        .catch(() => {
          uni.hideLoading();
          this.$u.toast("网络异常,请重试");
        });
    },
    // 取消
    cancelDt() {
      this.showModal = false;
    },
    handleUpdate(Obj) {
      this.ScanCodeRecord.push(Obj);
    },
    // 提交按钮
    submit() {
      if (that.form.productType != "TG01") {
        this.showModal = true;
      } else {
        this.allSubmit();
      }
    },
    // 弹框保存
    confirm() {
      console.log("保存", this.form.verificationNo);
      // 请求接口,根据工单号查询其他信息并赋值
    },
    // 选择订单号
    openList() {
      uni.navigateTo({
        url: "/pages/wareHouse/nuclearScale/nuclearScaleList",
      });
    },
    //核磅记录
    openNuclearScaleRecord() {
      if (this.form.verificationNo == "") {
        uni.showToast({
          icon: "none",
          title: "请先选择核磅单号!",
          duration: 2 * 1000,
        });
        return;
      }
      uni.navigateTo({
        url: "/pages/wareHouse/nuclearScale/nuclearscalerecord",
      });
    },
    // 存订单号
    setNo(val) {
      this.form = val;
    },
    // 回显扫码的信息-报工单
    // saveForm(val) {
    //     let {
    //         WorkNo,
    //         ProcessName,
    //         ORDER_NO
    //     } = val;
    //     this.form.verificationNo = WorkNo;
    //     this.form.productType = ProcessName;
    //     this.form.licensePlate = ORDER_NO;
    // },
  },
};
</script>
<style lang="scss">
    @import "index.scss";
@import "index.scss";
</style>
pages/wareHouse/nuclearScale/saveForm.vue
@@ -88,7 +88,7 @@
              <text class="item-one">核磅重量</text>
            </view>
            <view class="packing-registration-param-item-right">
              <u-input class="item-one item-two" v-model="form.name" />
              <u-input class="item-one item-two" v-model="form.verificationWeight" />
            </view>
          </view>
          <view class="packing-registration-param-item param-extra">
@@ -138,7 +138,7 @@
  },
  methods: {
    confirm() {
      if (!this.form.outerDiameter) {
      if (!this.form.verificationWeight) {
        this.$u.toast("请输入核磅重量");
        this.$refs.uModal.clearLoading(); // 清除加载状态
        return;
@@ -170,7 +170,7 @@
      //磅差计算:核榜-叉车盘-毛重
      Number(this.form.h);
      const magnetic =
        Number(this.form.h) - Number(this.form.children) - Number(this.form.m);
        Number(this.form.verificationWeight) - Number(this.form.voltage) - Number(this.form.reelWeight);
      uni.showModal({
        title: "提示",
        content: "磅差为:" + magnetic,