1616 "
1717 >{{ $t('common.create') }}
1818 </el-button >
19+ <el-button @click =" batchChangeState(true)" :disabled =" multipleSelection.length === 0"
20+ >{{ $t('view.trigger.activate', '启用') }}
21+ </el-button >
22+ <el-button @click =" batchChangeState(false)" :disabled =" multipleSelection.length === 0"
23+ >{{ $t('view.trigger.ban', '禁用') }}
24+ </el-button >
25+ <el-button @click =" batchDelete" :disabled =" multipleSelection.length === 0"
26+ >{{ $t('common.delete') }}
27+ </el-button >
28+ </div >
29+ <div class =" flex-between complex-search" >
30+ <el-select
31+ class =" complex-search__left"
32+ v-model =" search_type"
33+ style =" width : 120px "
34+ @change =" search_type_change"
35+ >
36+ <el-option :label =" $t('common.name', '名称')" value =" name" />
37+ <el-option :label =" $t('view.trigger.type', '类型')" value =" type" />
38+ <el-option :label =" $t('view.trigger.task', '任务')" value =" task" />
39+ <el-option :label =" $t('view.trigger.status', '状态')" value =" status" />
40+ <el-option :label =" $t('view.trigger.createUser', '创建者')" value =" create_user" />
41+ </el-select >
42+ <el-input
43+ v-if =" search_type === 'name'"
44+ v-model =" search_form.name"
45+ @change =" searchHandle"
46+ :placeholder =" $t('common.searchBar.placeholder')"
47+ style =" width : 220px "
48+ clearable
49+ />
50+ <el-select
51+ v-else-if =" search_type === 'type'"
52+ v-model =" search_form.type"
53+ @change =" searchHandle"
54+ filterable
55+ clearable
56+ style =" width : 220px "
57+ >
58+ <el-option :label =" $t('view.trigger.scheduled')" value =" SCHEDULED" />
59+ <el-option :label =" $t('view.trigger.event')" value =" unpublished" />
60+ </el-select >
61+ <el-select
62+ v-else-if =" search_type === 'create_user'"
63+ v-model =" search_form.create_user"
64+ @change =" searchHandle"
65+ filterable
66+ clearable
67+ style =" width : 220px "
68+ >
69+ <el-option
70+ v-for =" u in user_options"
71+ :key =" u.id"
72+ :value =" u.id"
73+ :label =" u.nick_name"
74+ />
75+ </el-select >
76+ <el-input
77+ v-if =" search_type === 'task'"
78+ v-model =" search_form.task"
79+ @change =" searchHandle"
80+ :placeholder =" $t('views.document.tag.requiredMessage3')"
81+ style =" width : 220px "
82+ clearable
83+ />
1984 </div >
2085 </div >
2186 <app-table
2287 ref =" multipleTableRef"
23- class =" mt-16 document-table "
88+ class =" mt-16"
2489 :data =" triggerData"
2590 :pagination-config =" paginationConfig"
2691 @sizeChange =" handleSizeChange"
2792 @changePage =" getList"
93+ @selection-change =" handleSelectionChange"
2894 v-loading =" loading"
2995 :row-key =" (row: any) => row.id"
3096 :maxTableHeight =" 300"
3399 <el-table-column
34100 prop =" name"
35101 :label =" $t('views.trigger.table.name', '名称')"
36- min-width =" 280 "
102+ min-width =" 100 "
37103 >
38104 </el-table-column >
39105 <el-table-column
40- prop =" desc "
41- :label =" $t('views.trigger.table.desc ', '描述 ')"
42- min-width =" 280 "
106+ prop =" trigger_type "
107+ :label =" $t('views.trigger.table.type ', '类型 ')"
108+ min-width =" 80 "
43109 >
44110 </el-table-column >
45111 <el-table-column
46112 prop =" is_active"
47113 :label =" $t('views.trigger.table.status', '状态')"
48- min-width =" 280 "
114+ min-width =" 80 "
49115 >
50116 </el-table-column >
51117 <el-table-column
52- prop =" trigger_type"
53- :label =" $t('views.trigger.table.type', '类型')"
54- align =" right"
55- min-width =" 90"
118+ prop =" desc"
119+ :label =" $t('views.trigger.table.desc', '描述')"
120+ min-width =" 150"
56121 >
57122 </el-table-column >
58-
59123 <el-table-column
60124 prop =" update_time"
61125 :label =" $t('views.document.table.updateTime')"
69133 <el-table-column align =" left" width =" 160" fixed =" right" :label =" $t('common.operation')" >
70134 <template #default =" { row } " >
71135 <span @click.stop >
72- <el-switch :loading =" loading" size =" small" v-model =" row.is_active" />
136+ <el-switch
137+ :before-change =" () => changeState(row)"
138+ :loading =" loading"
139+ size =" small"
140+ v-model =" row.is_active"
141+ />
73142 </span >
74143 <el-divider direction =" vertical" />
75144 <el-tooltip effect =" dark" :content =" $t('common.edit')" placement =" top" >
81150 </el-tooltip >
82151 <el-tooltip effect =" dark" :content =" $t('common.delete')" placement =" top" >
83152 <span class =" mr-4" >
84- <el-button type =" primary" text >
153+ <el-button type =" primary" text @click = " deleteTrigger(row) " >
85154 <AppIcon iconName =" app-delete" class =" color-secondary" ></AppIcon >
86155 </el-button >
87156 </span >
98167import { ref , onMounted , onBeforeUnmount , computed } from ' vue'
99168import { useRouter , useRoute , onBeforeRouteLeave , onBeforeRouteUpdate } from ' vue-router'
100169import type { ElTable } from ' element-plus'
101- import ImportDocumentDialog from ' ./component/ImportDocumentDialog.vue'
102- import SelectKnowledgeDialog from ' ./component/SelectKnowledgeDialog.vue'
103170import { MsgSuccess , MsgConfirm , MsgError } from ' @/utils/message'
104171import useStore from ' @/stores'
105172import triggerAPI from ' @/api/trigger/trigger'
106173import { TaskType , State } from ' @/utils/status'
107174import { t } from ' @/locales'
108175import permissionMap from ' @/permission'
109176import { datetimeFormat } from ' @/utils/time'
177+ import WorkspaceApi from ' @/api/workspace/workspace'
178+
110179import { loadSharedApi } from ' @/utils/dynamics-api/shared-api'
180+ import type { TriggerData } from ' @/api/type/trigger'
111181const route = useRoute ()
112182const router = useRouter ()
113183const {
114184 params : { id, folderId, type }, // id为knowledgeID
115185} = route as any
116- const { common } = useStore ()
186+ const { user } = useStore ()
117187const loading = ref (false )
118188const paginationConfig = ref ({
119189 current_page: 1 ,
120190 page_size: 10 ,
121191 total: 0 ,
122192})
123193
194+ const user_options = ref <any []>([])
195+ const search_type = ref (' name' )
196+ const search_form = ref <any >({
197+ name: ' ' ,
198+ type: ' ' ,
199+ task: ' ' ,
200+ is_active: ' ' ,
201+ create_user: ' ' ,
202+ })
203+
204+ const search_type_change = () => {
205+ search_form .value = {
206+ name: ' ' ,
207+ type: ' ' ,
208+ task: ' ' ,
209+ is_active: ' ' ,
210+ create_user: ' ' ,
211+ }
212+ }
213+
214+ function searchHandle() {
215+ paginationConfig .value .current_page = 1
216+ triggerData .value = []
217+ getList ()
218+ }
219+
220+ function deleteTrigger(row : any ) {
221+ MsgConfirm (` ${t (' views.document.delete.confirmTitle3' , ' 是否删除触发器' )} ${row .name } ? ` , ` ` , {
222+ confirmButtonText: t (' common.confirm' ),
223+ confirmButtonClass: ' danger' ,
224+ }).then (() => {
225+ triggerAPI .deleteTrigger (row .id , loading ).then (() => {
226+ MsgSuccess (t (' common.deleteSuccess' ))
227+ getList ()
228+ })
229+ })
230+ }
231+
232+ const handleSelectionChange = (val : any []) => {
233+ multipleSelection .value = val
234+ }
235+
236+ function batchChangeState(is_active : boolean ) {
237+ const idList: string [] = []
238+ multipleSelection .value .map ((v ) => {
239+ if (v ) {
240+ idList .push (v .id )
241+ }
242+ })
243+ triggerAPI .activateMulTrigger ({ id_list: idList , is_active: is_active }, loading ).then (() => {
244+ const msg: string = is_active
245+ ? t (' views.trigger.delete.successMessage' , ' 批量启用成功' )
246+ : t (' views.trigger.delete.successMessage' , ' 批量禁用成功' )
247+ MsgSuccess (msg )
248+ multipleTableRef .value ?.clearSelection ()
249+ getList ()
250+ })
251+ }
252+
253+ function batchDelete() {
254+ MsgConfirm (
255+ ` ${t (' views.document.delete.confirmTitle1' )} ${multipleSelection .value .length } ${t (' views.trigger.delete.confirmTitle2' , ' 个触发器?' )} ` ,
256+ ' ' ,
257+ {
258+ confirmButtonText: t (' common.confirm' ),
259+ confirmButtonClass: ' danger' ,
260+ },
261+ ).then (() => {
262+ const arr: string [] = []
263+ multipleSelection .value .map ((v ) => {
264+ if (v ) {
265+ arr .push (v .id )
266+ }
267+ })
268+ triggerAPI .delMulTrigger (arr , loading ).then (() => {
269+ MsgSuccess (t (' views.document.delete.successMessage' ))
270+ multipleTableRef .value ?.clearSelection ()
271+ getList ()
272+ })
273+ })
274+ }
275+
276+ async function changeState(row : any ) {
277+ const obj = {
278+ is_active: ! row .is_active ,
279+ }
280+ const str = ! row .is_active ? t (' common.status.enableSuccess' ) : t (' common.status.disableSuccess' )
281+ await updateData (row .id , obj , str )
282+ }
283+
284+ /**
285+ * 更新状态/数据
286+ */
287+ function updateData(triggerId : string , data : TriggerData , msg : string ) {
288+ triggerAPI
289+ .putTrigger (triggerId , data , loading )
290+ .then ((res : any ) => {
291+ const index = triggerData .value .findIndex ((v ) => v .id === triggerId )
292+ triggerData .value .splice (index , 1 , res .data )
293+ MsgSuccess (msg )
294+ return true
295+ })
296+ .catch (() => {
297+ return false
298+ })
299+ }
300+
124301const multipleSelection = ref <any []>([])
302+ const multipleTableRef = ref <InstanceType <typeof ElTable >>()
303+
125304const triggerData = ref <any []>([])
126305const elUploadRef = ref ()
127306
@@ -142,6 +321,9 @@ function getList(bool?: boolean) {
142321
143322onMounted (() => {
144323 getList ()
324+ WorkspaceApi .getAllMemberList (user .getWorkspaceId (), loading ).then ((res ) => {
325+ user_options .value = res .data
326+ })
145327})
146328 </script >
147329<style lang="scss" scoped>
0 commit comments