1、机构卡片调整

2、长者标签(未完成)
This commit is contained in:
1378012178@qq.com 2025-08-15 08:55:47 +08:00
parent 37fe13e762
commit 6b6d4c06d3
15 changed files with 364 additions and 367 deletions

View File

@ -6,10 +6,10 @@ VITE_PUBLIC_PATH = /ope
# 跨域代理,您可以配置多个 ,请注意,没有换行符
VITE_PROXY = [["/opeapi","http://192.168.2.30:8081/opeapi"],["/upload","http://192.168.2.30:3300/upload"]]
VITE_PROXY = [["/opeapi","http://localhost:8081/opeapi"],["/upload","http://localhost:3300/upload"]]
#后台接口全路径地址(必填)
VITE_GLOB_DOMAIN_URL=http://192.168.2.30:8081/opeapi
VITE_GLOB_DOMAIN_URL=http://localhost:8081/opeapi
#后台接口父地址(必填)
VITE_GLOB_API_URL=/opeapi
@ -18,7 +18,7 @@ VITE_GLOB_API_URL=/opeapi
VITE_GLOB_API_URL_PREFIX=
#微前端qiankun应用,命名必须以VITE_APP_SUB_开头,jeecg-app-1为子应用的项目名称,也是子应用的路由父路径
VITE_APP_SUB_jeecg-app-1 = '//192.168.2.30:8092'
VITE_APP_SUB_jeecg-app-1 = '//localhost:8092'
# 试验田机构编码
VITE_SYTJGBM = '101'
@ -29,4 +29,4 @@ VITE_DIRECTIVE_UPLOAD_PATH = ''
# 填写后将作为乾坤子应用启动主应用注册时AppName需保持一致放开 VITE_GLOB_QIANKUN_MICRO_APP_NAME 参数表示jeecg-vue3将以乾坤子应用模式启动
#VITE_GLOB_QIANKUN_MICRO_APP_NAME=jeecg-vue3
# 作为乾坤子应用启动时必填需与qiankun主应用注册子应用时填写的 entry 保持一致
#VITE_GLOB_QIANKUN_MICRO_APP_ENTRY=//192.168.2.30:3001/jeecg-vue3
#VITE_GLOB_QIANKUN_MICRO_APP_ENTRY=//localhost:3001/jeecg-vue3

View File

