测试:前台任务设计雏形

master
陈思豪 2024-08-27 01:15:05 +08:00
parent d9e548e490
commit cc4feb05e7
7 changed files with 224 additions and 33 deletions

View File

@ -40,33 +40,28 @@
"axios": "0.24.0", "axios": "0.24.0",
"clipboard": "2.0.8", "clipboard": "2.0.8",
"core-js": "3.25.3", "core-js": "3.25.3",
"echarts": "^5.5.1", "echarts": "5.4.0",
"element-ui": "^2.9.1", "element-ui": "2.9.1",
"file-saver": "2.0.5", "file-saver": "2.0.5",
"fuse.js": "6.4.3", "fuse.js": "6.4.3",
"highlight.js": "9.18.5", "highlight.js": "9.18.5",
"jquery": "^3.5.1",
"js-beautify": "1.13.0", "js-beautify": "1.13.0",
"js-cookie": "3.0.1", "js-cookie": "3.0.1",
"jsencrypt": "3.0.0-rc.1", "jsencrypt": "3.0.0-rc.1",
"jsplumb": "^2.15.6",
"lodash": "4.17.15", "lodash": "4.17.15",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"panzoom": "^9.4.1",
"quill": "1.3.7", "quill": "1.3.7",
"screenfull": "5.0.2", "screenfull": "5.0.2",
"sortablejs": "1.10.2", "sortablejs": "1.10.2",
"view-design": "^4.5.0-beta.3", "vue": "2.6.12",
"vue": "^2.5.2",
"vue-click-outside": "^1.1.0", "vue-click-outside": "^1.1.0",
"vue-codemirror": "^4.0.6", "vue-codemirror": "^4.0.6",
"vue-contextmenujs": "^1.3.13",
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",
"vue-cropper": "0.5.5", "vue-cropper": "0.5.5",
"vue-meta": "2.4.0", "vue-meta": "2.4.0",
"vue-router": "^3.2.0", "vue-router": "3.4.9",
"vuedraggable": "2.23.0", "vuedraggable": "2.23.0",
"vuex": "^3.4.0" "vuex": "3.6.0"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "4.4.6", "@vue/cli-plugin-babel": "4.4.6",
@ -79,17 +74,15 @@
"connect": "3.6.6", "connect": "3.6.6",
"eslint": "7.15.0", "eslint": "7.15.0",
"eslint-plugin-vue": "7.2.0", "eslint-plugin-vue": "7.2.0",
"less": "^4.2.0",
"less-loader": "^12.2.0",
"lint-staged": "10.5.3", "lint-staged": "10.5.3",
"runjs": "4.4.2", "runjs": "4.4.2",
"sass": "1.32.13", "sass": "1.32.13",
"sass-loader": "10.1.1", "sass-loader": "10.1.1",
"script-ext-html-webpack-plugin": "2.1.5", "script-ext-html-webpack-plugin": "2.1.5",
"svg-sprite-loader": "5.1.1", "svg-sprite-loader": "5.1.1",
"vue-template-compiler": "2.6.12", "vue-template-compiler": "2.6.12"
"@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-plugin-vuex": "~4.5.0",
"less": "^3.0.4",
"less-loader": "^5.0.0"
}, },
"engines": { "engines": {
"node": ">=8.9", "node": ">=8.9",

View File

@ -67,7 +67,7 @@
import nodeMenu from '@/components/ef/node_menu' import nodeMenu from '@/components/ef/node_menu'
import FlowInfo from '@/components/ef/info' import FlowInfo from '@/components/ef/info'
import FlowHelp from '@/components/ef/help' import FlowHelp from '@/components/ef/help'
import FlowNodeForm from './node_form' import FlowNodeForm from '@/components/ef/node_form'
import lodash from 'lodash' import lodash from 'lodash'
import { getDataA } from './data_A' import { getDataA } from './data_A'
import { getDataB } from './data_B' import { getDataB } from './data_B'

View File

@ -6,7 +6,12 @@
<breadcrumb v-if="!topNav" id="breadcrumb-container" class="breadcrumb-container"/> <breadcrumb v-if="!topNav" id="breadcrumb-container" class="breadcrumb-container"/>
<top-nav v-if="topNav" id="topmenu-container" class="topmenu-container"/> <top-nav v-if="topNav" id="topmenu-container" class="topmenu-container"/>
<div class="right-menu"> <div class="right-menu">
<el-button @click="drawerTru" type="primary" style="margin: 10px 0;">
<i class="el-icon-s-comment"></i>
</el-button>
<template v-if="device!=='mobile'"> <template v-if="device!=='mobile'">
<search id="header-search" class="right-menu-item"/> <search id="header-search" class="right-menu-item"/>
<screenfull id="screenfull" class="right-menu-item hover-effect"/> <screenfull id="screenfull" class="right-menu-item hover-effect"/>
@ -34,7 +39,119 @@
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
<div>
<!-- <el-drawer-->
<!-- title="我是标题"-->
<!-- :visible.sync="drawer"-->
<!-- size="50%"-->
<!-- :with-header="false">-->
<!-- <el-radio-group v-model="type" @change="selectNotice">-->
<!-- <el-radio-button label="0" >全部</el-radio-button>-->
<!-- <el-radio-button label="1" >通知</el-radio-button>-->
<!-- <el-radio-button label="2" >公告</el-radio-button>-->
<!-- </el-radio-group>-->
<!-- <br>-->
<!-- <el-radio-group v-model="state" @change="selectNotice">-->
<!-- <el-radio-button label="0" >全部</el-radio-button>-->
<!-- <el-radio-button label="2">已读</el-radio-button>-->
<!-- <el-radio-button label="1">未读</el-radio-button>-->
<!-- </el-radio-group>-->
<!-- <el-descriptions class="margin-top" v-for="notice in notices" :column="2" border>-->
<!-- <template slot="extra">-->
<!-- <el-button type="primary" size="small" @click="lookNotice(notice)"></el-button>-->
<!-- </template>-->
<!-- <el-descriptions-item>-->
<!-- <template slot="label">-->
<!-- <i class="el-icon-user"></i>-->
<!-- 消息发布时间-->
<!-- </template>-->
<!-- {{ notice.noticeTitle }}-->
<!-- </el-descriptions-item>-->
<!-- <el-descriptions-item>-->
<!-- <template slot="label">-->
<!-- <i class="el-icon-mobile-phone"></i>-->
<!-- 消息发布人-->
<!-- </template>-->
<!-- {{notice.createBy}}-->
<!-- </el-descriptions-item>-->
<!-- <el-descriptions-item>-->
<!-- <template slot="label">-->
<!-- <i class="el-icon-location-outline"></i>-->
<!-- 消息类型-->
<!-- </template>-->
<!-- <el-tag size="small" v-if=" notice.noticeType == 1"></el-tag>-->
<!-- <el-tag size="warning" v-if=" notice.noticeType == 2"></el-tag>-->
<!-- </el-descriptions-item>-->
<!-- <el-descriptions-item>-->
<!-- <template slot="label">-->
<!-- <i class="el-icon-tickets"></i>-->
<!-- 当前状态-->
<!-- </template>-->
<!-- <el-tag size="small" v-if=" notice.state == 1"></el-tag>-->
<!-- <el-tag size="success" v-if=" notice.state == 2"></el-tag>-->
<!-- </el-descriptions-item>-->
<!-- </el-descriptions>-->
<!-- </el-drawer>-->
<el-dialog
:visible.sync="dialogVisible"
width="30%">
<el-descriptions class="margin-top" :column="2" border>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-user"></i>
消息发布时间
</template>
{{ notice.noticeTitle }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-mobile-phone"></i>
消息发布人
</template>
{{notice.createBy}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-location-outline"></i>
消息类型
</template>
<el-tag size="small" v-if=" notice.noticeType == 1"></el-tag>
<el-tag size="warning" v-if=" notice.noticeType == 2"></el-tag>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-tickets"></i>
当前状态
</template>
<el-tag size="small" v-if=" notice.state == 1"></el-tag>
<el-tag size="success" v-if=" notice.state == 2"></el-tag>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-tickets"></i>
内容
</template>
<span v-html="notice.noticeContent"></span>
</el-descriptions-item>
</el-descriptions>
</el-dialog>
</div>
</div> </div>
</template> </template>
@ -46,8 +163,19 @@ import Hamburger from '@/components/Hamburger'
import Screenfull from '@/components/Screenfull' import Screenfull from '@/components/Screenfull'
import SizeSelect from '@/components/SizeSelect' import SizeSelect from '@/components/SizeSelect'
import Search from '@/components/HeaderSearch' import Search from '@/components/HeaderSearch'
import {findList, lookNotice} from "@/api/system/notice";
export default { export default {
data(){
return{
drawer:false,
type:0,
state:0,
notices:[],
dialogVisible:false,
notice:{}
}
},
components: { components: {
Breadcrumb, Breadcrumb,
TopNav, TopNav,
@ -63,6 +191,7 @@ export default {
'device' 'device'
]), ]),
setting: { setting: {
get() { get() {
return this.$store.state.settings.showSettings return this.$store.state.settings.showSettings
}, },
@ -79,7 +208,28 @@ export default {
} }
} }
}, },
created() {
},
methods: { methods: {
lookNotice(notice) {
this.dialogVisible = true
lookNotice(notice.id, notice.state).then(res => {
this.notice = res.data
})
this.findAll();
},
drawerTru() {
this.drawer = true
this.findAll()
},
findAll() {
findList({ state: this.state, noticeType: this.type }).then(res => {
this.notices = res.data;
})
},
selectNotice() {
this.findAll();
},
toggleSideBar() { toggleSideBar() {
this.$store.dispatch('app/toggleSideBar') this.$store.dispatch('app/toggleSideBar')
}, },
@ -136,7 +286,7 @@ export default {
.right-menu { .right-menu {
float: right; float: right;
height: 100%; height: 70%;
line-height: 50px; line-height: 50px;
&:focus { &:focus {

View File

@ -2,9 +2,6 @@ import Vue from 'vue'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
import Contextmenu from 'vue-contextmenujs'
import ViewUI from 'view-design';
import Element from 'element-ui' import Element from 'element-ui'
import './assets/styles/element-variables.scss' import './assets/styles/element-variables.scss'
@ -19,8 +16,8 @@ import {download} from '@/utils/request'
import './assets/icons' // icon import './assets/icons' // icon
import './permission' // permission control import './permission' // permission control
import {getDicts} from "/src/api/system/dict/data"; import {getDicts} from "@/api/system/dict/data";
import {getConfigKey} from "/src/api/system/config"; import {getConfigKey} from "@/api/system/config";
import {addDateRange, handleTree, parseTime, resetForm, selectDictLabel, selectDictLabels} from "@/utils/muyu"; import {addDateRange, handleTree, parseTime, resetForm, selectDictLabel, selectDictLabels} from "@/utils/muyu";
// 分页组件 // 分页组件
import Pagination from "@/components/Pagination"; import Pagination from "@/components/Pagination";
@ -40,10 +37,9 @@ import DictTag from '@/components/DictTag'
import VueMeta from 'vue-meta' import VueMeta from 'vue-meta'
// 字典数据组件 // 字典数据组件
import DictData from '@/components/DictData' import DictData from '@/components/DictData'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css' import 'element-ui/lib/theme-chalk/index.css'
import '@/components/ef/index.css' import '@/components/ef/index.css'
Vue.use(ElementUI, {size: 'small'})
// 全局方法挂载 // 全局方法挂载
Vue.prototype.getDicts = getDicts Vue.prototype.getDicts = getDicts
@ -64,9 +60,6 @@ Vue.component('Editor', Editor)
Vue.component('FileUpload', FileUpload) Vue.component('FileUpload', FileUpload)
Vue.component('ImageUpload', ImageUpload) Vue.component('ImageUpload', ImageUpload)
Vue.component('ImagePreview', ImagePreview) Vue.component('ImagePreview', ImagePreview)
Vue.use(Contextmenu);
Vue.use(ViewUI);
Vue.use(directive) Vue.use(directive)
Vue.use(plugins) Vue.use(plugins)
Vue.use(VueMeta) Vue.use(VueMeta)
@ -92,6 +85,4 @@ new Vue({
router, router,
store, store,
render: h => h(App) render: h => h(App)
}).$mount('#app') })

View File

@ -47,9 +47,9 @@ export const constantRoutes = [
children: [// 父级路由下面还有子路由 children: [// 父级路由下面还有子路由
{ {
path: 'index/:id',// 这个index可以自己定义 path: 'index/:id',// 这个index可以自己定义
component: () => import('@/components/ef/panel.vue'), component: () => import('@/views/task/task/easyFlow.vue'),
name: "easyFlow", name: "easyFlow",
meta: { title: '设计', icon: 'dashboard', activeMenu: '/task/info' } meta: { title: '设计', icon: 'dashboard', activeMenu: '/task/task' }
} }
] ]
}, },

View File

@ -0,0 +1,57 @@
<template>
<div>
<ef>
</ef>
</div>
</template>
<script>
//jsjsjson,
//import from ',
import ef from "@/components/ef/panel.vue"
export default {
name: "easyFlow",
//import使"
components: {
ef
},
props: {},
data() {
//"
return {
};
},
// data",
computed: {},
//data",
watch: {},
//",
methods: {},
// - 访this",
created() {
},
// - 访DOM",
mounted() {
},
beforeCreate() {
}, // - ",
beforeMount() {
}, // - ",
beforeUpdate() {
}, // - ",
updated() {
}, // - ",
beforeDestroy() {
}, // - ",
destroyed() {
}, // - ",
activated() {
} //keep-alive",
};
</script>
<style scoped>
</style>

View File

@ -37,7 +37,7 @@ module.exports = {
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
target: `http://172.13.1.1/prod-api`, target: `http://172.13.1.1/prod-api/`,
// target: `http://127.0.0.1/8080`, `http://172.13.1.1/prod-api`, // target: `http://127.0.0.1/8080`, `http://172.13.1.1/prod-api`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {