diff --git a/WebSite/.env.production b/WebSite/.env.production index 0c872bbd8be96f2a5051c11fc1a3adb863c3297b..2df9c73f2ac5165876b2c10047419578e35d77bc 100644 --- a/WebSite/.env.production +++ b/WebSite/.env.production @@ -1,2 +1,2 @@ -VUE_APP_BASE_URI = '/noctua-admin-micro/' +VUE_APP_BASE_URI = '/educationinstitutionallibraryweb/' VUE_APP_BASE_API = '/api' \ No newline at end of file diff --git a/WebSite/mock/account.js b/WebSite/mock/account.js index e7b4b09b24355157291b648afc448782686b11c6..296e3703b98daa66951eb7e16f86b340ff3bd2ab 100644 --- a/WebSite/mock/account.js +++ b/WebSite/mock/account.js @@ -190,11 +190,11 @@ const menuList = [ children: [] }, { - id: '15', + id: '16', available: 'YES', - name: '鏂板缓鎴戠殑绱犳潗', + name: '鏂板缓/缂栬緫鍒跺害', icon: 'fas fa-file-alt', - routingUrl: 'my-business/newly-build', + routingUrl: 'policy-edit', isNewWindow: 'NO', isSystem: 'YES', enabled: 'YES', diff --git a/WebSite/src/components/Crumbs/index.vue b/WebSite/src/components/Crumbs/index.vue index f4c00e5de3d663a04e6c89c96900fd270ac556bc..21b86ba166f1af46b2529391da76fdc01dc48193 100644 --- a/WebSite/src/components/Crumbs/index.vue +++ b/WebSite/src/components/Crumbs/index.vue @@ -1,23 +1,19 @@ <template> - <div style="display:flex;flex-warp:nowarp;width:100%;margin-left:2%"> - <div> + <div class="crumbs-container"> + <div class="breadcrumb-box"> + {{ backToMyHome ? '鎮ㄥ綋鍓嶄綅缃細' : '' }} <el-breadcrumb separator-icon="ArrowRight" v-if="showroute"> - <el-breadcrumb-item - v-for="item in routeList" - :key="item.name" - :to="{ path: item.path }" - >{{ item.name }}</el-breadcrumb-item - > + <el-breadcrumb-item v-for="(item, index) in routeList" :key="index"> + {{ item }} + </el-breadcrumb-item> </el-breadcrumb> </div> - <div class="menu-title" v-if="showback"> - <div> - <el-icon style="font-size:25px;line-height:25px"> - <Back /> - </el-icon> - </div> + <div class="back-title" v-if="showback" @click="toHome"> + <el-icon style="font-size:25px;line-height:25px"> + <Back /> + </el-icon> <div style="margin-left:10px;line-height:23px;"> - 杩斿洖鍏变韩骞冲彴棣栭〉 + {{ backToMyHome ? '杩斿洖棣栭〉瀵艰埅' : '杩斿洖鍏变韩骞冲彴棣栭〉' }} </div> </div> </div> @@ -25,17 +21,22 @@ <script> import { onMounted, reactive, toRefs } from 'vue'; +import { useRouter } from 'vue-router'; // import { ElMessage, ElMessageBox } from 'element-plus'; export default { props: { showroute: { type: Boolean, - default: true + default: false }, showback: { type: Boolean, - default: true + default: false + }, + backToMyHome: { + type: Boolean, + default: false }, routeList: { type: Array, @@ -45,25 +46,48 @@ export default { } }, - setup() { + setup(props) { + const router = useRouter(); + const routerPush = window.parent.routerPush; const data = reactive({}); onMounted(() => {}); - + const toHome = () => { + if (routerPush) { + routerPush({ + routingUrl: props.backToMyHome + ? 'educationinstitutionallibraryweb/homepage' + : '' + }); + return; + } + if (props.backToMyHome) { + router.push({ + path: '/homepage' + }); + } + }; return { - ...toRefs(data) + ...toRefs(data), + toHome }; } }; </script> <style lang="scss" scoped> -.menu-title { +.crumbs-container { display: flex; - flex-wrap: nowrap; - position: absolute; - right: 100px; + justify-content: space-between; + align-items: center; padding-bottom: 10px; - font-size: 13px; - font-weight: 600; + .breadcrumb-box, + .back-title { + display: flex; + font-size: 14px; + color: #333; + } + .back-title { + cursor: pointer; + } } </style> diff --git a/WebSite/src/router/guards.js b/WebSite/src/router/guards.js index 7eec6744a03b22076099f00bf226776a748f79d8..ffe2d19a8f2b4a432c17c38c4a876c9c79b69ce6 100644 --- a/WebSite/src/router/guards.js +++ b/WebSite/src/router/guards.js @@ -82,14 +82,21 @@ const before = async (to, from, next) => { // not authenticated // 鏈璇� NProgress.done(); - if (whiteListLv1.includes(to.path)) { - next(); - } else { - const redirect = await store.dispatch('subject/logout', { - doRouterPush: false - }); - next(redirect); - } + // if (whiteListLv1.includes(to.path)) { + // next(); + // } else { + // const redirect = await store.dispatch('subject/logout', { + // doRouterPush: false + // }); + // next(redirect); + // } + await store.dispatch('subject/permit', { + authorizationToken: '1', + afterPermitted: () => { + next(); + } + }); + // debugger; } }; diff --git a/WebSite/src/router/modules/policy-system-library.js b/WebSite/src/router/modules/policy-system-library.js index 124ca383aa5091ec996b0bb1eef1e4c4ba02ee8b..64d043cef3f30c78f7f3b028f19b9054182b12a5 100644 --- a/WebSite/src/router/modules/policy-system-library.js +++ b/WebSite/src/router/modules/policy-system-library.js @@ -13,5 +13,10 @@ export default [ path: 'rule-management', component: () => import('@/views/policy-system-library/rule-management'), name: '瑙勫垯绠$悊' + }, + { + path: 'policy-edit', + component: () => import('@/views/policy-system-library/policy-edit'), + name: '鏂板/缂栬緫鍒跺害' } ]; diff --git a/WebSite/src/views/homepage/component/search-detail.vue b/WebSite/src/views/homepage/component/search-detail.vue index e8f0520a7023c1c86b9ea0fdc92e03627899ff42..4bba1f50dc3240d1e201c524a7f401134aeed996 100644 --- a/WebSite/src/views/homepage/component/search-detail.vue +++ b/WebSite/src/views/homepage/component/search-detail.vue @@ -46,7 +46,7 @@ clearable /> <el-button - icon="el-icon-search" + icon="Search" class="search-btn" type="primary" @click="onSearch()" diff --git a/WebSite/src/views/policy-system-library/policy-edit.vue b/WebSite/src/views/policy-system-library/policy-edit.vue new file mode 100644 index 0000000000000000000000000000000000000000..06a040e0847bbb46aebf9968ebac853af9e9ea52 --- /dev/null +++ b/WebSite/src/views/policy-system-library/policy-edit.vue @@ -0,0 +1,171 @@ +<template> + <div class="app-container"> + <Crumbs :routeList="['鏀跨瓥鍒跺害搴�', '鏂板缓鍒跺害']" showroute back-to-my-home /> + <div class="app-content"> + <el-card class="edit-card"> + <el-form label-width="100px" label-position="left"> + <el-row :gutter="40"> + <el-col :span="8"> + <el-form-item label="鏂囨。缂栧彿"> + <el-input v-model="editInfo.keywords" placeholder="鑷姩鐢熸垚" /> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="鍒跺害鍚嶇О"> + <el-input v-model="editInfo.no" placeholder="璇疯緭鍏ュ埗搴﹀悕绉�" /> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="鏂囧彿"> + <el-input v-model="editInfo.no" placeholder="璇疯緭鍏ユ枃鍙�" /> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="鍒嗙被"> + <el-tree-select + v-model="editInfo.type1" + :data="treeData" + :props="defaultProps" + check-strictly + style="width:100%" + > + <template #default="{ node }"> + <span class="custom-tree-node"> + <span>{{ node.label }}</span> + <!-- <span> + <el-button + type="text" + size="mini" + @click.stop="() => handleEdit(node, data)" + > + 缂栬緫 + </el-button> + </span> --> + </span> + </template> + </el-tree-select> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="棰佸竷鏃ユ湡"> + <el-date-picker + style="width: 100%" + v-model="editInfo.date" + type="date" + placeholder="璇烽€夋嫨棰佸竷鏃ユ湡" + /> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="涓婁紶鏃ユ湡"> + <el-date-picker + style="width: 100%" + v-model="editInfo.date" + type="date" + placeholder="褰撳墠鏃堕棿锛堣嚜鍔ㄧ敓鎴愶級" + /> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="涓婁紶浜�"> + <el-select v-model="editInfo.user" style="width:100%"> + <el-option label="寮犱笁" value="寮犱笁" /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="鏄惁闇€瑕佸鎵�"> + <el-radio-group v-model="editInfo.isAp" class="ml-4"> + <el-radio :label="true" size="large">鏄�</el-radio> + <el-radio :label="false" size="large">鍚�</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="瀹℃壒浜�" v-if="editInfo.isAp"> + <el-select v-model="editInfo.user" style="width:100%"> + <el-option label="寮犱笁" value="寮犱笁" /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="24" class="btn-box"> + <el-button type="primary" plain> + 淇濆瓨 + </el-button> + <el-button type="primary" plain> + 淇濆瓨骞跺彂甯� + </el-button> + <el-button type="info" plain icon="Back" @click="onBack"> + 杩斿洖 + </el-button> + </el-col> + </el-row> + </el-form> + </el-card> + </div> + </div> +</template> + +<script> +import { onMounted, reactive, toRefs } from 'vue'; +import { useRoute, useRouter } from 'vue-router'; + +// import { ElMessage, ElMessageBox } from 'element-plus'; +export default { + setup() { + const router = useRouter(); + const route = useRoute(); + const data = reactive({ + id: route.query.id, + editInfo: { isAp: false }, + defaultProps: { + children: 'children', + label: 'name', + value: 'id' + }, + treeData: [] + }); + + const getData = () => { + data.editInfo = { id: data.id, isAp: false }; + }; + + onMounted(() => { + data.treeData = [ + { + id: 1, + name: '鏀垮簻浼氳鍑嗗垯鍒跺害', + children: [ + { id: 2, name: '浼氳鍒跺害+琛ュ厖瑙勫畾' }, + { id: 3, name: '鍩烘湰鎸囧紩' }, + { id: 4, name: '鍩烘湰鍑嗗垯' } + ] + }, + + { + id: 8, + name: '璐㈠姟棰勭畻绠$悊鍒跺害' + } + ]; + getData(); + }); + + const onBack = () => { + router.go(-1); + }; + + return { + ...toRefs(data), + onBack + }; + } +}; +</script> + +<style lang="scss" scoped> +.app-container { + .app-content { + .btn-box { + text-align: center; + } + } +} +</style> diff --git a/WebSite/src/views/policy-system-library/policy-search.vue b/WebSite/src/views/policy-system-library/policy-search.vue index 8ede083379fe523fd92ee7af3256aecfe2f585c3..a899a2cb6f6f574623eb7ec7d0db5b006fbb24e2 100644 --- a/WebSite/src/views/policy-system-library/policy-search.vue +++ b/WebSite/src/views/policy-system-library/policy-search.vue @@ -1,21 +1,308 @@ <template> - <el-card class="mainClass"> 鍒跺害搴撴煡璇� </el-card> + <div class="app-container"> + <Crumbs + :routeList="['鏀跨瓥鍒跺害搴�', '鍒跺害搴撴煡璇�']" + showroute + showback + back-to-my-home + /> + <div class="app-content"> + <el-card class="tree-card"> + <el-input + placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" + v-model="filterText" + clearable + /> + <el-divider></el-divider> + <el-tree + class="filter-tree mt-20" + :data="treeData" + :props="defaultProps" + default-expand-all + highlight-current + @node-click="handleNodeClick" + :expand-on-click-node="false" + :filter-node-method="filterNode" + ref="tree" + > + <template #default="{ node }"> + <span class="custom-tree-node"> + <span>{{ node.label }}</span> + <!-- <span> + <el-button + type="text" + size="mini" + @click.stop="() => handleEdit(node, data)" + > + 缂栬緫 + </el-button> + </span> --> + </span> + </template> + </el-tree> + </el-card> + <div class="right-box"> + <el-card class="search-card"> + <el-form label-width="70px" label-position="left"> + <el-row :gutter="30"> + <el-col :span="7"> + <el-form-item label="鍏抽敭瀛�"> + <el-input + v-model="searchInfo.keywords" + placeholder="璇疯緭鍏ュ悕绉�/鍏抽敭瀛楁ā绯婃煡璇�" + clearable + /> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="鏂囧彿"> + <el-input + v-model="searchInfo.no" + placeholder="璇疯緭鍏ユ枃鍙锋ā绯婃煡璇�" + clearable + /> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="鍒嗙被"> + <el-tree-select + v-model="searchInfo.type1" + :data="treeData" + :props="defaultProps" + check-strictly + clearable + style="width:100%" + > + <template #default="{ node }"> + <span class="custom-tree-node"> + <span>{{ node.label }}</span> + <!-- <span> + <el-button + type="text" + size="mini" + @click.stop="() => handleEdit(node, data)" + > + 缂栬緫 + </el-button> + </span> --> + </span> + </template> + </el-tree-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="30"> + <el-col :span="7"> + <el-form-item label="棰佸竷鏃ユ湡"> + <el-date-picker + style="width: 100%" + v-model="searchInfo.date" + type="daterange" + range-separator="鑷�" + start-placeholder="寮€濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + /> + </el-form-item> + </el-col> + <el-col :span="7"> </el-col> + <el-col :span="7"> </el-col> + <el-col :span="3"> + <el-button type="primary" @click="onSearch" plain icon="Search"> + 鏌ヨ + </el-button> + </el-col> + </el-row> + </el-form> + </el-card> + <el-card class="mt-20"> + <div class="btn-box"> + <div> + <el-button type="info" plain> + 鍒跺害鏁帮細{{ listData.total }} + </el-button> + </div> + <div> + <el-button type="info" plain icon="Download"> + 涓嬭浇 + </el-button> + <el-button type="primary" plain icon="Star"> + 鍔犲叧娉� + </el-button> + </div> + </div> + <el-table + class="mt-20" + stripe + :data="listData.data" + style="width: 100%" + ref="multipleTable" + @selection-change="handleSelectionChange" + fit + border + > + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="鍒跺害鍚嶇О"> + <template #default>涓崕浜烘皯鍏卞拰鍥芥斂搴滈噰璐硶</template> + </el-table-column> + <el-table-column label="鍒跺害鍒嗙被" width="100"> + <template #default>鏀垮簻閲囪喘鍒跺害</template> + </el-table-column> + <el-table-column label="鏂囧彿" width="70"> + <template #default> </template> + </el-table-column> + <el-table-column label="棰佸竷鏃ユ湡" width="80"> + <template #default>2022.5.9</template> + </el-table-column> + <el-table-column + label="鎿嶄綔" + width="240" + fixed="right" + align="center" + > + <template #default> + <el-button type="info" plain> + 鏌ョ湅 + </el-button> + <el-button type="info" plain> + 涓嬭浇 + </el-button> + <el-button type="primary" plain icon="Star"> </el-button> + </template> + </el-table-column> + </el-table> + + <MinPagination + class="mt-20" + v-model="searchInfo.pageIndex" + :pageCount="listData.pageCount" + @onChange="getList" + /> + </el-card> + </div> + </div> + </div> </template> <script> -import { onMounted, reactive, toRefs } from 'vue'; - +import { onMounted, reactive, toRefs, watch, ref } from 'vue'; // import { ElMessage, ElMessageBox } from 'element-plus'; export default { setup() { - const data = reactive({}); - onMounted(() => {}); + const data = reactive({ + defaultProps: { + children: 'children', + label: 'name', + value: 'id' + }, + searchInfo: { + type: '鍏ㄩ儴', + type1: null, + keywords: '', + pageIndex: 1, + date: '' + }, + filterText: '', + treeData: [], + listData: { + pageCount: 0, + total: 0, + data: [] + }, + multipleSelection: [] + }); + const tree = ref(null); + watch( + () => data.filterText, + val => { + tree.value.filter(val); + } + ); + const filterNode = (value, data) => { + if (!value) return true; + return data.name.indexOf(value) !== -1; + }; + const handleNodeClick = (data, node) => { + console.log(data, node); + }; + + const handleSelectionChange = val => { + data.multipleSelection = val; + }; + + const getList = () => { + data.listData.pageCount = 5; + data.listData.total = 121; + data.listData.data = []; + // todo: get list data + for (let index = 0; index < 5; index++) { + data.listData.data.push({ + title: '娌储搴撱€�2020銆�54鍙� 鍏充簬缂栧埗鏈競2020骞村害璐㈠姟閮ㄩ棬鍐崇畻鐨勫彿鐭�', + content: '鍒跺害鍐呭鍒跺害瑙勫垝鍐呭', + date: '2020-01-01' + }); + } + }; + + const onSearch = () => { + getList(); + }; + + onMounted(() => { + data.treeData = [ + { + id: 1, + name: '鏀垮簻浼氳鍑嗗垯鍒跺害', + children: [ + { id: 2, name: '浼氳鍒跺害+琛ュ厖瑙勫畾' }, + { id: 3, name: '鍩烘湰鎸囧紩' }, + { id: 4, name: '鍩烘湰鍑嗗垯' } + ] + }, + + { + id: 5, + name: '璐㈠姟棰勭畻绠$悊鍒跺害' + } + ]; + getList(); + }); return { - ...toRefs(data) + ...toRefs(data), + tree, + filterNode, + handleNodeClick, + onSearch, + getList, + handleSelectionChange }; } }; </script> -<style></style> +<style lang="scss" scoped> +.app-container { + .app-content { + display: flex; + .tree-card { + width: 260px; + .custom-tree-node { + font-size: 14px; + } + } + .right-box { + width: calc(100% - 260px); + padding-left: 20px; + .search-card { + ::v-deep(.el-card__body) { + padding-bottom: 0; + } + } + .btn-box { + display: flex; + justify-content: space-between; + } + } + } +} +</style> diff --git a/WebSite/src/views/policy-system-library/system-management.vue b/WebSite/src/views/policy-system-library/system-management.vue index 068ba3cf52e0d29a19f73fe57b4a2c1a9aac62b9..a211f7c33b5dc07de29109d6919d7961337c8ba4 100644 --- a/WebSite/src/views/policy-system-library/system-management.vue +++ b/WebSite/src/views/policy-system-library/system-management.vue @@ -1,27 +1,34 @@ <template> <div class="app-container"> - <el-card class="tree-card"> - <el-input - placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" - v-model="filterText" - clearable - /> - <el-divider></el-divider> - <el-tree - class="filter-tree mt-20" - :data="treeData" - :props="defaultProps" - default-expand-all - highlight-current - @node-click="handleNodeClick" - :expand-on-click-node="false" - :filter-node-method="filterNode" - ref="tree" - > - <template #default="{ node }"> - <span class="custom-tree-node"> - <span>{{ node.label }}</span> - <!-- <span> + <Crumbs + :routeList="['鏀跨瓥鍒跺害搴�', '鍒跺害搴撶鐞�']" + showroute + showback + back-to-my-home + /> + <div class="app-content"> + <el-card class="tree-card"> + <el-input + placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" + v-model="filterText" + clearable + /> + <el-divider></el-divider> + <el-tree + class="filter-tree mt-20" + :data="treeData" + :props="defaultProps" + default-expand-all + highlight-current + @node-click="handleNodeClick" + :expand-on-click-node="false" + :filter-node-method="filterNode" + ref="tree" + > + <template #default="{ node }"> + <span class="custom-tree-node"> + <span>{{ node.label }}</span> + <!-- <span> <el-button type="text" size="mini" @@ -30,180 +37,221 @@ 缂栬緫 </el-button> </span> --> - </span> - </template> - </el-tree> - </el-card> - <div class="right-box"> - <el-card> - <el-form label-width="70px" label-position="left"> - <el-row :gutter="30"> - <el-col :span="7"> - <el-form-item label="鍏抽敭瀛�"> - <el-input - v-model="searchInfo.keywords" - placeholder="璇疯緭鍏ュ悕绉�/鍏抽敭瀛楁ā绯婃煡璇�" - clearable - /> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="鏂囧彿"> - <el-input - v-model="searchInfo.keywords" - placeholder="璇疯緭鍏ユ枃鍙锋ā绯婃煡璇�" - clearable - /> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="鍒嗙被"> - <el-input - v-model="searchInfo.keywords" - placeholder="璇疯緭鍏ユ枃鍙锋ā绯婃煡璇�" - clearable - /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="30"> - <el-col :span="7"> - <el-form-item label="棰佸竷鏃ユ湡"> - <el-date-picker - style="width: 100%" - v-model="searchInfo.date" - type="daterange" - range-separator="鑷�" - start-placeholder="寮€濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" - /> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="瀹℃牳鐘舵€�"> - <el-select> - <el-option label="" /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="涓婁紶浜�"> - <el-input - v-model="searchInfo.keywords" - placeholder="璇疯緭鍏ユ枃鍙锋ā绯婃煡璇�" - clearable - /> - </el-form-item> - </el-col> - <el-col :span="3"> - <el-button - type="primary" - @click="onSearch" - plain - icon="el-icon-search" - > - 鏌ヨ - </el-button> - </el-col> - </el-row> - </el-form> - <div> - <el-button type="info" plain> - 鍒跺害鏁帮細{{ listData.total }} - </el-button> - <el-button type="primary" plain icon="el-icon-plus"> - 鏂板鍒跺害鏂囦欢 - </el-button> - </div> + </span> + </template> + </el-tree> </el-card> - <el-card class="mt-20"> - <el-table - stripe - :data="listData.data" - style="width: 100%" - ref="multipleTable" - @selection-change="handleSelectionChange" - fit - border - > - <el-table-column type="selection" width="55" align="center" /> - <el-table-column label="鏂囨。缂栧彿" width="100"> - <template #default> A1-001-2001-1111</template> - </el-table-column> - <el-table-column label="鍒跺害鍚嶇О"> - <template #default>涓崕浜烘皯鍏卞拰鍥芥斂搴滈噰璐硶</template> - </el-table-column> - <el-table-column label="鍒跺害鍒嗙被" width="100"> - <template #default>鏀垮簻閲囪喘鍒跺害</template> - </el-table-column> - <el-table-column label="鏂囧彿" width="70"> - <template #default> </template> - </el-table-column> - <el-table-column label="棰佸竷鏃ユ湡" width="80"> - <template #default>2022.5.9</template> - </el-table-column> - <el-table-column label="涓婁紶鏃ユ湡" width="80"> - <template #default>2022.5.10</template> - </el-table-column> - <el-table-column label="涓婁紶浜�" width="80"> - <template #default>寮�**</template> - </el-table-column> - <el-table-column label="鏂囦欢鐘舵€�" width="80"> - <template #default>鏈彂甯�</template> - </el-table-column> - <el-table-column label="瀹℃牳鐘舵€�" width="80"> - <template #default>寰呭鏍�</template> - </el-table-column> - <el-table-column label="鐗堟湰鍙�" width="80"> - <template #default>V2.0</template> - </el-table-column> - <el-table-column label="鎿嶄綔" width="400"> - <template #default> - <el-button type="primary" plain> - 鏌ョ湅 - </el-button> - <el-button type="primary" plain> - 缂栬緫 + <div class="right-box"> + <el-card class="search-card"> + <el-form label-width="70px" label-position="left"> + <el-row :gutter="30"> + <el-col :span="7"> + <el-form-item label="鍏抽敭瀛�"> + <el-input + v-model="searchInfo.keywords" + placeholder="璇疯緭鍏ュ悕绉�/鍏抽敭瀛楁ā绯婃煡璇�" + clearable + /> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="鏂囧彿"> + <el-input + v-model="searchInfo.no" + placeholder="璇疯緭鍏ユ枃鍙锋ā绯婃煡璇�" + clearable + /> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="鍒嗙被"> + <el-tree-select + v-model="searchInfo.type1" + :data="treeData" + :props="defaultProps" + check-strictly + clearable + style="width:100%" + > + <template #default="{ node }"> + <span class="custom-tree-node"> + <span>{{ node.label }}</span> + <!-- <span> + <el-button + type="text" + size="mini" + @click.stop="() => handleEdit(node, data)" + > + 缂栬緫 + </el-button> + </span> --> + </span> + </template> + </el-tree-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="30"> + <el-col :span="7"> + <el-form-item label="棰佸竷鏃ユ湡"> + <el-date-picker + style="width: 100%" + v-model="searchInfo.date" + type="daterange" + range-separator="鑷�" + start-placeholder="寮€濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + /> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="瀹℃牳鐘舵€�"> + <el-select + v-model="searchInfo.status" + style="width:100%" + clearable + > + <el-option label="鏈彂甯�" value="鏈彂甯�" /> + <el-option label="寰呭鏍�" value="寰呭鏍�" /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="涓婁紶浜�"> + <el-select + v-model="searchInfo.user" + style="width:100%" + clearable + > + <el-option label="寮犱笁" value="寮犱笁" /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="3"> + <el-button type="primary" @click="onSearch" plain icon="Search"> + 鏌ヨ + </el-button> + </el-col> + </el-row> + </el-form> + </el-card> + <el-card class="mt-20"> + <div class="btn-box"> + <div> + <el-button type="info" plain> + 鍒跺害鏁帮細{{ listData.total }} </el-button> - <el-button type="primary" plain> - 鍙戝竷 + <el-button type="primary" plain icon="Plus" @click="toEdit()"> + 鏂板鍒跺害鏂囦欢 </el-button> - <el-button type="primary" plain> + </div> + <div> + <el-button type="info" plain icon="Download"> 涓嬭浇 </el-button> - <el-button type="primary" plain> - 鎿嶄綔璁板綍 + <el-button type="primary" plain icon="Star"> + 鍔犲叧娉� </el-button> - </template> - </el-table-column> - <el-table-column label="澶囨敞" width="80"> - <template #default>鏇存柊</template> - </el-table-column> - </el-table> + </div> + </div> + <el-table + class="mt-20" + stripe + :data="listData.data" + style="width: 100%" + ref="multipleTable" + @selection-change="handleSelectionChange" + fit + border + > + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="鏂囨。缂栧彿" width="100"> + <template #default> A1-001-2001-1111</template> + </el-table-column> + <el-table-column label="鍒跺害鍚嶇О"> + <template #default>涓崕浜烘皯鍏卞拰鍥芥斂搴滈噰璐硶</template> + </el-table-column> + <el-table-column label="鍒跺害鍒嗙被" width="100"> + <template #default>鏀垮簻閲囪喘鍒跺害</template> + </el-table-column> + <el-table-column label="鏂囧彿" width="70"> + <template #default> </template> + </el-table-column> + <el-table-column label="棰佸竷鏃ユ湡" width="80"> + <template #default>2022.5.9</template> + </el-table-column> + <el-table-column label="涓婁紶鏃ユ湡" width="80"> + <template #default>2022.5.10</template> + </el-table-column> + <el-table-column label="涓婁紶浜�" width="80"> + <template #default>寮�**</template> + </el-table-column> + <el-table-column label="鏂囦欢鐘舵€�" width="80"> + <template #default>鏈彂甯�</template> + </el-table-column> + <el-table-column label="瀹℃牳鐘舵€�" width="80"> + <template #default>寰呭鏍�</template> + </el-table-column> + <el-table-column label="鐗堟湰鍙�" width="80"> + <template #default>V2.0</template> + </el-table-column> + <el-table-column + label="鎿嶄綔" + width="340" + fixed="right" + align="center" + > + <template #default> + <el-button type="primary" plain> + 鏌ョ湅 + </el-button> + <el-button type="primary" plain @click="toEdit(1)"> + 缂栬緫 + </el-button> + <el-button type="primary" plain> + 鍙戝竷 + </el-button> + <el-button type="primary" plain> + 涓嬭浇 + </el-button> + <el-button type="primary" plain> + 鎿嶄綔璁板綍 + </el-button> + </template> + </el-table-column> + <el-table-column label="澶囨敞" width="80"> + <template #default>鏇存柊</template> + </el-table-column> + </el-table> - <MinPagination - class="mt-20" - v-model="searchInfo.pageIndex" - :pageCount="listData.pageCount" - @onChange="getList" - /> - </el-card> + <MinPagination + class="mt-20" + v-model="searchInfo.pageIndex" + :pageCount="listData.pageCount" + @onChange="getList" + /> + </el-card> + </div> </div> </div> </template> <script> import { onMounted, reactive, toRefs, watch, ref } from 'vue'; +import { useRouter } from 'vue-router'; // import { ElMessage, ElMessageBox } from 'element-plus'; export default { setup() { + const router = useRouter(); const data = reactive({ defaultProps: { children: 'children', - label: 'name' + label: 'name', + value: 'id' }, searchInfo: { type: '鍏ㄩ儴', + type1: null, keywords: '', pageIndex: 1, date: '' @@ -257,21 +305,26 @@ export default { onMounted(() => { data.treeData = [ { + id: 1, name: '鏀垮簻浼氳鍑嗗垯鍒跺害', children: [ - { name: '浼氳鍒跺害+琛ュ厖瑙勫畾' }, - { name: '鍩烘湰鎸囧紩' }, - { name: '鍩烘湰鍑嗗垯' } + { id: 2, name: '浼氳鍒跺害+琛ュ厖瑙勫畾' }, + { id: 3, name: '鍩烘湰鎸囧紩' }, + { id: 4, name: '鍩烘湰鍑嗗垯' } ] }, { + id: 5, name: '璐㈠姟棰勭畻绠$悊鍒跺害' } ]; getList(); }); + const toEdit = id => { + router.push({ path: '/policy-edit', query: { id } }); + }; return { ...toRefs(data), tree, @@ -279,7 +332,8 @@ export default { handleNodeClick, onSearch, getList, - handleSelectionChange + handleSelectionChange, + toEdit }; } }; @@ -287,13 +341,27 @@ export default { <style lang="scss" scoped> .app-container { - display: flex; - .tree-card { - width: 260px; - } - .right-box { - width: calc(100% - 260px); - padding-left: 20px; + .app-content { + display: flex; + .tree-card { + width: 260px; + .custom-tree-node { + font-size: 14px; + } + } + .right-box { + width: calc(100% - 260px); + padding-left: 20px; + .search-card { + ::v-deep(.el-card__body) { + padding-bottom: 0; + } + } + .btn-box { + display: flex; + justify-content: space-between; + } + } } } </style>