123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430 |
- <template>
- <div class="app-container">
- <el-form
- :model="queryParams"
- ref="queryForm"
- size="small"
- :inline="true"
- v-show="showSearch"
- label-width="100px"
- >
- <el-form-item label="任务名称" prop="name">
- <el-input
- v-model="queryParams.name"
- placeholder="请输入任务名称"
- clearable
- @keyup.enter.native="handleQuery"
- />
- </el-form-item>
- <el-form-item>
- <el-button
- type="primary"
- icon="el-icon-search"
- size="mini"
- @click="handleQuery"
- >搜索</el-button>
- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">
- 重置
- </el-button>
- </el-form-item>
- </el-form>
- <el-row :gutter="10" class="mb8">
- <el-col :span="1.5">
- <el-button
- type="primary"
- plain
- icon="el-icon-plus"
- size="mini"
- @click="handleAdd"
- v-hasPermi="['test:ddAlgorithm:add']"
- >
- 新增
- </el-button>
- </el-col>
- <el-col :span="1.5">
- <el-button
- type="success"
- plain
- icon="el-icon-edit"
- size="mini"
- :disabled="single"
- v-hasPermi="['test:ddAlgorithm:edit']"
- >
- 修改
- </el-button>
- </el-col>
- <el-col :span="1.5">
- <el-button
- type="danger"
- plain
- icon="el-icon-delete"
- size="mini"
- :disabled="multiple"
- @click="handleDelete(ids)"
- v-hasPermi="['test:ddAlgorithm:remove']"
- >
- 删除
- </el-button>
- </el-col>
- <el-col :span="1.5">
- <el-button
- type="warning"
- plain
- icon="el-icon-download"
- size="mini"
- @click="handleExport"
- v-hasPermi="['test:ddAlgorithm:export']"
- >
- 导出
- </el-button>
- </el-col>
- <right-toolbar
- :showSearch.sync="showSearch"
- @queryTable="getList"
- ></right-toolbar>
- </el-row>
- <el-table
- v-loading="loading"
- :data="ddAlgorithmList"
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="55" align="center" />
- <el-table-column label="任务名称" align="center" prop="name" />
- <el-table-column label="文本结果" align="center" prop="returnData">
- <template slot-scope="scope">
- <el-input type="textarea" disabled v-model="scope.row.returnData" />
- </template>
- </el-table-column>
- <el-table-column label="模型类型" align="center" prop="modelType">
- <template slot-scope="scope">
- <dict-tag
- :options="dict.type.biz_model_type"
- :value="scope.row.modelType"
- />
- </template>
- </el-table-column>
- <el-table-column label="模型种类" align="center" prop="modelTypet">
- <template slot-scope="scope">
- <dict-tag
- :options="dict.type.model_tepe_t"
- :value="scope.row.modelTypet"
- />
- </template>
- </el-table-column>
- <el-table-column label="说明" align="center" prop="remark" />
- <el-table-column
- label="开始时间"
- align="center"
- prop="startTime"
- width="180"
- >
- <template slot-scope="scope">
- <span>{{ scope.row.startTime }}</span>
- </template>
- </el-table-column>
- <el-table-column
- label="结束时间"
- align="center"
- prop="startTime"
- width="180"
- >
- <template slot-scope="scope">
- <span>{{ scope.row.endTime }}</span>
- </template>
- </el-table-column>
- <el-table-column
- label="操作"
- align="center"
- class-name="small-padding fixed-width"
- >
- <template slot-scope="scope">
- <el-button
- size="mini"
- type="text"
- icon="el-icon-video-play"
- @click="handleVerify(scope.row)"
- v-hasPermi="['test:ddAlgorithm:edit']"
- >
- 查看
- </el-button>
- <el-button
- size="mini"
- type="text"
- icon="el-icon-delete"
- @click="handleDelete(scope.row)"
- v-hasPermi="['test:ddAlgorithm:remove']"
- >
- 删除
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- v-show="total > 0"
- :total="total"
- :page.sync="queryParams.pageNum"
- :limit.sync="queryParams.pageSize"
- @pagination="getList"
- />
- <!-- 新增:验证对话框 -->
- <el-dialog
- :title="!returnDataShow ? '验证配置' : '验证结果'"
- :visible.sync="verifyDialogVisible"
- width="1100px"
- append-to-body
- destroy-on-close
- @close="handleDialogClose"
- >
- <el-form :model="verifyRow" label-width="80px">
- <el-form-item label="验证结果">
- <template>
- <el-row :gutter="5">
- <el-col
- v-for="(url, index) in verifyRow.imageData"
- :key="index"
- :span="11"
- >
- <el-image
- :src="url"
- :preview-src-list="[url]"
- style="width: 95%; height: 150px;"
- ></el-image>
- </el-col>
- </el-row>
- </template>
- </el-form-item>
- </el-form>
- <div slot="footer" class="dialog-footer">
- <el-button v-if="!returnDataShow" @click="verifyDialogVisible = false">
- 关闭
- </el-button>
- <el-button v-if="returnDataShow" @click="handleDialogClose">
- 关闭
- </el-button>
- </div>
- </el-dialog>
- <DdAlgorithmForm
- v-model="open"
- :data-info="form"
- :options="options"
- :data-options="dataOptions"
- :fault-diagnosis-options="faultDiagnosisOptions"
- @callback="getList"
- />
- </div>
- </template>
- <script>
- import {
- listDdAlgorithm,
- getDdAlgorithm,
- delDdAlgorithm,
- verify,
- } from "@/api/test/ddAlgorithm";
- import { listFormulas } from "@/api/eval/formulas";
- import { getDataOptions } from "@/api/data/data";
- import { getFaultDiagnosisOptions } from "@/api/model/faultDiagnosis";
- import DdAlgorithmForm from "./form.vue";
- import txtContent from "@/assets/testImage/output3.txt";
- import info from "./info.vue";
- export default {
- name: "DdAlgorithm",
- components: {
- DdAlgorithmForm,
- info,
- },
- dicts: ["biz_model_type", "biz_perf_eval_type", "model_tepe_t"],
- data() {
- return {
- verifyDialogVisible: false,
- verifyRow: {
- verifyData: null, // 所属指标(单选)
- imageData: [], // 图片数据
- },
- returnDataShow: false,
- loading: true,
- ids: [],
- single: true,
- multiple: true,
- showSearch: true,
- total: 0,
- ddAlgorithmList: [],
- open: false,
- queryParams: {
- pageNum: 1,
- pageSize: 10,
- name: null,
- truthLabels: null,
- testLabels: null,
- startTime: null,
- endTime: null,
- },
- content: txtContent,
- form: {},
- options: "",
- dataOptions: [],
- faultDiagnosisOptions: [],
- };
- },
- created() {
- this.getList();
- this.getOption();
- },
- methods: {
- handleVerify(row) {
- console.log('row', this.row)
- // 初始化验证数据(清空上次选择)
- this.verifyRow = {
- verifyData: null, // 清空所属指标
- imageData: JSON.parse(row.returnDataImage || "[]"), // 解析图片数据
- };
- // 解析返回数据(如果存在)
- if (row.returnData) {
- try {
- const json = JSON.parse(row.returnData);
- // 这里假设returnData是单个对象,如有多个需调整
- this.verifyRow.tempData = json;
- } catch (error) {
- console.error("解析返回数据失败:", error);
- }
- }
- this.verifyDialogVisible = true;
- },
- handleDialogClose() {
- // 关闭对话框时清空验证指标
- this.verifyRow.verifyData = null;
- this.returnDataShow = false; // 隐藏结果
- // 可选:如需清空图片数据(根据业务需求)
- // this.verifyRow.imageData = [];
- },
- handleConfirmVerify() {
- // 执行验证逻辑
- console.log("开始验证,所选指标:", this.verifyRow.verifyData);
- this.$modal.msgSuccess("验证成功");
- // 模拟验证成功后显示结果
- this.returnDataShow = true;
- // 这里可以添加实际的API调用
- },
- getList() {
- this.loading = true;
- listDdAlgorithm(this.queryParams).then((response) => {
- this.ddAlgorithmList = response.rows;
- this.total = response.total;
- this.loading = false;
- });
- },
- getOption() {
- listFormulas().then((response) => {
- this.verifyOptions = response.rows;
- console.log("verifyOptions", response);
- });
- getDataOptions().then((resp) => {
- this.dataOptions = resp.data;
- });
- getFaultDiagnosisOptions().then((resp) => {
- this.faultDiagnosisOptions = resp.data;
- });
- },
- reset() {
- this.form = {
- id: null,
- name: null,
- modelId: null,
- dataId: null,
- truthLabels: null,
- testLabels: null,
- remark: null,
- startTime: null,
- endTime: null,
- createBy: null,
- createTime: null,
- updateBy: null,
- updateTime: null,
- };
- this.resetForm("form");
- },
- handleQuery() {
- this.queryParams.pageNum = 1;
- this.getList();
- },
- resetQuery() {
- this.resetForm("queryForm");
- this.handleQuery();
- },
- handleSelectionChange(selection) {
- this.ids = selection.map((item) => item.id);
- this.single = selection.length !== 1;
- this.multiple = !selection.length;
- },
- handleAdd() {
- this.reset();
- this.open = true;
- this.options = "add";
- },
- handleUpdate(row) {
- this.reset();
- const id = row.id || this.ids;
- getDdAlgorithm(id).then((response) => {
- this.form = response.data;
- this.open = true;
- this.options = "edit";
- });
- },
- handleDelete(deleteTarget) {
- const deleteIds = Array.isArray(deleteTarget)
- ? deleteTarget
- : [deleteTarget.id || deleteTarget];
- const deleteNames = deleteIds
- .map((id) => this.ddAlgorithmList.find((row) => row.id === id)?.name || `ID:${id}`)
- .filter(Boolean);
- const confirmMessage =
- deleteNames.length > 1
- ? `是否确认删除以下 ${deleteNames.length} 条任务?\n${deleteNames.join("\n")}`
- : `是否确认删除任务:${deleteNames[0]}?`;
- this.$modal
- .confirm(confirmMessage)
- .then(() => delDdAlgorithm(deleteIds))
- .then(() => {
- this.getList();
- this.$modal.msgSuccess("删除成功");
- })
- .catch((error) => {
- console.error("删除失败:", error);
- this.$modal.msgError("删除失败,请检查网络或重试");
- });
- },
- handleExport() {
- this.download(
- "test/ddAlgorithm/export",
- {
- ...this.queryParams,
- },
- `ddAlgorithm_${new Date().getTime()}.xlsx`
- );
- },
- },
- };
- </script>
|