潘志宝
5 天以前 778f36da39618e73d362f70de5fd77be57b34fb7
提交 | 用户 | 时间
2f0aa4 1 <template>
2   <!-- 搜索 -->
3   <ContentWrap>
4     <el-form
5       class="-mb-15px"
6       :model="queryParams"
7       ref="queryFormRef"
8       :inline="true"
9       label-width="68px"
10     >
11       <el-form-item label="方案编号" prop="code">
12         <el-input
13           v-model="queryParams.code"
14           placeholder="请输入方案编号"
15           clearable
16           @keyup.enter="handleQuery"
17           class="!w-240px"
18         />
19       </el-form-item>
20       <el-form-item label="方案名称" prop="name">
21         <el-input
22           v-model="queryParams.name"
23           placeholder="请输入方案名称"
24           clearable
25           @keyup.enter="handleQuery"
26           class="!w-240px"
27         />
28       </el-form-item>
29       <el-form-item>
30         <el-button @click="handleQuery">
31           <Icon icon="ep:search" class="mr-5px" />
32           搜索
33         </el-button>
34         <el-button @click="resetQuery">
35           <Icon icon="ep:refresh" class="mr-5px" />
36           重置
37         </el-button>
38         <el-button
39           type="primary"
40           plain
41           @click="openForm('create')"
42           v-hasPermi="['sche:scheme:create']"
43         >
44           <Icon icon="ep:plus" class="mr-5px" />
45           新增
46         </el-button>
47       </el-form-item>
48     </el-form>
49   </ContentWrap>
50
51   <!-- 列表 -->
52   <ContentWrap>
53     <el-table v-loading="loading" :data="list">
6badb7 54       <el-table-column label="方案编号" align="center" prop="code" min-width="100"/>
778f36 55       <el-table-column label="方案名称" header-align="center" align="left" prop="name" min-width="100"/>
6badb7 56       <el-table-column label="触发方式" align="center" prop="triggerMethod" min-width="100">
57         <template #default="scope">
58           <dict-tag :type="DICT_TYPE.SCHE_TRIGGER_METHOD" :value="scope.row.triggerMethod" />
59         </template>
60       </el-table-column>
61       <el-table-column label="触发条件" align="center" prop="triggerCondition" min-width="100"/>
62       <el-table-column label="调整对象" align="center" prop="scheduleObj" min-width="100"/>
63       <el-table-column label="调整类型" align="center" prop="scheduleType" min-width="100"/>
64       <el-table-column label=" 调整策略" align="center" prop="scheduleStrategy" min-width="100"/>
65       <el-table-column label="调度时间" align="center" prop="scheduleTime" min-width="160" />
778f36 66       <el-table-column label="备注" header-align="center" align="left" prop="remark" min-width="160" />
6badb7 67       <el-table-column label="状态" align="center" prop="status" min-width="100">
68         <template #default="scope">
69           <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
70         </template>
71       </el-table-column>
778f36 72       <el-table-column label="操作" align="center" min-width="100" fixed="right">
2f0aa4 73         <template #default="scope">
74           <el-button
75             link
76             type="primary"
77             @click="openForm('update', scope.row.id)"
78             v-hasPermi="['sche:scheme:update']"
79           >
80             编辑
81           </el-button>
82           <el-button
83             link
02bbf2 84             type="primary"
85             @click="openRecordList(scope.row.id)"
86             v-hasPermi="['sche:record:query']"
87           >
88             日志
89           </el-button>
90           <el-button
91             link
2f0aa4 92             type="danger"
93             @click="handleDelete(scope.row.id)"
94             v-hasPermi="['sche:scheme:delete']"
95           >
96             删除
97           </el-button>
98         </template>
99       </el-table-column>
100     </el-table>
101     <!-- 分页 -->
102     <Pagination
103       :total="total"
104       v-model:page="queryParams.pageNo"
105       v-model:limit="queryParams.pageSize"
106       @pagination="getList"
107     />
108   </ContentWrap>
109
110   <!-- 表单弹窗:添加/修改 -->
111   <ScheduleSchemeForm ref="formRef" @success="getList" />
112
02bbf2 113   <!-- 表单弹窗:添加/修改 -->
114   <RecordList ref="recordRef" />
2f0aa4 115 </template>
116 <script lang="ts" setup>
117   import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
118   import * as ScheduleSchemeApi from '@/api/model/sche/scheme'
119   import ScheduleSchemeForm from './ScheduleSchemeForm.vue'
02bbf2 120   import RecordList from  './record/index.vue'
2f0aa4 121
122   defineOptions({name: 'ScheduleScheme'})
123
124   const message = useMessage() // 消息弹窗
125   const {t} = useI18n() // 国际化
126
127   const loading = ref(true) // 列表的加载中
128   const total = ref(0) // 列表的总页数
129   const list = ref([]) // 列表的数据
130   const queryParams = reactive({
131     pageNo: 1,
132     pageSize: 10,
133     code: undefined,
134     name: undefined
135   })
136   const queryFormRef = ref() // 搜索的表单
137   const exportLoading = ref(false) // 导出的加载中
138
139   /** 查询列表 */
140   const getList = async () => {
141     loading.value = true
142     try {
143       const page = await ScheduleSchemeApi.getScheduleSchemePage(queryParams)
144       list.value = page.list
145       total.value = page.total
146     } finally {
147       loading.value = false
148     }
149   }
150
151   /** 搜索按钮操作 */
152   const handleQuery = () => {
153     queryParams.pageNo = 1
154     getList()
155   }
156
157   /** 重置按钮操作 */
158   const resetQuery = () => {
159     queryFormRef.value.resetFields()
160     handleQuery()
161   }
162
163   /** 添加/修改操作 */
164   const formRef = ref()
165   const openForm = (type: string, id?: number) => {
166     formRef.value.open(type, id)
167   }
168
169   /** 删除按钮操作 */
170   const handleDelete = async (id: number) => {
171     try {
172       // 删除的二次确认
173       await message.delConfirm()
174       // 发起删除
175       await ScheduleSchemeApi.deleteScheduleScheme(id)
176       message.success(t('common.delSuccess'))
177       // 刷新列表
178       await getList()
179     } catch {
180     }
181   }
182
02bbf2 183   /** 调用日志查看 */
184   const recordRef = ref()
185   const openRecordList = (id?: string) => {
186     recordRef.value.open(id)
187   }
188
2f0aa4 189   /** 初始化 **/
190   onMounted(async () => {
191     await getList()
192   })
193 </script>