Browse Source

完善喷涂设置页

master
zhangjiming 5 months ago
parent
commit
68141f9c06
  1. 2
      src/components/Spray.vue
  2. 2
      src/services/globalCmd/cmdTypes.ts
  3. 17
      src/services/matrix/craft.ts
  4. 114
      src/views/SprayView.vue

2
src/components/Spray.vue

@ -60,7 +60,7 @@ const yEndPx = props.height - props.bottomPadding;
const yStepPx = (props.height - props.topPadding - props.bottomPadding) / props.rows;
const yUnitPx = yStepPx / props.cellNum;
let selectArea: GridArea = { xStart: 5, xEnd: 15, yStart: 5, yEnd: 15 };
let selectArea: GridArea = { xStart: 8, xEnd: 16, yStart: 8, yEnd: 16 };
const touchPoint: Point2D = { x: 0, y: 0 };
let touchedElem: TouchElem = "None";

2
src/services/globalCmd/cmdTypes.ts

@ -12,7 +12,7 @@ export type SyringeType = {
time: number;
};
};
type PositionType = {
export type PositionType = {
x1: number;
y1: number;
x2: number;

17
src/services/matrix/craft.ts

@ -1,3 +1,4 @@
import type { WorkType } from "../globalCmd/cmdTypes";
import httpRequest, { type BaseResponse } from "../httpRequest";
import type { CraftItem } from "./type";
@ -16,3 +17,19 @@ export function getListByMatrixId(params: { matrixId: number }) {
method: "GET",
});
}
export function createCraft(params: CraftItem) {
return httpRequest<BaseResponse<CraftItem[]>>({
url: "/api/matrixCraft/add",
params,
method: "POST",
});
}
export function updateCraft(params: CraftItem) {
return httpRequest<BaseResponse<CraftItem[]>>({
url: "/api/matrixCraft",
params,
method: "PUT",
});
}

114
src/views/SprayView.vue

