guoyuji
2024-02-27 37532f5802eae207940b8bd9812ee0b4ca308d65
north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue
@@ -2,8 +2,14 @@
import request from "@/utils/request"
import deepClone from "@/utils/deepClone"
import {ElMessage} from "element-plus"
import {computed, ref} from "vue"
import {computed, onMounted, ref} from "vue"
import  useUserInfo from "@/stores/userInfo"
import {useRouter,useRoute} from "vue-router"
import GlassType from "@/components/sd/product/GlassType.vue"
import useProductGlassTypeStore from "@/stores/sd/product/productGlassType"
const router = useRouter()
const route = useRoute()
let  userInfo = useUserInfo()
const disposeList = $ref([
  '彩釉',
@@ -56,8 +62,17 @@
let productDetailList = ref([])
let productTotal = ref({
  productName:'',
  query:'',
  remarks:'',
  thickness:'',
  totalThickness:'',
  typeId:'',
  creator:userInfo.user.userName
})
let productGlassTypeStore = useProductGlassTypeStore()
productGlassTypeStore.GlassType=['','']
//页面加载请求
request.get(`/basicData/BasicDataByType/product`).then((res) => {
  if(res.code==200){
@@ -67,6 +82,27 @@
  }
})
onMounted(()=>{
  const str = route.query.id
  if (typeof str === 'undefined' || str === null || str === '' || str === '\n' || str === '\r'){
    return
  }
  request.post(`/product/selectProductById/${str}`).then((res) => {
    if(res.code==200){
      productDetailList.value =  res.data.detail
      productDetailList.value.forEach((item)=>{
        item.separation = JSON.parse(item.separation)
      })
      productTotal.value = res.data.title
      //BasicData.value = res.data
    }else{
      ElMessage.warning(res.msg)
    }
  })
})
const saveProduct = () => {
  if(productDetailList.value.length===0){
    ElMessage.warning("请添加产品详情")
@@ -74,7 +110,12 @@
  }else if(productDetailList.value[productDetailList.value.length-1].detailType!=='glass'){
    ElMessage.warning("产品详情最后一条不是玻璃,请完善")
    return
  }else if(productGlassTypeStore.GlassType[1]==='' || productGlassTypeStore.GlassType[1]===null){
    ElMessage.warning("请选择产品类别")
    return
  }
  productTotal.value.typeId =  productGlassTypeStore.GlassType[1]
  let productName = ""
  productDetailList.value.forEach(item =>{
    switch(item.detailType){
@@ -83,10 +124,12 @@
        break
      }
      case 'Interlayer' :{
        productName+='+'+item.detail
        productName+='+'+item.detail+"+"
        break
      }
      case 'hollow' :{
        productName+='*'+item.detail
        productName+='*'+item.detail+"*"
        break
      }
    }
  })
@@ -97,11 +140,24 @@
  }
  request.post(`/product/saveProduct`,product).then((res) =>{
    if(res.code==200){
      ElMessage.success(res.msg)
      ElMessage.success("创建成功")
      router.push("/main/product/selectProduct")
    }
  })
}
//审核产品状态
const updateProductState =  (state) => {
  request.post(`/product/updateProductStateById/${productTotal.value.id}/${state}`).then((res) =>{
    if(res.code==200){
      ElMessage.success("操作成功")
      //router.go(0)
      router.push({path:'/main/product/createProduct',query:{id:productTotal.value.id,random:Math.random()}})
    }else{
      ElMessage.error("操作失败")
    }
  })
}
const reset = () => {
  processChecked.value=[]
@@ -252,7 +308,9 @@
  index:null
})
const updateGlass = (index) => {
  stuff.value = productDetailList.value[index].separation
  Object.keys(stuff.value).forEach((item)=>{
    stuff.value[item]=productDetailList.value[index].separation[item]
  })
  processChecked.value = productDetailList.value[index].process.split("->")
  glassFlag.value.flag=false
  glassFlag.value.index=index
@@ -269,7 +327,10 @@
  index:null
})
const updateInterlayer  = (index) => {
  InterlayerBasic.value = productDetailList.value[index].separation
  Object.keys(InterlayerBasic.value).forEach((item)=>{
    InterlayerBasic.value[item]=productDetailList.value[index].separation[item]
  })
  InterlayerFlag.value.flag=false
  InterlayerFlag.value.index=index
}
@@ -285,7 +346,10 @@
  index:null
})
const updateHollow = (index) => {
  hollowBasic.value = productDetailList.value[index].separation
  Object.keys(hollowBasic.value).forEach((item)=>{
    hollowBasic.value[item]=productDetailList.value[index].separation[item]
  })
  hollowFlag.value.flag=false
  hollowFlag.value.index=index
}
@@ -304,15 +368,19 @@
        break
      }
      case 'Interlayer' :{
        productName+='+'+item.detail
        productName+='+'+item.detail+"+"
        break
      }
      case 'hollow' :{
        productName+='*'+item.detail
        productName+='*'+item.detail+"*"
        break
      }
    }
  })
  return productName
})
</script>
@@ -323,6 +391,33 @@
          boxShadow: `var(--el-box-shadow-lighter)`,
        }"
    >
      <div class="glass-dispose">
        <!--        <h5>表面处理</h5>-->
