This commit is contained in:
851673013@qq.com 2022-06-21 17:08:02 +08:00
commit 967f6389c1
50 changed files with 1882 additions and 524 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -5,25 +5,52 @@
<el-dropdown class="aui-content--tabs-tools"> <el-dropdown class="aui-content--tabs-tools">
<i class="el-icon-arrow-down"></i> <i class="el-icon-arrow-down"></i>
<el-dropdown-menu slot="dropdown" :show-timeout="0"> <el-dropdown-menu slot="dropdown" :show-timeout="0">
<el-dropdown-item @click.native="tabRemoveHandle($store.state.contentTabsActiveName)">{{ $t('contentTabs.closeCurrent') }}</el-dropdown-item> <el-dropdown-item
<el-dropdown-item @click.native="tabsCloseOtherHandle()">{{ $t('contentTabs.closeOther') }}</el-dropdown-item> @click.native="tabRemoveHandle($store.state.contentTabsActiveName)"
<el-dropdown-item @click.native="tabsCloseAllHandle()">{{ $t('contentTabs.closeAll') }}</el-dropdown-item> >{{ $t("contentTabs.closeCurrent") }}</el-dropdown-item
>
<el-dropdown-item @click.native="tabsCloseOtherHandle()">{{
$t("contentTabs.closeOther")
}}</el-dropdown-item>
<el-dropdown-item @click.native="tabsCloseAllHandle()">{{
$t("contentTabs.closeAll")
}}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-tabs v-model="$store.state.contentTabsActiveName" @tab-click="tabSelectedHandle" @tab-remove="tabRemoveHandle"> <el-tabs
v-model="$store.state.contentTabsActiveName"
@tab-click="tabSelectedHandle"
@tab-remove="tabRemoveHandle"
>
<el-tab-pane <el-tab-pane
v-for="item in $store.state.contentTabs" v-for="item in $store.state.contentTabs"
:key="item.name" :key="item.name"
:name="item.name" :name="item.name"
:label="item.title" :label="item.title"
:closable="item.name !== 'home'" :closable="item.name !== 'home'"
:class="{ 'is-iframe': tabIsIframe(item.iframeURL) }"> :class="{ 'is-iframe': tabIsIframe(item.iframeURL) }"
>
<template v-if="item.name === 'home'"> <template v-if="item.name === 'home'">
<svg slot="label" class="icon-svg aui-content--tabs-icon-nav" aria-hidden="true"><use xlink:href="#icon-home"></use></svg> <svg
slot="label"
class="icon-svg aui-content--tabs-icon-nav"
aria-hidden="true"
>
<use xlink:href="#icon-home"></use>
</svg>
</template> </template>
<iframe v-if="tabIsIframe(item.iframeURL)" :src="item.iframeURL" width="100%" height="100%" frameborder="0" scrolling="yes"></iframe> <iframe
v-if="tabIsIframe(item.iframeURL)"
:src="item.iframeURL"
width="100%"
height="100%"
frameborder="0"
scrolling="yes"
></iframe>
<keep-alive v-else> <keep-alive v-else>
<router-view v-if="item.name === $store.state.contentTabsActiveName" /> <router-view
v-if="item.name === $store.state.contentTabsActiveName"
/>
</keep-alive> </keep-alive>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
@ -38,59 +65,91 @@
</template> </template>
<script> <script>
import { isURL } from '@/utils/validate' import { isURL } from "@/utils/validate";
export default { export default {
data () { data() {
return { return {};
}
}, },
methods: { methods: {
// tabs, iframe // tabs, iframe
tabIsIframe (url) { tabIsIframe(url) {
return isURL(url) return isURL(url);
}, },
// tabs, tab // tabs, tab
tabSelectedHandle (tab) { tabSelectedHandle(tab) {
tab = this.$store.state.contentTabs.filter(item => item.name === tab.name)[0] tab = this.$store.state.contentTabs.filter(
(item) => item.name === tab.name
)[0];
if (tab) { if (tab) {
this.$router.push({ this.$router.push({
'name': /^iframe_.+/.test(tab.name) ? 'iframe' : tab.name, name: /^iframe_.+/.test(tab.name) ? "iframe" : tab.name,
'params': { ...tab.params }, params: { ...tab.params },
'query': { ...tab.query } query: { ...tab.query },
}) });
} }
}, },
// tabs, tab // tabs, tab
tabRemoveHandle (tabName) { tabRemoveHandle(tabName) {
if (tabName === 'home') { if (tabName === "home") {
return false return false;
} }
this.$store.state.contentTabs = this.$store.state.contentTabs.filter(item => item.name !== tabName) this.$store.state.contentTabs = this.$store.state.contentTabs.filter(
(item) => item.name !== tabName
);
if (this.$store.state.contentTabs.length <= 0) { if (this.$store.state.contentTabs.length <= 0) {
this.$store.state.sidebarMenuActiveName = this.$store.state.contentTabsActiveName = 'home' this.$store.state.sidebarMenuActiveName =
return false this.$store.state.contentTabsActiveName = "home";
return false;
} }
// tab // tab
if (tabName === this.$store.state.contentTabsActiveName) { if (tabName === this.$store.state.contentTabsActiveName) {
let tab = this.$store.state.contentTabs[this.$store.state.contentTabs.length - 1] let tab =
this.$store.state.contentTabs[
this.$store.state.contentTabs.length - 1
];
this.$router.push({ this.$router.push({
name: /^iframe_.+/.test(tab.name) ? 'iframe' : tab.name, name: /^iframe_.+/.test(tab.name) ? "iframe" : tab.name,
params: { ...tab.params }, params: { ...tab.params },
query: { ...tab.query } query: { ...tab.query },
}) });
} }
}, },
// tabs, // tabs,
tabsCloseOtherHandle () { tabsCloseOtherHandle() {
this.$store.state.contentTabs = this.$store.state.contentTabs.filter(item => { this.$store.state.contentTabs = this.$store.state.contentTabs.filter(
return item.name === 'home' || item.name === this.$store.state.contentTabsActiveName (item) => {
}) return (
item.name === "home" ||
item.name === this.$store.state.contentTabsActiveName
);
}
);
}, },
// tabs, // tabs,
tabsCloseAllHandle () { tabsCloseAllHandle() {
this.$store.state.contentTabs = this.$store.state.contentTabs.filter(item => item.name === 'home') this.$store.state.contentTabs = this.$store.state.contentTabs.filter(
this.$router.push({ name: 'home' }) (item) => item.name === "home"
);
this.$router.push({ name: "home" });
},
},
};
</script>
<style scoped lang="scss">
.aui-content {
.el-tabs {
::v-deep .el-tabs__header {
left: 266px;
.el-tabs__nav-wrap {
.el-tabs__nav-scroll {
.el-tabs__nav {
.el-tabs__item ::after {
background-color: #0058e1;
}
}
}
}
} }
} }
} }
</script> </style>

View File

@ -117,6 +117,11 @@ export default {
font-weight: bold; font-weight: bold;
} }
.el-menu-item { .el-menu-item {
&.is-active {
color: #ffffff;
background-color: #0058e1;
border: none;
}
a { a {
display: block; display: block;
color: inherit; color: inherit;
@ -126,10 +131,5 @@ export default {
font-size: 16px; font-size: 16px;
} }
} }
.is-active {
color: #ffffff;
background-color: #0058e1;
border: none;
}
} }
</style> </style>

View File

@ -1,30 +1,56 @@
<!--
* @Author: kongjun qdkongjun@gmail.com
* @Date: 2022-06-20 09:29:59
* @LastEditors: kongjun qdkongjun@gmail.com
* @LastEditTime: 2022-06-21 10:37:47
* @FilePath: \back\src\views\main-sidebar.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template> <template>
<aside :class="['aui-sidebar', `aui-sidebar--${$store.state.sidebarLayoutSkin}`]"> <aside
:class="['aui-sidebar', `aui-sidebar--${$store.state.sidebarLayoutSkin}`]"
>
<div class="aui-sidebar__inner"> <div class="aui-sidebar__inner">
<el-menu <el-menu
:default-active="$store.state.sidebarMenuActiveName" :default-active="$store.state.sidebarMenuActiveName"
:collapse="$store.state.sidebarFold" :collapse="$store.state.sidebarFold"
:unique-opened="true" :unique-opened="true"
:collapseTransition="false" :collapseTransition="false"
class="aui-sidebar__menu"> class="aui-sidebar__menu"
<sub-menu v-for="menu in $store.state.sidebarMenuList" :key="menu.id" :menu="menu" /> >
<sub-menu
v-for="menu in $store.state.sidebarMenuList"
:key="menu.id"
:menu="menu"
/>
</el-menu> </el-menu>
</div> </div>
</aside> </aside>
</template> </template>
<script> <script>
import SubMenu from './main-sidebar-sub-menu' import SubMenu from "./main-sidebar-sub-menu";
export default { export default {
data () { data() {
return { return {};
}
}, },
components: { components: {
SubMenu SubMenu,
}, },
created () { created() {
this.$store.state.sidebarMenuList = window.SITE_CONFIG['menuList'] this.$store.state.sidebarMenuList = window.SITE_CONFIG["menuList"];
},
};
</script>
<style scoped lang="scss">
.aui-sidebar {
width: 266px;
.aui-sidebar__inner {
width: 260px;
overflow-y: hidden;
.aui-sidebar__menu {
width: 266px;
}
} }
} }
</script> </style>

View File