@ -7,7 +7,7 @@
<section class="flex items-center gap-3 px-4 text-base ml-auto">
<div class="flex items-center">
<span class="self-center text-right text-primary font-medium mr-3">选择基质</span>
<el-select v-model="selectMatrix" placeholder="Select" style="width: 120px" @change="onMatrixChange">
<el-select v-model="selectMatrixId" placeholder="Select" style="width: 120px" @change="onMatrixChange">
<el-option
v-for="item in settingStore.matrixList"
:key="item.id"
@ -19,7 +19,7 @@
<span class="self-center text-right text-primary font-medium mr-3">工艺</span>
<el-select
:disabled="craftList.length === 0"
v-model="selectCraft"
v-model="selectCraftId"
placeholder="Select"
style="width: 120px"
@change="onCraftChange">
@ -52,7 +52,7 @@
:columns="1"
:rows="3"
:cell-num="25"
@select-area="onSelectArea" />
@select-area="area => onSelectArea(area, 0)" />
<Spray
:width="210"
:height="610"
@ -63,7 +63,7 @@
:columns="1"
:rows="3"
:cell-num="25"
@select-area="onSelectArea" />
@select-area="area => onSelectArea(area, 1)" />
<Spray
:width="210"
:height="610"
@ -74,7 +74,7 @@
:columns="1"
:rows="3"
:cell-num="25"
@select-area="onSelectArea" />
@select-area="area => onSelectArea(area, 2)" />
<Spray
:width="210"
:height="610"
@ -85,7 +85,7 @@
:columns="1"
:rows="3"
:cell-num="25"
@select-area="onSelectArea" />
@select-area="area => onSelectArea(area, 3)" />
</section>
<van-checkbox-group
@ -95,14 +95,13 @@
icon-size="28px"
direction="horizontal"
class="flex justify-around mt-3 w-[848px]">
<van-checkbox name="a"></van-checkbox>
<van-checkbox name="b"></van-checkbox>
<van-checkbox name="c"></van-checkbox>
<van-checkbox name="d"></van-checkbox>
<van-checkbox name="0"></van-checkbox>
<van-checkbox name="1"></van-checkbox>
<van-checkbox name="2"></van-checkbox>
<van-checkbox name="3"></van-checkbox>
</van-checkbox-group>
</section>
</div>
<!-- <SprayParam :sprayParam="selectCraft" @save="updateSprayParam" /> -->
</div>
</template>
@ -110,12 +109,11 @@
import Spray, { type GridArea } from "@/components/Spray.vue";
import { onMounted, ref } from "vue";
import { startSpray, stopWork } from "@/services/globalCmd/globalCmd";
import type { WorkType } from "@/services/globalCmd/cmdTypes";
import { checkSprayParamValid, type PositionType, type WorkType } from "@/services/globalCmd/cmdTypes";
import { ElMessage } from "element-plus";
import type { MatrixItem } from "./matrixManage/type";
import { useSettingStore } from "@/stores/setting";
import type { CraftItem } from "@/services/matrix/type";
import { getListByMatrixId } from "@/services/matrix/craft";
import { createCraft, getListByMatrixId, updateCraft } from "@/services/matrix/craft";
import SprayParam from "@/components/SprayParam.vue";
const defaultCraft: Partial<CraftItem> = {
@ -136,15 +134,21 @@ const defaultCraft: Partial<CraftItem> = {
const settingStore = useSettingStore();
const selectMatrix = ref<MatrixItem>(
settingStore.matrixList.length > 0 ? settingStore.matrixList[0] : ({ id: 0, name: "未知" } as MatrixItem)
);
const selectMatrixId = ref<number>(settingStore.matrixList.length > 0 ? settingStore.matrixList[0].id : 0);
const craftList = ref<CraftItem[]>([]);
const selectCraftId = ref<number>(1);
const selectCraft = ref<Partial<CraftItem>>(defaultCraft);
const selectedArea = ref<GridArea>();
const checked = ref(["a", "b"]);
const selectedArea = ref<GridArea[]>([
{ xStart: 8, yStart: 8, xEnd: 16, yEnd: 16 },
{ xStart: 8, yStart: 8, xEnd: 16, yEnd: 16 },
{ xStart: 8, yStart: 8, xEnd: 16, yEnd: 16 },
{ xStart: 8, yStart: 8, xEnd: 16, yEnd: 16 },
]);
const checked = ref(["0"]);
onMounted(() => {
if (settingStore.matrixList.length > 0) {
@ -152,17 +156,20 @@ onMounted(() => {
}
});
function onSelectArea(area: GridArea) {
selectedArea.value = area;
function onSelectArea(area: GridArea, index: number) {
selectedArea.value[index] = area;
}
function onMatrixChange(val: number) {
selectMatrixId.value = val;
getListByMatrixId({ matrixId: val }).then(res => {
if (res.success) {
craftList.value = res.data || [];
if (res.data.length > 0) {
selectCraftId.value = res.data[0].id;
selectCraft.value = { ...res.data[0], needPower: res.data[0].voltage > 0 };
} else {
selectCraftId.value = 0;
selectCraft.value = defaultCraft;
}
} else {
@ -173,25 +180,40 @@ function onMatrixChange(val: number) {
function onCraftChange(val: number) {
const craft = craftList.value.find(item => item.id === val);
selectCraft.value = craft || defaultCraft;
selectCraft.value = { ...craft, needPower: craft!.voltage > 0 };
}
function mapAreaToPosition() {
return checked.value.map(index => {
const idx = +index;
const pos: PositionType = {
x1: selectedArea.value[idx].xStart,
y1: selectedArea.value[idx].yStart,
x2: selectedArea.value[idx].xEnd,
y2: selectedArea.value[idx].yEnd,
index: idx,
};
return pos;
});
}
function onStartSpray() {
selectCraft.value.position = [
{
x1: selectedArea.value?.xStart || 10,
y1: selectedArea.value?.yStart || 10,
x2: selectedArea.value?.xEnd || 20,
y2: selectedArea.value?.yEnd || 20,
index: 0,
},
];
const params = selectCraft.value.needPower ? selectCraft : { ...selectCraft, voltage: 0 };
if (checked.value.length === 0) {
ElMessage.error("请至少选择一个玻片");
return;
}
selectCraft.value.position = mapAreaToPosition();
const params = selectCraft.value.needPower ? selectCraft.value : { ...selectCraft.value, voltage: 0 };
console.log(params);
//TODO
const check = checkSprayParamValid(params);
if (!check[0]) {
ElMessage.error(check[1]);
return;
}
startSpray({
...(selectCraft.value as CraftItem),
matrixId: selectMatrix.value.id,
...(params as CraftItem),
matrixId: selectMatrixId.value,
matrixCraftId: selectCraft.value.id || 0,
}).then(res => {
if (res.success) {
@ -212,7 +234,27 @@ function onStopSpray() {
function updateSprayParam(p: WorkType) {
console.log(p);
selectCraft.value = p as CraftItem;
const params = !!p.needPower ? p : { ...p, voltage: 0 };
if ((params as CraftItem).id === 0) {
//
const p = { ...(params as CraftItem), matrixId: selectMatrixId.value };
createCraft(p).then(res => {
if (res.success) {
onMatrixChange(selectMatrixId.value);
} else {
ElMessage.error(res.msg);
}
});
} else {
//
updateCraft(params as CraftItem).then(res => {
if (res.success) {
selectCraft.value = params as CraftItem;
} else {
ElMessage.error(res.msg);
}
});
}
}
</script>

Loading…
Cancel
Save