|
|
@@ -0,0 +1,93 @@
|
|
|
+<template>
|
|
|
+ <PagingTable url="/admin/org" :where="where" ref="table">
|
|
|
+ <template #filter>
|
|
|
+ <ElButton :icon="Plus" @click="onEdit()">添加</ElButton>
|
|
|
+ </template>
|
|
|
+ <ElTableColumn prop="id" label="#" width="80" />
|
|
|
+ <ElTableColumn prop="name" label="企业名称" min-width="120" />
|
|
|
+ <ElTableColumn prop="logo" label="LOGO" min-width="80" align="center">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <div class="flex items-center justify-center">
|
|
|
+ <ElImage :src="row.logo" v-if="row.logo" style="width: 30px; height: 30px" fit="cover"></ElImage>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </ElTableColumn>
|
|
|
+ <ElTableColumn prop="assistantName" label="助手名称" min-width="120" />
|
|
|
+ <ElTableColumn prop="description" label="描述" min-width="120"></ElTableColumn>
|
|
|
+ <ElTableColumn prop="createdAt" label="创建时间" :formatter="timeFormatter" width="150" />
|
|
|
+ <ElTableColumn label="操作" align="center" width="100">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <ElButton @click="onEdit(row)">编辑</ElButton>
|
|
|
+ </template>
|
|
|
+ </ElTableColumn>
|
|
|
+ </PagingTable>
|
|
|
+ <EditDialog
|
|
|
+ v-model="showEditDialog"
|
|
|
+ :model="model"
|
|
|
+ :rules="rules"
|
|
|
+ :on-submit="submit"
|
|
|
+ @success="table.refresh()"
|
|
|
+ label-width="100px"
|
|
|
+ >
|
|
|
+ <ElFormItem prop="name" label="企业名称">
|
|
|
+ <ElInput v-model="model.name" placeholder="请输入企业名称" />
|
|
|
+ </ElFormItem>
|
|
|
+ <ElFormItem prop="logo" label="LOGO">
|
|
|
+ <SingleUpload v-model="model.logo" />
|
|
|
+ </ElFormItem>
|
|
|
+ <ElFormItem prop="assistantName" label="助手名称">
|
|
|
+ <ElInput v-model="model.assistantName" placeholder="请输入昵称" />
|
|
|
+ </ElFormItem>
|
|
|
+ <ElFormItem prop="description" label="描述">
|
|
|
+ <ElInput v-model="model.description" placeholder="请输入描述" />
|
|
|
+ </ElFormItem>
|
|
|
+ <ElFormItem prop="systemPrompt" label="系统提示词">
|
|
|
+ <ElInput type="textarea" v-model="model.systemPrompt" placeholder="请输入系统提示词" autosize />
|
|
|
+ </ElFormItem>
|
|
|
+ <ElFormItem prop="questionTemplate" label="提问模版">
|
|
|
+ <ElInput type="textarea" v-model="model.questionTemplate" placeholder="请输入提问模版" autosize />
|
|
|
+ </ElFormItem>
|
|
|
+
|
|
|
+ <ElFormItem prop="orgId" label="企业ID" v-if="model.roles && model.roles[0] === 'org'">
|
|
|
+ <ElInputNumber :controls="false" v-model="model.orgId" placeholder="请输入企业ID" />
|
|
|
+ </ElFormItem>
|
|
|
+ </EditDialog>
|
|
|
+</template>
|
|
|
+<script setup>
|
|
|
+import { ref } from 'vue'
|
|
|
+import PagingTable from '@/components/PagingTable.vue'
|
|
|
+import { useTimeFormatter } from '@/utils/formatter'
|
|
|
+import { Plus } from '@vicons/tabler'
|
|
|
+import EditDialog from '@/components/EditDialog.vue'
|
|
|
+import { setupEditDialog } from '@/utils/editDialog'
|
|
|
+import EnumSelect from '@/components/EnumSelect.vue'
|
|
|
+import { http } from '@/plugins/http'
|
|
|
+import { ElMessage } from 'element-plus'
|
|
|
+import { useClipboard } from '@vueuse/core'
|
|
|
+import SingleUpload from '@/components/SingleUpload.vue'
|
|
|
+
|
|
|
+const where = ref({})
|
|
|
+const timeFormatter = useTimeFormatter()
|
|
|
+const table = ref(null)
|
|
|
+const model = ref({})
|
|
|
+const rules = {
|
|
|
+ name: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
|
|
|
+ logo: [{ required: true, message: '请上传LOGO', trigger: 'blur' }],
|
|
|
+ assistantName: [{ required: true, message: '请输入助手名称', trigger: 'blur' }],
|
|
|
+ description: [{ required: true, message: '请输入描述', trigger: 'blur' }],
|
|
|
+ systemPrompt: [{ required: true, message: '请输入系统提示词', trigger: 'blur' }],
|
|
|
+ questionTemplate: [{ required: true, message: '请输入提问模版', trigger: 'blur' }]
|
|
|
+}
|
|
|
+const { showEditDialog, onEdit } = setupEditDialog(model)
|
|
|
+async function submit() {
|
|
|
+ await http.put(model.value.id ? `/admin/org/${model.value.id}` : '/admin/org', model.value)
|
|
|
+ ElMessage.success('保存成功')
|
|
|
+}
|
|
|
+function getToken(row) {
|
|
|
+ http.get(`/auth/admin/user/${row.id}/token`).then((res) => {
|
|
|
+ const { copy } = useClipboard({ legacy: true })
|
|
|
+ copy(res.access_token)
|
|
|
+ ElMessage.success('复制成功')
|
|
|
+ })
|
|
|
+}
|
|
|
+</script>
|