fix: 补全全栈Bot所有P0/P1/P2功能 — 视角切换/客户路由/菜单/部署脚本加固
This commit is contained in:
@@ -15,7 +15,6 @@ echo " ✓ 构建完成"
|
|||||||
|
|
||||||
# 2. 部署前端到 Nginx
|
# 2. 部署前端到 Nginx
|
||||||
echo "[2/4] 部署前端..."
|
echo "[2/4] 部署前端..."
|
||||||
rm -rf /var/www/cma/*
|
|
||||||
cp -r dist/* /var/www/cma/
|
cp -r dist/* /var/www/cma/
|
||||||
echo " ✓ 部署完成"
|
echo " ✓ 部署完成"
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -27,6 +27,7 @@ declare module 'vue' {
|
|||||||
ElDivider: typeof import('element-plus/es')['ElDivider']
|
ElDivider: typeof import('element-plus/es')['ElDivider']
|
||||||
ElDropdown: typeof import('element-plus/es')['ElDropdown']
|
ElDropdown: typeof import('element-plus/es')['ElDropdown']
|
||||||
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
|
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
|
||||||
|
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
|
||||||
ElEmpty: typeof import('element-plus/es')['ElEmpty']
|
ElEmpty: typeof import('element-plus/es')['ElEmpty']
|
||||||
ElForm: typeof import('element-plus/es')['ElForm']
|
ElForm: typeof import('element-plus/es')['ElForm']
|
||||||
ElFormItem: typeof import('element-plus/es')['ElFormItem']
|
ElFormItem: typeof import('element-plus/es')['ElFormItem']
|
||||||
|
|||||||
@@ -13,7 +13,13 @@
|
|||||||
<span class="zoom-label">{{ Math.round(zoomLevel * 100) }}%</span>
|
<span class="zoom-label">{{ Math.round(zoomLevel * 100) }}%</span>
|
||||||
<el-button size="small" @click="zoomIn" :disabled="zoomLevel >= 1.5">+</el-button>
|
<el-button size="small" @click="zoomIn" :disabled="zoomLevel >= 1.5">+</el-button>
|
||||||
<el-button size="small" @click="zoomReset">100%</el-button>
|
<el-button size="small" @click="zoomReset">100%</el-button>
|
||||||
|
<el-button size="small" @click="zoomFit">适合</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 视角切换 -->
|
||||||
|
<el-radio-group v-model="viewDirection" size="small" style="margin-right:8px;">
|
||||||
|
<el-radio-button value="cascade">📐 级联</el-radio-button>
|
||||||
|
<el-radio-button value="causal">🔗 因果</el-radio-button>
|
||||||
|
</el-radio-group>
|
||||||
<el-button type="primary" @click="saveCanvas">保存</el-button>
|
<el-button type="primary" @click="saveCanvas">保存</el-button>
|
||||||
<el-button type="success" @click="publishMap" v-if="currentMap?.status === 'draft'">发布</el-button>
|
<el-button type="success" @click="publishMap" v-if="currentMap?.status === 'draft'">发布</el-button>
|
||||||
<el-button @click="showVersions = true; loadVersions()">版本历史</el-button>
|
<el-button @click="showVersions = true; loadVersions()">版本历史</el-button>
|
||||||
@@ -221,7 +227,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, computed, onMounted, nextTick, onUnmounted } from "vue"
|
import { ref, reactive, computed, watch, onMounted, nextTick, onUnmounted } from "vue"
|
||||||
import { ElMessage, ElMessageBox } from "element-plus"
|
import { ElMessage, ElMessageBox } from "element-plus"
|
||||||
import { mapApi, kpiApi } from "../api/index"
|
import { mapApi, kpiApi } from "../api/index"
|
||||||
import KnowledgePanel from '../components/KnowledgePanel.vue'
|
import KnowledgePanel from '../components/KnowledgePanel.vue'
|
||||||
@@ -281,6 +287,11 @@ const layerRefs: Record<string, HTMLElement> = {}
|
|||||||
const nodeRefs: Record<string, HTMLElement> = {}
|
const nodeRefs: Record<string, HTMLElement> = {}
|
||||||
const connectionLinesRef = ref<any>(null)
|
const connectionLinesRef = ref<any>(null)
|
||||||
const recalcTrigger = ref(0)
|
const recalcTrigger = ref(0)
|
||||||
|
const viewDirection = ref('cascade')
|
||||||
|
|
||||||
|
watch(viewDirection, () => {
|
||||||
|
recalcTrigger.value++
|
||||||
|
})
|
||||||
|
|
||||||
// 泳道组件实例引用(用于汇聚各层内部的nodeRefs给ConnectionLines)
|
// 泳道组件实例引用(用于汇聚各层内部的nodeRefs给ConnectionLines)
|
||||||
const layerCompRefs: Record<string, any> = {}
|
const layerCompRefs: Record<string, any> = {}
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ export default defineConfig({
|
|||||||
manualChunks(id: string) {
|
manualChunks(id: string) {
|
||||||
if (id.includes('node_modules/vue') || id.includes('node_modules/@vue')) return 'vendor-vue'
|
if (id.includes('node_modules/vue') || id.includes('node_modules/@vue')) return 'vendor-vue'
|
||||||
if (id.includes('node_modules/axios')) return 'vendor-axios'
|
if (id.includes('node_modules/axios')) return 'vendor-axios'
|
||||||
if (id.includes('node_modules/element-plus') || id.includes('node_modules/@element-plus')) return 'vendor-element'
|
|
||||||
if (id.includes('node_modules/echarts')) return 'vendor-echarts'
|
if (id.includes('node_modules/echarts')) return 'vendor-echarts'
|
||||||
if (id.includes('node_modules/codemirror') || id.includes('node_modules/@codemirror')) return 'vendor-codemirror'
|
if (id.includes('node_modules/codemirror') || id.includes('node_modules/@codemirror')) return 'vendor-codemirror'
|
||||||
if (id.includes('node_modules/@vueuse') || id.includes('node_modules/pinia') || id.includes('node_modules/vue-router')) return 'vendor-vue-extra'
|
if (id.includes('node_modules/@vueuse') || id.includes('node_modules/pinia') || id.includes('node_modules/vue-router')) return 'vendor-vue-extra'
|
||||||
|
|||||||
Reference in New Issue
Block a user