@ -1,3 +1,11 @@
<!--
* @Author: kongjun qdkongjun@gmail.com
* @Date: 2022-06-20 09:29:59
* @LastEditors: kongjun qdkongjun@gmail.com
* @LastEditTime: 2022-06-21 11:36:51
* @FilePath: \back\src\views\main-theme-tools.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template> <template>
<div class="aui-theme-tools" :class="{ 'aui-theme-tools--open': isOpen }"> <div class="aui-theme-tools" :class="{ 'aui-theme-tools--open': isOpen }">
<div class="aui-theme-tools__toggle" @click="isOpen = !isOpen"> <div class="aui-theme-tools__toggle" @click="isOpen = !isOpen">
@ -41,9 +49,12 @@ export default {
return { return {
isOpen: false, isOpen: false,
themeList: require("@/element-ui/config.js"), themeList: require("@/element-ui/config.js"),
themeColor: "turquoise", themeColor: "blue",
}; };
}, },
mounted() {
this.themeColorChangeHandle("blue");
},
methods: { methods: {
themeColorChangeHandle(val) { themeColorChangeHandle(val) {
var styleList = [ var styleList = [

View File

@ -1,5 +1,9 @@
<template> <template>
<div v-loading.fullscreen.lock="loading" :element-loading-text="$t('loading')" :class="['aui-wrapper', { 'aui-sidebar--fold': $store.state.sidebarFold }]"> <div
v-loading.fullscreen.lock="loading"
:element-loading-text="$t('loading')"
:class="['aui-wrapper', { 'aui-sidebar--fold': $store.state.sidebarFold }]"
>
<template v-if="!loading"> <template v-if="!loading">
<main-navbar /> <main-navbar />
<main-sidebar /> <main-sidebar />
@ -12,109 +16,128 @@
</template> </template>
<script> <script>
import MainNavbar from './main-navbar' import MainNavbar from "./main-navbar";
import MainSidebar from './main-sidebar' import MainSidebar from "./main-sidebar";
import MainContent from './main-content' import MainContent from "./main-content";
import MainThemeTools from './main-theme-tools' import MainThemeTools from "./main-theme-tools";
import debounce from 'lodash/debounce' import debounce from "lodash/debounce";
import { isURL } from '@/utils/validate' import { isURL } from "@/utils/validate";
export default { export default {
provide () { provide() {
return { return {
// //
refresh () { refresh() {
this.$store.state.contentIsNeedRefresh = true this.$store.state.contentIsNeedRefresh = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$store.state.contentIsNeedRefresh = false this.$store.state.contentIsNeedRefresh = false;
}) });
}
}
}, },
data () { };
},
data() {
return { return {
loading: true loading: true,
} };
}, },
components: { components: {
MainNavbar, MainNavbar,
MainSidebar, MainSidebar,
MainContent, MainContent,
MainThemeTools MainThemeTools,
}, },
watch: { watch: {
$route: 'routeHandle' $route: "routeHandle",
}, },
created () { created() {
this.windowResizeHandle() this.windowResizeHandle();
this.routeHandle(this.$route) this.routeHandle(this.$route);
Promise.all([ Promise.all([this.getUserInfo(), this.getPermissions()]).then(() => {
this.getUserInfo(), this.loading = false;
this.getPermissions() });
]).then(() => {
this.loading = false
})
}, },
methods: { methods: {
// //
windowResizeHandle () { windowResizeHandle() {
this.$store.state.sidebarFold = document.documentElement['clientWidth'] <= 992 || false this.$store.state.sidebarFold =
window.addEventListener('resize', debounce(() => { document.documentElement["clientWidth"] <= 992 || false;
this.$store.state.sidebarFold = document.documentElement['clientWidth'] <= 992 || false window.addEventListener(
}, 150)) "resize",
debounce(() => {
this.$store.state.sidebarFold =
document.documentElement["clientWidth"] <= 992 || false;
}, 150)
);
}, },
// , // ,
routeHandle (route) { routeHandle(route) {
if (!route.meta.isTab) { if (!route.meta.isTab) {
return false return false;
} }
let tab = {} let tab = {};
let routeName = route.name let routeName = route.name;
let routeMeta = route.meta let routeMeta = route.meta;
if (route.name === 'iframe') { if (route.name === "iframe") {
let url = route.query.url || '' let url = route.query.url || "";
if (!isURL(url)) { if (!isURL(url)) {
return false return false;
} }
let key = route.query.key || new Date().getTime() let key = route.query.key || new Date().getTime();
routeName = `${routeName}_${key}` routeName = `${routeName}_${key}`;
routeMeta.title = key.toString() routeMeta.title = key.toString();
routeMeta.menuId = route.query.menuId || '' routeMeta.menuId = route.query.menuId || "";
routeMeta.iframeURL = url routeMeta.iframeURL = url;
} }
tab = this.$store.state.contentTabs.filter(item => item.name === routeName)[0] tab = this.$store.state.contentTabs.filter(
(item) => item.name === routeName
)[0];
if (!tab) { if (!tab) {
tab = { tab = {
...window.SITE_CONFIG['contentTabDefault'], ...window.SITE_CONFIG["contentTabDefault"],
...routeMeta, ...routeMeta,
'name': routeName, name: routeName,
'params': { ...route.params }, params: { ...route.params },
'query': { ...route.query } query: { ...route.query },
};
this.$store.state.contentTabs =
this.$store.state.contentTabs.concat(tab);
} }
this.$store.state.contentTabs = this.$store.state.contentTabs.concat(tab) this.$store.state.sidebarMenuActiveName = tab.menuId;
} this.$store.state.contentTabsActiveName = tab.name;
this.$store.state.sidebarMenuActiveName = tab.menuId
this.$store.state.contentTabsActiveName = tab.name
}, },
// //
getUserInfo () { getUserInfo() {
return this.$http.get('/sys/user/info').then(({ data: res }) => { return this.$http
.get("/sys/user/info")
.then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg) return this.$message.error(res.msg);
} }
this.$store.state.user.id = res.data.id this.$store.state.user.id = res.data.id;
this.$store.state.user.name = res.data.username this.$store.state.user.name = res.data.username;
this.$store.state.user.superAdmin = res.data.superAdmin this.$store.state.user.superAdmin = res.data.superAdmin;
}).catch(() => {}) })
.catch(() => {});
}, },
// //
getPermissions () { getPermissions() {
return this.$http.get('/sys/menu/permissions').then(({ data: res }) => { return this.$http
.get("/sys/menu/permissions")
.then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg) return this.$message.error(res.msg);
}
window.SITE_CONFIG['permissions'] = res.data
}).catch(() => {})
} }
window.SITE_CONFIG["permissions"] = res.data;
})
.catch(() => {});
},
},
};
</script>
<style scoped lang="scss">
.aui-content__wrapper {
margin-left: 266px;
.aui-content > .el-tabs > .el-tabs__header {
left: 230px;
} }
} }
</script> </style>

View File

@ -1,78 +1,117 @@
<template> <template>
<el-dialog :visible.sync="visible" :title="!dataForm.id ? $t('add') : $t('update')" :close-on-click-modal="false" :close-on-press-escape="false"> <el-dialog
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="120px"> :visible.sync="visible"
:title="!dataForm.id ? $t('add') : $t('update')"
:close-on-click-modal="false"
:close-on-press-escape="false"
>
<el-form
:model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
label-width="120px"
>
<el-form-item prop="name" :label="$t('model.name')"> <el-form-item prop="name" :label="$t('model.name')">
<el-input v-model="dataForm.name" :placeholder="$t('model.name')"></el-input> <el-input
v-model="dataForm.name"
:placeholder="$t('model.name')"
></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="key" :label="$t('model.key')"> <el-form-item prop="key" :label="$t('model.key')">
<el-input v-model="dataForm.key" :placeholder="$t('model.key')"></el-input> <el-input
v-model="dataForm.key"
:placeholder="$t('model.key')"
></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="description" :label="$t('model.description')"> <el-form-item prop="description" :label="$t('model.description')">
<el-input v-model="dataForm.description" :placeholder="$t('model.description')"></el-input> <el-input
v-model="dataForm.description"
:placeholder="$t('model.description')"
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template slot="footer"> <template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button> <el-button @click="visible = false">{{ $t("cancel") }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> <el-button type="primary" @click="dataFormSubmitHandle()">{{
$t("confirm")
}}</el-button>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import debounce from 'lodash/debounce' import debounce from "lodash/debounce";
export default { export default {
data () { data() {
return { return {
visible: false, visible: false,
dataForm: { dataForm: {
id: '', id: "",
name: '', name: "",
key: '', key: "",
description: '' description: "",
} },
} };
}, },
computed: { computed: {
dataRule () { dataRule() {
return { return {
name: [ name: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } {
required: true,
message: this.$t("validate.required"),
trigger: "blur",
},
], ],
key: [ key: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } {
] required: true,
} message: this.$t("validate.required"),
} trigger: "blur",
},
],
};
},
}, },
methods: { methods: {
init () { init() {
this.visible = true this.visible = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs['dataForm'].resetFields() this.$refs["dataForm"].resetFields();
}) });
}, },
// //
dataFormSubmitHandle: debounce(function () { dataFormSubmitHandle: debounce(
this.$refs['dataForm'].validate((valid) => { function () {
this.$refs["dataForm"].validate((valid) => {
if (!valid) { if (!valid) {
return false return false;
} }
this.$http[!this.dataForm.id ? 'post' : 'put']('/act/model', this.dataForm).then(({ data: res }) => { this.$http[!this.dataForm.id ? "post" : "put"](
"/act/model",
this.dataForm
)
.then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg) return this.$message.error(res.msg);
} }
this.$message({ this.$message({
message: this.$t('prompt.success'), message: this.$t("prompt.success"),
type: 'success', type: "success",
duration: 500, duration: 500,
onClose: () => { onClose: () => {
this.visible = false this.visible = false;
this.$emit('refreshDataList') this.$emit("refreshDataList");
} },
});
}) })
}).catch(() => {}) .catch(() => {});
}) });
}, 1000, { 'leading': true, 'trailing': false }) },
} 1000,
} { leading: true, trailing: false }
),
},
};
</script> </script>

View File

