guoyujie
2025-12-17 1f5cb7e48ca586cd7a3122db32b9bdf42179184f
northglass-erp-client/erp-customer-client/src/views/order/OrderInquiryView.vue
@@ -26,13 +26,14 @@
const dataArr=ref({
  id:0,
  productId:0,
  product:"",
  width:"",
  height:"",
  workmanship:"",
  price:"",
  quantity:"",
  money:"",
  price:null,
  quantity:null,
  money:null,
  area:""
})
@@ -40,21 +41,39 @@
const changeDate =  ()=>{
  if(product.value==undefined||product.value==""){
    ElMessage.warning('请选择产品')
    return
  const validateFields = [
    { value: product.value, message: '请选择产品' },
    { value: width.value, message: '请输入宽度' },
    { value: height.value, message: '请输入高度' },
    { value: quantity.value, message: '请输入数量' }
  ];
  for (const { value, message } of validateFields) {
    if (value === undefined || value === '') {
      ElMessage.warning(message);
      return;
    }
  }
  if(width.value==undefined||width.value==""){
    ElMessage.warning('请输入宽度')
    return
  }
  if(height.value==undefined||height.value==""){
    ElMessage.warning('请输入高度')
    return
  }
  if(quantity.value==undefined||quantity.value==""){
    ElMessage.warning('请输入数量')
    return
// 2. 数字校验(针对 width、height、quantity)
// 定义数字校验规则:整数或小数(可正负,根据需求调整)
  const isNumber = (val) => {
    // 正则:允许整数
    return /^\d+$/.test(String(val).trim());
  };
// 定义数字校验的字段和提示
  const numberFields = [
    { value: width.value, message: '宽度必须是正整数' },
    { value: height.value, message: '高度必须是正整数' },
    { value: quantity.value, message: '数量必须是正整数' }
  ];
  for (const { value, message } of numberFields) {
    if (!isNumber(value)) {
      ElMessage.warning(message);
      return;
    }
  }
  const productId=product.value.split("/")[0]
@@ -62,10 +81,11 @@
    if (res.code === 200 ) {
      if(res.data.money!==0){
        dataArr.value.id=historyData.value.length+1
        dataArr.value.productId=parseInt(product.value.split("/")[0])
        dataArr.value.product=product.value.split("/")[1]
        dataArr.value.width=width.value
        dataArr.value.height=height.value
        dataArr.value.quantity=quantity.value
        dataArr.value.width=parseFloat(width.value)
        dataArr.value.height=parseFloat(height.value)
        dataArr.value.quantity=parseInt(quantity.value )
        const rawResult = width.value * height.value * quantity.value / 1000000;
        dataArr.value.area=parseFloat(rawResult.toFixed(2))
        dataArr.value.money=parseFloat(dataArr.value.area*res.data.money).toFixed(2)
@@ -75,7 +95,8 @@
        const newData = {
          id: dataArr.value.id,
          product: dataArr.value.product,
          productId:dataArr.value.productId,
          productName: dataArr.value.product,
          width: dataArr.value.width,
          height: dataArr.value.height,
          quantity:dataArr.value.quantity,
@@ -85,9 +106,20 @@
          price: dataArr.value.price
        };
        historyData.value.push(newData)
        ElMessage.success("查询成功")
      }else{
        ElMessage.info("该产品价格未上传,请联系")
        dataArr.value.id=0
        dataArr.value.productId=0
        dataArr.value.product=""
        dataArr.value.width=""
        dataArr.value.height=""
        dataArr.value.quantity=""
        dataArr.value.area=""
        dataArr.value.money=""
        dataArr.value.workmanship=""
        dataArr.value.price=""
      }
    }
@@ -104,7 +136,7 @@
  // 确保数据格式正确
  const validData = historyData.value.map(item => ({
    id: item.id,
    product: item.product,
    product: item.productName,
    width: item.width,
    height: item.height,
    quantity: item.quantity,
@@ -127,14 +159,32 @@
  dialogVisible.value = true;
};
const remarks=ref("")
const saveOrder = () => {
  if (historyData.value.length === 0) {
    ElMessage.info('请重新选择数据');
    return;
  }
  ElMessage.success('下单成功');
  dialogVisible.value = false;
  let flowData = ref({
    data: historyData.value,
    customerId:user.user.customerId,
    customerName:user.user.customerName,
    remarks:remarks.value
  })
  request.post("/customerOrder/saveCustomerOrder", flowData.value).then((res) => {
    if(res.code==200 && res.data==="true"){
      ElMessage.success('下单成功');
      dialogVisible.value = false;
      window.location.reload();
    }
  }).catch((err)=>{
    ElMessage.error('下单失败')
  }).finally(()=>{
  })
};
const xGrid = ref()
@@ -227,11 +277,11 @@
                       :value="item.id+'/'+item.productName"
            />
          </el-select>
          <el-input  v-model.trim="width" class="input" :placeholder="$t('宽度')"></el-input>
          <el-input  v-model="width" class="input" :placeholder="$t('宽度')"></el-input>
          <el-input  v-model="height" class="input" :placeholder="$t('高度')"></el-input>
          <el-input  v-model="quantity" class="input" :placeholder="$t('数量')"></el-input>
          <el-input  v-model="quantity" class="input"  :placeholder="$t('数量')"></el-input>
          <el-button  class="button" type="primary" @click="changeDate">查询</el-button>
        </div>
@@ -302,7 +352,11 @@
          </el-popconfirm>
        </template>
      </vxe-grid>
      <el-input
          v-model="remarks"
          type="textarea"
          :autosize="{ minRows: 2, maxRows: 20 }"
      />
    </el-dialog>
  </div>