|
@@ -1,38 +1,42 @@
|
|
|
<script setup lang="ts">
|
|
|
import { ref } from "vue";
|
|
|
import titHeader from "./components/tit-header.vue";
|
|
|
+import ConfigDataAndDevice from "./components/configDataAndDevice.vue";
|
|
|
|
|
|
import { useCommonStoreHook } from "@/store";
|
|
|
import { getTestProjectList } from "@/api/project";
|
|
|
import { CheckboxValueType } from "element-plus";
|
|
|
import {
|
|
|
+ searchExcutingGlobalData,
|
|
|
searchExcutingInstrumentConfig,
|
|
|
+ searchInstrumentStatus,
|
|
|
searchTestMachineConfig,
|
|
|
searhTestType,
|
|
|
+ startExecuteProjects,
|
|
|
} from "@/api/project/excute";
|
|
|
|
|
|
const route = useRoute();
|
|
|
|
|
|
interface VersionItem {
|
|
|
- instrumentType: string;
|
|
|
- configName: string;
|
|
|
- configIp: string;
|
|
|
- zhongduan: string;
|
|
|
+ testLocation: string;
|
|
|
+ productCode: string;
|
|
|
+ testType: string;
|
|
|
}
|
|
|
|
|
|
const formLabelAlign = ref<VersionItem>({
|
|
|
- instrumentType: "",
|
|
|
- configName: "",
|
|
|
- configIp: "",
|
|
|
- zhongduan: "",
|
|
|
+ testLocation: "",
|
|
|
+ productCode: "",
|
|
|
+ testType: "",
|
|
|
});
|
|
|
+// 选择的执行终端
|
|
|
+const selectedExcutingMachine = ref<any>();
|
|
|
|
|
|
const drawer = ref(false);
|
|
|
|
|
|
-onMounted(() => {
|
|
|
- getTestProjectTopList();
|
|
|
+onMounted(async () => {
|
|
|
getAllTestTypes();
|
|
|
getExcutingMachines();
|
|
|
+ getTestProjectTopList();
|
|
|
});
|
|
|
|
|
|
const topProAllList = ref<any[]>([]);
|
|
@@ -54,12 +58,15 @@ const handletopProSelectedListChange = (value: CheckboxValueType[]) => {
|
|
|
};
|
|
|
// 获取顶部测试项目
|
|
|
const getTestProjectTopList = () => {
|
|
|
- getTestProjectList({ engineeringId: route?.params?.engineerId }).then(
|
|
|
- (result) => {
|
|
|
+ getTestProjectList({ engineeringId: route?.params?.engineerId })
|
|
|
+ .then((result) => {
|
|
|
topProAllList.value = result.data;
|
|
|
topProSelectedList.value = result.data.map((item) => item.id); // 默认选中全部
|
|
|
- }
|
|
|
- );
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ getExcutingGlobalMachines();
|
|
|
+ getExcutingGlobalData();
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
// 顶部展示的项目 是弹窗选中的项目
|
|
@@ -91,9 +98,71 @@ const testingMachines = ref<any[]>([]); // 所有routeData里面的测试仪器
|
|
|
const getExcutingGlobalMachines = async () => {
|
|
|
let res = await searchExcutingInstrumentConfig(
|
|
|
route?.params?.engineerId as string,
|
|
|
- topProSelectedList.value
|
|
|
+ topProAllList.value.map((item) => item.id)
|
|
|
);
|
|
|
testingMachines.value = res.data;
|
|
|
+ // 拿到仪器数据之后 调用接口查看仪器是否在线
|
|
|
+ // let status = await searchInstrumentStatus(testingMachines.value);
|
|
|
+};
|
|
|
+
|
|
|
+// 最下方全局数据
|
|
|
+const excutingGlobalData = ref<any[]>([]);
|
|
|
+const getExcutingGlobalData = async () => {
|
|
|
+ let res = await searchExcutingGlobalData(
|
|
|
+ route?.params?.engineerId as string,
|
|
|
+ topProAllList.value.map((item) => item.id)
|
|
|
+ );
|
|
|
+ excutingGlobalData.value = res.data;
|
|
|
+};
|
|
|
+
|
|
|
+// 配置这次执行的工程相关的数据和仪器
|
|
|
+const configDrawerVisible = ref(false);
|
|
|
+
|
|
|
+// 开始测试相关
|
|
|
+const startToRunTest = async () => {
|
|
|
+ if (!checkStartEnable()) return;
|
|
|
+
|
|
|
+ let params = {
|
|
|
+ configList: testingMachines.value,
|
|
|
+ engineeringId: route.params.engineerId,
|
|
|
+ globalDataList: excutingGlobalData.value,
|
|
|
+ projectList: topProSelectedList.value,
|
|
|
+ ...formLabelAlign.value,
|
|
|
+ executeTerminal: selectedExcutingMachine.value.id,
|
|
|
+ };
|
|
|
+
|
|
|
+ let res = await startExecuteProjects(params);
|
|
|
+};
|
|
|
+
|
|
|
+const checkStartEnable = (): boolean => {
|
|
|
+ let enable = true;
|
|
|
+
|
|
|
+ if (!selectedExcutingMachine.value) {
|
|
|
+ ElMessage.warning("请选择执行终端");
|
|
|
+ enable = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!formLabelAlign.value.productCode) {
|
|
|
+ ElMessage.warning("请输入产品编号");
|
|
|
+ enable = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!formLabelAlign.value.testType) {
|
|
|
+ ElMessage.warning("请选择测试类型");
|
|
|
+ enable = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!formLabelAlign.value.testLocation) {
|
|
|
+ ElMessage.warning("请输入测试地点");
|
|
|
+ enable = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (topProSelectedList.value.length < 1) {
|
|
|
+ ElMessage.warning("请选择测试项目");
|
|
|
+ enable = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return enable;
|
|
|
};
|
|
|
</script>
|
|
|
|
|
@@ -140,12 +209,12 @@ const getExcutingGlobalMachines = async () => {
|
|
|
:model="formLabelAlign"
|
|
|
ref="ruleFormRef"
|
|
|
>
|
|
|
- <el-form-item label="产品编号" prop="instrumentType">
|
|
|
- <el-input v-model="formLabelAlign.instrumentType" />
|
|
|
+ <el-form-item label="产品编号" prop="productCode">
|
|
|
+ <el-input v-model="formLabelAlign.productCode" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="测试类型" prop="configName">
|
|
|
+ <el-form-item label="测试类型" prop="testType">
|
|
|
<el-select
|
|
|
- v-model="formLabelAlign.configName"
|
|
|
+ v-model="formLabelAlign.testType"
|
|
|
placeholder="选择测试类型"
|
|
|
>
|
|
|
<el-option
|
|
@@ -156,8 +225,8 @@ const getExcutingGlobalMachines = async () => {
|
|
|
/>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="测试地点" prop="configIp">
|
|
|
- <el-input v-model="formLabelAlign.configIp" />
|
|
|
+ <el-form-item label="测试地点" prop="testLocation">
|
|
|
+ <el-input v-model="formLabelAlign.testLocation" />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
@@ -171,23 +240,23 @@ const getExcutingGlobalMachines = async () => {
|
|
|
style="max-width: 600px"
|
|
|
ref="ruleFormRef"
|
|
|
>
|
|
|
- <el-form-item label="执行终端" prop="configName">
|
|
|
+ <el-form-item label="执行终端">
|
|
|
<div class="select-div">
|
|
|
<el-select
|
|
|
class="select-item"
|
|
|
- v-model="formLabelAlign.zhongduan"
|
|
|
+ v-model="selectedExcutingMachine"
|
|
|
placeholder="选择执行终端"
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="item in excutingMachinesList"
|
|
|
:key="item.id"
|
|
|
:label="item.configName"
|
|
|
- :value="item.id"
|
|
|
+ :value="item"
|
|
|
/>
|
|
|
</el-select>
|
|
|
- <el-button class="test-min-btn" type="primary">
|
|
|
- <svg-icon icon-class="refresh1" size="18" />
|
|
|
- </el-button>
|
|
|
+ <!-- <el-button class="test-min-btn" type="primary">-->
|
|
|
+ <!-- <svg-icon icon-class="refresh1" size="18" />-->
|
|
|
+ <!-- </el-button>-->
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
@@ -197,20 +266,24 @@ const getExcutingGlobalMachines = async () => {
|
|
|
</div>
|
|
|
<div class="csyq-tit">
|
|
|
<span>测试仪器</span>
|
|
|
- <el-button class="test-min-btn" type="primary">
|
|
|
- <svg-icon icon-class="project-config" size="18" />
|
|
|
- </el-button>
|
|
|
+ <!-- <el-button class="test-min-btn" type="primary">-->
|
|
|
+ <!-- <svg-icon icon-class="project-config" size="18" />-->
|
|
|
+ <!-- </el-button>-->
|
|
|
</div>
|
|
|
<el-scrollbar class="content-B-height-2">
|
|
|
<div class="csyq-list">
|
|
|
- <div v-for="(item, index) in 15" :key="index" class="csyq-item">
|
|
|
+ <div
|
|
|
+ v-for="(item, index) in testingMachines"
|
|
|
+ :key="index"
|
|
|
+ class="csyq-item"
|
|
|
+ >
|
|
|
<div>
|
|
|
<span class="item-icon">
|
|
|
<svg-icon icon-class="gougou" class="svg-success" />
|
|
|
</span>
|
|
|
- <span>信号源1</span>
|
|
|
+ <span>{{ item.configName }}</span>
|
|
|
</div>
|
|
|
- <div>192.168.0.109</div>
|
|
|
+ <div>{{ item.configIp }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-scrollbar>
|
|
@@ -226,9 +299,9 @@ const getExcutingGlobalMachines = async () => {
|
|
|
</el-scrollbar>
|
|
|
</div>
|
|
|
<div class="content-B-4">
|
|
|
- <el-button class="test-min-btn" type="primary">
|
|
|
- <svg-icon icon-class="refresh1" />
|
|
|
- </el-button>
|
|
|
+ <!-- <el-button class="test-min-btn" type="primary">-->
|
|
|
+ <!-- <svg-icon icon-class="refresh1" />-->
|
|
|
+ <!-- </el-button>-->
|
|
|
<titHeader icon-class="cssj" tit="测试数据" />
|
|
|
<div class="cssj-row-flex">
|
|
|
<span>序号</span>
|
|
@@ -250,7 +323,7 @@ const getExcutingGlobalMachines = async () => {
|
|
|
|
|
|
<div class="content-C">
|
|
|
<div class="left">
|
|
|
- <div class="test-btn progress">
|
|
|
+ <div class="test-btn progress" @click="configDrawerVisible = true">
|
|
|
<svg-icon icon-class="project-config" />
|
|
|
全局配置
|
|
|
</div>
|
|
@@ -271,7 +344,7 @@ const getExcutingGlobalMachines = async () => {
|
|
|
</div>
|
|
|
<div class="right">
|
|
|
<div>已用时:300s</div>
|
|
|
- <div class="test-btn progress">
|
|
|
+ <div class="test-btn progress" @click="startToRunTest">
|
|
|
<svg-icon icon-class="start-test" />
|
|
|
开始测试
|
|
|
</div>
|
|
@@ -318,6 +391,21 @@ const getExcutingGlobalMachines = async () => {
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-drawer>
|
|
|
+
|
|
|
+ <el-drawer
|
|
|
+ v-model="configDrawerVisible"
|
|
|
+ :with-header="false"
|
|
|
+ :append-to-body="true"
|
|
|
+ :destroy-on-close="true"
|
|
|
+ size="800"
|
|
|
+ direction="ltr"
|
|
|
+ >
|
|
|
+ <ConfigDataAndDevice
|
|
|
+ v-model:devices-data="testingMachines"
|
|
|
+ v-model:data-list="excutingGlobalData"
|
|
|
+ @close="configDrawerVisible = false"
|
|
|
+ ></ConfigDataAndDevice>
|
|
|
+ </el-drawer>
|
|
|
</div>
|
|
|
</template>
|
|
|
|