@ -1,21 +1,39 @@
<template> <template>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
<div class="mod-activiti__model"> <div class="mod-activiti__model">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form
:inline="true"
:model="dataForm"
@keyup.enter.native="getDataList()"
>
<el-form-item> <el-form-item>
<el-input v-model="dataForm.name" :placeholder="$t('model.name')" clearable></el-input> <el-input
v-model="dataForm.name"
:placeholder="$t('model.name')"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-input v-model="dataForm.key" :placeholder="$t('model.key')" clearable></el-input> <el-input
v-model="dataForm.key"
:placeholder="$t('model.key')"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button> <el-button type="primary" @click="getDataList()">{{
$t("query")
}}</el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button> <el-button type="primary" @click="addOrUpdateHandle()">{{
$t("add")
}}</el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button> <el-button type="danger" @click="deleteHandle()">{{
$t("deleteBatch")
}}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table
@ -24,19 +42,78 @@
border border
@selection-change="dataListSelectionChangeHandle" @selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle" @sort-change="dataListSortChangeHandle"
style="width: 100%;"> style="width: 100%"
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> >
<el-table-column prop="name" :label="$t('model.name')" header-align="center" align="center"></el-table-column> <el-table-column
<el-table-column prop="key" :label="$t('model.key')" header-align="center" align="center"></el-table-column> type="selection"
<el-table-column prop="version" :label="$t('model.version')" header-align="center" align="center"></el-table-column> header-align="center"
<el-table-column prop="createTime" :label="$t('model.createTime')" header-align="center" align="center" width="180"></el-table-column> align="center"
<el-table-column prop="lastUpdateTime" :label="$t('model.lastUpdateTime')" header-align="center" align="center" width="180"></el-table-column> width="50"
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150"> ></el-table-column>
<el-table-column
prop="name"
:label="$t('model.name')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="key"
:label="$t('model.key')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="version"
:label="$t('model.version')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="createTime"
:label="$t('model.createTime')"
header-align="center"
align="center"
width="180"
></el-table-column>
<el-table-column
prop="lastUpdateTime"
:label="$t('model.lastUpdateTime')"
header-align="center"
align="center"
width="180"
></el-table-column>
<el-table-column
:label="$t('handle')"
fixed="right"
header-align="center"
align="center"
width="150"
>
<template slot-scope="scope"> <template slot-scope="scope">
<a :href="getModelerURL(scope.row.id)" target="_blank" class="el-button el-button--text el-button--small">{{ $t('model.design') }}</a> <a
<el-button type="text" size="small" @click="deployHandle(scope.row.id)">{{ $t('model.deploy') }}</el-button> :href="getModelerURL(scope.row.id)"
<a :href="getExportURL(scope.row.id)" target="_blank" class="el-button el-button--text el-button--small">{{ $t('export') }}</a> target="_blank"
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button> class="el-button el-button--text el-button--small"
>{{ $t("model.design") }}</a
>
<el-button
type="text"
size="small"
@click="deployHandle(scope.row.id)"
>{{ $t("model.deploy") }}</el-button
>
<a
:href="getExportURL(scope.row.id)"
target="_blank"
class="el-button el-button--text el-button--small"
>{{ $t("export") }}</a
>
<el-button
type="text"
size="small"
@click="deleteHandle(scope.row.id)"
>{{ $t("delete") }}</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -47,76 +124,90 @@
:total="total" :total="total"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle" @size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"> @current-change="pageCurrentChangeHandle"
>
</el-pagination> </el-pagination>
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> <add-or-update
v-if="addOrUpdateVisible"
ref="addOrUpdate"
@refreshDataList="getDataList"
></add-or-update>
</div> </div>
</el-card> </el-card>
</template> </template>
<script> <script>
import mixinViewModule from '@/mixins/view-module' import mixinViewModule from "@/mixins/view-module";
import AddOrUpdate from './model-add-or-update' import AddOrUpdate from "./model-add-or-update";
import Cookies from 'js-cookie' import Cookies from "js-cookie";
import qs from 'qs' import qs from "qs";
export default { export default {
mixins: [mixinViewModule], mixins: [mixinViewModule],
data () { data() {
return { return {
mixinViewModuleOptions: { mixinViewModuleOptions: {
getDataListURL: '/act/model/page', getDataListURL: "/act/model/page",
getDataListIsPage: true, getDataListIsPage: true,
deleteURL: '/act/model', deleteURL: "/act/model",
deleteIsBatch: true deleteIsBatch: true,
}, },
dataForm: { dataForm: {
name: '', name: "",
key: '' key: "",
} },
} };
}, },
components: { components: {
AddOrUpdate AddOrUpdate,
}, },
methods: { methods: {
// 线url // 线url
getModelerURL (id) { getModelerURL(id) {
var params = qs.stringify({ var params = qs.stringify({
'token': Cookies.get('ucsToken'), token: Cookies.get("ucsToken"),
'modelId': id modelId: id,
}) });
return `${window.SITE_CONFIG['apiURL']}/modeler.html?${params}` return `${window.SITE_CONFIG["apiURL"]}/modeler.html?${params}`;
}, },
// url // url
getExportURL (id) { getExportURL(id) {
var params = qs.stringify({ var params = qs.stringify({
'token': Cookies.get('ucsToken') token: Cookies.get("ucsToken"),
}) });
return `${window.SITE_CONFIG['apiURL']}/act/model/export/${id}?${params}` return `${window.SITE_CONFIG["apiURL"]}/act/model/export/${id}?${params}`;
}, },
// //
deployHandle (id) { deployHandle(id) {
this.$confirm(this.$t('prompt.info', { 'handle': this.$t('model.deploy') }), this.$t('prompt.title'), { this.$confirm(
confirmButtonText: this.$t('confirm'), this.$t("prompt.info", { handle: this.$t("model.deploy") }),
cancelButtonText: this.$t('cancel'), this.$t("prompt.title"),
type: 'warning' {
}).then(() => { confirmButtonText: this.$t("confirm"),
this.$http.post(`/act/model/deploy/${id}`).then(({ data: res }) => { cancelButtonText: this.$t("cancel"),
type: "warning",
}
)
.then(() => {
this.$http
.post(`/act/model/deploy/${id}`)
.then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg) return this.$message.error(res.msg);
} }
this.$message({ this.$message({
message: this.$t('prompt.success'), message: this.$t("prompt.success"),
type: 'success', type: "success",
duration: 500, duration: 500,
onClose: () => { onClose: () => {
this.getDataList() this.getDataList();
} },
});
}) })
}).catch(() => {}) .catch(() => {});
}).catch(() => {}) })
} .catch(() => {});
} },
} },
};
</script> </script>

View File

@ -1,12 +1,22 @@
<template> <template>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
<div class="mod-activiti__process"> <div class="mod-activiti__process">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form
:inline="true"
:model="dataForm"
@keyup.enter.native="getDataList()"
>
<el-form-item> <el-form-item>
<el-input v-model="dataForm.processDefinitionName" :placeholder="$t('process.name')" clearable></el-input> <el-input
v-model="dataForm.processDefinitionName"
:placeholder="$t('process.name')"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button> <el-button type="primary" @click="getDataList()">{{
$t("query")
}}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table
@ -15,25 +25,86 @@
border border
@selection-change="dataListSelectionChangeHandle" @selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle" @sort-change="dataListSortChangeHandle"
style="width: 100%;"> style="width: 100%"
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> >
<el-table-column prop="businessKey" :label="$t('process.businessKey')" header-align="center" align="center"></el-table-column> <el-table-column
<el-table-column prop="processInstanceId" :label="$t('running.id')" header-align="center" align="center"></el-table-column> type="selection"
<el-table-column prop="processDefinitionName" :label="$t('process.processDefinitionName')" header-align="center" align="center"></el-table-column> header-align="center"
<el-table-column prop="startTime" :label="$t('process.startTime')" header-align="center" align="center"></el-table-column> align="center"
<el-table-column prop="ended" :label="$t('process.ended')" header-align="center" align="center"> width="50"
></el-table-column>
<el-table-column
prop="businessKey"
:label="$t('process.businessKey')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="processInstanceId"
:label="$t('running.id')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="processDefinitionName"
:label="$t('process.processDefinitionName')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="startTime"
:label="$t('process.startTime')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="ended"
:label="$t('process.ended')"
header-align="center"
align="center"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.ended" size="small" type="success">{{ $t('process.ended0') }}</el-tag> <el-tag v-if="scope.row.ended" size="small" type="success">{{
<el-tag v-else size="small" type="danger">{{ $t('process.ended1') }}</el-tag> $t("process.ended0")
}}</el-tag>
<el-tag v-else size="small" type="danger">{{
$t("process.ended1")
}}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="currentTaskList[0].taskName" :label="$t('process.taskName')" header-align="center" align="center"></el-table-column> <el-table-column
prop="currentTaskList[0].taskName"
:label="$t('process.taskName')"
header-align="center"
align="center"
></el-table-column>
<!-- <el-table-column prop="currentTaskList[0].createTime" :label="$t('process.createTime')" header-align="center" align="center"></el-table-column> --> <!-- <el-table-column prop="currentTaskList[0].createTime" :label="$t('process.createTime')" header-align="center" align="center"></el-table-column> -->
<el-table-column prop="startTime" :label="$t('process.createTime')" header-align="center" align="center"></el-table-column> <el-table-column
<el-table-column prop="currentTaskList[0].assigneeName" :label="$t('process.assignee')" header-align="center" align="center"></el-table-column> prop="startTime"
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150"> :label="$t('process.createTime')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="currentTaskList[0].assigneeName"
:label="$t('process.assignee')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:label="$t('handle')"
fixed="right"
header-align="center"
align="center"
width="150"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="showDetail(scope.row)">{{ $t('process.viewFlowImage') }}</el-button> <el-button
type="text"
size="small"
@click="showDetail(scope.row)"
>{{ $t("process.viewFlowImage") }}</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -44,39 +115,39 @@
:total="total" :total="total"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle" @size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"> @current-change="pageCurrentChangeHandle"
>
</el-pagination> </el-pagination>
</div> </div>
</el-card> </el-card>
</template> </template>
<script> <script>
import mixinViewModule from '@/mixins/view-module' import mixinViewModule from "@/mixins/view-module";
import processModule from '@/mixins/process-module' import processModule from "@/mixins/process-module";
export default { export default {
mixins: [mixinViewModule, processModule], mixins: [mixinViewModule, processModule],
data () { data() {
return { return {
mixinViewModuleOptions: { mixinViewModuleOptions: {
getDataListURL: '/act/his/getMyProcessInstancePage', getDataListURL: "/act/his/getMyProcessInstancePage",
getDataListIsPage: true, getDataListIsPage: true,
deleteIsBatch: true, deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId' deleteIsBatchKey: "deploymentId",
}, },
dataForm: { dataForm: {
processDefinitionName: '' processDefinitionName: "",
}
}
}, },
components: { };
}, },
components: {},
methods: { methods: {
showDetail (row) { showDetail(row) {
if (!row.businessKey) { if (!row.businessKey) {
return this.$message.error(this.$t('task.detailError')) return this.$message.error(this.$t("task.detailError"));
} }
this.getProcDefRouteSet(row, this.forwardDetail) this.getProcDefRouteSet(row, this.forwardDetail);
} },
} },
} };
</script> </script>

View File

@ -1,12 +1,22 @@
<template> <template>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
<div class="mod-activiti__process"> <div class="mod-activiti__process">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form
:inline="true"
:model="dataForm"
@keyup.enter.native="getDataList()"
>
<el-form-item> <el-form-item>
<el-input v-model="dataForm.processDefinitionId" :placeholder="$t('process.name')" clearable></el-input> <el-input
v-model="dataForm.processDefinitionId"
:placeholder="$t('process.name')"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button> <el-button type="primary" @click="getDataList()">{{
$t("query")
}}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table
@ -15,24 +25,72 @@
border border
@selection-change="dataListSelectionChangeHandle" @selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle" @sort-change="dataListSortChangeHandle"
style="width: 100%;"> style="width: 100%"
>
<!-- <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> <!-- <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="businessKey" :label="$t('process.businessKey')" header-align="center" align="center"></el-table-column> --> <el-table-column prop="businessKey" :label="$t('process.businessKey')" header-align="center" align="center"></el-table-column> -->
<el-table-column prop="startUserName" :label="$t('process.user')" header-align="center" align="center"></el-table-column> <el-table-column
prop="startUserName"
:label="$t('process.user')"
header-align="center"
align="center"
></el-table-column>
<!-- <el-table-column :label="$t('process.system')" header-align="center" align="center"> <!-- <el-table-column :label="$t('process.system')" header-align="center" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row && scope.row.resourceName||scope.row.params && scope.row.params.undercarriageReason}}</span> <span>{{scope.row && scope.row.resourceName||scope.row.params && scope.row.params.undercarriageReason}}</span>
</template> </template>
</el-table-column> --> </el-table-column> -->
<el-table-column prop="resourceName" :label="$t('process.system')" header-align="center" align="center"></el-table-column> <el-table-column
<el-table-column prop="processInstanceId" :label="$t('running.id')" header-align="center" align="center"></el-table-column> prop="resourceName"
<el-table-column prop="processDefinitionName" :label="$t('process.processDefinitionName')" header-align="center" align="center"></el-table-column> :label="$t('process.system')"
<el-table-column prop="processDefinitionVersion" :label="$t('process.processDefinitionVersion')" header-align="center" align="center" width="100"></el-table-column> header-align="center"
<el-table-column prop="startTime" :label="$t('process.startTime')" header-align="center" align="center"></el-table-column> align="center"
<el-table-column prop="endTime" :label="$t('process.endTime')" header-align="center" align="center"></el-table-column> ></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150"> <el-table-column
prop="processInstanceId"
:label="$t('running.id')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="processDefinitionName"
:label="$t('process.processDefinitionName')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="processDefinitionVersion"
:label="$t('process.processDefinitionVersion')"
header-align="center"
align="center"
width="100"
></el-table-column>
<el-table-column
prop="startTime"
:label="$t('process.startTime')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="endTime"
:label="$t('process.endTime')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:label="$t('handle')"
fixed="right"
header-align="center"
align="center"
width="150"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="showDetail(scope.row)">{{ $t('process.viewFlowImage') }}</el-button> <el-button
type="text"
size="small"
@click="showDetail(scope.row)"
>{{ $t("process.viewFlowImage") }}</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -43,39 +101,39 @@
:total="total" :total="total"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle" @size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"> @current-change="pageCurrentChangeHandle"
>
</el-pagination> </el-pagination>
</div> </div>
</el-card> </el-card>
</template> </template>
<script> <script>
import mixinViewModule from '@/mixins/view-module' import mixinViewModule from "@/mixins/view-module";
import processModule from '@/mixins/process-module' import processModule from "@/mixins/process-module";
export default { export default {
mixins: [mixinViewModule, processModule], mixins: [mixinViewModule, processModule],
data () { data() {
return { return {
mixinViewModuleOptions: { mixinViewModuleOptions: {
getDataListURL: '/act/his/getMyHandledInstancePage', getDataListURL: "/act/his/getMyHandledInstancePage",
getDataListIsPage: true, getDataListIsPage: true,
deleteIsBatch: true, deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId' deleteIsBatchKey: "deploymentId",
}, },
dataForm: { dataForm: {
processDefinitionId: '' processDefinitionId: "",
}
}
}, },
components: { };
}, },
components: {},
methods: { methods: {
showDetail (row) { showDetail(row) {
if (!row.businessKey) { if (!row.businessKey) {
return this.$message.error(this.$t('task.detailError')) return this.$message.error(this.$t("task.detailError"));
} }
this.getProcDefRouteSet(row, this.forwardDetail) this.getProcDefRouteSet(row, this.forwardDetail);
} },
} },
} };
</script> </script>

