XiaXxxxxx 1 年之前
父節點
當前提交
bb418d33ad

+ 1 - 1
src/api/sys/version.ts

@@ -99,7 +99,7 @@ export const getResVersionList = (params: any) => {
 
 /**
  * @description: 保存版本
- * @param: 2:实体json {}
+ * @param version Array []
  */
 export const saveResVersion = (params: any) => {
     return new Promise<void>((resolve) => {

+ 255 - 0
src/views/dataAdmin/dataAdmin/resVersion/ResHistoryVersionModal.vue

@@ -0,0 +1,255 @@
+<!-- 资源的历史版本查询弹窗 -->
+<template>
+    <BasicModal :maskClosable="false" :width="1430" @register="registerModal" v-bind="$attrs" :title="title" centered
+        :showOkBtn="false" :showCancelBtn="false" wrapClassName="basic-modal-custom" :footer="null">
+        <div class="custom-content">
+            <div class="right-header">
+                <div class="search">
+                    <span class="label">资源名称:</span>
+                    <a-input v-model:value="searchValue" placeholder="输入关键字查询" allow-clear />
+                </div>
+                <div class="handle-btns">
+                    <a-button class="btn" @click="resetTable">重置</a-button>
+                    <a-button class="btn" type="primary" @click="searchTable">查询</a-button>
+                </div>
+            </div>
+            <div class="right-body">
+                <BasicTable @register="registerTable">
+                    <template #action="{ record }">
+                        <TableAction :actions="[
+                            {
+                                label: '选择',
+                                tooltip: '选择',
+                                onClick: handleSelectRes.bind(null, record),
+                            }
+                        ]" />
+                    </template>
+                </BasicTable>
+            </div>
+        </div>
+    </BasicModal>
+</template>
+<script>
+import { defineComponent, reactive, ref, onMounted, watch, computed } from 'vue';
+import { BasicModal, useModalInner } from '/@/components/Modal';
+// 导入表格组件,表格事件
+import { BasicTable, useTable, TableAction } from '/@/components/Table';
+import { Button, message } from 'ant-design-vue';
+import { getResVersionList } from '/@/api/sys/version';
+import { session } from '/@/utils/Memory';
+import moment from 'moment';
+
+export default defineComponent({
+    name: 'VersionResModal',
+    components: { BasicModal, BasicTable, TableAction, Button },
+    setup(_, { emit }) {
+        const title = ref('');
+        const currentType = ref('')
+        const searchValue = ref('')
+        const typeObj = {
+            MR: "地图资源",
+            DR: "场景资源",
+            ER: "文件资源",
+            SR: "组件服务",
+            interface: "接口服务"
+        }
+        const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
+            console.log(data)
+            title.value = `【${typeObj[data.type]}】历史版本查询`
+            currentType.value = data.type
+            reload();
+        });
+
+        const getResData = () => {
+            return new Promise((resolve, reject) => {
+                let params = {
+                    isgl: 1,
+                    keyStr: searchValue.value,
+                    serviceType: currentType.value
+                }
+                getResVersionList(params).then(res => {
+                    if (res.resp_code === 0 && res.datas) {
+                        let resData = res.datas.pageData;
+                        resData.forEach(item => {
+                            item.type = typeObj[item.RESOURCE_TYPE]
+                        })
+                        resolve(resData)
+                    }
+                    else {
+                        resolve([])
+                        message.error(res.resp_msg)
+                    }
+                })
+            })
+        }
+        //表格列
+        const columns = [
+            {
+                title: '资源类型',
+                align: 'center',
+                dataIndex: 'type',
+                key: 'type'
+            },
+            {
+                title: '资源名称',
+                align: 'center',
+                dataIndex: 'SERVICENAME',
+                key: 'SERVICENAME'
+            },
+            {
+                title: '版本',
+                align: 'center',
+                dataIndex: 'VERSION_NAME',
+                key: 'VERSION_NAME'
+            },
+            {
+                title: '版本号',
+                align: 'center',
+                dataIndex: 'VERSION',
+                key: 'VERSION'
+            },
+            {
+                title: '操作时间',
+                align: 'center',
+                dataIndex: 'MODIFY_DATE',
+                key: 'MODIFY_DATE'
+            },
+            {
+                title: '操作人',
+                align: 'center',
+                dataIndex: 'USER_NAME',
+                key: 'USER_NAME'
+            }
+        ];
+        const [
+            registerTable,
+            { reload, collapseAll, getRowSelection, getSelectRowKeys, setSelectedRowKeys },
+        ] = useTable({
+            title: '版本列表', //'菜单列表'
+            api: getResData, //加载数据
+            columns: columns,
+            useSearchForm: false,     //开启搜索区域
+            bordered: false,
+            showTableSetting: true,  // 显示表格设置
+            tableSetting: {
+                redo: true,
+                size: true,
+                setting: false,
+                fullScreen: false
+            },
+            showIndexColumn: true,
+            pagination: {
+                hideOnSinglePage: false
+            },
+            rowKey: (record) => record.SERVICEID,
+            actionColumn: {
+                width: 200,
+                title: '操作',
+                dataIndex: 'action',
+                slots: { customRender: 'action' },
+            },
+            rowSelection: {
+                type: 'checkbox',
+            },
+        });
+        //表格查询功能
+        const searchTable = () => {
+            reload()
+        }
+        //重置
+        const resetTable = () => {
+            searchValue.value = '';
+            reload();
+        }
+        // 历史版本
+        const handleSelectRes = (record) => {
+            const detail = [
+                {
+                    label: "资源类型",
+                    value: record.type
+                },
+                {
+                    label: "资源名称",
+                    value: record.SERVICENAME
+                },
+                {
+                    label: "版本名称",
+                    value: record.VERSION_NAME
+                },
+                {
+                    label: "版本号",
+                    value: record.VERSION
+                },
+                {
+                    label: "版本时间",
+                    value: record.MODIFY_DATE
+                }
+            ]
+            emit('select', detail);
+            closeModal();
+        }
+        return {
+            title,
+            currentType,
+            searchValue,
+            registerModal,
+            registerTable,
+            resetTable,
+            searchTable,
+
+            handleSelectRes
+        };
+    },
+});
+</script>
+<style lang="less">
+.basic-modal-custom {
+
+    .ant-modal-content {
+        background-color: #eff0f5;
+
+        .scroll-container .scrollbar__wrap {
+            margin-bottom: 0 !important;
+        }
+
+        .custom-content {
+
+            .right-header {
+                margin-bottom: 10px;
+                height: 74px;
+                padding: 0 20px;
+                display: flex;
+                align-items: center;
+                background-color: #ffffff;
+                border-radius: 6px;
+                justify-content: space-between;
+
+                .search {
+                    display: flex;
+                    align-items: center;
+
+                    .label {
+                        width: 120px;
+                    }
+                }
+
+                .handle-btns {
+                    display: flex;
+                    align-items: center;
+
+                    .btn {
+                        margin-left: 10px;
+                    }
+                }
+            }
+
+            .right-body {
+                padding: 0 20px;
+                height: calc(100% - 84px);
+                background-color: #ffffff;
+                border-radius: 6px;
+            }
+        }
+    }
+}
+</style>

+ 187 - 25
src/views/dataAdmin/dataAdmin/resVersion/ResVersionManageModal.vue

@@ -12,42 +12,89 @@
             <div class="version">
                 <div class="base-title">版本管理</div>
                 <div class="is-history">
-                    <div class="label">是否已存在:</div>
                     <div class="radio-box">
-                        <a-radio-group v-model:value="isHistory">
-                            <a-radio :value="0">否</a-radio>
-                            <a-radio :value="1">是</a-radio>
-                        </a-radio-group>
+                        <div class="label">是否已存在:</div>
+                        <div class="radio">
+                            <a-radio-group v-model:value="isHistory" @change="handleChangeHistoryMode">
+                                <a-radio :value="0">否</a-radio>
+                                <a-radio :value="1">是</a-radio>
+                            </a-radio-group>
+                        </div>
+                    </div>
+                    <div class="select-history" v-if="isHistory === 1">
+                        <div class="history-label">选择历史资源:</div>
+                        <a class="select-btn" @click="handleOpenHistoryModal">选择历史资源</a>
                     </div>
                 </div>
                 <div class="version-info" v-if="isHistory === 0">
                     <div class="label">版本名称:</div>
                     <div class="select">
-                        <a-select v-model:value="version" style="width: 100%" :options="versionSelect"></a-select>
+                        <a-select v-model:value="versionInfo" style="width: 100%" :options="versionSelect"></a-select>
+                    </div>
+                </div>
+                <div class="history-info" v-if="isHistory === 1">
+                    <div class="label">历史资源信息:</div>
+                    <div class="info-box">
+                        <div class="info-item" v-for="(item, index) in historyResDetail" :key="index">
+                            <div class="item-label">{{ item.label }}:</div>
+                            <div class="item-value">{{ item.value }}</div>
+                        </div>
                     </div>
                 </div>
             </div>
         </div>
     </BasicModal>
+    <ResHistoryVersionModal @register="registerHistoryModal" @select="selectHistoryRes"></ResHistoryVersionModal>
 </template>
 <script>
 import { defineComponent, reactive, ref, onMounted, watch, computed, toRefs } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-// import { message } from 'ant-design-vue';
-import { getVersionList } from '/@/api/sys/version';
+import { BasicModal, useModalInner, useModal } from '/@/components/Modal';
+import ResHistoryVersionModal from './ResHistoryVersionModal.vue';
+import { message } from 'ant-design-vue';
+import { getVersionList, saveResVersion } from '/@/api/sys/version';
 
 export default defineComponent({
     name: 'ResVersionModal',
-    components: { BasicModal },
+    components: { BasicModal, ResHistoryVersionModal },
     setup(_, { emit }) {
+        // 基础信息
         const baseInfo = reactive({
             RESOURCE_TYPE: "",
             type: "",
             SERVICENAME: "",
             SERVICEID: ""
         })
+        // const versionInfo = reactive({
+        //     version_ID:"",
+        //     version_NO:""
+        // })
+        // 版本信息,用于提交
+        const versionInfo = ref('')
+        // 是否有历史版本
         const isHistory = ref(0);
-        const version = ref("");
+        // 历史版本资源详情
+        const historyResDetail = ref([
+            {
+                label: "资源类型",
+                value: ""
+            },
+            {
+                label: "资源名称",
+                value: ""
+            },
+            {
+                label: "版本名称",
+                value: ""
+            },
+            {
+                label: "版本号",
+                value: ""
+            },
+            {
+                label: "版本时间",
+                value: ""
+            }
+        ]);
         //获取大版本选项列表
         const getVersionSelect = () => {
             return new Promise((resolve) => {
@@ -61,7 +108,7 @@ export default defineComponent({
                             resData.push(
                                 {
                                     label: element.VERSION_NAME,
-                                    value: element.VERSION_NAME
+                                    value: element.FID + '_' + element.VERSION_NO
                                 }
                             )
                         });
@@ -78,7 +125,7 @@ export default defineComponent({
         onMounted(async () => {
             versionSelect.value = await getVersionSelect();
         })
-
+        // 初始化
         const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
             resetForm()
             console.log(data)
@@ -88,21 +135,85 @@ export default defineComponent({
             baseInfo.SERVICENAME = SERVICENAME;
             baseInfo.SERVICEID = SERVICEID;
         });
+        // 重置表格
         const resetForm = () => {
             isHistory.value = 0
-            version.value = ''
+            versionInfo.value = ''
         }
-        // 提交信息
-        const handleSubmit = () => {
 
+        // 注册历史版本资源弹窗
+        const [registerHistoryModal, { openModal }] = useModal()
+
+        // 打开选择历史版本资源的弹窗
+        const handleOpenHistoryModal = () => {
+            openModal(true, {
+                type: baseInfo.RESOURCE_TYPE
+            })
+        }
+        // 提交信息
+        const handleSubmit = async () => {
+            if (versionInfo.value === '') {
+                message.info('请选择版本')
+                return
+            }
+            const version = versionInfo.value.split('_')
+            console.log(baseInfo)
+            console.log(version)
+            let params = {
+                version: [{
+                    resource_ID: baseInfo.SERVICEID,
+                    resource_TYPE: baseInfo.RESOURCE_TYPE,
+                    version_ID: version[0],
+                    version_NO: version[1]
+                }]
+            }
+            await saveResVersion(params).then(saveRes => {
+                console.log(saveRes)
+            })
+            closeModal();
+            emit('success')
         };
+        // 选择历史版本资源
+        const selectHistoryRes = (info) => {
+            historyResDetail.value = info
+        }
+        const handleChangeHistoryMode = (e) => {
+            historyResDetail.value = [
+                {
+                    label: "资源类型",
+                    value: ""
+                },
+                {
+                    label: "资源名称",
+                    value: ""
+                },
+                {
+                    label: "版本名称",
+                    value: ""
+                },
+                {
+                    label: "版本号",
+                    value: ""
+                },
+                {
+                    label: "版本时间",
+                    value: ""
+                }
+            ];
+            versionInfo.value = ''
+        }
         return {
             ...toRefs(baseInfo),
+            versionInfo,
             isHistory,
-            version,
+            historyResDetail,
             versionSelect,
             registerModal,
+            registerHistoryModal,
+            handleOpenHistoryModal,
             handleSubmit,
+            selectHistoryRes,
+            handleChangeHistoryMode
         };
     },
 });
@@ -139,7 +250,8 @@ export default defineComponent({
             }
         }
     }
-    .version{
+
+    .version {
         .base-title {
             margin: 20px 0;
             width: 100px;
@@ -150,29 +262,79 @@ export default defineComponent({
             font-size: 16px;
             color: #333333;
         }
-        .is-history{
+
+        .is-history {
             display: flex;
             align-items: center;
 
-            .label{
-                width: 90px;
-                margin-right: 10px;
+            .radio-box {
+                display: flex;
+                align-items: center;
+                margin-right: 180px;
+
+                .label {
+                    width: 90px;
+                    margin-right: 10px;
+                }
+            }
+
+            .select-history {
+                display: flex;
+                align-items: center;
+
+                .history-label {
+                    width: 100px;
+                }
             }
         }
-        .version-info{
+
+        .version-info {
             margin-top: 10px;
             display: flex;
             align-items: center;
 
-            .label{
+            .label {
                 width: 90px;
                 margin-right: 10px;
                 flex-shrink: 0;
             }
-            .select{
+
+            .select {
                 width: 250px;
             }
         }
+
+        .history-info {
+            margin-top: 10px;
+            display: flex;
+
+            .label {
+                width: 100px;
+                margin-right: 10px;
+                flex-shrink: 0;
+            }
+
+            .info-box {
+                width: 500px;
+                border-radius: 2px;
+                background: rgba(51, 51, 51, 0.1);
+                box-sizing: border-box;
+                border: 1px solid #D9D9D9;
+                display: flex;
+                flex-wrap: wrap;
+                user-select: none;
+                cursor: not-allowed;
+
+                .info-item {
+                    padding-left: 15px;
+                    width: 50%;
+                    height: 40px;
+                    display: flex;
+                    align-items: center;
+                    color: #888888;
+                }
+            }
+        }
     }
 }
 </style>

+ 11 - 11
src/views/dataAdmin/dataAdmin/resVersion/index.vue

@@ -56,7 +56,7 @@
                 </div>
             </div>
         </div>
-        <ResVersionManageModal @register="registerModal"></ResVersionManageModal>
+        <ResVersionManageModal @register="registerModal" @success="onSubmit"></ResVersionManageModal>
     </div>
 </template>
 
@@ -161,20 +161,20 @@ export default defineComponent({
             {
                 title: '版本号',
                 align: 'center',
-                dataIndex: 'VERSION_NO',
-                key: 'VERSION_NO'
+                dataIndex: 'VERSION',
+                key: 'VERSION'
             },
             {
                 title: '操作时间',
                 align: 'center',
-                dataIndex: 'CREATE_DATE',
-                key: 'CREATE_DATE'
+                dataIndex: 'MODIFY_DATE',
+                key: 'MODIFY_DATE'
             },
             {
                 title: '操作人',
                 align: 'center',
-                dataIndex: 'CREATENAME',
-                key: 'CREATENAME'
+                dataIndex: 'USER_NAME',
+                key: 'USER_NAME'
             }
         ];
         //表格查询功能
@@ -244,9 +244,9 @@ export default defineComponent({
 
 
         //弹窗确认
-        // const onSubmit = () => {
-        //     reload();
-        // }
+        const onSubmit = () => {
+            reload();
+        }
         const [
             registerTable,
             { reload, getRowSelection, getSelectRowKeys, setSelectedRowKeys },
@@ -299,7 +299,7 @@ export default defineComponent({
             handleFetchRes,
             handleLookRes,
             handleManage,
-            // onSubmit
+            onSubmit
         };
     },
 });

+ 71 - 18
src/views/dataAdmin/dataAdmin/version/VersionResModal.vue

@@ -90,53 +90,77 @@ export default defineComponent({
         ]);
         const currentType = ref('MR')
         const currentFid = ref('')
+        const searchValue = ref('')
         const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
             const { FID, VERSION_NAME, VERSION_NO, VERSION_DISP } = data.form;
             currentFid.value = FID;
             title.value = `【${VERSION_NAME} V${VERSION_NO}】资源绑定查看`;
         });
-        const getVersionResData = ()=>{
+        const typeObj = {
+            MR: "地图资源",
+            DR: "场景资源",
+            ER: "文件资源",
+            SR: "组件服务",
+            interface: "接口服务"
+        }
+        const getVersionResData = () => {
             return new Promise(resolve => {
                 let params = {
                     fid: currentFid.value,
                     serviceType: currentType.value
                 }
-                getResByVersion(params).then(res=>{
-                    resolve([])
+                getResByVersion(params).then(res => {
+                    if (res.resp_code === 0 && res.datas) {
+                        let resData = res.datas.pageData;
+                        resData.forEach(item => {
+                            item.type = typeObj[item.RESOURCE_TYPE]
+                        })
+                        resolve(resData)
+                    }
+                    else {
+                        resolve([])
+                        message.error(res.resp_msg)
+                    }
                 })
             })
         }
         //表格列
         const columns = [
             {
-                title: '版本名称',
+                title: '资源类型',
                 align: 'center',
-                dataIndex: 'VERSION_NAME',
-                key: 'VERSION_NAME'
+                dataIndex: 'type',
+                key: 'type'
             },
             {
-                title: '版本号',
+                title: '资源名称',
                 align: 'center',
-                dataIndex: 'VERSION_NO',
-                key: 'VERSION_NO'
+                dataIndex: 'SERVICENAME',
+                key: 'SERVICENAME'
+            },
+            {
+                title: '版本',
+                align: 'center',
+                dataIndex: 'VERSION_NAME',
+                key: 'VERSION_NAME'
             },
             {
                 title: '版本号',
                 align: 'center',
-                dataIndex: 'VERSION_DISP',
-                key: 'VERSION_DISP'
+                dataIndex: 'VERSION',
+                key: 'VERSION'
             },
             {
-                title: '发布时间',
+                title: '操作时间',
                 align: 'center',
-                dataIndex: 'insertTime',
-                key: 'insertTime'
+                dataIndex: 'MODIFY_DATE',
+                key: 'MODIFY_DATE'
             },
             {
-                title: '修改时间',
+                title: '操作人',
                 align: 'center',
-                dataIndex: 'updateTime',
-                key: 'updateTime'
+                dataIndex: 'USER_NAME',
+                key: 'USER_NAME'
             }
         ];
         const [
@@ -170,17 +194,46 @@ export default defineComponent({
                 type: 'checkbox',
             },
         });
+        //表格查询功能
+        const searchTable = () => {
+            reload()
+        }
+        //重置
+        const resetTable = () => {
+            searchValue.value = '';
+            reload();
+        }
+        // 切换资源类型
         const handleChangeRes = (item) => {
             currentType.value = item.value;
             reload();
+        }
+        // 浏览
+        const handleFetchRes = ()=>{
+
+        }
+        // 查看
+        const handleLookRes = ()=>{
+            
+        }
+        // 历史版本
+        const handleSearchHistory = ()=>{
+            
         }
         return {
             title,
             resBtns,
             currentType,
+            searchValue,
             registerModal,
             registerTable,
-            handleChangeRes
+            handleChangeRes,
+            resetTable,
+            searchTable,
+
+            handleFetchRes,
+            handleLookRes,
+            handleSearchHistory
         };
     },
 });