houzhongjian
2024-12-04 bb203eb72ee4604be8c9272cc583ecb9e393aeb8
提交 | 用户 | 时间
7462da 1 <template>
L 2   <!-- 搜索 -->
3   <ContentWrap>
4     <el-form
5       class="-mb-15px"
6       :model="queryParams"
7       ref="queryFormRef"
8       :inline="true"
9       label-width="68px"
ec54c9 10       @submit.prevent
7462da 11     >
6e7f22 12       <el-form-item label="编号" prop="itemno">
7462da 13         <el-input
6e7f22 14           v-model="queryParams.itemno"
15           placeholder="请输入编号"
16           clearable
17           @keyup.enter="handleQuery"
18           class="!w-240px"
19         />
20       </el-form-item>
21       <el-form-item label="预测项名" prop="itemname">
22         <el-input
23           v-model="queryParams.itemname"
24           placeholder="请输入预测项名"
7462da 25           clearable
L 26           @keyup.enter="handleQuery"
27           class="!w-240px"
28         />
29       </el-form-item>
30       <el-form-item>
31         <el-button @click="handleQuery">
6e7f22 32           <Icon icon="ep:search" class="mr-5px"/>
7462da 33           搜索
L 34         </el-button>
35         <el-button @click="resetQuery">
6e7f22 36           <Icon icon="ep:refresh" class="mr-5px"/>
7462da 37           重置
L 38         </el-button>
39         <el-button
40           type="primary"
41           plain
42           @click="openForm('create')"
cd9f11 43           v-hasPermi="['model:pre-item:create']"
7462da 44         >
6e7f22 45           <Icon icon="ep:plus" class="mr-5px"/>
7462da 46           新增
L 47         </el-button>
48       </el-form-item>
49     </el-form>
50   </ContentWrap>
51
52   <!-- 列表 -->
53   <ContentWrap>
54     <el-table v-loading="loading" :data="list">
e7b6da 55       <el-table-column label="编号" align="center" min-width="150" prop="itemno"/>
d3ee81 56       <el-table-column label="预测项名" header-align="center" align="left" min-width="200" prop="itemname"/>
d8e4be 57       <el-table-column label="类型名称" align="center" min-width="120" prop="itemtypename">
d3ee81 58         <template #default="scope">
59           <el-tag v-if="scope.row.itemtypename === 'NormalItem'" size="small" type="success">{{scope.row.itemtypename}}</el-tag>
60           <el-tag v-else size="small" type="primary">{{scope.row.itemtypename}}</el-tag>
61         </template>
62       </el-table-column>
64317c 63       <el-table-column label="预测长度(min)" align="center" prop="predictlength"/>
d3ee81 64       <el-table-column label="粒度" align="center" prop="granularity">
65         <template #default="scope">
e7b6da 66           <dict-tag :type="DICT_TYPE.PRED_GRANULARITY" :value="scope.row.granularity" />
d3ee81 67         </template>
68       </el-table-column>
69       <el-table-column label="是否融合" align="center" prop="isfuse">
70         <template #default="scope">
71           <dict-tag :type="DICT_TYPE.COM_IS_INT" :value="scope.row.isfuse" />
72         </template>
73       </el-table-column>
74       <el-table-column label="是否检查" align="center" prop="workchecked">
75         <template #default="scope">
76           <dict-tag :type="DICT_TYPE.COM_IS_INT" :value="scope.row.workchecked" />
77         </template>
78       </el-table-column>
79       <el-table-column label="是否启用" align="center" prop="status">
80         <template #default="scope">
81           <dict-tag :type="DICT_TYPE.COM_IS_INT" :value="scope.row.status" />
82         </template>
83       </el-table-column>
d8e4be 84       <el-table-column label="运行时间" min-width="150" align="center" prop="lastTime"/>
7b1ce6 85       <el-table-column label="运行状态" align="center" prop="runStatus">
86         <template #default="scope">
87           <dict-tag :type="DICT_TYPE.ITEM_RUN_STATUS" :value="scope.row.runStatus" />
88         </template>
89       </el-table-column>
f2de70 90       <el-table-column label="运行耗时(ms)" align="center" prop="duration"/>
e7b6da 91       <el-table-column label="操作" align="center" min-width="120" fixed="right">
7462da 92         <template #default="scope">
L 93           <el-button
94             link
95             type="primary"
e7b6da 96             size="mini"
6e7f22 97             @click="openForm('update', scope.row.id, scope.row.itemtypename)"
cd9f11 98             v-hasPermi="['model:pre-item:update']"
7462da 99           >
L 100             编辑
101           </el-button>
e7b6da 102           <el-button link size="mini" type="primary" @click="chartHandle(scope.row)">数据</el-button>
7462da 103           <el-button
L 104             link
105             type="danger"
e7b6da 106             size="mini"
7462da 107             @click="handleDelete(scope.row.id)"
cd9f11 108             v-hasPermi="['model:pre-item:delete']"
7462da 109           >
L 110             删除
111           </el-button>
112         </template>
113       </el-table-column>
114     </el-table>
115     <!-- 分页 -->
116     <Pagination
117       :total="total"
118       v-model:page="queryParams.pageNo"
119       v-model:limit="queryParams.pageSize"
120       @pagination="getList"
121     />
122   </ContentWrap>
123
124   <!-- 表单弹窗:添加/修改 -->
6e7f22 125   <MmPredictItemForm ref="formRef" @success="getList"/>
7462da 126
e7b6da 127   <!-- 表单弹窗:数据 -->
128   <MmPredictItemChart ref="chartView" @success="getList"/>
129
7462da 130 </template>
L 131 <script lang="ts" setup>
6e7f22 132 import MmPredictItemForm from './MmPredictItemForm.vue'
e7b6da 133 import MmPredictItemChart from './MmPredictItemChart.vue'
7b1ce6 134 import * as MmPredictItem from '@/api/model/pre/item'
d3ee81 135 import {DICT_TYPE} from "@/utils/dict";
7462da 136
6e7f22 137 defineOptions({name: 'DataMmPredictItem'})
7462da 138
6e7f22 139 const message = useMessage() // 消息弹窗
140 const {t} = useI18n() // 国际化
7462da 141
6e7f22 142 const loading = ref(true) // 列表的加载中
143 const total = ref(0) // 列表的总页数
144 const list = ref([]) // 列表的数据
145 const queryParams = reactive({
146   pageNo: 1,
147   pageSize: 10,
148   itemno: undefined,
149   itemname: undefined,
150 })
151 const isList = ref([
152   {
153     code: 0,
154     name: '否'
155   },
156   {
157     code: 1,
158     name: '是'
159   }])
160 const queryFormRef = ref() // 搜索的表单
161 const exportLoading = ref(false) // 导出的加载中
7462da 162
6e7f22 163 /** 查询列表 */
164 const getList = async () => {
165   loading.value = true
166   try {
167     const page = await MmPredictItem.getMmPredictItemPage(queryParams)
168     list.value = page.list
169     total.value = page.total
170   } finally {
171     loading.value = false
7462da 172   }
6e7f22 173 }
7462da 174
6e7f22 175 /** 搜索按钮操作 */
176 const handleQuery = () => {
177   queryParams.pageNo = 1
178   getList()
179 }
7462da 180
6e7f22 181 /** 重置按钮操作 */
182 const resetQuery = () => {
183   queryFormRef.value.resetFields()
184   handleQuery()
185 }
7462da 186
e7b6da 187 /** 查看数据操作 */
188 const chartView  = ref()
189 const chartHandle = (raw: object) => {
190   chartView.value.open(raw)
191 }
192
6e7f22 193 /** 添加/修改操作 */
194 const formRef = ref()
195 const openForm = (type: string, id?: number, itemtypename?: string) => {
196   formRef.value.open(type, id, itemtypename)
197 }
7462da 198
6e7f22 199 /** 删除按钮操作 */
200 const handleDelete = async (id: number) => {
201   try {
202     // 删除的二次确认
203     await message.delConfirm()
204     // 发起删除
205     await MmPredictItem.deleteMmPredictItem(id)
206     message.success(t('common.delSuccess'))
207     // 刷新列表
7462da 208     await getList()
6e7f22 209   } catch {
210   }
211 }
212
213 /** 初始化 **/
214 onMounted(async () => {
215   await getList()
216 })
7462da 217 </script>