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:
2026-07-07 12:42:17 +08:00
parent bd0ac464cf
commit 91d5c29f23
41 changed files with 2948 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
<template>
<div>
<el-form :model="form" inline>
<el-form-item label="渠道">
<el-select v-model="form.channelType" placeholder="选择渠道">
<el-option label="企微" value="wecom" />
<el-option label="钉钉" value="dingtalk" />
<el-option label="飞书" value="feishu" />
</el-select>
</el-form-item>
<el-form-item label="主体编码">
<el-input v-model="form.subjectCode" placeholder="主体编码" />
</el-form-item>
<el-form-item label="主体名称">
<el-input v-model="form.subjectName" placeholder="主体名称" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleCreate">创建</el-button>
</el-form-item>
</el-form>
<el-table :data="subjects" border>
<el-table-column prop="id" label="ID" width="80" />
<el-table-column prop="channelType" label="渠道" />
<el-table-column prop="subjectCode" label="编码" />
<el-table-column prop="subjectName" label="名称" />
<el-table-column prop="corpId" label="CorpID" />
<el-table-column prop="status" label="状态" />
</el-table>
</div>
</template>
<script setup lang="ts">
import { reactive, ref } from 'vue'
import { ElMessage } from 'element-plus'
import { createChannelSubject } from '@/api/channel'
const form = reactive({
channelType: 'wecom',
subjectCode: '',
subjectName: '',
corpId: '',
})
const subjects = ref<any[]>([])
async function handleCreate() {
try {
const res: any = await createChannelSubject(form)
subjects.value.unshift(res.data)
ElMessage.success('创建成功')
} catch (e: any) {
ElMessage.error(e.message)
}
}
</script>