廖井涛
14 小时以前 f7a2fcdda7f1120498c5c5f75c5a99955fc54b43
north-glass-erp/northglass-erp/src/views/sd/basicData/CreateBasicData.vue
@@ -1,18 +1,22 @@
<script setup>
import request from "@/utils/request"
import {onMounted, ref, watch} from "vue";
import {onMounted, ref} from "vue";
import {useI18n} from "vue-i18n"
import {ElMessage} from "element-plus"
import {useRouter,useRoute} from "vue-router"
import {useRoute, useRouter} from "vue-router"
const { t } = useI18n()
const router = useRouter()
const route = useRoute()
let iconWidth=ref(null)
let iconHeight=ref(null)
let basic = ref({
  basicType : ['',''],
  input:'',
  nickname:''
  nickname:null,
  sort:''
})
let options=ref([
  { "label": t('orderBasicData.order'),
@@ -41,6 +45,10 @@
      {
        "label": t('orderBasicData.saleMan'),
        "value": "saleMan"
      },
      {
        "label": t('order.edgingType'),
        "value": "edgingType"
      }
    ]
  },
@@ -128,13 +136,50 @@
  if(props.rowIndex){
    basic.value.basicType[0] =  props.rowIndex.basicType
    basic.value.basicType[1] =  props.rowIndex.basicCategory
    basic.value.input =  props.rowIndex.basicName
    basic.value.nickname =  props.rowIndex.nickname
    if(basic.value.basicType[1]==="icon"){
      basic.value.input =  props.rowIndex.basicName
      if(props.rowIndex.nickname!=null){
        basic.value.nickname =  JSON.parse(props.rowIndex.nickname).data
        iconWidth.value=JSON.parse(props.rowIndex.nickname).width
        iconHeight.value=JSON.parse(props.rowIndex.nickname).height
      }else{
        basic.value.nickname =  null
        iconWidth.value=null
        iconHeight.value=null
      }
      basic.value.sort = props.rowIndex.sort
    }else{
      basic.value.input =  props.rowIndex.basicName
      basic.value.nickname =  props.rowIndex.nickname
      basic.value.sort = props.rowIndex.sort
    }
  }
})
const emit =  defineEmits(['gaveParent'])
const saveBasicData =  () =>{
  if(basic.value.basicType[1]==="hollowThickness"||basic.value.basicType[1]==="stuffThickness"||basic.value.basicType[1]==="InterlayerThickness"){
    if(!basic.value.input.includes("mm")){
      basic.value.input=basic.value.input+"mm"
    }
  }
  if(basic.value.basicType[1]==="icon"){
    const regex = /^(?:\d+|\d+\.\d)$/
    if (!regex.test(iconWidth.value)||!regex.test(iconHeight.value) ) {
      ElMessage.warning(t('basicData.msg.greater0Sec1'))
      return
    }
    let nickname=basic.value.nickname
    let data={
      width: iconWidth.value,
      height: iconHeight.value,
      data: nickname
    }
    basic.value.nickname=JSON.stringify(data)
  }
  basic.value.input=basic.value.input.trim()
  request.post(`/basicData/addBasicData`, basic.value).then(res => {
    if (res.data) {
      ElMessage.success(t('basicData.msg.saveSuccess'))
@@ -143,11 +188,32 @@
  })
}
const updateBasicData =  () =>{
  if(basic.value.basicType[1]==="hollowThickness"||basic.value.basicType[1]==="stuffThickness"||basic.value.basicType[1]==="InterlayerThickness"){
    if(!basic.value.input.includes("mm")){
      basic.value.input=basic.value.input+"mm"
    }
  }
  if(basic.value.basicType[1]==="icon"){
    const regex = /^(?:\d+|\d+\.\d)$/
    if (!regex.test(iconWidth.value)||!regex.test(iconHeight.value) ) {
      ElMessage.warning(t('basicData.msg.greater0Sec1'))
      return
    }
    let nickname=basic.value.nickname
    let data={
      width: iconWidth.value,
      height: iconHeight.value,
      data: nickname
    }
    basic.value.nickname=JSON.stringify(data)
  }
  let submitArr  = props.rowIndex
  submitArr.basicType = basic.value.basicType[0]
  submitArr.basicCategory = basic.value.basicType[1]
  submitArr.basicName = basic.value.input
  submitArr.basicName = basic.value.input.trim()
  submitArr.nickname = basic.value.nickname
  submitArr.sort = basic.value.sort
  request.post(`/basicData/updateBasicData`, submitArr).then(res => {
    if (res.data) {
      ElMessage.success(t('basicData.msg.saveSuccess'))
@@ -162,20 +228,42 @@
  ).map((item) =>item.children.filter((item) =>item.value === value[1]))
}
const changeFile = (file) => {
  const isJPG = file.raw.type === 'image/jpeg' || file.raw.type === 'image/png' ;
  const isLt2M = file.size / 1024 / 1024 < 5;
  if (!isJPG) {
    ElMessage.warning(t('orderBasicData.msg2'))
    return
  }
  if (!isLt2M) {
    ElMessage.warning(t('orderBasicData.msg1'))
    return
  }
  return new Promise((resolve, reject) => {
    let reader = new FileReader();
    reader.readAsDataURL(file.raw);
    reader.onload = (e) => {
      resolve(e.target.result);
      basic.value.nickname=e.target.result;
    };
  });
}
</script>
<template>
  <div>
    <el-row>
      <el-col :span="4">{{ $t('orderBasicData.basicType') }}:</el-col>
      <el-col :span="4">{{ $t('orderBasicData.page.searchOrderBasicData') }}:</el-col>
      <el-col :span="12">
        <el-cascader
            v-model="basic.basicType"
            @change="handleChange"
            :options="options"
            clearable
            placeholder=""
            :placeholder="$t('processCard.pleaseSelect')"
            :disabled="props.rowIndex"
        />
      </el-col>
@@ -187,9 +275,60 @@
      </el-col>
    </el-row>
    <el-row>
      <el-col :span="4">{{ $t('mainBasicData.operateType') }}:</el-col>
      <el-col :span="4">{{ $t('orderBasicData.alias') }}:</el-col>
      <el-col :span="12">
        <el-input v-model="basic.nickname"/>
        <el-input v-if="basic.basicType.length>0 && basic.basicType[1]!=='process'" v-model="basic.nickname"/>
        <el-select v-model="basic.nickname" v-else>
          <el-option  :label="$t('orderBasicData.commonProcess')" value="" />
          <el-option  :label="$t('orderBasicData.laminatingProcessA')" value="stepA" />
          <el-option  :label="$t('orderBasicData.laminatingProcessB')" value="stepB" />
          <el-option  :label="$t('orderBasicData.laminatingProcessC')" value="stepC" />
          <el-option  :label="$t('orderBasicData.laminatingProcessD')" value="stepD" />
<!--          <el-option  :label="$t('orderBasicData.laminatingProcessC')" value="stepA" />夹胶工序-->
<!--          <el-option  :label="$t('orderBasicData.laminatingProcessA')" value="stepB" />-->
<!--          <el-option  :label="$t('orderBasicData.laminatingProcessD')" value="stepC" />-->
<!--          <el-option  :label="$t('orderBasicData.laminatingProcessB')" value="stepD" />-->
        </el-select>
      </el-col>
    </el-row>
    <el-row v-if="basic.basicType.length!==0 && basic.basicType[1]==='icon'" >
      <el-col :span="4">
        {{ $t('order.width') }}:
      </el-col>
      <el-col :span="12">
        <el-input  v-model="iconWidth"/>
      </el-col>
    </el-row>
    <el-row v-if="basic.basicType.length!==0 && basic.basicType[1]==='icon'" >
      <el-col :span="4">
        {{ $t('order.height') }}:
      </el-col>
      <el-col :span="12">
        <el-input  v-model="iconHeight"/>
      </el-col>
    </el-row>
    <el-row v-if="basic.basicType.length!==0 && basic.basicType[1]==='icon'" >
      <el-col :span="4"></el-col>
      <el-col :span="12">
        <el-upload
            v-model="basic.nickname"
            :limit="1"
            :on-change="changeFile"
            class="upload-demo"
            ref="upload"
            action="https://jsonplaceholder.typicode.com/posts/"
            :file-list="fileList"
            :auto-upload="false">
          <el-button slot="trigger" size="small" type="primary" >{{ $t('orderBasicData.selectFile') }}</el-button>
          <div slot="tip" class="el-upload__tip">{{ $t('orderBasicData.msg3') }}</div>
        </el-upload>
      </el-col>
    </el-row>
    <el-row v-show="props.rowIndex">
      <el-col :span="4">{{ $t('processCard.sorting') }}:</el-col>
      <el-col :span="12">
        <el-input type="number" v-model="basic.sort"/>
      </el-col>
    </el-row>
    <el-row>