feat(admin-web): add Vue 3 admin console and deployment configs
- Add admin-web/ with Vite + Vue 3 + Element Plus + Vue Router - Add 8 management pages: dashboard, channel subject/account, conversation, person, tag, send record (with test send), inbound flow - Add API client modules for account/channel/crm/send/flow - Add Dockerfile and nginx config for admin-web - Add Dockerfile for mci-server - Add docker-compose.app.yml for one-command app deployment - Add K8s deployment manifests for backend/admin-web/channel-service - Update scripts/local-up.sh with shared network and --with-apps option
This commit is contained in:
69
admin-web/src/views/InboundFlow.vue
Normal file
69
admin-web/src/views/InboundFlow.vue
Normal file
@@ -0,0 +1,69 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :model="form" label-width="100px">
|
||||
<el-form-item label="流程编码">
|
||||
<el-input v-model="form.flowCode" placeholder="flow_code" />
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称">
|
||||
<el-input v-model="form.flowName" placeholder="流程名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="节点配置">
|
||||
<el-input v-model="nodesJson" type="textarea" :rows="8" placeholder='[{"nodeType":"receive"},{"nodeType":"intent","intent":"rescue_request"},{"nodeType":"webhook","webhookUrl":"http://..."}]' />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleCreate">保存流程</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-divider />
|
||||
|
||||
<el-table :data="flows" border>
|
||||
<el-table-column prop="id" label="ID" width="80" />
|
||||
<el-table-column prop="flowCode" label="流程编码" />
|
||||
<el-table-column prop="flowName" label="名称" />
|
||||
<el-table-column prop="status" label="状态" />
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, computed, onMounted } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { createFlowDefinition, listFlowDefinitions } from '@/api/flow'
|
||||
|
||||
const form = reactive({
|
||||
flowCode: '',
|
||||
flowName: '',
|
||||
nodes: [] as any[],
|
||||
})
|
||||
|
||||
const nodesJson = computed({
|
||||
get: () => JSON.stringify(form.nodes, null, 2),
|
||||
set: (val) => {
|
||||
try { form.nodes = JSON.parse(val) } catch {}
|
||||
},
|
||||
})
|
||||
|
||||
const flows = ref<any[]>([])
|
||||
|
||||
async function loadFlows() {
|
||||
try {
|
||||
const res: any = await listFlowDefinitions()
|
||||
flows.value = res.data || []
|
||||
} catch (e: any) {
|
||||
ElMessage.error(e.message)
|
||||
}
|
||||
}
|
||||
|
||||
async function handleCreate() {
|
||||
try {
|
||||
const res: any = await createFlowDefinition(form)
|
||||
flows.value.unshift(res.data)
|
||||
ElMessage.success('保存成功')
|
||||
} catch (e: any) {
|
||||
ElMessage.error(e.message)
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(loadFlows)
|
||||
</script>
|
||||
Reference in New Issue
Block a user