View File

@ -1,12 +1,22 @@
<template> <template>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
<div class="mod-activiti__process"> <div class="mod-activiti__process">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form
:inline="true"
:model="dataForm"
@keyup.enter.native="getDataList()"
>
<el-form-item> <el-form-item>
<el-input v-model="dataForm.taskName" :placeholder="$t('process.name')" clearable></el-input> <el-input
v-model="dataForm.taskName"
:placeholder="$t('process.name')"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button> <el-button type="primary" @click="getDataList()">{{
$t("query")
}}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table
@ -15,18 +25,76 @@
border border
@selection-change="dataListSelectionChangeHandle" @selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle" @sort-change="dataListSortChangeHandle"
style="width: 100%;"> style="width: 100%"
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> >
<el-table-column prop="businessKey" :label="$t('process.businessKey')" header-align="center" align="center"></el-table-column> <el-table-column
<el-table-column prop="processInstanceId" :label="$t('running.id')" header-align="center" align="center"></el-table-column> type="selection"
<el-table-column prop="processDefinitionName" :label="$t('process.processDefinitionName')" header-align="center" align="center"></el-table-column> header-align="center"
<el-table-column prop="startTime" :label="$t('process.startTime')" header-align="center" align="center"></el-table-column> align="center"
<el-table-column prop="taskName" :label="$t('process.taskName')" header-align="center" align="center"></el-table-column> width="50"
<el-table-column prop="createTime" :label="$t('process.createTime')" header-align="center" align="center"></el-table-column> ></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150"> <el-table-column
prop="businessKey"
:label="$t('process.businessKey')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="processInstanceId"
:label="$t('running.id')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="processDefinitionName"
:label="$t('process.processDefinitionName')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="startTime"
:label="$t('process.startTime')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="taskName"
:label="$t('process.taskName')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="createTime"
:label="$t('process.createTime')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:label="$t('handle')"
fixed="right"
header-align="center"
align="center"
width="150"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="claimTask(scope.row.taskId, scope.row.processDefinitionKey, scope.row.businessKey)">{{ $t('process.claim') }}</el-button> <el-button
<el-button type="text" size="small" @click="showDetail(scope.row)">{{ $t('process.viewFlowImage') }}</el-button> type="text"
size="small"
@click="
claimTask(
scope.row.taskId,
scope.row.processDefinitionKey,
scope.row.businessKey
)
"
>{{ $t("process.claim") }}</el-button
>
<el-button
type="text"
size="small"
@click="showDetail(scope.row)"
>{{ $t("process.viewFlowImage") }}</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -37,59 +105,62 @@
:total="total" :total="total"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle" @size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"> @current-change="pageCurrentChangeHandle"
>
</el-pagination> </el-pagination>
</div> </div>
</el-card> </el-card>
</template> </template>
<script> <script>
import mixinViewModule from '@/mixins/view-module' import mixinViewModule from "@/mixins/view-module";
import processModule from '@/mixins/process-module' import processModule from "@/mixins/process-module";
import qs from 'qs' import qs from "qs";
export default { export default {
mixins: [mixinViewModule, processModule], mixins: [mixinViewModule, processModule],
data () { data() {
return { return {
mixinViewModuleOptions: { mixinViewModuleOptions: {
getDataListURL: '/act/task/page', getDataListURL: "/act/task/page",
getDataListIsPage: true, getDataListIsPage: true,
deleteIsBatch: true, deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId' deleteIsBatchKey: "deploymentId",
}, },
dataForm: { dataForm: {
isRoleGroup: '1', isRoleGroup: "1",
taskName: '' taskName: "",
}
}
}, },
components: { };
}, },
components: {},
methods: { methods: {
claimTask (taskId, processDefinitionKey, businessKey) { claimTask(taskId, processDefinitionKey, businessKey) {
var params = qs.stringify({ var params = qs.stringify({
'taskId': taskId taskId: taskId,
}) });
this.$http.post(`/act/task/claim`, params).then(({ data: res }) => { this.$http
.post(`/act/task/claim`, params)
.then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg) return this.$message.error(res.msg);
} }
this.$message({ this.$message({
message: this.$t('prompt.success'), message: this.$t("prompt.success"),
type: 'success', type: "success",
duration: 500, duration: 500,
onClose: () => { onClose: () => {
this.getDataList() this.getDataList();
}
})
}).catch(() => {})
}, },
showDetail (row) { });
})
.catch(() => {});
},
showDetail(row) {
if (!row.businessKey) { if (!row.businessKey) {
return this.$message.error(this.$t('task.detailError')) return this.$message.error(this.$t("task.detailError"));
} }
this.getProcDefRouteSet(row, this.forwardDetail) this.getProcDefRouteSet(row, this.forwardDetail);
} },
} },
} };
</script> </script>

View File

@ -8,12 +8,22 @@
<template> <template>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
<div class="mod-activiti__process"> <div class="mod-activiti__process">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form
:inline="true"
:model="dataForm"
@keyup.enter.native="getDataList()"
>
<el-form-item> <el-form-item>
<el-input v-model="dataForm.taskName" :placeholder="$t('process.name')" clearable></el-input> <el-input
v-model="dataForm.taskName"
:placeholder="$t('process.name')"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button> <el-button type="primary" @click="getDataList()">{{
$t("query")
}}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table
@ -22,28 +32,82 @@
border border
@selection-change="dataListSelectionChangeHandle" @selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle" @sort-change="dataListSortChangeHandle"
style="width: 100%;"> style="width: 100%"
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> >
<el-table-column
type="selection"
header-align="center"
align="center"
width="50"
></el-table-column>
<el-table-column label="申请人" header-align="center" align="center"> <el-table-column label="申请人" header-align="center" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.params && scope.row.params.user||scope.row.params && scope.row.params.applyUserName||scope.row.params && scope.row.params.userName||scope.row.params && scope.row.params.undercarriageUserName}}</span> <span>{{
(scope.row.params && scope.row.params.user) ||
(scope.row.params && scope.row.params.applyUserName) ||
(scope.row.params && scope.row.params.userName) ||
(scope.row.params && scope.row.params.undercarriageUserName)
}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('process.system')" header-align="center" align="center"> <el-table-column
:label="$t('process.system')"
header-align="center"
align="center"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.params && scope.row.params.system||scope.row.params && scope.row.params.demandSubject||scope.row.params && scope.row.params.resourceDTO && scope.row.params.resourceDTO.name||scope.row.params && scope.row.params.undercarriageReason}}</span> <span>{{
(scope.row.params && scope.row.params.system) ||
(scope.row.params && scope.row.params.demandSubject) ||
(scope.row.params &&
scope.row.params.resourceDTO &&
scope.row.params.resourceDTO.name) ||
(scope.row.params && scope.row.params.undercarriageReason)
}}</span>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column prop="businessKey" :label="$t('process.businessKey')" header-align="center" align="center"></el-table-column> <!-- <el-table-column prop="businessKey" :label="$t('process.businessKey')" header-align="center" align="center"></el-table-column>
<el-table-column prop="processInstanceId" :label="$t('running.id')" header-align="center" align="center"></el-table-column> --> <el-table-column prop="processInstanceId" :label="$t('running.id')" header-align="center" align="center"></el-table-column> -->
<el-table-column prop="processDefinitionName" :label="$t('process.processDefinitionName')" header-align="center" align="center"></el-table-column> <el-table-column
<el-table-column prop="taskName" :label="$t('process.taskName')" header-align="center" align="center"></el-table-column> prop="processDefinitionName"
:label="$t('process.processDefinitionName')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="taskName"
:label="$t('process.taskName')"
header-align="center"
align="center"
></el-table-column>
<!-- <el-table-column prop="startTime" :label="$t('process.startTime')" header-align="center" align="center"></el-table-column> --> <!-- <el-table-column prop="startTime" :label="$t('process.startTime')" header-align="center" align="center"></el-table-column> -->
<el-table-column prop="createTime" :label="$t('process.createTime')" header-align="center" align="center"></el-table-column> <el-table-column
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150"> prop="createTime"
:label="$t('process.createTime')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
:label="$t('handle')"
fixed="right"
header-align="center"
align="center"
width="150"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" :processInstanceId="processInstanceId" @click="taskHandle(scope.row ) ">{{ $t('manage') }}</el-button> <el-button
<el-button type="text" size="small" @click="taskDetail(scope.row)">{{ $t('process.viewFlowImage') }}</el-button> type="text"
size="small"
:processInstanceId="processInstanceId"
@click="taskHandle(scope.row)"
>{{ $t("manage") }}</el-button
>
<el-button
type="text"
size="small"
@click="taskDetail(scope.row)"
>{{ $t("process.viewFlowImage") }}</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -54,49 +118,49 @@
:total="total" :total="total"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle" @size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"> @current-change="pageCurrentChangeHandle"
>
</el-pagination> </el-pagination>
</div> </div>
</el-card> </el-card>
</template> </template>
<script> <script>
import mixinViewModule from '@/mixins/view-module' import mixinViewModule from "@/mixins/view-module";
import processModule from '@/mixins/process-module' import processModule from "@/mixins/process-module";
export default { export default {
mixins: [mixinViewModule, processModule], mixins: [mixinViewModule, processModule],
data () { data() {
return { return {
mixinViewModuleOptions: { mixinViewModuleOptions: {
getDataListURL: '/act/task/myToDoTaskPage', getDataListURL: "/act/task/myToDoTaskPage",
getDataListIsPage: true, getDataListIsPage: true,
activatedIsNeed: true, activatedIsNeed: true,
deleteIsBatch: true, deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId' deleteIsBatchKey: "deploymentId",
}, },
dataForm: { dataForm: {
taskName: '', taskName: "",
taskId: '' taskId: "",
}, },
processInstanceId: '' processInstanceId: "",
} };
},
components: {
}, },
components: {},
methods: { methods: {
// //
taskHandle (row) { taskHandle(row) {
if (!row.businessKey) { if (!row.businessKey) {
return this.$message.error(this.$t('task.businessKeyError')) return this.$message.error(this.$t("task.businessKeyError"));
} }
this.getProcDefRouteSet(row, this.forwardHandleUrl) this.getProcDefRouteSet(row, this.forwardHandleUrl);
}, },
taskDetail (row) { taskDetail(row) {
if (!row.businessKey) { if (!row.businessKey) {
return this.$message.error(this.$t('task.detailError')) return this.$message.error(this.$t("task.detailError"));
} }
this.getProcDefRouteSet(row, this.forwardTaskDetail) this.getProcDefRouteSet(row, this.forwardTaskDetail);
} },
} },
} };
</script> </script>

