|
@@ -10,16 +10,41 @@
|
|
|
<div class="title">{{ optionWindow.title }}</div>
|
|
|
<div class="close" @click="close"></div>
|
|
|
</div>
|
|
|
- <div class="content">
|
|
|
- <div class="left">工作站:</div>
|
|
|
- <div class="right"> <el-select v-model="optionForm.worker" placeholder="请选择工作站">
|
|
|
- <el-option v-for="(item, k) in workers" :key="item[0]" :label="k" :value="item[0]">
|
|
|
- <span style="float: left; font-size: 15px">{{ k }} <i v-if="item[3] == '待重启'"
|
|
|
- class="el-icon-refresh"></i> </span>
|
|
|
- <span style="float: right; color: #8492a6; font-size: 15px">{{ item[1] }}</span>
|
|
|
- </el-option>
|
|
|
- </el-select></div>
|
|
|
-
|
|
|
+ <div class="content" v-if="optionWindow.type == 'add'">
|
|
|
+ <div class="formList">
|
|
|
+ <div class="left left1">项目:</div>
|
|
|
+ <div class="right"> <el-select v-model="optionForm.project" placeholder="请选择项目">
|
|
|
+ <el-option v-for="item in projectList" :key="item.key" :label="item.name" :value="item.key" />
|
|
|
+ </el-select></div>
|
|
|
+ </div>
|
|
|
+ <div class="formList">
|
|
|
+ <div class="left left1">工作站:</div>
|
|
|
+ <div class="right"> <el-select v-model="optionForm.worker" placeholder="请选择工作站">
|
|
|
+ <el-option v-for="(item, k) in workers" :key="item[0]" :label="k" :value="item[0]">
|
|
|
+ <span style="float: left; font-size: 15px">{{ k }} <i v-if="item[3] == '待重启'"
|
|
|
+ class="el-icon-refresh"></i> </span>
|
|
|
+ <span style="float: right; color: #8492a6; font-size: 15px">{{ item[1] }}</span>
|
|
|
+ </el-option>
|
|
|
+ </el-select></div>
|
|
|
+ </div>
|
|
|
+ <div class="formList" v-if="optionForm.project">
|
|
|
+ <div class="left left1">序号(极值:{{ eMaxId }}):</div>
|
|
|
+ <div class="right"> <el-select v-model="optionForm.mIdx" placeholder="请选择序号">
|
|
|
+ <el-option v-for="item in numberList" :key="item.key" :label="item.name" :value="item.key" />
|
|
|
+ </el-select></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="content" v-else>
|
|
|
+ <div class="formList">
|
|
|
+ <div class="left">工作站:</div>
|
|
|
+ <div class="right"> <el-select v-model="optionForm.worker" placeholder="请选择工作站">
|
|
|
+ <el-option v-for="(item, k) in workers" :key="item[0]" :label="k" :value="item[0]">
|
|
|
+ <span style="float: left; font-size: 15px">{{ k }} <i v-if="item[3] == '待重启'"
|
|
|
+ class="el-icon-refresh"></i> </span>
|
|
|
+ <span style="float: right; color: #8492a6; font-size: 15px">{{ item[1] }}</span>
|
|
|
+ </el-option>
|
|
|
+ </el-select></div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="bottom">
|
|
|
<div class="btn" @click="confirm">
|
|
@@ -36,12 +61,15 @@
|
|
|
|
|
|
</template>
|
|
|
<script setup lang="ts">
|
|
|
+import dataDictionary from "@/utils/dataDictionary"
|
|
|
const { proxy } = getCurrentInstance() as any;
|
|
|
const emit = defineEmits(['returnData']);
|
|
|
-
|
|
|
+const dic: any = dataDictionary;
|
|
|
const data = reactive<any>({
|
|
|
optionForm: {
|
|
|
- worker: ''
|
|
|
+ worker: '',
|
|
|
+ project: '',
|
|
|
+ eIdx: ''
|
|
|
},
|
|
|
optionWindow: {
|
|
|
show: false,
|
|
@@ -49,17 +77,23 @@ const data = reactive<any>({
|
|
|
title: "",
|
|
|
},
|
|
|
workers: [],
|
|
|
+ loginName: '',
|
|
|
loading: false,
|
|
|
stateLoading: false,
|
|
|
timerManager: {},//计时器管理
|
|
|
+ serialNumberList: []
|
|
|
});
|
|
|
|
|
|
-const { optionForm, optionWindow, workers, loading, stateLoading, timerManager } = toRefs(data);
|
|
|
+const { optionForm, optionWindow, workers, loginName, loading, stateLoading, timerManager, serialNumberList } = toRefs(data);
|
|
|
|
|
|
//打开
|
|
|
const open = (type: any, title: any) => {
|
|
|
getWorkstation();
|
|
|
optionForm.value.worker = '';
|
|
|
+ if (type == 'add') {
|
|
|
+ optionForm.value.project = '';
|
|
|
+ optionForm.value.mIdx = '';
|
|
|
+ }
|
|
|
loading.value = false;
|
|
|
optionWindow.value.type = type;
|
|
|
optionWindow.value.title = title;
|
|
@@ -80,6 +114,18 @@ const getWorkstation = async () => {
|
|
|
};
|
|
|
let res = await proxy?.$http.common.allExams(params)
|
|
|
workers.value = res.workers
|
|
|
+ loginName.value = res.login_name
|
|
|
+ if (optionWindow.value.type == 'add') {
|
|
|
+ getSerialNumber();
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+//获取序号
|
|
|
+const getSerialNumber = async () => {
|
|
|
+ let params: any = new FormData();
|
|
|
+ params.append("login_name", loginName.value);
|
|
|
+ let res = await proxy?.$http.common.serialNumber(params)
|
|
|
+ serialNumberList.value = res;
|
|
|
};
|
|
|
|
|
|
//确定
|
|
@@ -87,6 +133,9 @@ const confirm = () => {
|
|
|
if (!optionForm.value.worker) {
|
|
|
return false;
|
|
|
}
|
|
|
+ if (optionWindow.value.type == 'add') {
|
|
|
+ addExamSettings();
|
|
|
+ }
|
|
|
if (optionWindow.value.type == 'close') {
|
|
|
closeWorkstation();
|
|
|
}
|
|
@@ -98,6 +147,29 @@ const confirm = () => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+//添加项目
|
|
|
+const addExamSettings = async () => {
|
|
|
+ let myInfo: any = localStorage.getItem("userInfo");
|
|
|
+ let userInfo = JSON.parse(myInfo);
|
|
|
+ let examId = optionForm.value.project + "_" + optionForm.value.mIdx;
|
|
|
+ let params: any = {
|
|
|
+ exam_id: examId,
|
|
|
+ school_id: userInfo.school_id,
|
|
|
+ wk_md5: optionForm.value.worker
|
|
|
+ };
|
|
|
+ loading.value = true;
|
|
|
+ let res = await proxy?.$http.common.addExamSettings(params).finally(() => {
|
|
|
+ loading.value = false;
|
|
|
+ })
|
|
|
+ if (res.status == 200) {
|
|
|
+ proxy?.$modal.msgSuccess('操作成功');
|
|
|
+ close();
|
|
|
+ emit('returnData', {});
|
|
|
+ } else {
|
|
|
+ proxy?.$modal.msgError(res.message);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
//关闭工作站
|
|
|
const closeWorkstation = async () => {
|
|
|
let params: any = {
|
|
@@ -207,6 +279,47 @@ const getClearTimer = (data?: any) => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+/**
|
|
|
+ * 获取项目列表
|
|
|
+*/
|
|
|
+const projectList = computed(() => {
|
|
|
+ let list = [];
|
|
|
+ let project = dic.project;
|
|
|
+ for (let key in project) {
|
|
|
+ if (project.hasOwnProperty(key)) {
|
|
|
+ list.push({
|
|
|
+ key: key,
|
|
|
+ name: project[key]
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+});
|
|
|
+
|
|
|
+/**
|
|
|
+ * 获取序号列表
|
|
|
+*/
|
|
|
+const numberList = computed(() => {
|
|
|
+ let list = [];
|
|
|
+ let num = Number(serialNumberList.value[optionForm.value.project])
|
|
|
+ for (let i = 1; i <= num; i++) {
|
|
|
+ list.push({
|
|
|
+ key: i,
|
|
|
+ name: i
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+});
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * 获取极限值
|
|
|
+*/
|
|
|
+const eMaxId = computed(() => {
|
|
|
+ let num = Number(serialNumberList.value[optionForm.value.project])
|
|
|
+ return num;
|
|
|
+});
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
})
|
|
|
|
|
@@ -269,16 +382,26 @@ defineExpose({
|
|
|
.content {
|
|
|
max-height: 65vh;
|
|
|
margin-bottom: 2vh;
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
|
|
|
- .left {
|
|
|
- flex-shrink: 0;
|
|
|
- }
|
|
|
+ .formList {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding: 1.2vh 0;
|
|
|
+
|
|
|
+ .left {
|
|
|
+ flex-shrink: 0;
|
|
|
+ font-size: 1rem;
|
|
|
+ }
|
|
|
|
|
|
- .right {
|
|
|
- width: 100%;
|
|
|
+ .left1 {
|
|
|
+ width: 8rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ .right {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
.bottom {
|