50188ad8 by xukangle

Merge branch 'develop' into dev_20241202_xukangle

2 parents c7ae9b22 02cf8029
......@@ -79,6 +79,13 @@ VITE_APP_ATTACHMENT_TEMPLATE = ms-daop-personel-service
#人员服务
VITE_APP_PERSONAL_URL = 'ms-daop-personel-service'
#流通平台地址
VITE_APP_CIRCULATION = http://192.168.6.20:18052/
# 测试环境访问地址
VITE_API_CIRCULATION_URL = http://192.168.6.22:29900/circulation
# 本地访问地址
# VITE_API_CIRCULATION_URL = http://localhost:9000/circulation
# 是否在打包时生成 sourcemap
VITE_BUILD_SOURCEMAP = false
# 是否在打包时开启压缩,支持 gzip 和 brotli
......
......@@ -114,6 +114,10 @@ VITE_API_MESSAGE = ms-swzl-message-notification-service
#企业信息接口
VITE_APP_PERSONAL_URL = ms-daop-personel-service
#流通平台接口地址
VITE_APP_CIRCULATION = http://192.168.6.20:18052/
# 是否在打包时生成 sourcemap
VITE_BUILD_SOURCEMAP = false
# 是否在打包时开启压缩,支持 gzip 和 brotli
......
......@@ -46,6 +46,23 @@ server {
proxy_pass http://192.168.6.20:28052;
}
location /circulation {
# 设置允许跨域的域名,可以使用通配符 '*' 允许所有域访问
add_header 'Access-Control-Allow-Origin' * always;
# 设置允许的 HTTP 方法
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
# 设置允许的请求头
add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, Accept, Origin, X-Requested-With';
# 如果需要支持 cookie,可以设置以下 header
add_header 'Access-Control-Allow-Credentials' 'true';
# 缓存设置
add_header Cache-Control no-cache;
add_header Cache-Control private;
# 使用 rewrite 将 /circulation 替换为 /new-api
rewrite ^/circulation/(.*)$ /$1 break;
proxy_pass http://192.168.6.20:18052;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
......
......@@ -82,6 +82,13 @@ export const getProduct = (params) => request({
method: 'get',
params
})
// 查看平台会员信息
export const getTenantInfo = (params) => request({
// url: `${import.meta.env.VITE_APP_PERSONAL_URL}/tenant/getByGuid/${params}`,
url: `http://192.168.6.22:29900/circulation/ms-data-circulation-portal-service/enterprise/detail-by-name`,
method: 'get',
params
})
// 查看平台会员详情
export const getTenantDetailInfo = (params) => request({
url: `${import.meta.env.VITE_APP_PERSONAL_URL}/tenant/getByGuid/${params}`,
......
......@@ -25,7 +25,8 @@ import {
} from "@/api/modules/dataAsset";
import {
getTenantDetailInfo,
getImageContent
getImageContent,
getTenantInfo
} from "@/api/modules/queryService";
import { passFlowData, rejectFlowData, revokeFlowData } from "@/api/modules/workFlowService";
import useDataAssetStore from "@/store/modules/dataAsset";
......@@ -253,30 +254,54 @@ const getDetailInfo = () => {
isTextTruncated();
})
} else {
getRegiaterDetail({ guid: assetGuid }).then((res: any) => {
fullscreenLoading.value = false;
let ps: any = [], tentData = {};
ps.push(getRegiaterDetail({ guid: assetGuid }).then((res: any) => {
if (res.code == proxy.$passCode) {
const data = res.data || {};
let { approveVO } = data;
detailInfo.value = data;
assetDetailInfo.value = data;
deploymentId.value = approveVO.camundaDeploymentId;
processInstanceId.value = approveVO.camundaInstanceId;
isTextTruncated();
} else {
ElMessage.error(res.msg);
}
});
}));
ps.push(getTenantDetailInfo(userData.tenantGuid).then((res: any) => {
if (res.code == proxy.$passCode) {
const data = res.data ?? {};
tentData = { ...tentData, ...data };
} else {
ElMessage.error(res.msg);
}
approveTableInfo.value.loading = true;
getApproveList(detailType.value == 'qualityEvaluate' ? evaGuid.value : (detailType.value == 'costAssess' ? costAssessGuid.value : assetGuid)).then((res: any) => {
approveTableInfo.value.loading = false;
}));
ps.push(getTenantInfo({ tenantName: userData.tenantName }).then((res: any) => {
if (res.code == proxy.$passCode) {
console.log(res.data);
approveTableInfo.value.data = res.data || [];
const data = res.data ?? {};
tentData = { ...tentData, ...data };
} else {
ElMessage.error(res.msg);
}
}))
Promise.all(ps).then(() => {
fullscreenLoading.value = false;
tenantDetail.value = tentData;
}).catch(() => {
fullscreenLoading.value = false;
});
}
// approveTableInfo.value.loading = true;
// getApproveList(detailType.value == 'qualityEvaluate' ? evaGuid.value : (detailType.value == 'costAssess' ? costAssessGuid.value : assetGuid)).then((res: any) => {
// approveTableInfo.value.loading = false;
// if (res.code == proxy.$passCode) {
// console.log(res.data);
// approveTableInfo.value.data = res.data || [];
// } else {
// ElMessage.error(res.msg);
// }
// });
}
const handleExpand = () => {
......@@ -285,7 +310,7 @@ const handleExpand = () => {
onBeforeMount(() => {
getDetailInfo();
daTenantGuid.value && getTenantDetail();
// getTenantDetail();
});
onActivated(() => {
......@@ -396,18 +421,27 @@ const approveTableInfo: any = ref({
}
});
const deploymentId = ref('');
const processInstanceId = ref('');
const tenantDetail: any = ref({});
/** 获取当前登录会员,服务商,企业等详情。 */
const getTenantDetail = () => {
getTenantDetailInfo(daTenantGuid.value).then((res: any) => {
if (res.code == proxy.$passCode) {
const data = res.data ?? {};
tenantDetail.value = data;
} else {
ElMessage.error(res.msg);
}
});
// getTenantDetailInfo(userData.tenantGuid).then((res: any) => {
// if (res.code == proxy.$passCode) {
// const data = res.data ?? {};
// userData.value = data;
// } else {
// ElMessage.error(res.msg);
// }
// })
// getTenantInfo({tenantName: userData.tenantName}).then((res: any) => {
// if (res.code == proxy.$passCode) {
// const data = res.data ?? {};
// tenantDetail.value = data;
// } else {
// ElMessage.error(res.msg);
// }
// });
}
// const onUploadFilePreview = (file) => {
......@@ -1016,6 +1050,14 @@ const handleClickDamCatalogDetail = () => {
});
}
const formattedDate = (dateVal) => {
const date = new Date(dateVal);
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, '0');
const day = date.getDate().toString().padStart(2, '0');
return `${year}-${month}-${day}`;
}
</script>
<template>
......@@ -1026,7 +1068,7 @@ const handleClickDamCatalogDetail = () => {
<Tabs :tab-position="'right'" :tabsInfo="tabsInfo" @tabClick="tabsClick" />
</div>
<div class="main-wrap" ref="contentRef">
<div v-if="detailType != 'certificate'"
<div v-if="detailType != 'certificate' && detailType != 'asset'"
:class="['panel_wrap', 'results_panel', detailInfo.approveState == 'Y' ? 'success' : (detailInfo.approveState == 'R' ? 'reject' : (detailInfo.approveState == 'C' ? 'revoke' : 'audit'))]">
<div class="panel_header">
<div class="header_title" v-if="detailInfo.approveState == 'Y'">
......@@ -1071,7 +1113,7 @@ const handleClickDamCatalogDetail = () => {
</div>
</div>
</div>
<div v-else
<div v-else-if="detailType != 'asset'"
:class="['panel_wrap', 'results_panel', detailInfo.state == 4 ? 'success' : (detailInfo.state == 0 ? 'revoke' : 'audit')]">
<div class="panel_header">
<div class="header_title" v-if="detailInfo.state == 4">
......@@ -1684,7 +1726,7 @@ const handleClickDamCatalogDetail = () => {
</div>
<div class="list_item">
<span class="item_label">统一社会信用代码:</span>
<span class="item_value">{{ tenantDetail.usci ?? "--" }}</span>
<span class="item_value">{{ tenantDetail.socialCreditCode ?? "--" }}</span>
</div>
<div class="list_item">
<span class="item_label">是否列入失信:</span>
......@@ -1696,15 +1738,17 @@ const handleClickDamCatalogDetail = () => {
</div>
<div class="list_item">
<span class="item_label">注册日期:</span>
<span class="item_value">{{ tenantDetail.registerDate ?? "--" }}</span>
<span class="item_value">{{ tenantDetail.registrationDate ? formattedDate(tenantDetail.registrationDate) :
"--"
}}</span>
</div>
<div class="list_item">
<span class="item_label">营业开始日期:</span>
<span class="item_value">{{ tenantDetail.tradeStartDate ?? "--" }}</span>
<span class="item_value">{{ tenantDetail.businessLicenseStartDate ?? "--" }}</span>
</div>
<div class="list_item">
<span class="item_label">营业结束日期:</span>
<span class="item_value">{{ tenantDetail.tradeEndDate ?? "--" }}</span>
<span class="item_value">{{ tenantDetail.businessLicenseEndDate ?? "--" }}</span>
</div>
<div class="list_item is_block">
<span class="item_label">单位注册地址:</span>
......@@ -1779,7 +1823,7 @@ const handleClickDamCatalogDetail = () => {
<ContentWrap id="id-approveInfo" title="审批信息" expandSwicth style="margin-top: 15px"
:isExpand="approveInfoExpand" @expand="(v) => approveInfoExpand = v">
<!-- <Table :tableInfo="approveTableInfo" /> -->
<ApprovalProcess v-if="deploymentId" :deploymentId="deploymentId" :definitionId="''">
<ApprovalProcess v-if="deploymentId" :deploymentId="deploymentId" :processInstanceId="processInstanceId">
</ApprovalProcess>
</ContentWrap>
<ContentWrap id="id-certificate" v-if="tabsInfo.tabs.find(t => t.name == 'certificate')" title="证件信息"
......
......@@ -208,6 +208,7 @@ const currTableData: any = ref({});
const btnClick = (btn) => {
const type = btn.value;
if (type == 'create') {
localStorage.setItem('isRestart', '');
router.push({
name: 'registerStart',
query: { exchangeGuid: btn.exchangeGuid, type }
......@@ -277,20 +278,6 @@ const tableBtnClick = (scope, btn) => {
}
};
const handleDataClick = (item) => {
if (item.approveState === 'N') {
router.push({
name: 'registerStart',
query: { guid: item.guid }
});
} else {
router.push({
name: 'registerInfoDetail',
query: { guid: item.guid, type: 'asset', daTenantGuid: item.tenantGuid }
});
}
}
const delTableOpen = (msg, type, isBatch: boolean = false) => {
ElMessageBox.confirm(msg, "提示", {
confirmButtonText: "确定",
......@@ -328,6 +315,7 @@ const delTableOpen = (msg, type, isBatch: boolean = false) => {
const getTableData = () => {
loading.value = true;
getExchangeData();
getRegisterList({
pageSize: pageInfo.value.limit,
pageIndex: pageInfo.value.curr,
......@@ -376,6 +364,7 @@ const toSearch = (val: any, clear: boolean = false) => {
pageInfo.value.tenantGuid = val.tenantGuid;
}
getTableData();
// getExchangeData();
};
const pageChange = (info) => {
......@@ -388,28 +377,13 @@ onActivated(() => {
if (assetStore.isRefresh) {//如果是首次加载,则不需要调用
pageInfo.value.curr = 1;
getTableData();
getExchangeData();
// getExchangeData();
assetStore.set(false);
}
})
onBeforeMount(() => {
// if (isCompanyPlatform.value) {
// tableInfo.value.fields = tableFields.value;
// searchItemList.value[1].visible = false;
// } else {
// tableFields.value.splice(2, 0, { label: "企业名称", field: "tenantName", width: 240, align: "left" });
// tableInfo.value.fields = tableFields.value;
// searchItemList.value[1].visible = true;
// getRegisterTenant().then((res: any) => {
// if (res.code == proxy.$passCode) {
// searchItemList.value[1].options = res.data || [];
// } else {
// ElMessage.error(res.msg);
// }
// });
// }
getExchangeData();
// getExchangeData();
})
const passDialogInfo = ref({
......@@ -548,10 +522,6 @@ const rejectDialogBtnClick = (btn, info) => {
}
};
const createBtnVisible = computed(() => {
return isCompanyPlatform || (userStore.hasPermission('数据资产', path, '新建'))
})
</script>
<template>
......@@ -571,7 +541,7 @@ const createBtnVisible = computed(() => {
@click="btnClick({ value: 'search', ...item })" v-preReClick>{{ item.exchangeName ?? '--' }}</div>
<div class="count-group">
<div class="count-item">
<div class="item-label">上架产品数</div>
<div class="item-label">登记产品数</div>
<div class="item-num">{{ changeNum(item.listingNum || 0) }}</div>
</div>
<div class="count-item">
......@@ -587,51 +557,8 @@ const createBtnVisible = computed(() => {
</div>
</div>
</div>
<div class="table_panel_wrap" :style="{ height: createBtnVisible ? 'calc(100% - 89px)' : 'calc(100% - 40px)' }">
<div v-if="activeListType === 'card'" class="data-content" v-loading="listDataLoading">
<div class="card-content" v-for="item in listData" :key="item.guid" @click="handleDataClick(item)">
<div class="title-row">
<div class="title">
<ellipsis-tooltip :content="item.daName" class-name="w100f"
:refName="'tooltipOver' + item.guid"></ellipsis-tooltip>
</div>
<el-tag :type="(tagType(item, 'approveState') as any)">{{
tagMethod(item, 'approveState')
}}</el-tag>
</div>
<div v-if="!isCompanyPlatform" class="desc">{{ item.tenantName ?? '深圳传世般若有限公司' }}</div>
<div class="desc">{{ item.updateTime }}</div>
<div class="type-btn">
<template v-if="item.ownIndustryName?.length">
<div class="type-items">
<div v-for="(info) in item.ownIndustryName" class="type">{{ info }}</div>
</div>
</template>
<template v-else>
<div class="type-items"></div>
</template>
<el-popover v-model="cardBtnVisible" placement="bottom" width="96" trigger="click"
popper-class="tree-item-edit-menu" :show-arrow="false" :hide-after="0">
<template #reference>
<el-icon class="list-more" color="#666" v-show="getTableBtns(item, false)?.length > 0"
@click.stop="cardBtnVisible = true">
<MoreFilled />
</el-icon>
</template>
<div class="levitation-ul">
<span class="levitation-li" v-for="btn in getTableBtns(item, false)"
@click="tableBtnClick({ row: item }, btn)">{{
btn.label }}</span>
</div>
</el-popover>
</div>
</div>
<div v-if="!listData.length" class="card-noData">
<img src="../../assets/images/no-data.png" :style="{ width: '96px', height: '96px' }" />
<span>暂无数据资产</span>
</div>
</div>
<Table v-else :tableInfo="tableInfo" @tableBtnClick="tableBtnClick" />
<div class="table_panel_wrap">
<Table :tableInfo="tableInfo" @tableBtnClick="tableBtnClick" />
<PageNav :class="[pageInfo.type]" :pageInfo="pageInfo" @pageChange="pageChange" />
</div>
</div>
......@@ -796,14 +723,15 @@ const createBtnVisible = computed(() => {
.list-content {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
margin-bottom: 8px;
.card-content {
width: calc(33.33% - 10px);
width: calc(33.33% - 6px);
padding: 16px;
box-shadow: 0 0 0 1px #d9d9d9;
margin-right: 8px;
max-width: 400px;
&.active {
box-shadow: 0 0 0 1px var(--el-color-primary);
......
......@@ -939,7 +939,7 @@ onBeforeMount(() => {
d.label = d.ruleName;
d.value = d.ruleCode;
return d;
})?.filter(d => d.ruleCode != 'rows_check' && d.ruleCode != 'volatility_check') || [];
})?.filter(d => d.ruleCode != 'rows_check' && d.ruleCode != 'volatility_check' && d.ruleCode != 'ref_integrality') || [];
searchItemList.value[2].options = ruleTypeList.value;
} else {
ElMessage.error(res.msg);
......
......@@ -163,7 +163,7 @@ const rulesListByType: any = computed(() => {
// json: checkRulesList.value.filter(r => r.value == ''),
tinyint: checkRulesList.value.filter(r => r.value == 'length_rule' || r.value == 'num_value_rule' || r.value == 'custom_regular_rule'),
time: checkRulesList.value.filter(r => r.value == 'length_rule' || r.value == 'custom_regular_rule'),
bit: checkRulesList.value.filter(r => r.value == 'length_rule' || r.value == 'ch_rule' || r.value == 'en_rule' || r.value == 'custom_regular_rule'),
bit: checkRulesList.value.filter(r => r.value == 'length_rule' || r.value == 'ch_rule' || r.value == 'en_rule' || r.value == 'custom_regular_rule')
}
});
......@@ -188,7 +188,7 @@ onBeforeMount(() => {
}
if (props.smallCategoryList?.length) {
let p = panelList.value[1];
if (p.default) {
if (p.default && !props.readonly) {
if (p.default == '1') {//规范性
panelList.value[2].options = props.smallCategoryList.slice(0, 6);
} else if (p.default == '2') {
......@@ -2395,7 +2395,7 @@ defineExpose({
</el-table-column>
<el-table-column prop="checkRule" label="选择检验规则" width="150px" align="left" show-overflow-tooltip>
<template #default="scope">
<el-select v-if="!props.readonly || (scope.row.dataType == 'text' || scope.row.dataType == 'json')"
<el-select v-if="!props.readonly"
v-model="scope.row['checkRule']" placeholder="请选择" filterable clearable>
<el-option v-for="opt in (rulesListByType[scope.row.dataType] || checkRulesList)" :key="opt['value']"
:label="opt['label']" :value="opt['value']" />
......
......@@ -158,7 +158,7 @@ onBeforeMount(() => {
d.label = d.ruleName;
d.value = d.ruleCode;
return d;
})?.filter(d => d.ruleCode != 'rows_check' && d.ruleCode != 'volatility_check') || [];
})?.filter(d => d.ruleCode != 'rows_check' && d.ruleCode != 'volatility_check' && d.ruleCode != 'ref_integrality') || [];
} else {
ElMessage.error(res.msg);
}
......
......@@ -241,7 +241,7 @@ onBeforeMount(() => {
d.label = d.ruleName;
d.value = d.ruleCode;
return d;
})?.filter(d => d.ruleCode != 'rows_check' && d.ruleCode != 'volatility_check') || [];
})?.filter(d => d.ruleCode != 'rows_check' && d.ruleCode != 'volatility_check' && d.ruleCode != 'ref_integrality') || [];
} else {
ElMessage.error(res.msg);
}
......
......@@ -248,7 +248,7 @@ onBeforeMount(() => {
d.label = d.ruleName;
d.value = d.ruleCode;
return d;
})?.filter(d => d.ruleCode != 'rows_check' && d.ruleCode != 'volatility_check') || []; //先隐藏掉表行数检查和表行数波动率
})?.filter(d => d.ruleCode != 'rows_check' && d.ruleCode != 'volatility_check' && d.ruleCode != 'ref_integrality') || []; //先隐藏掉表行数检查和表行数波动率
} else {
ElMessage.error(res.msg);
}
......
......@@ -40,6 +40,11 @@ export default ({ mode, command }) => {
changeOrigin: env.VITE_OPEN_PROXY === 'true',
rewrite: path => path.replace(/\/portal/, ''),
},
'/circulation':{
target: env.VITE_APP_CIRCULATION,
changeOrigin: env.VITE_OPEN_PROXY === 'true',
rewrite: path => path.replace(/\/circulation/, ''),
},
'/obs': {
target: '//csbr-daop.obs.cn-north-1.myhuaweicloud.com:443',
changeOrigin: env.VITE_OPEN_PROXY === 'true',
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!