<!--        <h5>玻璃类别</h5>-->
        <div class="glass-dispose-detail">
          <glass-type   style="float: left;margin-left: -0.5rem" />
          <!--          <div v-for="n in 2" class="glass-dispose-detail-1">
                      <p style="writing-mode: vertical-rl;">
                        {{n===1?'第一面':'第二面'}}
                      </p>
                      <div class="glass-dispose-detail-list"
                           v-for="(item,index) in disposeList"
                      >
                        <el-checkbox
                            :label="item" size="large" />
                        <el-input
                            v-if="index==0 && n==1"
                            class="dispose-input"
                            size="small"
                            clearable />
                      </div>
                    </div>-->
        </div>
      </div>
      <div class="line"/>
      <div class="glass-type">
        <h5>材料属性</h5>
        <el-row :gutter="50">
@@ -384,30 +479,7 @@
          </el-col>
        </el-row>
      </div>
      <div class="line"/>
      <div class="glass-dispose">
        <h5>表面处理</h5>
        <div class="glass-dispose-detail">
          <div v-for="n in 2" class="glass-dispose-detail-1">
            <p style="writing-mode: vertical-rl;">
              {{n===1?'第一面':'第二面'}}
            </p>
            <div class="glass-dispose-detail-list"
                 v-for="(item,index) in disposeList"
            >
              <el-checkbox
                  :label="item" size="large" />
              <el-input
                  v-if="index==0 && n==1"
                  class="dispose-input"
                  size="small"
                  clearable />
            </div>
          </div>
        </div>
      </div>
      <div class="line"/>
      <div class="glass-process">
        <h5>工艺属性</h5>
@@ -590,7 +662,7 @@
                       style="margin-left: 0.5rem;text-align: center">
                快速查询:
              </el-text>
              <el-input size="small" disabled  />
              <el-input v-model="productTotal.query" size="small" disabled  />
            </div>
          </el-col>
          <el-col :span="5">
@@ -599,7 +671,7 @@
                       style="margin-left: 0.5rem;text-align: center">
                计重厚度:
              </el-text>
              <el-input size="small" disabled  />
              <el-input v-model="productTotal.thickness" size="small" disabled  />
            </div>
          </el-col>
          <el-col :span="5">
@@ -608,7 +680,7 @@
                       style="margin-left: 0.5rem;text-align: center">
                厚度:
              </el-text>
              <el-input size="small" disabled  />
              <el-input v-model="productTotal.totalThickness"  size="small" disabled  />
            </div>
          </el-col>
          <el-col :span="5">
@@ -617,7 +689,7 @@
                       style="margin-left: 0.5rem;text-align: center">
                备注:
              </el-text>
              <el-input size="small" disabled  />
              <el-input v-model="productTotal.remarks"  size="small"   />
            </div>
          </el-col>
        </el-row>
@@ -684,13 +756,33 @@
      </div>
      <el-button
          :disabled="productTotal.state===1"
          @click="saveProduct"
          style="float: right;
          margin-right: 0.5rem;"
          size="large"
          type="primary"
          round>创建</el-button>
          round>{{productTotal.id?'修改':'创建'}}</el-button>
      <el-button
          v-if="productTotal.state===0"
          @click="updateProductState(1)"
          style="float: right;
          margin-right: 0.5rem;"
          size="large"
          type="primary"
          round>审核</el-button>
      <el-button
          v-else-if="productTotal.state===1"
          @click="updateProductState(0)"
          style="float: right;
          margin-right: 0.5rem;"
          size="large"
          type="primary"
          round>反审</el-button>
    </div>
  </div>
</template>
@@ -716,7 +808,7 @@
  }
  .glass-dispose{
    width: 100%;
    height: 20%;
    height: 5%;
  }
  .glass-dispose-detail{
    margin-top: 0.5rem;