9372295c by lxs

数据资产登记更新

1 parent 0cb70e4f
...@@ -12,6 +12,7 @@ declare module '@vue/runtime-core' { ...@@ -12,6 +12,7 @@ declare module '@vue/runtime-core' {
12 ApprovalProcess: typeof import('./src/components/ApprovalProcess/src/ApprovalProcess.vue')['default'] 12 ApprovalProcess: typeof import('./src/components/ApprovalProcess/src/ApprovalProcess.vue')['default']
13 Auth: typeof import('./src/components/Auth/index.vue')['default'] 13 Auth: typeof import('./src/components/Auth/index.vue')['default']
14 AuthAll: typeof import('./src/components/AuthAll/index.vue')['default'] 14 AuthAll: typeof import('./src/components/AuthAll/index.vue')['default']
15 CarouselPanel: typeof import('./src/components/CarouselPanel/src/CarouselPanel.vue')['default']
15 ContentWrap: typeof import('./src/components/ContentWrap/src/ContentWrap.vue')['default'] 16 ContentWrap: typeof import('./src/components/ContentWrap/src/ContentWrap.vue')['default']
16 Copyright: typeof import('./src/components/Copyright/index.vue')['default'] 17 Copyright: typeof import('./src/components/Copyright/index.vue')['default']
17 Day: typeof import('./src/components/Schedule/component/day.vue')['default'] 18 Day: typeof import('./src/components/Schedule/component/day.vue')['default']
......
...@@ -85,8 +85,8 @@ export const getProduct = (params) => request({ ...@@ -85,8 +85,8 @@ export const getProduct = (params) => request({
85 // 查看平台会员信息 85 // 查看平台会员信息
86 export const getTenantInfo = (params) => request({ 86 export const getTenantInfo = (params) => request({
87 // url: `${import.meta.env.VITE_APP_PERSONAL_URL}/tenant/getByGuid/${params}`, 87 // url: `${import.meta.env.VITE_APP_PERSONAL_URL}/tenant/getByGuid/${params}`,
88 // url: `http://localhost:9000/circulation/ms-data-circulation-portal-service/enterprise/detail-by-name`, 88 url: `http://localhost:9000/circulation/ms-data-circulation-portal-service/enterprise/detail-by-name`,
89 url: `http://192.168.6.22:29900/circulation/ms-data-circulation-portal-service/enterprise/detail-by-name`, 89 // url: `http://192.168.6.22:29900/circulation/ms-data-circulation-portal-service/enterprise/detail-by-name`,
90 method: 'get', 90 method: 'get',
91 params 91 params
92 }) 92 })
......
1 import CarouselPanel from './src/CarouselPanel.vue'
2
3 export { CarouselPanel }
1 <script setup lang="ts">
2 import { ElCarousel, ElCarouselItem } from "element-plus";
3 import { CaretBottom, CaretRight } from "@element-plus/icons-vue";
4
5 const props = defineProps({
6 carouselInfo: {
7 type: Object,
8 default: () => { },
9 },
10 });
11
12 const emits = defineEmits(["carouselChange"]);
13
14 const carouselChange = (current: number, prev: number) => {
15 emits("carouselChange", current);
16 };
17
18 </script>
19
20 <template>
21 <el-carousel :height="carouselInfo.height ?? '150px'" :indicator-position="carouselInfo.indicatorPosition ?? 'none'"
22 :arrow="carouselInfo.arrow ?? 'hover'" :trigger="carouselInfo.trigger ?? 'hover'" :loop="carouselInfo.loop ?? true"
23 :autoplay="carouselInfo.autoplay ?? true" :initial-index="carouselInfo.initialIndex ?? 0" @change="carouselChange">
24 <el-carousel-item class="carousel-item" :class="[carouselInfo.itemClass]" v-for="(item, i) in carouselInfo.list" :key="'carousel' + i">
25 <slot :carousel="item"></slot>
26 </el-carousel-item>
27 </el-carousel>
28 </template>
29
30 <style lang="scss" scoped></style>
...@@ -1041,7 +1041,8 @@ const panelChange = (scope, row) => { ...@@ -1041,7 +1041,8 @@ const panelChange = (scope, row) => {
1041 :placeholder="group.placeholder" :clearable="group.clearable" 1041 :placeholder="group.placeholder" :clearable="group.clearable"
1042 :disabled="group.disabled || readonly" :filterable="group.filterable" 1042 :disabled="group.disabled || readonly" :filterable="group.filterable"
1043 :multiple="group.multiple ?? false" :collapse-tags="group.collapse ?? false" 1043 :multiple="group.multiple ?? false" :collapse-tags="group.collapse ?? false"
1044 :collapse-tags-tooltip="group.tagsTooltip ?? false" 1044 :collapse-tags-tooltip="group.tagsTooltip ?? false" :allow-create="group.allowCreate ?? false"
1045 :default-first-option="group.allowCreate ?? false"
1045 @change="(val) => selectChange(val, group)"> 1046 @change="(val) => selectChange(val, group)">
1046 <el-option v-for="opts in group.options" 1047 <el-option v-for="opts in group.options"
1047 :label="group.props?.label ? opts[group.props.label] : opts.label" 1048 :label="group.props?.label ? opts[group.props.label] : opts.label"
......
...@@ -12,6 +12,7 @@ declare module '@vue/runtime-core' { ...@@ -12,6 +12,7 @@ declare module '@vue/runtime-core' {
12 ApprovalProcess: typeof import('./../components/ApprovalProcess/src/ApprovalProcess.vue')['default'] 12 ApprovalProcess: typeof import('./../components/ApprovalProcess/src/ApprovalProcess.vue')['default']
13 Auth: typeof import('./../components/Auth/index.vue')['default'] 13 Auth: typeof import('./../components/Auth/index.vue')['default']
14 AuthAll: typeof import('./../components/AuthAll/index.vue')['default'] 14 AuthAll: typeof import('./../components/AuthAll/index.vue')['default']
15 CarouselPanel: typeof import('./../components/CarouselPanel/src/CarouselPanel.vue')['default']
15 ContentWrap: typeof import('./../components/ContentWrap/src/ContentWrap.vue')['default'] 16 ContentWrap: typeof import('./../components/ContentWrap/src/ContentWrap.vue')['default']
16 Copyright: typeof import('./../components/Copyright/index.vue')['default'] 17 Copyright: typeof import('./../components/Copyright/index.vue')['default']
17 Day: typeof import('./../components/Schedule/component/day.vue')['default'] 18 Day: typeof import('./../components/Schedule/component/day.vue')['default']
......
...@@ -1249,15 +1249,15 @@ const formattedDate = (dateVal) => { ...@@ -1249,15 +1249,15 @@ const formattedDate = (dateVal) => {
1249 (assetDetailInfo.updateFrequency?.includes(7) ? ((assetDetailInfo.updateFrequencyName > 1 ? ',' : '') 1249 (assetDetailInfo.updateFrequency?.includes(7) ? ((assetDetailInfo.updateFrequencyName > 1 ? ',' : '')
1250 + assetDetailInfo.updateFrequencyOther) : '')) ?? '--' }}</span> 1250 + assetDetailInfo.updateFrequencyOther) : '')) ?? '--' }}</span>
1251 </div> 1251 </div>
1252 <div class="list_item">
1253 <span class="item_label">是否完成质量评估:</span>
1254 <span class="item_value">{{ assetDetailInfo.isQualityAssessment == 'Y' ? '是' : '否' }}</span>
1255 </div>
1256 <div class="list_item" v-if="(detailType == 'asset' && assetDetailInfo.isQualityAssessment == 'Y')"> 1252 <div class="list_item" v-if="(detailType == 'asset' && assetDetailInfo.isQualityAssessment == 'Y')">
1257 <span class="item_label">质量评估机构:</span> 1253 <span class="item_label">质量评估机构:</span>
1258 <span class="item_value">{{ assetDetailInfo.registerAttachment.qualityEvaluationInstitution || '--' 1254 <span class="item_value">{{ assetDetailInfo.registerAttachment.qualityEvaluationInstitution || '--'
1259 }}</span> 1255 }}</span>
1260 </div> 1256 </div>
1257 <div class="list_item" v-else-if="assetDetailInfo.isQualityAssessment != 'Y'">
1258 <span class="item_label">是否完成质量评估:</span>
1259 <span class="item_value">{{ assetDetailInfo.isQualityAssessment == 'Y' ? '是' : '否' }}</span>
1260 </div>
1261 <div class="list_item"> 1261 <div class="list_item">
1262 <span class="item_label">病例总数():</span> 1262 <span class="item_label">病例总数():</span>
1263 <span class="item_value">{{ assetDetailInfo.caseNumber ? changeNum(assetDetailInfo.caseNumber, 0) : '--' 1263 <span class="item_value">{{ assetDetailInfo.caseNumber ? changeNum(assetDetailInfo.caseNumber, 0) : '--'
...@@ -1289,15 +1289,15 @@ const formattedDate = (dateVal) => { ...@@ -1289,15 +1289,15 @@ const formattedDate = (dateVal) => {
1289 <span class="item_value">{{ assetDetailInfo.isRegistered == 'N' ? '无' : 1289 <span class="item_value">{{ assetDetailInfo.isRegistered == 'N' ? '无' :
1290 (assetDetailInfo.registeredExchangeName?.join(',') ?? '--') }}</span> 1290 (assetDetailInfo.registeredExchangeName?.join(',') ?? '--') }}</span>
1291 </div> 1291 </div>
1292 <div class="list_item">
1293 <span class="item_label">是否完成价值评估:</span>
1294 <span class="item_value">{{ assetDetailInfo.isCostAssessment == 'Y' ? '是' : '否' }}</span>
1295 </div>
1296 <div class="list_item" v-if="(detailType == 'asset' && assetDetailInfo.isCostAssessment == 'Y')"> 1292 <div class="list_item" v-if="(detailType == 'asset' && assetDetailInfo.isCostAssessment == 'Y')">
1297 <span class="item_label">价值评估机构:</span> 1293 <span class="item_label">价值评估机构:</span>
1298 <span class="item_value">{{ assetDetailInfo.registerAttachment.costAssessmentInstitution || '--' 1294 <span class="item_value">{{ assetDetailInfo.registerAttachment.costAssessmentInstitution || '--'
1299 }}</span> 1295 }}</span>
1300 </div> 1296 </div>
1297 <div class="list_item" v-else-if="assetDetailInfo.isCostAssessment != 'Y'">
1298 <span class="item_label">是否完成价值评估:</span>
1299 <span class="item_value">{{ assetDetailInfo.isCostAssessment == 'Y' ? '是' : '否' }}</span>
1300 </div>
1301 <div class="list_item"> 1301 <div class="list_item">
1302 <span class="item_label">资产类型:</span> 1302 <span class="item_label">资产类型:</span>
1303 <span class="item_value">{{ assetDetailInfo.damTypeName || '--' }}</span> 1303 <span class="item_value">{{ assetDetailInfo.damTypeName || '--' }}</span>
...@@ -1437,7 +1437,44 @@ const formattedDate = (dateVal) => { ...@@ -1437,7 +1437,44 @@ const formattedDate = (dateVal) => {
1437 </div> 1437 </div>
1438 </span> 1438 </span>
1439 </div> 1439 </div>
1440 1440 <div class="list_item is_block isFile" :style="{ width: '40%', 'margin-right': '28px' }"
1441 v-if="detailType == 'asset' && assetDetailInfo.registerAttachment?.commitmentLetter?.length">
1442 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">承诺函附件</span>
1443 <span v-for="(item) in (assetDetailInfo.registerAttachment?.commitmentLetter || [])" class="item_value"
1444 :style="{ 'padding-left': '0px' }">
1445 <div class="file-operate">
1446 <template
1447 v-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'xls' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'xlsx' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'csv'">
1448 <img class="file-img" src="../../assets/images/excel.png" />
1449 </template>
1450 <template
1451 v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'doc' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'docx'">
1452 <img class="file-img" src="../../assets/images/word.png" />
1453 </template>
1454 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'zip'">
1455 <img class="file-img" src="../../assets/images/zip.png" />
1456 </template>
1457 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'rar'">
1458 <img class="file-img" src="../../assets/images/RAR.png" />
1459 </template>
1460 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'pdf'">
1461 <img class="file-img" src="../../assets/images/PDF.png" />
1462 </template>
1463 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'png'">
1464 <img class="file-img" src="../../assets/images/png.png" />
1465 </template>
1466 <template
1467 v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpg' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpeg'">
1468 <img class="file-img" src="../../assets/images/jpg.png" />
1469 </template>
1470 <div class="file-name">{{ item.name }}</div>
1471 <div :style="{ right: '36px' }"
1472 v-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'pdf' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'png' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpg' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpeg'"
1473 class="file-preview" @click="onUploadFilePreview(item)">查看</div>
1474 <div :style="{ right: '0px' }" class="file-preview" @click="onUploadFileDownload(item)">下载</div>
1475 </div>
1476 </span>
1477 </div>
1441 <div class="list_item is_block isFile" :style="{ width: '40%' }" 1478 <div class="list_item is_block isFile" :style="{ width: '40%' }"
1442 v-if="(detailType == 'asset' && assetDetailInfo.isQualityAssessment == 'Y') && assetDetailInfo.registerAttachment?.evaluationFile?.length"> 1479 v-if="(detailType == 'asset' && assetDetailInfo.isQualityAssessment == 'Y') && assetDetailInfo.registerAttachment?.evaluationFile?.length">
1443 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">质量评估报告</span> 1480 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">质量评估报告</span>
...@@ -1594,7 +1631,7 @@ const formattedDate = (dateVal) => { ...@@ -1594,7 +1631,7 @@ const formattedDate = (dateVal) => {
1594 </span> 1631 </span>
1595 </div> 1632 </div>
1596 <div class="list_item is_block isFile" :style="{ width: '40%', 'margin-right': '28px' }" 1633 <div class="list_item is_block isFile" :style="{ width: '40%', 'margin-right': '28px' }"
1597 v-if="assetDetailInfo.registerAttachment?.commitmentLetter?.length"> 1634 v-if="detailType !='asset' && assetDetailInfo.registerAttachment?.commitmentLetter?.length">
1598 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">承诺函附件</span> 1635 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">承诺函附件</span>
1599 <span v-for="(item) in (assetDetailInfo.registerAttachment?.commitmentLetter || [])" class="item_value" 1636 <span v-for="(item) in (assetDetailInfo.registerAttachment?.commitmentLetter || [])" class="item_value"
1600 :style="{ 'padding-left': '0px' }"> 1637 :style="{ 'padding-left': '0px' }">
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
6 import { ref } from 'vue'; 6 import { ref } from 'vue';
7 import TableTools from "@/components/Tools/table_tools.vue"; 7 import TableTools from "@/components/Tools/table_tools.vue";
8 import { ElMessage, ElMessageBox } from 'element-plus'; 8 import { ElMessage, ElMessageBox } from 'element-plus';
9 import { CarouselPanel } from '@/components/CarouselPanel';
9 import { useRouter, useRoute } from "vue-router"; 10 import { useRouter, useRoute } from "vue-router";
10 import { MoreFilled } from "@element-plus/icons-vue"; 11 import { MoreFilled } from "@element-plus/icons-vue";
11 import { changeNum, tagMethod, tagType, } from "@/utils/common"; 12 import { changeNum, tagMethod, tagType, } from "@/utils/common";
...@@ -26,6 +27,14 @@ const path = route.path; ...@@ -26,6 +27,14 @@ const path = route.path;
26 27
27 const loading = ref(false); 28 const loading = ref(false);
28 const defaultItemLogo = new URL('@/assets/images/home-finance-product.png', import.meta.url).href 29 const defaultItemLogo = new URL('@/assets/images/home-finance-product.png', import.meta.url).href
30 const carouselInfo: any = ref({
31 list: [],
32 height: '176px',
33 loop: false,
34 autoplay: false,
35 arrow: 'hover',
36 itemClass: 'list-content'
37 })
29 const exchangeList: any = ref([]); 38 const exchangeList: any = ref([]);
30 const exchangGuid = ref(''); 39 const exchangGuid = ref('');
31 const searchItemList = ref([ 40 const searchItemList = ref([
...@@ -131,18 +140,8 @@ const tableFields = ref([{ label: "序号", type: "index", width: 56, align: "ce ...@@ -131,18 +140,8 @@ const tableFields = ref([{ label: "序号", type: "index", width: 56, align: "ce
131 { label: "修改人", field: "updateUserName", width: 140 }, 140 { label: "修改人", field: "updateUserName", width: 140 },
132 { label: "修改时间", field: "updateTime", width: 180 }]); 141 { label: "修改时间", field: "updateTime", width: 180 }]);
133 142
134 /** 是否时企业端。不是企业端,则是服务端。 */
135 const isCompanyPlatform = ref(userData.tenantType == 1);
136
137 const listDataLoading = ref(false);
138
139 const activeListType = ref('list');
140
141 const listData: any = ref([]); 143 const listData: any = ref([]);
142 144
143 /** 记录点击省略号弹出菜单的visible */
144 const cardBtnVisible: any = ref(false);
145
146 const tableInfo = ref({ 145 const tableInfo = ref({
147 id: 'asset-data-table', 146 id: 'asset-data-table',
148 rowKey: 'guid', 147 rowKey: 'guid',
...@@ -343,7 +342,12 @@ const getTableData = () => { ...@@ -343,7 +342,12 @@ const getTableData = () => {
343 const getExchangeData = () => { 342 const getExchangeData = () => {
344 getExchangeList().then((res: any) => { 343 getExchangeList().then((res: any) => {
345 if (res.code == proxy.$passCode) { 344 if (res.code == proxy.$passCode) {
346 exchangeList.value = res.data || []; 345 const data = res.data || [];
346 while (data.length) {
347 exchangeList.value.push(data.splice(0, 4));
348 }
349 carouselInfo.value.list = exchangeList.value;
350 carouselInfo.value.arrow = exchangeList.value.length > 1 ? 'hover' : 'never';
347 } else { 351 } else {
348 ElMessage.error(res.msg); 352 ElMessage.error(res.msg);
349 } 353 }
...@@ -530,9 +534,10 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -530,9 +534,10 @@ const rejectDialogBtnClick = (btn, info) => {
530 <TableTools :searchItems="searchItemList" :searchId="'register-data-search'" @search="toSearch" /> 534 <TableTools :searchItems="searchItemList" :searchId="'register-data-search'" @search="toSearch" />
531 </div> 535 </div>
532 <div class="content_main_wrap"> 536 <div class="content_main_wrap">
533 <div class="list-content"> 537 <CarouselPanel :carousel-info="carouselInfo">
534 <template v-for="(item, i) in exchangeList" :key="item.exchangeGuid"> 538 <template v-slot:default="{ carousel }">
535 <div class="card-content" :class="{ active: exchangGuid == item.exchangeGuid }"> 539 <div class="card-content" v-for="(item, i) in carousel" :key="'item-' + i"
540 :class="{ active: exchangGuid == item.exchangeGuid, mr8: i < carousel.length - 1 && (i + 1) % 4 !== 0 }">
536 <div class="header"> 541 <div class="header">
537 <img class="left-img" 542 <img class="left-img"
538 :src="(item.picUrl && typeof item.picUrl == 'string') ? item.picUrl : defaultItemLogo" alt="" /> 543 :src="(item.picUrl && typeof item.picUrl == 'string') ? item.picUrl : defaultItemLogo" alt="" />
...@@ -556,9 +561,8 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -556,9 +561,8 @@ const rejectDialogBtnClick = (btn, info) => {
556 <div class="left-btn is_block" @click="btnClick({ value: 'create', ...item })">资产登记</div> 561 <div class="left-btn is_block" @click="btnClick({ value: 'create', ...item })">资产登记</div>
557 </div> 562 </div>
558 </div> 563 </div>
559 <div v-if="i < exchangeList.length - 1" class="space_partition"></div>
560 </template> 564 </template>
561 </div> 565 </CarouselPanel>
562 <div class="table_panel_wrap"> 566 <div class="table_panel_wrap">
563 <Table :tableInfo="tableInfo" @tableBtnClick="tableBtnClick" /> 567 <Table :tableInfo="tableInfo" @tableBtnClick="tableBtnClick" />
564 <PageNav :class="[pageInfo.type]" :pageInfo="pageInfo" @pageChange="pageChange" /> 568 <PageNav :class="[pageInfo.type]" :pageInfo="pageInfo" @pageChange="pageChange" />
...@@ -572,7 +576,6 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -572,7 +576,6 @@ const rejectDialogBtnClick = (btn, info) => {
572 <style scoped lang="scss"> 576 <style scoped lang="scss">
573 .container_wrap { 577 .container_wrap {
574 padding: 0 16px; 578 padding: 0 16px;
575 overflow: hidden auto;
576 579
577 .table_tool_wrap { 580 .table_tool_wrap {
578 height: 44px; 581 height: 44px;
...@@ -586,8 +589,7 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -586,8 +589,7 @@ const rejectDialogBtnClick = (btn, info) => {
586 } 589 }
587 590
588 .table_panel_wrap { 591 .table_panel_wrap {
589 flex: 1; 592 height: calc(100% - 176px);
590 height: auto;
591 } 593 }
592 } 594 }
593 595
...@@ -724,21 +726,32 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -724,21 +726,32 @@ const rejectDialogBtnClick = (btn, info) => {
724 } 726 }
725 } 727 }
726 728
729 .list-content-wrap {
730 position: relative;
731 }
732
727 .list-content { 733 .list-content {
728 display: flex; 734 width: 100%;
729 flex-wrap: wrap; 735 height: 176px;
736 overflow: hidden;
730 737
731 .card-content { 738 .card-content {
732 width: calc(25% - 6px); 739 width: calc(25% - 6px);
733 padding: 16px; 740 padding: 16px;
734 box-shadow: 0 0 0 1px #d9d9d9;
735 margin-bottom: 8px; 741 margin-bottom: 8px;
742 min-width: 325px;
736 max-width: 400px; 743 max-width: 400px;
744 border: 1px solid var(--el-border-color-regular);
745 float: left;
737 746
738 &.active { 747 &.active {
739 box-shadow: 0 0 0 1px var(--el-color-primary); 748 box-shadow: 0 0 0 1px var(--el-color-primary);
740 } 749 }
741 750
751 &.mr8 {
752 margin-right: 8px;
753 }
754
742 .header { 755 .header {
743 display: flex; 756 display: flex;
744 margin-bottom: 16px; 757 margin-bottom: 16px;
...@@ -817,9 +830,5 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -817,9 +830,5 @@ const rejectDialogBtnClick = (btn, info) => {
817 } 830 }
818 } 831 }
819 } 832 }
820
821 .space_partition {
822 width: 8px;
823 }
824 } 833 }
825 </style> 834 </style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!