<script lang="ts" setup>
|
import request from "@/utils/request"
|
import deepClone from "@/utils/deepClone"
|
import {ElMessage} from "element-plus"
|
import {computed, onMounted, ref} from "vue"
|
import {useRoute, useRouter} from "vue-router"
|
import useUserInfo from "@/stores/userInfo"
|
import GlassType from "@/components/sd/product/GlassType.vue"
|
import useProductGlassTypeStore from "@/stores/sd/product/productGlassType"
|
import {useI18n} from "vue-i18n";
|
import useUserInfoStore from "@/stores/userInfo";
|
|
const { t } = useI18n()
|
const router = useRouter()
|
const route = useRoute()
|
const value = ref('')
|
const userStore = useUserInfoStore()
|
|
let BasicData = ref([])
|
let isDisabled = ref(false)
|
|
let ruleForm = ref({
|
id:0,
|
inventoryArea: null,
|
glassShelfNumber:null,
|
glassShelfName: null,
|
quantity: null,
|
price: null,
|
unit: null,
|
maxWeight: null,
|
maxWidth: null,
|
maxHeight: null,
|
remarks: null,
|
})
|
|
|
const resetForm = () => {
|
ruleForm.value.glassShelfName=null
|
ruleForm.value.quantity=null
|
ruleForm.value.price=null
|
ruleForm.value.unit=null
|
ruleForm.value.maxWeight=null
|
ruleForm.value.maxWidth=null
|
ruleForm.value.maxHeight=null
|
ruleForm.value.remarks=null
|
}
|
|
//定义接收加载表头下拉数据
|
const titleSelectJson = ref({
|
inventoryArea:""
|
})
|
|
onMounted(async()=>{
|
await initOrder()
|
})
|
|
const initOrder = async ()=> {
|
await request.get(`/BasicWarehouse/BasicWarehouseTypes/` + t('productStock.inventoryArea')).then((res) => {
|
|
if (res.code == 200) {
|
titleSelectJson.value = deepClone(res.data)
|
ruleForm.value.inventoryArea = titleSelectJson.value.region[0].operateTypeName
|
|
} else {
|
ElMessage.warning(res.msg)
|
}
|
})
|
}
|
|
|
const submitForm = () => {
|
if(ruleForm.value.id==0&&(ruleForm.value.inventoryArea==null||ruleForm.value.inventoryArea=='')){
|
ElMessage.warning(t('finishedGlassShelf.msg.errorNotNull1'))
|
return
|
}
|
if(ruleForm.value.glassShelfName==null||ruleForm.value.glassShelfName==''){
|
ElMessage.warning(t('finishedGlassShelf.msg.errorNotNull2'))
|
return
|
}
|
if(ruleForm.value.id==0&&(ruleForm.value.quantity==null||ruleForm.value.quantity=='')){
|
ElMessage.warning(t('finishedGlassShelf.msg.errorNotNull3'))
|
return
|
}
|
if(ruleForm.value.price==null||ruleForm.value.price==''){
|
ElMessage.warning(t('finishedGlassShelf.msg.errorNotNull4'))
|
return
|
}
|
if(ruleForm.value.unit==null||ruleForm.value.unit==''){
|
ElMessage.warning(t('finishedGlassShelf.msg.errorNotNull5'))
|
return
|
}
|
if(ruleForm.value.maxWeight==null||ruleForm.value.maxWeight==''){
|
ElMessage.warning(t('finishedGlassShelf.msg.errorNotNull6'))
|
return
|
}
|
if(ruleForm.value.maxWidth==null||ruleForm.value.maxWidth==''){
|
ElMessage.warning(t('finishedGlassShelf.msg.errorNotNull7'))
|
return
|
}
|
if(ruleForm.value.maxHeight==null||ruleForm.value.maxHeight==''){
|
ElMessage.warning(t('finishedGlassShelf.msg.errorNotNull8'))
|
return
|
}
|
let filterData=ref({
|
title:ruleForm.value,
|
userName:userStore.user.userName,
|
userId:userStore.user.userId,
|
inventoryArea:ruleForm.value.inventoryArea,
|
quantity:ruleForm.value.quantity,
|
})
|
|
request.post("/finishedGlassShelf/saveFinishedGlassShelf", filterData.value).then((res) => {
|
if(res.code==200 && res.data==="true"){
|
resetForm()
|
ElMessage.success(t('basicData.msg.saveSuccess'))
|
}else{
|
ElMessage.warning(t('basicData.msg.saveFail'))
|
}
|
}).catch((err)=>{
|
ElMessage.error(t('basicData.msg.ServerConnectionError'))
|
router.push("/login")
|
})
|
|
}
|
|
|
//获取传过来的数据进行判断
|
const str = route.query.id
|
if (typeof str != 'undefined' && str != null && str !== '' && str !== '\n' && str !== '\r'){
|
ruleForm.value.id = Number(str)
|
|
request.post(`/finishedGlassShelf/getSelectFinishedGlassShelfInformationById/${ruleForm.value.id}`).then((res) => {
|
if(res.code==200){
|
ruleForm.value=deepClone(res.data.data)
|
isDisabled=true
|
}else{
|
ElMessage.warning(res.msg)
|
router.push("/login")
|
}
|
})
|
}
|
|
|
|
</script>
|
<template>
|
|
<div class="center-box">
|
<el-card class="form-card">
|
<el-form size="medium" >
|
<el-divider ></el-divider> <!-- 添加分隔线 -->
|
|
<el-row gutter="20">
|
<el-col :span="12">
|
<div class="form-item">
|
<label class="form-label">{{ $t('productStock.inventoryArea') }}:</label>
|
<el-select
|
v-model="ruleForm.inventoryArea"
|
:disabled="isDisabled"
|
clearable
|
placeholder=""
|
class="form-control"
|
>
|
<el-option
|
v-for="item in titleSelectJson['region']"
|
:key="item.id"
|
:label="item.operateTypeName"
|
:value="item.operateTypeName"
|
/>
|
</el-select>
|
</div>
|
</el-col>
|
<el-col :span="12">
|
<div class="form-item">
|
<label class="form-label">{{ $t('finishedGlassShelf.glassShelfNumber') }}:</label>
|
<el-input
|
disabled
|
v-model.trim="ruleForm.glassShelfNumber"
|
class="form-control"
|
/>
|
</div>
|
</el-col>
|
</el-row>
|
<el-divider></el-divider>
|
|
<el-row gutter="20">
|
<el-col :span="12">
|
<div class="form-item">
|
<label class="form-label">{{ $t('finishedGlassShelf.glassShelfName') }}:</label>
|
<el-input
|
v-model.trim="ruleForm.glassShelfName"
|
:placeholder="$t('ingredients.pleaseEnterData')"
|
class="form-control"
|
/>
|
</div>
|
</el-col>
|
<el-col :span="12">
|
<div class="form-item">
|
<label class="form-label">{{ $t('order.quantity') }}:</label>
|
<el-input
|
:disabled="isDisabled"
|
v-model.trim="ruleForm.quantity"
|
:placeholder="$t('ingredients.pleaseEnterData')"
|
class="form-control"
|
/>
|
</div>
|
</el-col>
|
</el-row>
|
<el-divider></el-divider>
|
|
<el-row gutter="20">
|
<el-col :span="12">
|
<div class="form-item">
|
<label class="form-label">{{ $t('order.price') }}:</label>
|
<el-input
|
v-model.trim="ruleForm.price"
|
:placeholder="$t('ingredients.pleaseEnterData')"
|
class="form-control"
|
/>
|
</div>
|
</el-col>
|
<el-col :span="12">
|
<div class="form-item">
|
<label class="form-label">{{ $t('ingredients.unit') }}:</label>
|
<el-input
|
v-model.trim="ruleForm.unit"
|
:placeholder="$t('ingredients.pleaseEnterData')"
|
class="form-control"
|
/>
|
</div>
|
</el-col>
|
</el-row>
|
<el-divider></el-divider>
|
|
<el-row gutter="20">
|
<el-col :span="12">
|
<div class="form-item">
|
<label class="form-label">{{ $t('finishedGlassShelf.maxWidth') }}(mm):</label>
|
<el-input
|
v-model.trim="ruleForm.maxWidth"
|
:placeholder="$t('ingredients.pleaseEnterData')"
|
class="form-control"
|
/>
|
</div>
|
</el-col>
|
<el-col :span="12">
|
<div class="form-item">
|
<label class="form-label">{{ $t('finishedGlassShelf.maxHeight') }}(mm):</label>
|
<el-input
|
v-model.trim="ruleForm.maxHeight"
|
:placeholder="$t('ingredients.pleaseEnterData')"
|
class="form-control"
|
/>
|
</div>
|
</el-col>
|
</el-row>
|
<el-divider></el-divider>
|
|
<el-row gutter="20">
|
<el-col :span="12">
|
<div class="form-item">
|
<label class="form-label">{{ $t('finishedGlassShelf.maxWeight') }}(kg):</label>
|
<el-input
|
v-model.trim="ruleForm.maxWeight"
|
:placeholder="$t('ingredients.pleaseEnterData')"
|
class="form-control"
|
/>
|
</div>
|
</el-col>
|
<el-col :span="12">
|
<div class="form-item">
|
<label class="form-label">{{ $t('basicData.remarks') }}:</label>
|
<el-input
|
v-model="ruleForm.remarks"
|
:placeholder="$t('ingredients.pleaseEnterData')"
|
class="form-control"
|
/>
|
</div>
|
</el-col>
|
</el-row>
|
<el-divider></el-divider>
|
|
<el-row gutter="20" justify="center">
|
<el-col span="10">
|
<el-button
|
type="primary"
|
@click="resetForm"
|
class="form-button"
|
>
|
{{ $t('basicData.empty') }}
|
</el-button>
|
</el-col>
|
<el-col span="10">
|
<el-button
|
type="primary"
|
@click="submitForm"
|
class="form-button"
|
>
|
{{ $t('basicData.save') }}
|
</el-button>
|
</el-col>
|
</el-row>
|
</el-form>
|
</el-card>
|
</div>
|
|
</template>
|
<style>
|
.centered-box {
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
height: 100vh;
|
}
|
|
.form-card {
|
width: 1000px;
|
padding: 30px 30px;
|
}
|
.button-row {
|
display: flex;
|
justify-content: center;
|
margin-top: 20px;
|
}
|
.form-item {
|
display: flex;
|
align-items: center;
|
min-height: 40px; /* 统一行高 */
|
}
|
|
.form-label {
|
width: 120px; /* 固定标签宽度,确保对齐 */
|
text-align: left;
|
padding-right: 15px;
|
box-sizing: border-box;
|
font-weight: 500;
|
}
|
|
.form-control {
|
width: 160px; /* 输入框自适应剩余宽度 */
|
height: 30px;
|
}
|
|
</style>
|