UnisKB/ui/src/views/knowledge/component/SyncWebDialog.vue

102 lines
2.9 KiB
Vue
Raw Normal View History

2025-05-27 11:06:47 +00:00
<template>
<el-dialog
2025-06-05 09:28:07 +00:00
:title="$t('views.knowledge.syncWeb.title')"
2025-05-27 11:06:47 +00:00
v-model="dialogVisible"
width="600px"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
>
2025-06-05 09:28:07 +00:00
<p class="mb-8">{{ $t('views.knowledge.syncWeb.syncMethod') }}</p>
2025-05-27 11:06:47 +00:00
<el-radio-group v-model="method" class="card__radio">
<el-card shadow="never" class="mb-16" :class="method === 'replace' ? 'active' : ''">
<el-radio value="replace" size="large">
2025-06-05 09:28:07 +00:00
<p class="mb-4">{{ $t('views.knowledge.syncWeb.replace') }}</p>
<el-text type="info">{{ $t('views.knowledge.syncWeb.replaceText') }}</el-text>
2025-05-27 11:06:47 +00:00
</el-radio>
</el-card>
<el-card shadow="never" class="mb-16" :class="method === 'complete' ? 'active' : ''">
<el-radio value="complete" size="large">
2025-06-05 09:28:07 +00:00
<p class="mb-4">{{ $t('views.knowledge.syncWeb.complete') }}</p>
<el-text type="info">{{ $t('views.knowledge.syncWeb.completeText') }}</el-text>
2025-05-27 11:06:47 +00:00
</el-radio>
</el-card>
</el-radio-group>
2025-06-12 13:27:51 +00:00
<p class="color-danger">{{ $t('views.knowledge.syncWeb.tip') }}</p>
2025-05-27 11:06:47 +00:00
<template #footer>
<span class="dialog-footer">
<el-button @click.prevent="dialogVisible = false"> {{ $t('common.cancel') }} </el-button>
<el-button type="primary" @click="submit" :loading="loading">
{{ $t('common.confirm') }}
</el-button>
</span>
</template>
</el-dialog>
</template>
<script setup lang="ts">
2025-06-24 11:36:44 +00:00
import { ref, watch, computed } from 'vue'
import { useRoute } from 'vue-router'
2025-06-19 06:38:27 +00:00
import { MsgSuccess } from '@/utils/message'
2025-06-24 11:36:44 +00:00
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
import { t } from '@/locales'
2025-05-27 11:06:47 +00:00
2025-06-24 11:36:44 +00:00
const route = useRoute()
2025-06-24 14:12:17 +00:00
const apiType = computed(() => {
2025-06-24 11:36:44 +00:00
if (route.path.includes('shared')) {
return 'systemShare'
} else if (route.path.includes('resource-management')) {
return 'systemManage'
} else {
return 'workspace'
}
})
2025-05-27 11:06:47 +00:00
const emit = defineEmits(['refresh'])
const loading = ref<boolean>(false)
const method = ref('replace')
2025-06-08 08:43:40 +00:00
const knowledgeId = ref('')
2025-05-27 11:06:47 +00:00
const dialogVisible = ref<boolean>(false)
watch(dialogVisible, (bool) => {
if (!bool) {
method.value = 'replace'
}
})
const open = (id: string) => {
2025-06-08 08:43:40 +00:00
knowledgeId.value = id
2025-05-27 11:06:47 +00:00
dialogVisible.value = true
}
const submit = () => {
2025-06-24 14:12:17 +00:00
loadSharedApi({ type: 'knowledge', systemType: apiType.value })
2025-06-24 11:36:44 +00:00
.putSyncWebKnowledge(knowledgeId.value, method.value, loading)
.then((res: any) => {
emit('refresh', res.data)
MsgSuccess(t('views.knowledge.tip.syncSuccess'))
dialogVisible.value = false
})
2025-05-27 11:06:47 +00:00
}
defineExpose({ open })
</script>
<style lang="scss" scoped>
.select-provider {
font-size: 16px;
color: rgba(100, 106, 115, 1);
font-weight: 400;
line-height: 24px;
cursor: pointer;
&:hover {
color: var(--el-color-primary);
}
}
.active-breadcrumb {
font-size: 16px;
color: rgba(31, 35, 41, 1);
font-weight: 500;
line-height: 24px;
}
</style>