|
|
@@ -1,640 +1,78 @@
|
|
|
<template>
|
|
|
- <div class="tag-test">
|
|
|
- <div class="treeTest">
|
|
|
- <TagTestComponent />
|
|
|
- </div>
|
|
|
- <!-- 测试输入区 -->
|
|
|
- <div class="test-input-section">
|
|
|
- <h4 class="section-title">测试输入</h4>
|
|
|
+ <div class="tagging-test-container">
|
|
|
+ <!-- 标签页切换 -->
|
|
|
+ <el-tabs v-model="activeTab" type="border-card">
|
|
|
+ <!-- 打标发起标签页 -->
|
|
|
+ <el-tab-pane label="打标发起" name="apply">
|
|
|
+ <TaggingApply @smart-tagging="handleSmartTagging" @test-clear="handleTestClear" />
|
|
|
+ </el-tab-pane>
|
|
|
|
|
|
- <!-- 输入信息区域 -->
|
|
|
- <div class="input-section">
|
|
|
- <!-- 第一行:标签体系 + 贷款申请编号 -->
|
|
|
- <div class="form-row">
|
|
|
- <div class="form-item">
|
|
|
- <label class="form-label">标签体系:</label>
|
|
|
- <el-select v-model="tagCategoryId" placeholder="请选择标签体系" style="width: 250px;">
|
|
|
- <el-option v-for="(system, index) in tagSystems" :key="index" :label="system.categoryNm" :value="system.categoryId"></el-option>
|
|
|
- </el-select>
|
|
|
- </div>
|
|
|
- <div class="form-item">
|
|
|
- <label class="form-label">贷款申请编号:</label>
|
|
|
- <div class="business-attr-wrapper">
|
|
|
- <el-input v-model="businessAttr" readonly style="width: 200px;"></el-input>
|
|
|
- <el-button type="text" @click="generateBusinessAttr">更新</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- 第二行:用户ID + 用户姓名 -->
|
|
|
- <div class="form-row">
|
|
|
- <div class="form-item">
|
|
|
- <label class="form-label">用户ID:</label>
|
|
|
- <el-input v-model="userId" placeholder="请输入用户ID" style="width: 250px;"></el-input>
|
|
|
- </div>
|
|
|
- <div class="form-item">
|
|
|
- <label class="form-label">用户姓名:</label>
|
|
|
- <el-input v-model="userNm" placeholder="请输入用户姓名" style="width: 250px;"></el-input>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- 第三行:所属机构 + 所属行社 -->
|
|
|
- <div class="form-row">
|
|
|
- <div class="form-item">
|
|
|
- <label class="form-label">所属机构:</label>
|
|
|
- <el-input v-model="userOrg" placeholder="请输入所属机构" style="width: 250px;"></el-input>
|
|
|
- </div>
|
|
|
- <div class="form-item">
|
|
|
- <label class="form-label">所属行社:</label>
|
|
|
- <el-input v-model="userEndpoint" placeholder="请输入所属行社" style="width: 250px;"></el-input>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- 打标内容 -->
|
|
|
- <div class="form-item">
|
|
|
- <label class="form-label">打标内容:</label>
|
|
|
- <el-input
|
|
|
- type="textarea"
|
|
|
- v-model="phrase"
|
|
|
- placeholder="请输入要测试的文本内容,例如:职业:水产养殖人员 投向:海水养殖 用途:个人经营"
|
|
|
- :rows="6"
|
|
|
- style="width: 100%;"
|
|
|
- ></el-input>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- 操作按钮 -->
|
|
|
- <div class="input-actions">
|
|
|
- <el-button @click="handleClear">清空</el-button>
|
|
|
- <el-button type="primary" @click="handleSmartTagging">智能打标发起</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- 智能打标结果区 -->
|
|
|
- <div class="smart-tagging-result">
|
|
|
- <div class="result-header">
|
|
|
- <h4 class="section-title">智能打标结果</h4>
|
|
|
- <div class="result-info" v-if="taggingResults.length > 0">
|
|
|
- <span>打标结果数:{{ taggingResults.length }}</span>
|
|
|
- <span>打标时间:{{ taggingTime }}</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- 有结果时显示结果卡片 -->
|
|
|
- <div class="result-content" v-if="taggingResults.length > 0">
|
|
|
- <el-card
|
|
|
- v-for="(result, index) in taggingResults"
|
|
|
- :key="index"
|
|
|
- class="tag-result-card"
|
|
|
- >
|
|
|
- <div class="tag-result-header">
|
|
|
- <span class="tag-path">{{ result.path }}</span>
|
|
|
- </div>
|
|
|
- <div class="tag-result-body">
|
|
|
- <div class="result-item">
|
|
|
- <span class="result-label">打标依据:</span>
|
|
|
- <div class="result-text">{{ result.reason || '暂无依据' }}</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </el-card>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- 空结果提示 -->
|
|
|
- <div class="empty-result" v-else>
|
|
|
- <img src="@/assets/images/noData.png" alt="暂无数据">
|
|
|
- <p>{{ noMatchFound ? '未找到匹配的标签' : '暂无打标结果,请输入内容并点击智能打标按钮' }}</p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <!-- 打标确认标签页 -->
|
|
|
+ <el-tab-pane label="打标确认" name="confirm">
|
|
|
+ <TaggingConfirm />
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import TagTestComponent from './TagTestComponent.vue'
|
|
|
+import TaggingApply from './taggingApply.vue';
|
|
|
+import TaggingConfirm from './taggingConfirm.vue';
|
|
|
|
|
|
export default {
|
|
|
- name: 'TagTest',
|
|
|
+ name: 'TaggingTest',
|
|
|
components: {
|
|
|
- TagTestComponent
|
|
|
+ TaggingApply,
|
|
|
+ TaggingConfirm
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- // 标签体系选择
|
|
|
- tagCategoryId: '',
|
|
|
- // 标签体系列表
|
|
|
- tagSystems: [],
|
|
|
- // 贷款申请编号(20位随机字符串)
|
|
|
- businessAttr: '',
|
|
|
- // 打标内容
|
|
|
- phrase: '',
|
|
|
- // 用户信息
|
|
|
- userId: yufp.session.userId || '',
|
|
|
- userNm: yufp.session.userName || '',
|
|
|
- userOrg: yufp.session.org ? yufp.session.org.name : '',
|
|
|
- userEndpoint: '',
|
|
|
- // 智能打标结果
|
|
|
- taggingResults: [],
|
|
|
- // 是否未找到匹配的标签
|
|
|
- noMatchFound: false,
|
|
|
- // 打标时间
|
|
|
- taggingTime: '',
|
|
|
- // 轮询相关
|
|
|
- pollingTimer: null
|
|
|
+ // 当前激活的标签页
|
|
|
+ activeTab: 'apply'
|
|
|
}
|
|
|
},
|
|
|
- mounted() {
|
|
|
- // 生成初始的businessAttr
|
|
|
- this.generateBusinessAttr();
|
|
|
- // 加载标签体系列表
|
|
|
- this.loadTagSystems();
|
|
|
- },
|
|
|
- beforeDestroy() {
|
|
|
- // 组件销毁前清除轮询定时器
|
|
|
- this.clearPolling();
|
|
|
- },
|
|
|
methods: {
|
|
|
- // 生成20位随机字符串(数字和小写英文)
|
|
|
- generateBusinessAttr() {
|
|
|
- const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
|
- let result = '';
|
|
|
- for (let i = 0; i < 20; i++) {
|
|
|
- result += chars.charAt(Math.floor(Math.random() * chars.length));
|
|
|
- }
|
|
|
- this.businessAttr = result;
|
|
|
- console.log('生成businessAttr:', this.businessAttr);
|
|
|
- },
|
|
|
-
|
|
|
- // 加载标签体系列表
|
|
|
- loadTagSystems() {
|
|
|
- yufp.service.request({
|
|
|
- url: backend.tagServer + "/api/aitag-tagcategory/enablelist",
|
|
|
- method: 'get',
|
|
|
- data: {},
|
|
|
- callback: (code, error, response) => {
|
|
|
- if (response.code == '0') {
|
|
|
- this.tagSystems = (response.data || []).map(item => ({
|
|
|
- ...item,
|
|
|
- categoryId: item.categoryId || item.id || ''
|
|
|
- }));
|
|
|
- console.log('标签体系数据:', this.tagSystems);
|
|
|
- // 默认选中第一条数据
|
|
|
- if (this.tagSystems.length > 0) {
|
|
|
- this.tagCategoryId = this.tagSystems[0].categoryId;
|
|
|
- }
|
|
|
- } else {
|
|
|
- this.$message.error(response.message || '获取标签体系列表失败');
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- },
|
|
|
-
|
|
|
- // 智能打标
|
|
|
- handleSmartTagging() {
|
|
|
- // 检查必填项
|
|
|
- if (!this.tagCategoryId) {
|
|
|
- this.$message.warning('请选择标签体系');
|
|
|
- return;
|
|
|
- }
|
|
|
- if (!this.businessAttr) {
|
|
|
- this.$message.warning('贷款申请编号不能为空');
|
|
|
- return;
|
|
|
- }
|
|
|
- if (!this.phrase.trim()) {
|
|
|
- this.$message.warning('请输入打标内容');
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- console.log('智能打标:', {
|
|
|
- businessAttr: this.businessAttr,
|
|
|
- phrase: this.phrase,
|
|
|
- tagCategoryId: this.tagCategoryId,
|
|
|
- userId: this.userId,
|
|
|
- userNm: this.userNm,
|
|
|
- userOrg: this.userOrg,
|
|
|
- userEndpoint: this.userEndpoint
|
|
|
- });
|
|
|
-
|
|
|
- // 显示加载提示
|
|
|
- this.$message({
|
|
|
- message: '正在进行智能打标,请稍候...',
|
|
|
- type: 'loading',
|
|
|
- duration: 3000
|
|
|
- });
|
|
|
-
|
|
|
- // 构建请求参数
|
|
|
- const requestData = {
|
|
|
- businessAttr: this.businessAttr,
|
|
|
- phrase: this.phrase.trim(),
|
|
|
- tagCategoryId: this.tagCategoryId,
|
|
|
- userId: this.userId,
|
|
|
- userNm: this.userNm,
|
|
|
- userOrg: this.userOrg,
|
|
|
- userEndpoint: this.userEndpoint
|
|
|
- };
|
|
|
-
|
|
|
- console.log('智能打标请求参数:', requestData);
|
|
|
-
|
|
|
- // 调用智能打标接口
|
|
|
- yufp.service.request({
|
|
|
- url: backend.tagServer + "/api/fastapi/tagging",
|
|
|
- method: 'post',
|
|
|
- data: requestData,
|
|
|
- callback: (code, error, response) => {
|
|
|
- if (response.code == '0') {
|
|
|
- // 清除之前的轮询
|
|
|
- this.clearPolling();
|
|
|
-
|
|
|
- // 显示处理中提示
|
|
|
- const loadingInstance = this.$loading({
|
|
|
- lock: true,
|
|
|
- text: '智能打标中,请稍候...',
|
|
|
- spinner: 'el-icon-loading',
|
|
|
- background: 'rgba(0, 0, 0, 0.7)',
|
|
|
- target: this.$el
|
|
|
- });
|
|
|
-
|
|
|
- // 开始轮询查询打标结果
|
|
|
- this.pollTaggingResult(this.businessAttr, loadingInstance);
|
|
|
- } else {
|
|
|
- this.$message.error(response.message || '智能打标失败');
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- },
|
|
|
-
|
|
|
- // 轮询查询打标结果
|
|
|
- pollTaggingResult(businessAttr, loadingInstance) {
|
|
|
- // 构建查询参数
|
|
|
- const queryParams = {
|
|
|
- businessAttr: businessAttr
|
|
|
- };
|
|
|
-
|
|
|
- // 调用查询接口
|
|
|
- yufp.service.request({
|
|
|
- url: backend.tagServer + "/api/fastapi/query",
|
|
|
- method: 'get',
|
|
|
- data: queryParams,
|
|
|
- callback: (code, error, response) => {
|
|
|
- if (response.code == '0') {
|
|
|
- // 处理查询结果
|
|
|
- // 实际数据在 response.data.data 中
|
|
|
- const responseData = response.data && response.data.data ? response.data.data : null;
|
|
|
-
|
|
|
- if (!responseData) {
|
|
|
- // 无数据,继续轮询
|
|
|
- this.pollingTimer = setTimeout(() => {
|
|
|
- this.pollTaggingResult(businessAttr, loadingInstance);
|
|
|
- }, 3000);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // 获取state状态:0-打标执行中;1-打标完成;2-已确认;3-已推送
|
|
|
- const state = responseData.state;
|
|
|
-
|
|
|
- if (state === 0) {
|
|
|
- // 打标执行中,继续轮询
|
|
|
- this.pollingTimer = setTimeout(() => {
|
|
|
- this.pollTaggingResult(businessAttr, loadingInstance);
|
|
|
- }, 3000);
|
|
|
- } else if (state === 1 || state === 2 || state === 3) {
|
|
|
- // 打标完成、已确认或已推送,停止轮询
|
|
|
- loadingInstance.close();
|
|
|
- this.clearPolling();
|
|
|
-
|
|
|
- // 处理result字段
|
|
|
- let resultList = [];
|
|
|
- if (responseData.result) {
|
|
|
- if (typeof responseData.result === 'string') {
|
|
|
- try {
|
|
|
- const parsedResult = JSON.parse(responseData.result);
|
|
|
- if (Array.isArray(parsedResult)) {
|
|
|
- resultList = parsedResult;
|
|
|
- }
|
|
|
- } catch (error) {
|
|
|
- console.error('解析result失败:', error);
|
|
|
- }
|
|
|
- } else if (Array.isArray(responseData.result)) {
|
|
|
- resultList = responseData.result;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 处理打标结果(测试环境不过滤passr状态)
|
|
|
- this.taggingResults = resultList.map(item => ({
|
|
|
- code: item.tag_code || '',
|
|
|
- name: item.tag_name || '',
|
|
|
- path: item.tag_path || '',
|
|
|
- method: '智能打标',
|
|
|
- reason: item.desc || ''
|
|
|
- }));
|
|
|
-
|
|
|
- // 设置打标时间(使用接口返回的insert_time)
|
|
|
- this.taggingTime = responseData.insert_time || new Date().toLocaleString();
|
|
|
-
|
|
|
- if (this.taggingResults.length > 0) {
|
|
|
- this.$message.success('智能打标完成');
|
|
|
- this.noMatchFound = false;
|
|
|
- } else {
|
|
|
- this.noMatchFound = true;
|
|
|
- }
|
|
|
-
|
|
|
- // 触发父组件事件
|
|
|
- this.$emit('smart-tagging', {
|
|
|
- businessAttr: this.businessAttr,
|
|
|
- phrase: this.phrase,
|
|
|
- tagCategoryId: this.tagCategoryId,
|
|
|
- userId: this.userId,
|
|
|
- userNm: this.userNm,
|
|
|
- userOrg: this.userOrg,
|
|
|
- userEndpoint: this.userEndpoint,
|
|
|
- results: this.taggingResults,
|
|
|
- time: this.taggingTime
|
|
|
- });
|
|
|
- } else {
|
|
|
- // 未知状态,继续轮询
|
|
|
- this.pollingTimer = setTimeout(() => {
|
|
|
- this.pollTaggingResult(businessAttr, loadingInstance);
|
|
|
- }, 3000);
|
|
|
- }
|
|
|
- } else {
|
|
|
- // 接口调用失败,停止轮询
|
|
|
- loadingInstance.close();
|
|
|
- this.clearPolling();
|
|
|
- this.$message.error(response.message || '查询打标结果失败');
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
+ // 处理智能打标事件
|
|
|
+ handleSmartTagging(data) {
|
|
|
+ console.log('智能打标事件:', data);
|
|
|
+ // 可以在这里处理打标结果,例如保存到本地存储或传递给其他组件
|
|
|
},
|
|
|
|
|
|
- // 清除轮询
|
|
|
- clearPolling() {
|
|
|
- if (this.pollingTimer) {
|
|
|
- clearTimeout(this.pollingTimer);
|
|
|
- this.pollingTimer = null;
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- // 清空
|
|
|
- handleClear() {
|
|
|
- // 重新生成businessAttr
|
|
|
- this.generateBusinessAttr();
|
|
|
- // 清空打标内容
|
|
|
- this.phrase = '';
|
|
|
- // 清空用户信息
|
|
|
- this.userId = '';
|
|
|
- this.userNm = '';
|
|
|
- this.userOrg = '';
|
|
|
- this.userEndpoint = '';
|
|
|
- // 清空打标结果
|
|
|
- this.taggingResults = [];
|
|
|
- this.taggingTime = '';
|
|
|
-
|
|
|
- this.$message.info('已清空测试内容');
|
|
|
-
|
|
|
- // 触发父组件事件
|
|
|
- this.$emit('test-clear');
|
|
|
+ // 处理测试清空事件
|
|
|
+ handleTestClear() {
|
|
|
+ console.log('测试清空事件');
|
|
|
+ // 可以在这里处理清空操作的后续逻辑
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
- .treeTest{
|
|
|
- width: 240px;
|
|
|
- height: 400px;
|
|
|
- }
|
|
|
-.tag-test {
|
|
|
+.tagging-test-container {
|
|
|
height: 100%;
|
|
|
-}
|
|
|
-
|
|
|
-/* 测试输入区 */
|
|
|
-.test-input-section {
|
|
|
- background-color: #fafafa;
|
|
|
- border-radius: 8px;
|
|
|
padding: 20px;
|
|
|
- margin-bottom: 24px;
|
|
|
-}
|
|
|
-
|
|
|
-.section-title {
|
|
|
- font-size: 14px;
|
|
|
- font-weight: 600;
|
|
|
- color: #303133;
|
|
|
- margin: 0 0 16px 0;
|
|
|
- text-align: left;
|
|
|
-}
|
|
|
-
|
|
|
-/* 输入信息区域 */
|
|
|
-.input-section {
|
|
|
- margin-bottom: 16px;
|
|
|
-}
|
|
|
-
|
|
|
-/* 表单行 */
|
|
|
-.form-row {
|
|
|
- display: flex;
|
|
|
- gap: 24px;
|
|
|
- margin-bottom: 16px;
|
|
|
- flex-wrap: wrap;
|
|
|
-}
|
|
|
-
|
|
|
-/* 表单项 */
|
|
|
-.form-item {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- flex: 1;
|
|
|
- min-width: 350px;
|
|
|
-}
|
|
|
-
|
|
|
-/* 标签统一宽度 */
|
|
|
-.form-label {
|
|
|
- width: 100px;
|
|
|
- font-size: 14px;
|
|
|
- color: #606266;
|
|
|
- text-align: right;
|
|
|
- margin-right: 12px;
|
|
|
- flex-shrink: 0;
|
|
|
-}
|
|
|
-
|
|
|
-/* businessAttr包装器 */
|
|
|
-.business-attr-wrapper {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- gap: 8px;
|
|
|
- flex: 1;
|
|
|
-}
|
|
|
-
|
|
|
-.business-attr-wrapper .el-input {
|
|
|
- flex: 1;
|
|
|
}
|
|
|
|
|
|
-/* 输入操作按钮 */
|
|
|
-.input-actions {
|
|
|
- display: flex;
|
|
|
- justify-content: flex-end;
|
|
|
- gap: 12px;
|
|
|
-}
|
|
|
-
|
|
|
-/* 智能打标结果区 */
|
|
|
-.smart-tagging-result {
|
|
|
- background-color: #fafafa;
|
|
|
- border-radius: 8px;
|
|
|
- padding: 20px;
|
|
|
-}
|
|
|
-
|
|
|
-/* 结果头部 */
|
|
|
-.result-header {
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- align-items: center;
|
|
|
- margin-bottom: 16px;
|
|
|
- padding-bottom: 12px;
|
|
|
- border-bottom: 1px solid #e8e8e8;
|
|
|
-}
|
|
|
-
|
|
|
-.result-info {
|
|
|
- display: flex;
|
|
|
- gap: 20px;
|
|
|
- font-size: 12px;
|
|
|
- color: #909399;
|
|
|
-}
|
|
|
-
|
|
|
-/* 结果内容 */
|
|
|
-.result-content {
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- gap: 16px;
|
|
|
-}
|
|
|
-
|
|
|
-/* 标签结果卡片 */
|
|
|
-.tag-result-card {
|
|
|
- border-radius: 8px;
|
|
|
- overflow: hidden;
|
|
|
-}
|
|
|
-
|
|
|
-/* 标签结果头部 */
|
|
|
-.tag-result-header {
|
|
|
- background-color: #e6f7ff;
|
|
|
- padding: 12px 16px;
|
|
|
- margin: -16px -16px 16px;
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- gap: 12px;
|
|
|
-}
|
|
|
-
|
|
|
-.tag-path {
|
|
|
- font-weight: 600;
|
|
|
- color: #303133;
|
|
|
-}
|
|
|
-
|
|
|
-/* 标签结果主体 */
|
|
|
-.tag-result-body {
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- gap: 12px;
|
|
|
-}
|
|
|
-
|
|
|
-.result-item {
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- gap: 4px;
|
|
|
-}
|
|
|
-
|
|
|
-.result-label {
|
|
|
- font-size: 12px;
|
|
|
- color: #606266;
|
|
|
- margin-bottom: 4px;
|
|
|
- text-align: left;
|
|
|
-}
|
|
|
-
|
|
|
-.result-input {
|
|
|
- font-size: 14px;
|
|
|
-}
|
|
|
-
|
|
|
-.result-text {
|
|
|
- font-size: 14px;
|
|
|
- color: #303133;
|
|
|
- line-height: 1.6;
|
|
|
- padding: 8px 12px;
|
|
|
- background-color: #f5f7fa;
|
|
|
- border-radius: 4px;
|
|
|
- min-height: 60px;
|
|
|
- text-align: left;
|
|
|
-}
|
|
|
-
|
|
|
-/* 空结果提示 */
|
|
|
-.empty-result {
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
- padding: 60px 20px;
|
|
|
- color: #909399;
|
|
|
- background-color: #fafafa;
|
|
|
- margin-top: 16px;
|
|
|
- min-height: 200px;
|
|
|
-}
|
|
|
-
|
|
|
-.empty-result img {
|
|
|
- width: 120px;
|
|
|
- height: 120px;
|
|
|
- margin-bottom: 16px;
|
|
|
- opacity: 0.6;
|
|
|
+/* 标签页样式 */
|
|
|
+.el-tabs {
|
|
|
+ height: 100%;
|
|
|
}
|
|
|
|
|
|
-.empty-result p {
|
|
|
- font-size: 14px;
|
|
|
- color: #909399;
|
|
|
- margin: 0;
|
|
|
- line-height: 1.5;
|
|
|
+.el-tabs__content {
|
|
|
+ height: calc(100% - 60px);
|
|
|
+ overflow: auto;
|
|
|
+ padding-top: 20px;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/* 响应式设计 */
|
|
|
@media (max-width: 768px) {
|
|
|
- .result-header {
|
|
|
- flex-direction: column;
|
|
|
- align-items: flex-start;
|
|
|
- gap: 8px;
|
|
|
- }
|
|
|
-
|
|
|
- .result-info {
|
|
|
- align-self: stretch;
|
|
|
- justify-content: space-between;
|
|
|
- }
|
|
|
-
|
|
|
- .input-actions {
|
|
|
- flex-direction: column;
|
|
|
- }
|
|
|
-
|
|
|
- .input-actions .el-button {
|
|
|
- width: 100%;
|
|
|
- }
|
|
|
-
|
|
|
- .form-row {
|
|
|
- flex-direction: column;
|
|
|
- gap: 16px;
|
|
|
- }
|
|
|
-
|
|
|
- .form-item {
|
|
|
- flex-direction: column;
|
|
|
- align-items: flex-start;
|
|
|
- min-width: auto;
|
|
|
- }
|
|
|
-
|
|
|
- .form-label {
|
|
|
- text-align: left;
|
|
|
- margin-bottom: 8px;
|
|
|
- width: 100%;
|
|
|
- }
|
|
|
-
|
|
|
- .business-attr-wrapper {
|
|
|
- width: 100%;
|
|
|
- }
|
|
|
-
|
|
|
- .business-attr-wrapper .el-input {
|
|
|
- width: 100% !important;
|
|
|
+ .tagging-test-container {
|
|
|
+ padding: 10px;
|
|
|
}
|
|
|
|
|
|
- .form-item .el-select,
|
|
|
- .form-item .el-input {
|
|
|
- width: 100% !important;
|
|
|
+ .el-tabs__content {
|
|
|
+ height: calc(100% - 50px);
|
|
|
+ padding-top: 10px;
|
|
|
}
|
|
|
}
|
|
|
</style>
|