View File

@ -664,6 +664,11 @@ export default {
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
::v-deep .el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
background-color: #0058e1; //#3E8EF7
border-color: #0058e1;
}
.avatar-uploader .el-upload { .avatar-uploader .el-upload {
border: 1px dashed #d9d9d9; border: 1px dashed #d9d9d9;
border-radius: 6px; border-radius: 6px;
@ -707,25 +712,25 @@ export default {
} }
.preview-dialog { .preview-dialog {
width: 100%; width: 100%;
height: 723px; height: 700px;
overflow: auto; overflow: auto;
/* 滚动条凹槽的颜色,还可以设置边框属性 */ padding: 10px 10px;
::-webkit-scrollbar-track-piece { /*滚动条样式*/
background-color: #f8f8f8; &::-webkit-scrollbar {
-webkit-border-radius: 2em; width: 6px;
-moz-border-radius: 2em;
border-radius: 2em;
} }
&::-webkit-scrollbar-thumb {
/* 滚动条的宽度 */ border-radius: 5;
::-webkit-scrollbar { background: rgba(0, 0, 0, 0.25);
width: 7px; }
height: 7px; &::-webkit-scrollbar-track {
border-radius: 0;
background: #f2f2f2;
} }
.preview-title { .preview-title {
width: 100%; width: 100%;
height: 100px; height: 90px;
//margin-top: -40px; //margin-top: -40px;
border-bottom: solid #c6c6c6 1px; border-bottom: solid #c6c6c6 1px;
.title-text { .title-text {
@ -743,7 +748,7 @@ export default {
line-height: 30px; line-height: 30px;
span { span {
font-size: 16px; font-size: 16px;
color: #212121; color: #606266;
} }
} }
} }
@ -753,11 +758,20 @@ export default {
text-align: left; text-align: left;
margin-top: 24px; margin-top: 24px;
text-indent: 2em; text-indent: 2em;
span:first-child {
font-size: 16px;
color: #606266;
}
span:last-child {
font-size: 16px;
color: #212121;
line-height: 30px;
}
} }
.preview-image { .preview-image {
width: 900px; width: 900px;
//height: 100%; //height: 100%;
margin-top: 16px; //margin-top: 16px;
padding-top: 5px; padding-top: 5px;
text-align: center; text-align: center;
padding-left: 300px; padding-left: 300px;
@ -769,10 +783,6 @@ export default {
span { span {
font-size: 16px; font-size: 16px;
color: #212121; color: #212121;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 5;
-webkit-box-orient: vertical;
} }
} }
} }

View File

@ -0,0 +1,85 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-pay__order">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.orderId" :placeholder="$t('order.orderId')" clearable></el-input>
</el-form-item>
<el-form-item>
<el-input v-model="dataForm.userId" :placeholder="$t('order.userId')" clearable></el-input>
</el-form-item>
<el-form-item>
<ren-select v-model="dataForm.status" dict-type="order_status" :placeholder="$t('order.status')"></ren-select>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="orderId" :label="$t('order.orderId')" header-align="center" align="center"></el-table-column>
<el-table-column prop="productName" :label="$t('order.productName')" header-align="center" align="center"></el-table-column>
<el-table-column prop="payAmount" :label="$t('order.payAmount')" header-align="center" align="center"></el-table-column>
<el-table-column prop="status" :label="$t('order.status')" header-align="center" align="center">
<template slot-scope="scope">
{{ $getDictLabel("order_status", scope.row.status) }}
</template>
</el-table-column>
<el-table-column prop="payAt" :label="$t('order.payAt')" header-align="center" align="center"></el-table-column>
<el-table-column prop="createDate" :label="$t('order.createDate')" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="scope.row.status === 0" type="text" size="small" @click="payHandle(scope.row.orderId)">{{ $t('order.pay') }}</el-button>
<el-button v-if="scope.row.status === 0" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<!-- <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> -->
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
// import AddOrUpdate from './order-add-or-update'
import {addDynamicRoute} from "@/router";
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/pay/order/page',
getDataListIsPage: true,
deleteURL: '/pay/order',
deleteIsBatch: true
},
dataForm: {
orderId: '',
status: '',
userId: ''
}
}
},
components: {
// AddOrUpdate
},
methods: {
payHandle (orderId) {
window.open(`${window.SITE_CONFIG['apiURL']}/pay/alipay/webPay?orderId=` + orderId);
}
}
}
</script>

View File

@ -0,0 +1,85 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-pay__order">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.orderId" :placeholder="$t('order.orderId')" clearable></el-input>
</el-form-item>
<el-form-item>
<el-input v-model="dataForm.userId" :placeholder="$t('order.userId')" clearable></el-input>
</el-form-item>
<el-form-item>
<ren-select v-model="dataForm.status" dict-type="order_status" :placeholder="$t('order.status')"></ren-select>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="orderId" :label="$t('order.orderId')" header-align="center" align="center"></el-table-column>
<el-table-column prop="productName" :label="$t('order.productName')" header-align="center" align="center"></el-table-column>
<el-table-column prop="payAmount" :label="$t('order.payAmount')" header-align="center" align="center"></el-table-column>
<el-table-column prop="status" :label="$t('order.status')" header-align="center" align="center">
<template slot-scope="scope">
{{ $getDictLabel("order_status", scope.row.status) }}
</template>
</el-table-column>
<el-table-column prop="payAt" :label="$t('order.payAt')" header-align="center" align="center"></el-table-column>
<el-table-column prop="createDate" :label="$t('order.createDate')" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="scope.row.status === 0" type="text" size="small" @click="payHandle(scope.row.orderId)">{{ $t('order.pay') }}</el-button>
<el-button v-if="scope.row.status === 0" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<!-- <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> -->
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
// import AddOrUpdate from './order-add-or-update'
import {addDynamicRoute} from "@/router";
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/pay/order/page',
getDataListIsPage: true,
deleteURL: '/pay/order',
deleteIsBatch: true
},
dataForm: {
orderId: '',
status: '',
userId: ''
}
}
},
components: {
// AddOrUpdate
},
methods: {
payHandle (orderId) {
window.open(`${window.SITE_CONFIG['apiURL']}/pay/alipay/webPay?orderId=` + orderId);
}
}
}
</script>

View File

@ -0,0 +1,85 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-pay__order">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.orderId" :placeholder="$t('order.orderId')" clearable></el-input>
</el-form-item>
<el-form-item>
<el-input v-model="dataForm.userId" :placeholder="$t('order.userId')" clearable></el-input>
</el-form-item>
<el-form-item>
<ren-select v-model="dataForm.status" dict-type="order_status" :placeholder="$t('order.status')"></ren-select>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="orderId" :label="$t('order.orderId')" header-align="center" align="center"></el-table-column>
<el-table-column prop="productName" :label="$t('order.productName')" header-align="center" align="center"></el-table-column>
<el-table-column prop="payAmount" :label="$t('order.payAmount')" header-align="center" align="center"></el-table-column>
<el-table-column prop="status" :label="$t('order.status')" header-align="center" align="center">
<template slot-scope="scope">
{{ $getDictLabel("order_status", scope.row.status) }}
</template>
</el-table-column>
<el-table-column prop="payAt" :label="$t('order.payAt')" header-align="center" align="center"></el-table-column>
<el-table-column prop="createDate" :label="$t('order.createDate')" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="scope.row.status === 0" type="text" size="small" @click="payHandle(scope.row.orderId)">{{ $t('order.pay') }}</el-button>
<el-button v-if="scope.row.status === 0" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<!-- <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> -->
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
// import AddOrUpdate from './order-add-or-update'
import {addDynamicRoute} from "@/router";
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/pay/order/page',
getDataListIsPage: true,
deleteURL: '/pay/order',
deleteIsBatch: true
},
dataForm: {
orderId: '',
status: '',
userId: ''
}
}
},
components: {
// AddOrUpdate
},
methods: {
payHandle (orderId) {
window.open(`${window.SITE_CONFIG['apiURL']}/pay/alipay/webPay?orderId=` + orderId);
}
}
}
</script>

View File

@ -0,0 +1,99 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-04-01 10:51:45
* @Description: 数据资源参数配置
*/
// const newLocation = 'qingdao'
const newLocation = 'baotou'
// const newLocation = 'xihaian'
//
const launchedDataNumObject = {}
//
const navListManagement = {}
// qingdao
if (newLocation === 'qingdao') {
//
launchedDataNumObject.launchedDataNum = [
{
num: 10374,
},
{
num: 1080,
},
{
num: 976,
},
]
//
navListManagement.navList = [
{ name: '共享门户', key: 'home' },
{ name: '能力集市', key: 'DetailsPageconetent' },
{ name: '能力云图', key: 'capabilityCloud' },
{ name: '能力统计', key: 'abilityStatistics' },
{ name: '开发指南', key: 'developmentGuide' },
{ name: '需求中心', key: 'demandCenter' },
// { name: '', key: 'personalCenter' },
{ name: '区市站点', key: 'mapTest' },
// { name: '', key: 'houtaiguanli' },
{ name: '赋能案例', key: 'assignCase' },
]
}
// baotou
else if (newLocation === 'baotou') {
//
launchedDataNumObject.launchedDataNum = [
{
num: 10373,
},
{
num: 1080,
},
{
num: 976,
},
]
//
navListManagement.navList = [
{ name: '共享门户', key: 'home' },
{ name: '能力集市', key: 'DetailsPageconetent' },
{ name: '能力云图', key: 'capabilityCloud' },
{ name: '能力统计', key: 'abilityStatistics' },
{ name: '开发指南', key: 'developmentGuide' },
{ name: '需求中心', key: 'demandCenter' },
// { name: '', key: 'personalCenter' },
// { name: '', key: 'mapTest' },
// { name: '', key: 'houtaiguanli' },
{ name: '赋能案例', key: 'assignCase' },
]
}
// xihaian
else if (newLocation === 'xihaian') {
//
launchedDataNumObject.launchedDataNum = [
{
num: 10372,
},
{
num: 1080,
},
{
num: 976,
},
]
//
navListManagement.navList = [
{ name: '共享门户', key: 'home' },
{ name: '能力集市', key: 'DetailsPageconetent' },
{ name: '能力云图', key: 'capabilityCloud' },
{ name: '能力统计', key: 'abilityStatistics' },
{ name: '开发指南', key: 'developmentGuide' },
{ name: '需求中心', key: 'demandCenter' },
// { name: '', key: 'personalCenter' },
// { name: '', key: 'mapTest' },
// { name: '', key: 'houtaiguanli' },
{ name: '赋能案例', key: 'assignCase' },
]
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -138,6 +138,16 @@ export const constantRoutes = [
icon: 'error-warning-line', icon: 'error-warning-line',
}, },
}, },
{
path: '/mynoticeView',
name: 'mynoticeView',
hidden: true,
component: () => import('@/views/mynoticeView'),
meta: {
title: '我的消息',
icon: 'error-warning-line',
},
},
{ {
path: '/WorkDynDetails', path: '/WorkDynDetails',
name: 'WorkDynDetails', name: 'WorkDynDetails',

View File

@ -143,7 +143,7 @@
// //
assignRankings.value[i - 1].name = assignRankings.value[i - 1].name =
contentData.value.resourceTop5[i - 1].service_name || '' contentData.value.resourceTop5[i - 1].service_name || ''
assignRankings.value[i - 1].opacity = assignRankings.value[i - 1].operation =
contentData.value.resourceTop5[i - 1].count || ' ' contentData.value.resourceTop5[i - 1].count || ' '
} }
}) })

