基质喷涂
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

291 lines
8.1 KiB

<template>
<main class="spurt_print">
<div class="spurt_print_btn ml-[3rem]">
<el-button type="primary" @click='addCraft'>新增工艺</el-button>
<el-button @click="onEdit">编辑</el-button>
<el-button @click="onDel">删除</el-button>
<el-input
class="ml-[20px]"
v-model="searchForm.matrixCraftName"
style="width: 240px"
placeholder="工艺名称"
clearable
/>
<el-select
v-model="searchForm.matrixId"
placeholder="选择基质"
no-data-text="无数据"
clearable
style="width: 120px">
<el-option
v-for="item in settingStore.matrixList"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
<el-button @click="getCraftList">搜索</el-button>
</div>
<div class="w-[90vw] ml-[2rem] mt-[2rem] h-[70vh] craft_table">
<el-table empty-text="无数据" :data="tableData" stripe style="width: 100%" ref="craftTableRef" v-loading="loading" >
<el-table-column type="selection" width="55" />
<el-table-column prop="matrixName" label="基质名称" width="100" />
<el-table-column prop="name" label="工艺名称"/>
<el-table-column prop="routeType" label="喷涂路线" width="100">
<template v-slot="scope">
<img v-if="scope.row.routeType === 1" :src="route_h" width="20px" height="20px" alt="icon"/>
<img v-else :src="route_v" width="20px" height="20px" alt="icon"/>
</template>
</el-table-column>
<el-table-column prop="height" label="喷涂高度" width="100" />
<el-table-column prop="nitrogenFlowVelocity" label="氮气流速" width="100" />
<el-table-column prop="nitrogenAirPressure" label="氮气气压" width="100" />
<el-table-column prop="matrixFlowVelocity" label="基质流速" width="100" />
<el-table-column prop="voltage" label="电压" width="100" />
<el-table-column prop="movementSpeed" label="移速" width="100" />
<el-table-column prop="space" label="行间距" width="100" />
</el-table>
</div>
</main>
<footer class="footer w-[93vw]">
<el-pagination background layout="prev, pager, next" :total="total" />
</footer>
<el-dialog v-model="sprayVisible">
<div>
<div class="mt-[10px]">
<SprayParam :sprayParam='defaultSprayData' @save="onSaveCraft">
<span class="self-center text-right text-primary font-medium">基质名称</span>
<el-select
v-model="defaultSprayData.matrixId"
placeholder="选择"
no-data-text="无数据"
style="width: 120px"
@change="onMatrixChange">
<el-option
v-for="item in settingStore.matrixList"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
<span class="self-center text-right text-primary font-medium"></span>
<span class="self-center text-right text-primary font-medium">工艺名称</span>
<input
type="text"
v-model.number="defaultSprayData.name"
class="border-none outline-none h-[34px] bg-[#E8ECF7] text-primary font-medium rounded-md text-lg text-center" />
<span class="self-center text-right text-primary font-medium"></span>
</SprayParam>
</div>
</div>
</el-dialog>
</template>
<script lang="ts" setup>
import { ref, watch, onMounted } from 'vue'
import { getList, createCraft, updateCraft, delCraft} from '@/services/matrix/craft'
import { useSettingStore } from '@/stores/setting'
import SprayParam from '@/components/SprayParam.vue'
import type { CraftItem } from "@/services/matrix/type";
import type { WorkType } from "@/services/globalCmd/cmdTypes";
import { ElMessage, ElMessageBox } from "element-plus";
import route_h from "@/assets/route_horizontal.png";
import route_v from "@/assets/route_vertical.png";
import type { MatrixItem } from '../matrixManage/type';
let total = ref(0)
const settingStore = useSettingStore()
let sprayVisible = ref(false)
let tableData = ref<MatrixItem[]>([])
let operType = ref('add')
let loading = ref(false)
const searchForm = ref({
matrixCraftName:undefined,
matrixId:undefined,
})
const defaultCraft: CraftItem = {
id: 1,
name: '',
matrixId: 0,
routeType: 1,
space: 0,
nitrogenFlowVelocity: 0,
nitrogenAirPressure: 0,
matrixFlowVelocity: 0,
voltage: 0,
needPower: false,
height: 0,
movementSpeed: 0,
position: [],
};
const defaultSprayData = ref<CraftItem>(defaultCraft);
watch(()=>settingStore.matrixList, (newVal)=>{
if(newVal && newVal.length){
onMatrixChange(newVal[0].id)
}else{
onMatrixChange(null)
}
})
onMounted(()=>{
let matrixList = settingStore.matrixList
if(matrixList && matrixList.length){
onMatrixChange(matrixList[0].id)
}else{
onMatrixChange(null)
}
getCraftList()
})
//工艺列表
const getCraftList = () => {
const params = {
pageNum:1,
pageSize:10,
...searchForm.value
}
loading.value = true;
getList(params).then((res)=>{
let list = res.data.list
settingStore.setMatrixCraftList(list)
tableData.value = list
total.value = res.data.total
}).finally(()=>{
loading.value = false;
})
}
const addCraft = () => {
sprayVisible.value = true;
operType.value = 'add'
}
const craftTableRef = ref()
const onEdit = () => {
const selectRows = craftTableRef.value.getSelectionRows()
if(selectRows.length !== 1){
ElMessage.error('请选择一条数据进行编辑')
return;
}
const sel = selectRows[0]
operType.value = 'edit'
defaultSprayData.value = sel
sprayVisible.value = true;
}
const onDel = () => {
const selectRows = craftTableRef.value.getSelectionRows() as CraftItem[]
if(!selectRows.length){
ElMessage.error('请选择要删除的数据')
return;
}
const ids = selectRows.map(item => item.id)
ElMessageBox.confirm('确认删除此条数据吗?','提示',{
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}).then(()=>{
delCraft(ids.join(',')).then(res => {
if(res.success){
ElMessage.success("删除成功")
getCraftList()
}else{
ElMessage.error(res.msg)
}
})
})
}
const onSaveCraft = (craftData:WorkType) => {
//校验必填
const {
routeType,
space,
nitrogenFlowVelocity,
nitrogenAirPressure,
matrixFlowVelocity,
voltage,
height,
movementSpeed,
position,
} = craftData;
if(!defaultSprayData.value.matrixId){
ElMessage.error('请选择基质名称')
return;
}
if(!defaultSprayData.value.name){
ElMessage.error('请输入工艺名称')
return;
}
if(!routeType){
ElMessage.error('请选择喷涂 ')
return;
}
if(!movementSpeed){
ElMessage.error('请输入移动速度 ')
return;
}
if(operType.value === 'add'){
//@ts-ignore
createCraft(craftData).then(res=>{
if(res.success){
ElMessage.success('新增成功')
getCraftList()
sprayVisible.value = false;
}
})
}else if(operType.value === 'edit'){
//@ts-ignore
updateCraft(craftData).then(res=>{
if(res.success){
ElMessage.success('编辑成功')
getCraftList()
sprayVisible.value = false;
}
})
}
}
function onMatrixChange(val:number|null) {
defaultSprayData.value.matrixId = val
}
</script>
<style lang="scss" scoped>
.el-button--primary{
background: linear-gradient(90deg, #0657c0 24%, #096ae0 101%);;
}
.spurt_print{
height: 75vh;
.spurt_print_btn{
margin-top: 2rem;
}
}
.footer{
display: flex;
justify-content: end;
position: relative;
.pagination{
position: absolute;
bottom: 0;
right: 3rem;
}
}
.craft_table{
height: 65vh;
background: #ffffff;
}
</style>