@ -7,99 +7,103 @@
</template>
<script lang="ts" setup>
import { watch, ref } from 'vue';
import { theme } from 'ant-design-vue';
import { ConfigProvider } from 'ant-design-vue';
import { AppProvider } from '/@/components/Application';
import { useTitle } from '/@/hooks/web/useTitle';
import { useLocale } from '/@/locales/useLocale';
import { useAppStore } from '/@/store/modules/app';
import { useRootSetting } from '/@/hooks/setting/useRootSetting';
import { ThemeEnum } from '/@/enums/appEnum';
import { changeTheme } from '/@/logics/theme/index';
import { watch, ref } from 'vue';
import { theme } from 'ant-design-vue';
import { ConfigProvider } from 'ant-design-vue';
import { AppProvider } from '/@/components/Application';
import { useTitle } from '/@/hooks/web/useTitle';
import { useLocale } from '/@/locales/useLocale';
import { useAppStore } from '/@/store/modules/app';
import { useRootSetting } from '/@/hooks/setting/useRootSetting';
import { ThemeEnum } from '/@/enums/appEnum';
import { changeTheme } from '/@/logics/theme/index';
const appStore = useAppStore();
//
import 'dayjs/locale/zh-cn';
// support Multi-language
const { getAntdLocale } = useLocale();
const appStore = useAppStore();
//
import 'dayjs/locale/zh-cn';
// support Multi-language
const { getAntdLocale } = useLocale();
useTitle();
/**
* 2024-04-07
* liaozhiyang
* 暗黑模式下默认文字白色白天模式默认文字 #333
* */
const modeAction = (data) => {
if (data.token) {
if (getDarkMode.value === ThemeEnum.DARK) {
Object.assign(data.token, { colorTextBase: 'fff' });
} else {
Object.assign(data.token, { colorTextBase: '#333' });
}
useTitle();
/**
* 2024-04-07
* liaozhiyang
* 暗黑模式下默认文字白色白天模式默认文字 #333
* */
const modeAction = (data) => {
if (data.token) {
if (getDarkMode.value === ThemeEnum.DARK) {
Object.assign(data.token, { colorTextBase: 'fff' });
} else {
Object.assign(data.token, { colorTextBase: '#333' });
}
};
// update-begin--author:liaozhiyang---date:20231218---forQQYUN-6366antd4.x
const appTheme: any = ref({});
const { getDarkMode } = useRootSetting();
watch(
() => getDarkMode.value,
(newValue) => {
delete appTheme.value.algorithm;
if (newValue === ThemeEnum.DARK) {
appTheme.value.algorithm = theme.darkAlgorithm;
}
// update-begin--author:liaozhiyang---date:20240322---forQQYUN-8570
if (import.meta.env.PROD) {
changeTheme(appStore.getProjectConfig.themeColor);
}
// update-end--author:liaozhiyang---date:20240322---forQQYUN-8570
modeAction(appTheme.value);
appTheme.value = {
...appTheme.value,
};
},
{ immediate: true }
);
watch(
appStore.getProjectConfig,
(newValue) => {
const primary = newValue.themeColor;
const result = {
...appTheme.value,
...{
token: {
colorPrimary: primary,
wireframe: true,
fontSize: 14,
colorTextBase: '#333',
colorSuccess: '#55D187',
colorInfo: primary,
borderRadius: 4,
sizeStep: 4,
sizeUnit: 4,
colorWarning: '#EFBD47',
colorError: '#ED6F6F',
fontFamily:
'-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol',
},
}
};
// update-begin--author:liaozhiyang---date:20231218---forQQYUN-6366antd4.x
const appTheme: any = ref({});
const { getDarkMode } = useRootSetting();
watch(
() => getDarkMode.value,
(newValue) => {
delete appTheme.value.algorithm;
if (newValue === ThemeEnum.DARK) {
appTheme.value.algorithm = theme.darkAlgorithm;
}
// update-begin--author:liaozhiyang---date:20240322---forQQYUN-8570
if (import.meta.env.PROD) {
changeTheme(appStore.getProjectConfig.themeColor);
}
// update-end--author:liaozhiyang---date:20240322---forQQYUN-8570
modeAction(appTheme.value);
appTheme.value = {
...appTheme.value,
};
},
{ immediate: true }
);
watch(
appStore.getProjectConfig,
(newValue) => {
const primary = newValue.themeColor;
const result = {
...appTheme.value,
...{
token: {
colorPrimary: primary,
wireframe: true,
fontSize: 14,
colorTextBase: '#333',
colorSuccess: '#55D187',
colorInfo: primary,
borderRadius: 4,
sizeStep: 4,
sizeUnit: 4,
colorWarning: '#EFBD47',
colorError: '#ED6F6F',
fontFamily:
'-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol',
},
};
appTheme.value = result;
modeAction(result);
},
{ immediate: true }
);
setTimeout(() => {
appStore.getProjectConfig?.themeColor && changeTheme(appStore.getProjectConfig.themeColor);
}, 300);
// update-end--author:liaozhiyang---date:20231218---forQQYUN-6366antd4.x
},
};
appTheme.value = result;
modeAction(result);
},
{ immediate: true }
);
setTimeout(() => {
appStore.getProjectConfig?.themeColor && changeTheme(appStore.getProjectConfig.themeColor);
}, 300);
// update-end--author:liaozhiyang---date:20231218---forQQYUN-6366antd4.x
</script>
<style lang="less">
// update-begin--author:liaozhiyang---date:20230803---forQQYUN-5839windihtml2canvas
img {
display: inline-block;
}
// update-end--author:liaozhiyang---date:20230803---forQQYUN-5839windihtml2canvas
// update-begin--author:liaozhiyang---date:20230803---forQQYUN-5839windihtml2canvas
img {
display: inline-block;
}
// update-end--author:liaozhiyang---date:20230803---forQQYUN-5839windihtml2canvas
.p-2{
padding: 14px;
}
</style>

View File

@ -19,6 +19,9 @@ enum Api {
changeDirectiveMain = '/sys/sysDepart/changeDirectiveMain', //变更指令库
getDirectiveMain = '/sys/sysDepart/getDirectiveMain', //查询当前指令库机构信息
getDMOrgInfo = '/api/common/getDMOrgInfo', //标准指令库信息
changeElderTagMain = '/sys/sysDepart/changeElderTagMain', //变更标准标签库
getElderTagMain = '/sys/sysDepart/getElderTagMain', //查询当前标准标签库机构信息
getETMOrgInfo = '/api/common/getETMOrgInfo', //标准标签库信息
}
/**
@ -188,3 +191,25 @@ export const changeDirectiveMain = (orgCode) => {
export const getDirectiveMain = () => {
return defHttp.get({ url: Api.getDirectiveMain });
};
//标准标签库信息
export const getETMOrgInfo = () => {
return defHttp.get({ url: Api.getETMOrgInfo });
};
/**
*
* @param params
*/
export const changeElderTagMain = (orgCode) => {
return defHttp.post({ url: `${Api.changeElderTagMain}?orgCode=${encodeURIComponent(orgCode)}` });
};
/**
*
* @param params
*/
export const getElderTagMain = () => {
return defHttp.get({ url: Api.getElderTagMain });
};

View File

@ -3,7 +3,7 @@
* @Description: logo component
-->
<template>
<div class="anticon" :class="getAppLogoClass" @click="goHome" style="background: #ceeef7;text-align: center;">
<div class="anticon" :class="getAppLogoClass" @click="goHome" style="text-align: center;">
<img src="../../../assets/images/logo.png" />
<div class="ml-2 truncate md:opacity-100" :class="getTitleClass" v-show="showTitle">
{{ shortTitle }}

View File

@ -53,6 +53,57 @@ export const asyncMaincolumns: BasicColumn[] = [
}
},
];
export const asyncMaincolumnsElderTag: BasicColumn[] = [
{
title: '同步时间',
align: 'center',
dataIndex: 'createTime',
width: '150px'
},
{
title: '同步人',
align: 'center',
dataIndex: 'createBy_dictText',
width: '120px'
},
{
title: '源平台',
align: 'center',
dataIndex: 'orgName',
width: '150px'
},
{
title: '目标平台',
align: 'center',
dataIndex: 'targetOrgName',
width: '150px',
customRender: ({ record }) => {
return record.asyncStatusList?.[0]?.zorgName || '-';
}
},
{
title: '数据',
align: 'center',
dataIndex: 'dataStatus',
width: '120px',
customRender: ({ record }) => {
const dataItem = record.asyncStatusList?.find(item => item.code === 'data');
return dataItem ? (dataItem.status === '200' ? '成功' : '失败') : '-';
}
},
{
title: '文件',
align: 'center',
dataIndex: 'fileStatus',
width: '120px',
customRender: ({ record }) => {
const fileItem = record.asyncStatusList?.find(item => item.code === 'file');
return fileItem ? (fileItem.status === '200' ? '成功' : '失败') : '-';
}
},
];
//子列表数据
export const asyncStatusColumns: BasicColumn[] = [
{

View File

@ -72,7 +72,7 @@
import { ref, reactive } from 'vue';
import { BasicTable, useTable } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { asyncMaincolumns } from './AsyncMain.data';
import { asyncMaincolumns, asyncMaincolumnsElderTag } from './AsyncMain.data';
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './AsyncMain.api';
import AsyncMainModal from './components/AsyncMainModal.vue'
@ -87,7 +87,7 @@ const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
title: '数据同步主表',
api: list,
columns: asyncMaincolumns,
columns: props.type == 'elderTag' ? asyncMaincolumnsElderTag : asyncMaincolumns,
canResize: false,
useSearchForm: false,
showTableSetting: false,
@ -190,7 +190,7 @@ defineExpose({
}
.status-error {
color: #e74c3c;
color: #e74c3c;
font-weight: 600;
}
</style>

View File

@ -11,7 +11,7 @@
/>
<LayoutBreadcrumb v-if="getShowContent && getShowBread" :theme="getHeaderTheme" />
<!-- 欢迎语 -->
<span v-if="getShowContent && getShowBreadTitle && !getIsMobile" style="background: #ceeef7 !important;" :class="[prefixCls, `${prefixCls}--${getHeaderTheme}`,'headerIntroductionClass']"> {{t('layout.header.welcomeIn')}} {{ title }} </span>
<span v-if="getShowContent && getShowBreadTitle && !getIsMobile" style="" :class="[prefixCls, `${prefixCls}--${getHeaderTheme}`,'headerIntroductionClass']"> {{t('layout.header.welcomeIn')}} {{ title }} </span>
</div>
<!-- left end -->
@ -262,9 +262,9 @@
border-left: 0px;
}
.headClass{
background-image: url('../resource/img/bj.png') !important;
background-repeat: no-repeat;
background-size: 100% auto;
background-color: #e5f5f9 !important;
// background-image: url('../resource/img/bj.png') !important;
// background-repeat: no-repeat;
// background-size: 100% auto;
// background-color: #f3f6fe !important;
}
</style>

View File

@ -99,17 +99,19 @@
</a-form-item>
</a-col>
</a-row>
<a-row v-show="!isEditMedia">
<!-- <a-row v-show="!isEditMedia">
<a-col :span="24">
<a-form-item label="体型标签" id="ConfigServiceDirectiveForm-typeId" :labelCol="labelCol2"
:wrapperCol="wrapperCol2" name="typeId">
<JCheckbox v-model:value="formData.bodyTags" :orgCode="formData?.sysOrgCode"
<span v-if="!formData.bodyTags">-</span>
<JCheckbox v-else v-model:value="formData.bodyTags" :orgCode="formData?.sysOrgCode"
:dictCode="bodyTagDictCode" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="情绪标签" :labelCol="labelCol2" :wrapperCol="wrapperCol2" name="emoTags">
<JCheckbox v-model:value="formData.emotionTags" :orgCode="formData?.sysOrgCode"
<span v-if="!formData.emotionTags">-</span>
<JCheckbox v-else v-model:value="formData.emotionTags" :orgCode="formData?.sysOrgCode"
:dictCode="emotionTagDictCode" />
</a-form-item>
</a-col>
@ -120,7 +122,7 @@
placeholder="请选择是否启用"  allowClear />
</a-form-item>
</a-col>
</a-row>
</a-row> -->
<!-- <a-row> -->
<!-- <a-col :span="12">
<a-form-item label="服务指令图片" v-bind="validateInfos.previewFile">
@ -216,8 +218,8 @@ const props = defineProps({
formData: { type: Object, default: () => ({}) },
formBpm: { type: Boolean, default: true },
});
const bodyTagDictCode = ref(`nu_config_body_tag,tag_name,id,del_flag = 0 and iz_enabled = 0 order by sort asc`)
const emotionTagDictCode = ref(`nu_config_emotion_tag,tag_name,id,del_flag = 0 and iz_enabled = 0 order by sort asc`)
const bodyTagDictCode = ref(`nu_config_body_tag,tag_name,id,1=2`)
const emotionTagDictCode = ref(`nu_config_emotion_tag,tag_name,id,1=2`)
const formRef = ref();
const useForm = Form.useForm;
const emit = defineEmits(['register', 'ok']);
@ -392,7 +394,8 @@ function add() {
* isAudit_是否为服务指令那个审核 隐藏业务字段
*/
function edit(record, isEditMedia_ = false, isAudit_ = false) {
if (!!record.bodyTags ) {
console.log("🌊 ~ edit ~ record:", record)
if (!!record.bodyTags) {
// "id = 'id1' or id = 'id2'"
const bodyTagConditions = record.bodyTags.split(',')
.map(id => `id = '${id}'`)
@ -401,7 +404,7 @@ function edit(record, isEditMedia_ = false, isAudit_ = false) {
(bodyTagConditions ? ` and (${bodyTagConditions})` : '') +
` order by sort asc`;
}
if (!!record.emotionTags ) {
if (!!record.emotionTags) {
// "id = 'id1' or id = 'id2'"
const emotionTagConditions = record.emotionTags.split(',')
.map(id => `id = '${id}'`)

View File

@ -1,47 +1,15 @@
<template>
<div class="p-2">
<!-- <a-row :style="props.layout === 'half' ? { height: '68vh', overflow: 'auto' } : {}"> -->
<div>
<a-row>
<a-col v-for="item in orgTableList.records" :key="item.id" :xs="24" :sm="24" :md="props.layout == 'full' ? 12 : 8"
:lg="props.layout == 'full' ? 12 : 8" :xl="props.layout == 'full' ? 8 : 8" :xxl="props.layout == 'full' ? 6 : 8"
:xxxl="props.layout == 'full' ? 4 : 8" style="padding: 8px;">
<a-card :class="{
'selected-card': selectedOrgs.some(org => org.orgCode === item.orgCode),
'directive-selected-card': directiveMainSelectedOrg?.orgCode === item.orgCode,
'org-card': (showChoose || showDirectiveChoose)
}" style="width: 100%; border-radius: 8px; " :style="{ cursor: showChoose ? 'pointer' : 'default' }"
:bodyStyle="{ padding: '24px' }" @click="handleCardClick(item)">
<div>
<a-row style="font-weight: normal; margin-bottom: 12px;">
<a-col :span="props.layout == 'full' ? 16 : 13" style="font-size: 14px;">
<div>
<span style="font-weight: bold;">{{ item.departName }}</span>
</div>
</a-col>
<a-col :span="props.layout == 'full' ? 8 : 11" style="text-align: right;">
<div style="display: flex; align-items: center; justify-content: flex-end; gap: 8px;">
<!-- <span v-if="selectedOrgs.some(org => org.orgCode === item.orgCode)"
style="color: green; font-size: 12px; white-space: nowrap;">已选择</span> -->
<span v-if="dmOrg?.orgCode === item.orgCode"
style="color: green; font-size: 12px; font-weight: bold; white-space: nowrap;">标准指令库</span>
<div class="zxClass" style="min-width: 35px;">{{ item.orgCode }}</div>
</div>
</a-col>
</a-row>
<a-divider />
<div style="position: relative;">
<div v-show="showDetail" style="text-align:center;position: absolute;top: 0px;right:0px">
<a-button type="link" size="small" @click.stop="handleDetail(item)">详情</a-button>
</div>
<div>
<p>加盟时间{{ item.franchiseTime?.substring(0, 10) }}</p>
<p>机构负责人{{ item.orgLeader }}</p>
<p>负责人电话{{ item.orgLeaderPhone }}</p>
<p class="ellipsis-one-lines" :title="item.comRegisterAddress">机构地址{{ item.comRegisterAddress }}</p>
</div>
</div>
</div>
</a-card>
<a-col v-for="(item, index) in orgTableList.records" :key="item.id" :xs="24" :sm="24"
:md="props.layout == 'full' ? 12 : 8" :lg="props.layout == 'full' ? 12 : 8" :xl="props.layout == 'full' ? 8 : 8"
:xxl="props.layout == 'full' ? 6 : 8" :xxxl="props.layout == 'full' ? 4 : 8"
:style="{ 'padding-right': ((index + 1) % 4 != 0) ? '14px' : '0px', 'padding-bottom': '14px' }">
<OrgCard :orgInfo="item" :layout="props.layout"
:is-selected="selectedOrgs.some(org => org.orgCode === item.orgCode)"
:is-directive-selected="directiveMainSelectedOrg?.orgCode === item.orgCode"
:is-directive-main="dmOrg?.orgCode === item.orgCode" :show-detail="props.showDetail"
:clickable="props.showChoose || props.showDirectiveChoose" @click="handleCardClick" @detail="handleDetail" />
</a-col>
<a-col v-if="orgTableList.length == 0">
<div style="margin: 30px auto;">
@ -61,21 +29,22 @@
</template>
<script setup lang="ts" name="synchronization-directive2">
import { ref, reactive, onMounted, watch } from 'vue'
import { ref, reactive, onMounted } from 'vue'
import { Pagination } from 'ant-design-vue'
import { getOrgInfo } from '/@/views/admin/orgapplyinfo/OrgApplyInfo.api'
import OrgCard from '/@/components/OrgCard/OrgCardCom.vue'
const props = defineProps({
showChoose: { type: Boolean, default: false },
pageSize: { type: Number, default: 8 },
showDetail: { type: Boolean, default: false },
title: { type: String, default: '' },
allowMultipleSelection: { type: Boolean, default: false }, //
layout: { type: String, default: 'full' }, // : 'full' 'half'
excludeOrgCode: { type: String, default: '' },//
showDirectiveMain: { type: Boolean, default: false },//
showDirectiveChoose: { type: Boolean, default: false }, //
showDMTip: { type: Boolean, default: false }, //
allowMultipleSelection: { type: Boolean, default: false },
layout: { type: String, default: 'full' },
excludeOrgCode: { type: String, default: '' },
showDirectiveMain: { type: Boolean, default: false },
showDirectiveChoose: { type: Boolean, default: false },
showDMTip: { type: Boolean, default: false },
})
const emit = defineEmits(['handleOrgDetail', 'handleOrgChoose'])
@ -84,41 +53,35 @@ const orgTableList = ref<any>({ records: [], total: 0 })
const queryParam = reactive<any>({})
const pageParams = ref({ pageNo: 1, pageSize: props.pageSize })
const directiveMainSelectedOrg = ref<any>(null)
const dmOrg = ref('')//
const dmOrg = ref<any>('')
const selectedOrgs = ref<any[]>([])
// ID
const selectedOrgs = ref<string[]>([])
/** 点击卡片选择 */
function handleCardClick(item: any) {
if (props.showDirectiveChoose) {
directiveMainSelectedOrg.value = item
emit('handleOrgChoose', item)
}
if (props.showChoose) { //
if (props.showChoose) {
if (props.allowMultipleSelection) {
//
if (selectedOrgs.value.some(selected => selected.orgCode === item.orgCode)) {
selectedOrgs.value = selectedOrgs.value.filter(selected => selected.orgCode !== item.orgCode)
} else {
selectedOrgs.value.push(item) //
selectedOrgs.value.push(item)
}
} else {
//
selectedOrgs.value = [item] //
selectedOrgs.value = [item]
}
// emit('handleOrgChoose', selectedOrgs.value) //
}
}
function commitOrgsInfo() {
emit('handleOrgChoose', selectedOrgs.value) //
emit('handleOrgChoose', selectedOrgs.value)
}
/** 点击详情 */
function handleDetail(item: any) {
emit('handleOrgDetail', item)
}
/** 数据加载 */
function reload() {
directiveMainSelectedOrg.value = {}
queryParam.pageSize = pageParams.value.pageSize
@ -130,19 +93,16 @@ function reload() {
getOrgInfo(queryParam).then(res => {
res.records = res.records.filter(o => o.orgCode != props.excludeOrgCode)
orgTableList.value = res
// reload
if (props.showDirectiveChoose || props.showDMTip) {
const defaultSelected = res.records.find(item => item.izDirectiveMain === '0')
if (defaultSelected) {
dmOrg.value = defaultSelected
// directiveMainSelectedOrg.value = defaultSelected
emit('handleOrgChoose', defaultSelected)
}
}
})
}
/** 重置搜索条件 */
function searchReset() {
queryParam.title = null
if (props.layout == 'half') {
@ -154,29 +114,23 @@ function searchReset() {
})
}
//
function checkAllOrEmpty(isCheckAll = true) {
if (isCheckAll) {
//
orgTableList.value.records.forEach(item => {
// selectedOrgs
if (!selectedOrgs.value.some(selected => selected.orgCode === item.orgCode)) {
selectedOrgs.value.push(item);
}
});
} else {
// selectedOrgs
selectedOrgs.value = [];
}
// handleOrgChoose
emit('handleOrgChoose', selectedOrgs.value);
}
function resetSeleted(orgs) {
function resetSeleted(orgs: any[]) {
selectedOrgs.value = [...orgs]
}
//
onMounted(() => {
reload()
})
@ -189,62 +143,4 @@ defineExpose({
commitOrgsInfo,
resetSeleted
})
</script>
<style lang="less" scoped>
.zxClass {
font-size: 12px;
background: linear-gradient(to right, #1ea0fa, #017de9);
border-radius: 8px;
height: 25px;
color: white;
line-height: 25px;
padding: 0 8px;
/* 增加内边距 */
flex-shrink: 0;
/* 防止被压缩 */
}
.tbClass {
background: #f6f6f6;
padding: 8px;
border-radius: 5px;
}
.antTitle {
margin-top: 10px;
display: block;
font-size: 12px;
}
.ellipsis-one-lines {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
}
.selected-card {
border: 2px solid #1890ff;
box-shadow: 0 0 8px rgba(24, 144, 255, 0.3);
}
.directive-selected-card {
border: 2px solid #1890FF;
box-shadow: 0 0 8px rgba(37, 149, 255, 0.3);
}
.org-card {
&:hover {
border-color: #55a9f8;
/* 这是悬停时的蓝色边框 */
box-shadow: 0 2px 8px rgba(37, 149, 255, 0.3);
/* 这是悬停时的淡蓝色阴影 */
}
}
:deep .ant-divider {
margin: 0 0 8px 0;
}
</style>
</script>

View File

@ -36,34 +36,34 @@ export const columns: BasicColumn[] = [
align: 'center',
dataIndex: 'directiveName',
},
{
title: '体型标签',
align: 'center',
dataIndex: 'bodyTagList',
ellipsis: false,
defaultHidden: false,
format(text, record, index) {
if (!!text) {
return text.map((item) => item.tagName).join('、');
} else {
return '-';
}
},
},
{
title: '情绪标签',
align: 'center',
dataIndex: 'emotionTagList',
ellipsis: false,
defaultHidden: false,
format(text, record, index) {
if (!!text) {
return text.map((item) => item.tagName).join('、');
} else {
return '-';
}
},
},
// {
// title: '体型标签',
// align: 'center',
// dataIndex: 'bodyTagList',
// ellipsis: false,
// defaultHidden: false,
// format(text, record, index) {
// if (!!text) {
// return text.map((item) => item.tagName).join('、');
// } else {
// return '-';
// }
// },
// },
// {
// title: '情绪标签',
// align: 'center',
// dataIndex: 'emotionTagList',
// ellipsis: false,
// defaultHidden: false,
// format(text, record, index) {
// if (!!text) {
// return text.map((item) => item.tagName).join('、');
// } else {
// return '-';
// }
// },
// },
{
title: '收费价格',
align: 'center',
@ -148,34 +148,34 @@ export const sourceColumns: BasicColumn[] = [
align: 'center',
dataIndex: 'directiveName',
},
{
title: '体型标签',
align: 'center',
dataIndex: 'bodyTagList',
ellipsis: false,
// defaultHidden: true,
format(text, record, index) {
if (!!text) {
return text.map((item) => item.tagName).join('、');
} else {
return '-';
}
},
},
{
title: '情绪标签',
align: 'center',
dataIndex: 'emotionTagList',
ellipsis: false,
// defaultHidden: true,
format(text, record, index) {
if (!!text) {
return text.map((item) => item.tagName).join('、');
} else {
return '-';
}
},
},
// {
// title: '体型标签',
// align: 'center',
// dataIndex: 'bodyTagList',
// ellipsis: false,
// // defaultHidden: true,
// format(text, record, index) {
// if (!!text) {
// return text.map((item) => item.tagName).join('、');
// } else {
// return '-';
// }
// },
// },
// {
// title: '情绪标签',
// align: 'center',
// dataIndex: 'emotionTagList',
// ellipsis: false,
// // defaultHidden: true,
// format(text, record, index) {
// if (!!text) {
// return text.map((item) => item.tagName).join('、');
// } else {
// return '-';
// }
// },
// },
{
title: '收费价格',
align: 'center',
@ -248,34 +248,34 @@ export const targetSourceColumns: BasicColumn[] = [
align: 'center',
dataIndex: 'directiveName',
},
{
title: '体型标签',
align: 'center',
dataIndex: 'bodyTagList',
ellipsis: false,
// defaultHidden: true,
format(text, record, index) {
if (!!text) {
return text.map((item) => item.tagName).join('、');
} else {
return '-';
}
},
},
{
title: '情绪标签',
align: 'center',
dataIndex: 'emotionTagList',
ellipsis: false,
// defaultHidden: true,
format(text, record, index) {
if (!!text) {
return text.map((item) => item.tagName).join('、');
} else {
return '-';
}
},
},
// {
// title: '体型标签',
// align: 'center',
// dataIndex: 'bodyTagList',
// ellipsis: false,
// // defaultHidden: true,
// format(text, record, index) {
// if (!!text) {
// return text.map((item) => item.tagName).join('、');
// } else {
// return '-';
// }
// },
// },
// {
// title: '情绪标签',
// align: 'center',
// dataIndex: 'emotionTagList',
// ellipsis: false,
// // defaultHidden: true,
// format(text, record, index) {
// if (!!text) {
// return text.map((item) => item.tagName).join('、');
// } else {
// return '-';
// }
// },
// },
{
title: '收费价格',
align: 'center',
@ -348,34 +348,34 @@ export const targetColumns: BasicColumn[] = [
align: 'center',
dataIndex: 'directiveName',
},
{
title: '体型标签',
align: 'center',
dataIndex: 'bodyTagList',
ellipsis: false,
// defaultHidden: true,
format(text, record, index) {
if (!!text) {
return text.map((item) => item.tagName).join('、');
} else {
return '-';
}
},
},
{
title: '情绪标签',
align: 'center',
dataIndex: 'emotionTagList',
ellipsis: false,
// defaultHidden: true,
format(text, record, index) {
if (!!text) {
return text.map((item) => item.tagName).join('、');
} else {
return '-';
}
},
},
// {
// title: '体型标签',
// align: 'center',
// dataIndex: 'bodyTagList',
// ellipsis: false,
// // defaultHidden: true,
// format(text, record, index) {
// if (!!text) {
// return text.map((item) => item.tagName).join('、');
// } else {
// return '-';
// }
// },
// },
// {
// title: '情绪标签',
// align: 'center',
// dataIndex: 'emotionTagList',
// ellipsis: false,
// // defaultHidden: true,
// format(text, record, index) {
// if (!!text) {
// return text.map((item) => item.tagName).join('、');
// } else {
// return '-';
// }
// },
// },
{
title: '收费价格',
align: 'center',

View File

@ -2,7 +2,7 @@
<!-- <j-modal :title="title" width="75vw" :visible="visible" @cancel="handleCancel" cancelText="关闭" :maskClosable="false">
<ConfigServiceDirectiveList ref="registerForm" v-if="visible" @ok="submitCallback" :formDisabled="disableSubmit" :formBpm="false"></ConfigServiceDirectiveList>
</j-modal> -->
<a-drawer :title="title" width="80vw" v-model:visible="visible" :closable="true"
<a-drawer :title="title" width="80vw" v-model:visible="visible" v-if="visible" :closable="true"
:footer-style="{ textAlign: 'right' }" @close="handleCancel">
<ConfigServiceDirectiveList ref="registerForm" v-if="visible" @ok="submitCallback" :formDisabled="disableSubmit" :formBpm="false"></ConfigServiceDirectiveList>
<template #footer>

View File

@ -56,16 +56,16 @@
<a-drawer title="日志" width="85vw" v-model:visible="logsVisible"
:bodyStyle="{ height: '70vh', display: 'flex', flexDirection: 'column', overflow: 'auto' }"
wrapClassName="org-list-modal" @cancel="handleCancelLogs">
<a-row style="overflow-x: hidden !important; ">
<a-col :span="2" :push="22" style="margin-top: 15px;margin-left: 30px;">
<a-row style="overflow-x: hidden !important; background-color: white;">
<a-col :span="2" :push="22" style="margin-top: 18px;margin-left: 30px;">
<a-button type="primary" @click="handleRefreshLogs" title="刷新">
刷新
</a-button>
</a-col>
<a-col :span="24">
<AsyncListComponent ref="logsRef" :type="'directive'"></AsyncListComponent>
</a-col>
</a-row>
<div style="padding:0px 8px;">
<AsyncListComponent ref="logsRef"></AsyncListComponent>
</div>
<template #footer>
<a-button @click="handleCancelLogs" type="primary" style="float:right;">关闭</a-button>
</template>
@ -308,10 +308,11 @@ onMounted(() => {
<style lang="less" scoped>
.jeecg-basic-table-form-container {
padding: 0;
margin-bottom: 18px;
.table-page-search-submitButtons {
display: block;
margin-bottom: 24px;
margin-bottom: 0px;
white-space: nowrap;
}
@ -326,7 +327,7 @@ onMounted(() => {
}
.ant-form-item:not(.ant-form-item-with-help) {
margin-bottom: 16px;
margin-bottom: 18px;
height: 32px;
}

View File

@ -7,8 +7,7 @@
<a-button type="link" @click="showSourceOrgListModal" size="small">请选择</a-button>
</div>
<div class="selected-orgs" v-if="!!orgInfo.length">
<a-card :headStyle="{ height: '60px', padding: '0 24px' }"
:bodyStyle="{ padding: '24px 24px 4px 24px' }">
<a-card :headStyle="{ height: '60px', padding: '0 24px' }" :bodyStyle="{ padding: '24px 24px 4px 24px' }">
<a-row style="font-weight: normal; margin-bottom: 12px;">
<a-col :span="18" style="font-size: 14px;">
<div>
@ -83,7 +82,7 @@
</div>
</a-card>
<a-modal v-model:visible="sourceOrgListVisible" title="请选择源平台" width="90vw"
:bodyStyle="{ height: '70vh', display: 'flex', flexDirection: 'column', overflow: 'auto' }"
:bodyStyle="{ padding: '14px', height: '70vh', display: 'flex', flexDirection: 'column', overflow: 'auto' }"
wrapClassName="org-list-modal" @cancel="handleCancelSource">
<template #footer>
<a-button @click="handleCancelSource" type="primary">取消</a-button>
@ -92,7 +91,8 @@
<OrgListCom class="step-content" ref="sourceOrgListComRef" @handleOrgChoose="handleSourceOrgChoose"
:showChoose="true" />
</a-modal>
<a-modal v-model:visible="targetOrgListVisible" title="请选择目标平台(复选)" width="90vw" @cancel="handleCancelTarget">
<a-modal v-model:visible="targetOrgListVisible" title="请选择目标平台(复选)" width="90vw" @cancel="handleCancelTarget"
:bodyStyle="{ padding: '14px', height: '70vh', display: 'flex', flexDirection: 'column', overflow: 'auto' }">
<template #footer>
<a-button @click="handleCancelTarget" type="primary">取消</a-button>
<a-button @click="handleGetTarget" type="primary">确认</a-button>
@ -417,6 +417,7 @@ defineExpose({
.org-card {
margin-top: 8px;
&:hover {
border-color: #55a9f8;
/* 这是悬停时的蓝色边框 */
@ -428,6 +429,4 @@ defineExpose({
:deep .ant-divider {
margin: 0 0 8px 0;
}
</style>

View File

@ -8,6 +8,13 @@
<a-radio value="1"></a-radio>
</a-radio-group>
</template>
<!-- 是否标准标签库 -->
<template #izElderTagMain="{ model, field }">
<a-radio-group v-model:value="model[field]" name="radioGroup">
<a-radio value="0"></a-radio>
<a-radio value="1"></a-radio>
</a-radio-group>
</template>
<!-- 省份 -->
<template #province="{ model, field }">
<j-dict-select-tag @change="provinceChanged(model)" v-model:value="model[field]"
@ -93,6 +100,10 @@ const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data
field: 'izDirectiveMain',
show: !isChild,
},
{
field: 'izElderTagMain',
show: !isChild,
},
{
field: 'orgCategory',
componentProps: { options: categoryOptions },

View File

@ -8,6 +8,13 @@
<a-radio value="1"></a-radio>
</a-radio-group>
</template>
<!-- 是否标准标签库 -->
<template #izElderTagMain="{ model, field }">
<a-radio-group v-model:value="model[field]" name="radioGroup">
<a-radio value="0"></a-radio>
<a-radio value="1"></a-radio>
</a-radio-group>
</template>
<!-- 省份 -->
<!-- <template #province="{ model, field }">
<j-dict-select-tag @change="provinceChanged(model)" v-model:value="model[field]"