View File

@ -215,6 +215,7 @@
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
margin-right: 1rem; margin-right: 1rem;
text-align: center;
.tab-top { .tab-top {
min-width: 1.2rem; min-width: 1.2rem;
font-size: 0.24rem; font-size: 0.24rem;

View File

@ -145,6 +145,7 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
text-align: center;
margin-right: 1rem; margin-right: 1rem;
.tab-top { .tab-top {
min-width: 1.2rem; min-width: 1.2rem;

View File

@ -146,6 +146,7 @@
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
margin-right: 1rem; margin-right: 1rem;
text-align: center;
.tab-top { .tab-top {
min-width: 1.2rem; min-width: 1.2rem;
font-size: 0.24rem; font-size: 0.24rem;

View File

@ -121,7 +121,7 @@
// //
// eslint-disable-next-line vue/no-mutating-props // eslint-disable-next-line vue/no-mutating-props
props.dataList.infoList.sort((a, b) => { props.dataList.infoList.sort((a, b) => {
console.log('排序==============>', a, b) // console.log('==============>', a, b)
return arr.indexOf(a.attrType) - arr.indexOf(b.attrType) return arr.indexOf(a.attrType) - arr.indexOf(b.attrType)
}) })
val.infoList.map((item) => { val.infoList.map((item) => {

View File

@ -3,15 +3,17 @@
* @Date: 2022-06-08 15:25:33 * @Date: 2022-06-08 15:25:33
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-14 11:30:52 * @LastEditTime: 2022-06-14 11:30:52
* @Description: 组件展示 视频播放 * @Description: 应用展示 视频播放
--> -->
<template> <template>
<div class="business-presentation" v-if="flag"> <div class="application-presentation" v-if="flag">
<detals-title title="组件展示" type="IMAGE&VIDEO"></detals-title> <detals-title title="组件展示" type="IMAGE&VIDEO"></detals-title>
<div class="main"> <div
<img :src="leftImg" /> class="main"
:style="`${img}background-position:center;background-size:cover;`"
>
<!-- <a-image :src="img"></a-image> -->
<div class="play" @click="showModal"></div> <div class="play" @click="showModal"></div>
<img :src="rightImg" />
</div> </div>
<a-modal <a-modal
v-model:visible="visible" v-model:visible="visible"
@ -31,8 +33,6 @@
<script setup> <script setup>
import { ref, reactive, defineProps, watch } from 'vue' import { ref, reactive, defineProps, watch } from 'vue'
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle.vue' import DetalsTitle from '@/views/detailsAll/components/DetalsTitle.vue'
const leftImg = require('@/assets/detailsAll/business/business_previous.png')
const rightImg = require('@/assets/detailsAll/business/business_next.png')
const visible = ref(false) const visible = ref(false)
const options = reactive({ const options = reactive({
width: '7.00rem', // width: '7.00rem', //
@ -67,6 +67,7 @@
dataList: { type: Object, default: null }, dataList: { type: Object, default: null },
}) })
const flag = ref(true) const flag = ref(true)
const img = ref({})
console.log('111111111111111111111,', props.dataList) console.log('111111111111111111111,', props.dataList)
if (props.dataList.infoList) { if (props.dataList.infoList) {
let obj = props.dataList.infoList.filter( let obj = props.dataList.infoList.filter(
@ -76,7 +77,13 @@
if (!obj) { if (!obj) {
flag.value = false flag.value = false
} else { } else {
let imgindex = props.dataList.infoList.filter(
(item) => item.attrType === '组件图片'
)[0]
options.src = obj.attrValue options.src = obj.attrValue
if (imgindex) {
img.value = 'background:' + 'url(' + imgindex.attrValue + ') no-repeat;'
}
} }
} }
watch( watch(
@ -90,29 +97,31 @@
if (!obj) { if (!obj) {
flag.value = false flag.value = false
} else { } else {
let imgindex = props.dataList.infoList.filter(
(item) => item.attrType === '组件图片'
)[0]
options.src = obj.attrValue options.src = obj.attrValue
if (imgindex) {
img.value =
'background:' + 'url(' + imgindex.attrValue + ') no-repeat;'
}
} }
} }
} }
) )
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.business-presentation { .application-presentation {
padding: 0.8rem 3rem 0.8rem; padding: 0.8rem 3rem 0;
background: url('~@/assets/detailsAll/business/business_module_bg.png')
no-repeat;
background-size: 100% 100%;
.main { .main {
height: 3.4rem; height: 3.4rem;
border-radius: 0.1rem; border-radius: 0.1rem;
background: url('~@/assets/detailsAll/business/business_element_content.png') background: url('~@/assets/detailsAll/sf_video_bg.png') no-repeat;
no-repeat center; background-size: 100%;
background-size: 50% 100%;
margin-top: 0.4rem; margin-top: 0.4rem;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
position: relative;
.play { .play {
width: 0.96rem; width: 0.96rem;
height: 0.96rem; height: 0.96rem;
@ -120,18 +129,6 @@
background-size: 100%; background-size: 100%;
cursor: pointer; cursor: pointer;
} }
img {
position: absolute;
top: 1.3rem;
left: 0.4rem;
cursor: pointer;
}
img:last-of-type {
position: absolute;
top: 1.3rem;
left: unset;
right: 0.4rem;
}
} }
} }
</style> </style>

View File

@ -12,22 +12,17 @@
<div class="left"> <div class="left">
<div class="content-left-title"> <div class="content-left-title">
<span>{{ item.title }}</span> <span>{{ item.title }}</span>
<span>{{ item.titleSon }}</span>
</div> </div>
<div class="content-left-content"> <div class="content-left-content">
<p> <p>
<span>{{ item.link.name }}</span> <span>{{ item.link.name }}</span>
<span>{{ item.link.value }}</span> <span>{{ item.linkValue }}</span>
</p>
<p>
<span>{{ item.postMethod.name }}</span>
<span>{{ item.postMethod.value }}</span>
</p> </p>
</div> </div>
</div> </div>
<div class="right"> <div class="right">
<div @click="technical()">技术文档</div> <div @click="technical()">技术文档</div>
<div>新手指引</div> <div @click="technicalNew()">新手指引</div>
</div> </div>
</div> </div>
<div class="content-right"> <div class="content-right">
@ -51,20 +46,20 @@
</div> </div>
</div> </div>
<div class="content-right-right"> <div class="content-right-right">
<div class="content-right-title">{{ item.contact }}</div> <div class="content-right-title">{{ item.contact2 }}</div>
<div class="content-right-content"> <div class="content-right-content">
<p> <p>
<span>{{ item.people.name }}</span> <span>{{ item.people2.name }}</span>
<a-tooltip> <a-tooltip>
<template #title>{{ item.people.value }}</template> <template #title>{{ item.people2.value }}</template>
<span>{{ item.people.value }}</span> <span>{{ item.people2.value }}</span>
</a-tooltip> </a-tooltip>
</p> </p>
<p> <p>
<span>{{ item.phone.name }}</span> <span>{{ item.phone2.name }}</span>
<a-tooltip> <a-tooltip>
<template #title>{{ item.phone.value }}</template> <template #title>{{ item.phone2.value }}</template>
<span>{{ item.phone.value }}</span> <span>{{ item.phone2.value }}</span>
</a-tooltip> </a-tooltip>
</p> </p>
</div> </div>
@ -83,26 +78,27 @@
englishTitle: 'USAGE', englishTitle: 'USAGE',
content: [ content: [
{ {
title: '技术对接', title: '组件地址',
titleSon: '调用接口',
link: { link: {
name: '接口地址:', name: '接口地址:',
value: 'http://localhost:9999/#/details?id=1532278256619307010',
}, },
postMethod: { linkValue: '',
name: '请求方式:', contact: '归属部门',
value: 'POST', facilitator: { name: '归属部门:', value: '讯飞科大' },
}, people: { name: '部门联系人:', value: '李四' },
contact: '联系厂商:',
facilitator: { name: '服务商:', value: '科大讯飞' },
people: { name: '联系人:', value: '李四' },
phone: { phone: {
name: '联系电话:', name: '联系人电话:',
value: '12345678901', value: '12345678901',
}, },
contact2: '服务商',
facilitator2: { name: '服务商:', value: '科大讯飞' },
people2: { name: '服务商联系人:', value: '李四' },
phone2: {
name: '联系人电话:',
value: '1234567890',
},
}, },
], ],
link: '',
}) })
// //
const props = defineProps({ const props = defineProps({
@ -118,20 +114,17 @@
} else { } else {
// eslint-disable-next-line vue/no-setup-props-destructure // eslint-disable-next-line vue/no-setup-props-destructure
dataFrom.value.content[0].link.value = props.dataList.apiUrl dataFrom.value.content[0].link.value = props.dataList.apiUrl
// eslint-disable-next-line vue/no-setup-props-destructure dataFrom.value.content[0].facilitator.value = props.dataList.deptContacts
dataFrom.value.content[0].postMethod.value = props.dataList.apiMethodType
console.log('dataList', props.dataList) console.log('dataList', props.dataList)
props.dataList.infoList.map((item) => { props.dataList.infoList.map((item) => {
if (item.attrType === '使用方式') { if (item.attrType === '组件地址') {
dataFrom.value.content[0].titleSon = item.attrValue dataFrom.value.content[0].linkValue = item.attrValue || '--'
} else if (item.attrType === '服务商') { } else if (item.attrType === '服务商') {
dataFrom.value.content[0].facilitator.value = item.attrValue || '--' dataFrom.value.content[0].facilitator.value = item.attrValue || '--'
} else if (item.attrType === '服务商联系人') { } else if (item.attrType === '服务商联系人') {
dataFrom.value.content[0].people.value = item.attrValue || '--' dataFrom.value.content[0].people.value = item.attrValue || '--'
} else if (item.attrType === '服务商联系电话') { } else if (item.attrType === '服务商联系电话') {
dataFrom.value.content[0].phone.value = item.attrValue || '--' dataFrom.value.content[0].phone.value = item.attrValue || '--'
} else if (item.attrType === '技术文档') {
dataFrom.value.link = item.attrValue || '--'
} }
}) })
} }
@ -145,11 +138,11 @@
flag.value = false flag.value = false
} else { } else {
dataFrom.value.content[0].link.value = val.apiUrl dataFrom.value.content[0].link.value = val.apiUrl
dataFrom.value.content[0].postMethod.value = val.apiMethodType dataFrom.value.content[0].facilitator.value = val.deptContacts
console.log('dataList', val) console.log('dataList', val)
val.infoList.map((item) => { val.infoList.map((item) => {
if (item.attrType === '使用方式') { if (item.attrType === '组件地址') {
dataFrom.value.content[0].titleSon = item.attrValue dataFrom.value.content[0].linkValue = item.attrValue || '--'
} else if (item.attrType === '服务商') { } else if (item.attrType === '服务商') {
dataFrom.value.content[0].facilitator.value = dataFrom.value.content[0].facilitator.value =
item.attrValue || '--' item.attrValue || '--'
@ -157,8 +150,6 @@
dataFrom.value.content[0].people.value = item.attrValue || '--' dataFrom.value.content[0].people.value = item.attrValue || '--'
} else if (item.attrType === '服务商联系电话') { } else if (item.attrType === '服务商联系电话') {
dataFrom.value.content[0].phone.value = item.attrValue || '--' dataFrom.value.content[0].phone.value = item.attrValue || '--'
} else if (item.attrType === '技术文档') {
dataFrom.value.link = item.attrValue || '--'
} }
}) })
} }
@ -180,6 +171,21 @@
// btoa(encodeURI(dataFrom.value.link)) // btoa(encodeURI(dataFrom.value.link))
// ) // )
} }
function technicalNew() {
//
// const type = pinyin(props.dataList.type, {
// pattern: 'initial',
// }).replace(/\s*/g, '')
// //
// const id = props.dataList.id
// window.open(window.SITE_CONFIG.frontUrl + type + '/' + id + '.md', '_blank')
console.log('dataFrom.value.link', dataFrom.value.link)
window.open(
window.SITE_CONFIG.previewUrl +
'hisense_office/onlinePreview?url=' +
btoa(encodeURI(dataFrom.value.link))
)
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

View File

@ -4,7 +4,7 @@
<div class="details-pageconetent-left"> <div class="details-pageconetent-left">
<detailsPageconetentTree /> <detailsPageconetentTree />
</div> </div>
<div class="top" v-if="Cardsname != '知识库'"> <div class="top" v-if="Cardsname != '知识库' && Cardsname != '数据资源'">
<div class="top-title"> <div class="top-title">
<div <div
v-for="item in titleName" v-for="item in titleName"
@ -257,7 +257,7 @@
</div> --> </div> -->
<VideoSurveillance></VideoSurveillance> <VideoSurveillance></VideoSurveillance>
</div> </div>
<div class="shujuziyuan" v-if="Cardsname == '数据资源'"> <!-- <div class="shujuziyuan" v-if="Cardsname == '数据资源'">
<div class="yunziyuan"> <div class="yunziyuan">
<div class="yunziyuan-title"> <div class="yunziyuan-title">
<div class="tupian"></div> <div class="tupian"></div>
@ -279,13 +279,33 @@
说明数据资源目前通过青岛市政务信息网进行申请 说明数据资源目前通过青岛市政务信息网进行申请
</div> </div>
</div> </div>
</div> </div> -->
<div v-if="resourceList.data?.length <= 0" style="margin-top: 2rem"> <div v-if="resourceList.data?.length <= 0" style="margin-top: 2rem">
<a-empty <a-empty
v-if="!(Cardsname == '基础设施') && !(Cardsname == '数据资源')" v-if="!(Cardsname == '基础设施') && !(Cardsname == '数据资源')"
/> />
</div> </div>
</div> </div>
<div class="top" v-else-if="Cardsname == '数据资源'">
<div class="top-title">
<div
v-for="item in titleName"
:key="item.name"
:class="item.name === Cardsname ? 'sel' : ''"
@click="changeCards(item.name)"
>
<span
class="photo"
:style="{
backgroundImage: `url(${item.photo}) `,
backgroundSize: 'cover',
}"
></span>
<span>{{ item.name }}</span>
</div>
</div>
<details-page-resource></details-page-resource>
</div>
<div class="top" v-else> <div class="top" v-else>
<div class="top-title"> <div class="top-title">
<div <div
@ -359,6 +379,8 @@
import searchResultList from '@/views/home/components/searchResultList.vue' import searchResultList from '@/views/home/components/searchResultList.vue'
import KnowledgeBase from '@/views/home/components/KnowledgeBase.vue' import KnowledgeBase from '@/views/home/components/KnowledgeBase.vue'
import VideoSurveillance from '@/views/home/videoSurveillance' import VideoSurveillance from '@/views/home/videoSurveillance'
//
import DetailsPageResource from '@/views/home/components/DetailsPageResource.vue'
export default defineComponent({ export default defineComponent({
setup() { setup() {
// const store = useStore() // const store = useStore()
@ -950,6 +972,7 @@
KnowledgeBase, KnowledgeBase,
// VideoCameraOutlined, // VideoCameraOutlined,
VideoSurveillance, VideoSurveillance,
DetailsPageResource,
}, },
beforeUnmount() { beforeUnmount() {
mybus.off('selectCardsitem') mybus.off('selectCardsitem')

View File

@ -0,0 +1,159 @@
<template>
<div class="pageResource">
<div class="left">
<img :src="leftImg" alt="" />
</div>
<div class="right">
<div class="launchedList">
<div v-for="(item, index) in launchedData" :key="index">
<img :src="item.img" alt="" />
<h3>{{ item.title }}</h3>
<p>
{{ item.num }}
<span></span>
</p>
</div>
</div>
<p>
政府机构内不同部门间系统的数据存在信息孤岛数据烟囱等现象以数据应用为抓手通过政务数据共享交换平台进一步打通数据流实现信息资源跨部门跨层级跨区域互联互通业务协同和综合应用满足政府企业部门多方位多层次的数据需求
</p>
<div class="application" @click="OnApplication">
<span>在线申请</span>
</div>
</div>
</div>
</template>
<script setup>
import { ref } from 'vue'
// import { useRouter } from 'vue-router'
// import { useStore } from 'vuex'
const leftImg = require('@/assets/home/pageResource/left.png')
const launchedData = ref([
{
title: '已上线目录',
num: launchedDataNumObject.launchedDataNum[0].num,
img: require('@/assets/home/pageResource/catalogue-icon.png'),
},
{
title: '已发布服务',
num: launchedDataNumObject.launchedDataNum[1].num,
img: require('@/assets/home/pageResource/service-icon.png'),
},
{
title: '已发布接口',
num: launchedDataNumObject.launchedDataNum[2].num,
img: require('@/assets/home/pageResource/port-icon.png'),
},
])
const OnApplication = () => {
window.open('https://10.110.205.1:18199/portal/#/home')
}
</script>
<style lang="less" scoped>
@font-face {
font-family: 'Medium';
src: url('~@/assets/home/font/Alibaba-PuHuiTi-Medium.otf');
}
// @font-face {
// font-family: 'text-typeface';
// src: url('~@/assets/home/font/text-typeface.otf');
// }
.pageResource {
position: absolute;
top: 0.68rem;
left: -5.37rem;
width: 176%;
height: 90.5%;
background: url(../../../assets/home/pageResource/bg.png) no-repeat center;
background-size: 100% 100%;
.left {
position: absolute;
top: 1.16rem;
left: 1.25rem;
width: 4.7rem;
height: 3rem;
img {
width: 100%;
}
}
.right {
position: absolute;
top: 0.5rem;
left: 7.6rem;
width: 60%;
.launchedList {
display: flex;
div {
width: 2.6rem;
height: 2.7rem;
margin-right: 0.4rem;
background: url(../../../assets/home/pageResource/catalogue-bg.png)
no-repeat;
background-size: 100% 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
img {
width: 0.8rem;
height: 0.8rem;
}
h3 {
margin: 0;
margin-top: 0.25rem;
font-size: 0.22rem;
color: #213162;
opacity: 0.8;
}
p {
margin: 0;
margin-top: 0.1rem;
font-size: 0.35rem;
font-weight: bold;
color: #0d165b;
span {
font-size: 0.2rem;
color: #213162;
font-weight: normal;
}
}
}
div:nth-of-type(2) {
background: url(../../../assets/home/pageResource/service-bg.png)
no-repeat;
background-size: 100% 100%;
}
div:nth-of-type(3) {
background: url(../../../assets/home/pageResource/port-bg.png)
no-repeat;
background-size: 100% 100%;
}
}
.application {
width: 14%;
height: 0.6rem;
line-height: 0.6rem;
text-align: center;
border-radius: 0.1rem;
margin-top: 0.5rem;
background-image: linear-gradient(to right, #336cf6, #1cadfd);
box-shadow: 0.08rem 0.08rem 0.2rem 0 rgba(40, 140, 249, 0.4);
cursor: pointer;
span {
font-size: 0.22rem;
color: #ffffff;
font-family: 'Medium';
}
}
}
.right > p {
margin-top: 0.5rem;
font-size: 0.18rem;
width: 75%;
color: #4e586b;
}
}
</style>

View File

@ -59,20 +59,15 @@
<a-list item-layout="horizontal" :data-source="mynoticeData"> <a-list item-layout="horizontal" :data-source="mynoticeData">
<template #renderItem="{ item }"> <template #renderItem="{ item }">
<a-list-item> <a-list-item>
<a-list-item-meta description=""> <a-list-item-meta :description="item.senderDate">
<template #title> <template #title>
<a-tooltip placement="left"> <a>{{ item.content }}</a>
<template #title>{{ item.content }}</template>
<a>{{ item.title }}</a>
</a-tooltip>
<a-button type="primary" ghost @click="read(item)">
设为已读
</a-button>
</template> </template>
</a-list-item-meta> </a-list-item-meta>
</a-list-item> </a-list-item>
</template> </template>
</a-list> </a-list>
<div class="bottom" @click="goToView()">查看更多</div>
</div> </div>
<div class="info"> <div class="info">
<i class="img"></i> <i class="img"></i>
@ -113,29 +108,30 @@
import { ref, onMounted, onBeforeUnmount, defineProps } from 'vue' import { ref, onMounted, onBeforeUnmount, defineProps } from 'vue'
import { recordRoute } from '@/config' import { recordRoute } from '@/config'
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { getUser, mynotice, mynoticeRead } from '@/api/home' import { getUser, mynotice } from '@/api/home'
import { useStore } from 'vuex' import { useStore } from 'vuex'
import { getSgcTotal } from '@/api/home' import { getSgcTotal } from '@/api/home'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
const store = useStore() const store = useStore()
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const navList = ref([ // const navListManagement = ref([
{ name: '共享门户', key: 'home' }, // { name: '', key: 'home' },
{ name: '能力集市', key: 'DetailsPageconetent' }, // { name: '', key: 'DetailsPageconetent' },
{ name: '能力云图', key: 'capabilityCloud' }, // { name: '', key: 'capabilityCloud' },
{ name: '能力统计', key: 'abilityStatistics' }, // { name: '', key: 'abilityStatistics' },
{ name: '开发指南', key: 'developmentGuide' }, // { name: '', key: 'developmentGuide' },
{ name: '需求中心', key: 'demandCenter' }, // { name: '', key: 'demandCenter' },
// { name: '', key: 'personalCenter' }, // // { name: '', key: 'personalCenter' },
{ name: '区市站点', key: 'mapTest' }, // { name: '', key: 'mapTest' },
// { name: '', key: 'houtaiguanli' }, // // { name: '', key: 'houtaiguanli' },
{ name: '赋能案例', key: 'assignCase' }, // { name: '', key: 'assignCase' },
]) // ])
const user = ref({}) const user = ref({})
const select = ref(router.currentRoute.value.name) const select = ref(router.currentRoute.value.name)
const mynoticeFlag = ref(false) const mynoticeFlag = ref(false)
const mynoticeData = ref([]) const mynoticeData = ref([])
const navList = ref(navListManagement.navList)
const props = defineProps({ const props = defineProps({
showView: { type: String, default: '' }, showView: { type: String, default: '' },
}) })
@ -243,15 +239,20 @@
mynotice({ page: 1, limit: 999, readStatus: 0 }).then((res) => { mynotice({ page: 1, limit: 999, readStatus: 0 }).then((res) => {
console.log('我的消息', res.data.data) console.log('我的消息', res.data.data)
mynoticeNum.value = res.data.data.total mynoticeNum.value = res.data.data.total
mynoticeData.value = res.data.data.list mynoticeData.value = res.data.data.list.splice(0, 3)
}) })
} }
const read = (item) => { const goToView = () => {
mynoticeRead(item.id).then((res) => { router.push({
console.log('已读', res) path: '/mynoticeView',
getMynotice()
}) })
} }
// const read = (item) => {
// mynoticeRead(item.id).then((res) => {
// console.log('', res)
// getMynotice()
// })
// }
onMounted(() => { onMounted(() => {
getSgcTotal().then((res) => { getSgcTotal().then((res) => {
console.log('初始化========================>', res.data.data.count) console.log('初始化========================>', res.data.data.count)
@ -397,7 +398,7 @@
} }
} }
.mynotice { .mynotice {
width: 2.5rem; width: 4rem;
height: 3rem; height: 3rem;
background: #eee; background: #eee;
border-radius: 0.05rem; border-radius: 0.05rem;
@ -405,24 +406,33 @@
top: 0.45rem; top: 0.45rem;
right: 3.1rem; right: 3.1rem;
overflow-y: scroll; overflow-y: scroll;
.bottom {
cursor: pointer;
width: 100%;
text-align: center;
color: #000;
font-size: 0.16rem;
}
} }
.mynotice::-webkit-scrollbar { .mynotice::-webkit-scrollbar {
display: none; display: none;
} }
:deep(.ant-list-item) { :deep(.ant-list-item) {
border-bottom: 0.01rem solid #ccc; border-bottom: 0.01rem solid #ccc;
padding: 0.1rem;
} }
:deep(.ant-list-item-meta-title) { :deep(.ant-list-item-meta-title) {
display: flex; // display: flex;
justify-content: space-around; // justify-content: space-around;
align-items: center; // align-items: center;
padding: 0 0.05rem; // padding: 0 0.05rem;
a { a {
width: 1.5rem; width: 3.8rem;
// ...
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
} }
button { button {
width: 0.7rem; width: 0.7rem;

View File

@ -0,0 +1,260 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-21 11:55:07
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-21 16:52:02
* @Description: 告诉大家这是什么
-->
<template>
<div class="notice-list">
<div class="top">
<div class="left">
<div
class="item"
:class="{ select: selectNav == nav.key }"
v-for="nav in navList"
:key="nav.key"
>
<i :class="nav.key" @click="changeNav(nav)"></i>
<div>{{ nav.title + '(' + nav.num + ')' }}</div>
</div>
</div>
<div class="right">
<div style="margin-right: 0.1rem">搜索</div>
<a-input
v-model:value="userName"
placeholder="请输入关键字"
style="margin-right: 0.1rem"
>
<template #suffix>
<search-outlined style="color: rgba(0, 0, 0, 0.45)" />
</template>
</a-input>
<a-button type="primary" style="margin-right: 0.1rem">搜索</a-button>
<div class="reset">重置</div>
</div>
</div>
<div class="btn">
<div class="left">
<a-select
ref="select"
v-model:value="value1"
style="width: 120px"
@focus="focus"
@change="handleChange"
>
<a-select-option value="全部消息">全部消息</a-select-option>
<a-select-option value="已读消息">已读消息</a-select-option>
<a-select-option value="未读消息">未读消息</a-select-option>
</a-select>
<div class="check">
<a-checkbox
v-model:checked="checked"
stlye="margin-right:0.3rem;"
></a-checkbox>
<div>全选</div>
<div>
<span>2</span>
条消息
</div>
</div>
</div>
<div class="right">标记为已读</div>
</div>
<div class="main">
<a-list item-layout="horizontal" :data-source="data">
<template #renderItem="{ item }">
<a-list-item>
<a-list-item-meta description="">
<template #title>
<div class="left">
{{ item.title }}
</div>
<div class="right">{{ '发布时间:' + item.time }}</div>
</template>
<template #avatar>
<a-checkbox v-model:checked="checked"></a-checkbox>
<a-badge dot :offset="[-30, 5]">
<a-avatar :src="item.src" />
</a-badge>
<!-- <a-avatar :src="item.src" /> -->
</template>
</a-list-item-meta>
</a-list-item>
</template>
</a-list>
</div>
<a-pagination v-model:current="current" :total="50" show-less-items />
</div>
</template>
<script setup>
import { SearchOutlined } from '@ant-design/icons-vue'
import { ref, reactive } from 'vue'
const navList = reactive([
{
title: '全部',
key: 'all',
num: 0,
},
{
title: '通知',
key: 'notice',
num: 0,
},
{
title: '评论',
key: 'comment',
num: 0,
},
])
const selectNav = ref('all')
const data = ref([
{
title: 'Ant Design Title 1',
src: require('@/assets/mynoticeView/notice.png'),
time: '2020-06-21',
},
{
title: 'Ant Design Title 2',
src: require('@/assets/mynoticeView/notice.png'),
time: '2020-06-21',
},
{
title: 'Ant Design Title 3',
src: require('@/assets/mynoticeView/notice.png'),
time: '2020-06-21',
},
{
title: 'Ant Design Title 4',
src: require('@/assets/mynoticeView/notice.png'),
time: '2020-06-21',
},
])
const changeNav = (nav) => {
selectNav.value = nav.key
}
</script>
<style lang="less" scoped>
.notice-list {
padding: 0.64rem 3.1rem 0.2rem;
.top {
display: flex;
justify-content: space-between;
align-items: center;
.left {
display: flex;
.item {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin-left: 1.28rem;
margin-bottom: 0.16rem;
border-bottom: 3px solid #fff;
i {
display: inline-block;
width: 0.48rem;
height: 0.48rem;
margin-bottom: 0.15rem;
cursor: pointer;
}
.all {
background: url('~@/assets/mynoticeView/all.png') no-repeat;
background-size: 100%;
}
.notice {
background: url('~@/assets/mynoticeView/notice.png') no-repeat;
background-size: 100%;
}
.comment {
background: url('~@/assets/mynoticeView/comment.png') no-repeat;
background-size: 100%;
}
}
.item:nth-of-type(1) {
margin-left: 0;
}
.select {
border-bottom: 3px solid #0058e1;
color: #0058e1;
}
}
.right {
display: flex;
align-items: center;
height: 0.32rem;
div {
width: 0.5rem;
}
.reset {
color: #0058e1;
cursor: pointer;
}
}
}
.btn {
display: flex;
justify-content: space-between;
.left {
display: flex;
align-items: center;
.ant-select {
margin-right: 0.24rem;
}
.check {
display: flex;
align-items: center;
div {
margin-left: 0.24rem;
span {
font-size: 18px;
color: #0058e1;
}
}
div:nth-of-type(1) {
margin-left: 0.12rem;
}
}
}
.right {
cursor: pointer;
color: #0058e1;
text-align: center;
align-self: center;
padding: 0.05rem 0.1rem;
}
.right:hover {
background: rgba(0, 88, 225, 0.1);
}
}
.main {
height: 5.67rem;
:deep(.ant-list-item-meta) {
display: flex;
align-items: center;
.ant-checkbox-wrapper {
margin-right: 0.3rem;
}
.ant-list-item-meta-title {
display: flex;
justify-content: space-between;
align-items: center;
.left {
cursor: pointer;
width: 9.2rem;
max-height: 0.43rem;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.left:hover {
color: #0058e1;
}
}
}
}
}
</style>

View File

@ -0,0 +1,18 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-21 11:50:28
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-21 11:56:37
* @Description: 告诉大家这是什么
-->
<template>
<new-home-header></new-home-header>
<notice-list></notice-list>
<home-footer></home-footer>
</template>
<script setup>
import NewHomeHeader from '@/views/home/components/header'
import NoticeList from '@/views/mynoticeView/components/NoticeList'
import HomeFooter from '@/views/newHome/components/Footer'
</script>
<style lang="less" scoped></style>

View File

@ -125,7 +125,6 @@
.total-num-content { .total-num-content {
font-size: 14px; font-size: 14px;
color: #212121; color: #212121;
margin: 18px 0 10px;
border-bottom: 1px solid #dddee1; border-bottom: 1px solid #dddee1;
height: 35px; height: 35px;
display: flex; display: flex;
@ -141,16 +140,11 @@
} }
:deep(.ant-list-item) { :deep(.ant-list-item) {
width: 1300px; width: 1300px;
padding: 16px 0; padding: 30px 0;
position: relative; position: relative;
border-bottom: #dddee1 solid 1px; border-bottom: #dddee1 solid 1px;
.ant-list-item-main { .ant-list-item-meta {
height: 140px; margin: 0;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
} }
.ant-list-item-meta-title { .ant-list-item-meta-title {
white-space: nowrap; white-space: nowrap;
@ -167,17 +161,18 @@
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
display: -webkit-box; display: -webkit-box;
-webkit-line-clamp: 4; -webkit-line-clamp: 2;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
} }
.pulish-time { .pulish-time {
position: absolute; position: absolute;
left: 196px; left: 196px;
bottom: 50px; bottom: 35px;
color: #212121; color: #212121;
} }
.ant-image-img { .ant-image-img {
width: 180px; width: 180px;
min-height: 120px;
} }
&:hover { &:hover {