houzhongjian
2024-08-08 820397e43a0b64d35c6d31d2a55475061438593b
提交 | 用户 | 时间
820397 1 <template>
H 2
3   <ContentWrap>
4     <!-- 搜索工作栏 -->
5     <el-form
6       class="-mb-15px"
7       :model="queryParams"
8       ref="queryFormRef"
9       :inline="true"
10       label-width="85px"
11     >
12       <el-form-item label="名字" prop="name">
13         <el-input
14           v-model="queryParams.name"
15           placeholder="请输入名字"
16           clearable
17           @keyup.enter="handleQuery"
18           class="!w-240px"
19         />
20       </el-form-item>
21       <el-form-item label="类型" prop="type">
22         <el-select v-model="queryParams.type" placeholder="请选择类型" clearable class="!w-240px">
23           <el-option
24             v-for="dict in getStrDictOptions(DICT_TYPE.BPM_PROCESS_LISTENER_TYPE)"
25             :key="dict.value"
26             :label="dict.label"
27             :value="dict.value"
28           />
29         </el-select>
30       </el-form-item>
31       <el-form-item>
32         <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
33         <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
34         <el-button
35           type="primary"
36           plain
37           @click="openForm('create')"
38           v-hasPermi="['bpm:process-listener:create']"
39         >
40           <Icon icon="ep:plus" class="mr-5px" /> 新增
41         </el-button>
42       </el-form-item>
43     </el-form>
44   </ContentWrap>
45
46   <!-- 列表 -->
47   <ContentWrap>
48     <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
49       <el-table-column label="编号" align="center" prop="id" />
50       <el-table-column label="名字" align="center" prop="name" />
51       <el-table-column label="类型" align="center" prop="type">
52         <template #default="scope">
53           <dict-tag :type="DICT_TYPE.BPM_PROCESS_LISTENER_TYPE" :value="scope.row.type" />
54         </template>
55       </el-table-column>
56       <el-table-column label="状态" align="center" prop="status">
57         <template #default="scope">
58           <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
59         </template>
60       </el-table-column>
61       <el-table-column label="事件" align="center" prop="event" />
62       <el-table-column label="值类型" align="center" prop="valueType">
63         <template #default="scope">
64           <dict-tag
65             :type="DICT_TYPE.BPM_PROCESS_LISTENER_VALUE_TYPE"
66             :value="scope.row.valueType"
67           />
68         </template>
69       </el-table-column>
70       <el-table-column label="值" align="center" prop="value" />
71       <el-table-column
72         label="创建时间"
73         align="center"
74         prop="createTime"
75         :formatter="dateFormatter"
76         width="180px"
77       />
78       <el-table-column label="操作" align="center">
79         <template #default="scope">
80           <el-button
81             link
82             type="primary"
83             @click="openForm('update', scope.row.id)"
84             v-hasPermi="['bpm:process-listener:update']"
85           >
86             编辑
87           </el-button>
88           <el-button
89             link
90             type="danger"
91             @click="handleDelete(scope.row.id)"
92             v-hasPermi="['bpm:process-listener:delete']"
93           >
94             删除
95           </el-button>
96         </template>
97       </el-table-column>
98     </el-table>
99     <!-- 分页 -->
100     <Pagination
101       :total="total"
102       v-model:page="queryParams.pageNo"
103       v-model:limit="queryParams.pageSize"
104       @pagination="getList"
105     />
106   </ContentWrap>
107
108   <!-- 表单弹窗:添加/修改 -->
109   <ProcessListenerForm ref="formRef" @success="getList" />
110 </template>
111
112 <script setup lang="ts">
113 import { getStrDictOptions, DICT_TYPE } from '@/utils/dict'
114 import { dateFormatter } from '@/utils/formatTime'
115 import { ProcessListenerApi, ProcessListenerVO } from '@/api/bpm/processListener'
116 import ProcessListenerForm from './ProcessListenerForm.vue'
117
118 /** BPM 流程 列表 */
119 defineOptions({ name: 'BpmProcessListener' })
120
121 const message = useMessage() // 消息弹窗
122 const { t } = useI18n() // 国际化
123
124 const loading = ref(true) // 列表的加载中
125 const list = ref<ProcessListenerVO[]>([]) // 列表的数据
126 const total = ref(0) // 列表的总页数
127 const queryParams = reactive({
128   pageNo: 1,
129   pageSize: 10,
130   name: undefined,
131   type: undefined,
132   event: undefined
133 })
134 const queryFormRef = ref() // 搜索的表单
135 const exportLoading = ref(false) // 导出的加载中
136
137 /** 查询列表 */
138 const getList = async () => {
139   loading.value = true
140   try {
141     const data = await ProcessListenerApi.getProcessListenerPage(queryParams)
142     list.value = data.list
143     total.value = data.total
144   } finally {
145     loading.value = false
146   }
147 }
148
149 /** 搜索按钮操作 */
150 const handleQuery = () => {
151   queryParams.pageNo = 1
152   getList()
153 }
154
155 /** 重置按钮操作 */
156 const resetQuery = () => {
157   queryFormRef.value.resetFields()
158   handleQuery()
159 }
160
161 /** 添加/修改操作 */
162 const formRef = ref()
163 const openForm = (type: string, id?: number) => {
164   formRef.value.open(type, id)
165 }
166
167 /** 删除按钮操作 */
168 const handleDelete = async (id: number) => {
169   try {
170     // 删除的二次确认
171     await message.delConfirm()
172     // 发起删除
173     await ProcessListenerApi.deleteProcessListener(id)
174     message.success(t('common.delSuccess'))
175     // 刷新列表
176     await getList()
177   } catch {}
178 }
179
180 /** 初始化 **/
181 onMounted(() => {
182   getList()
183 })
184 </script>