Merge branch 'master' of http://highdatas.com:9000/r/~kimi/srs
| | |
| | | "integrity": "sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=", |
| | | "dev": true |
| | | }, |
| | | "@types/echarts": { |
| | | "version": "4.4.2", |
| | | "resolved": "https://registry.npm.taobao.org/@types/echarts/download/@types/echarts-4.4.2.tgz", |
| | | "integrity": "sha1-iL5gubh7xlQU8i1BUINFONYqxgI=", |
| | | "requires": { |
| | | "@types/zrender": "*" |
| | | } |
| | | }, |
| | | "@types/eslint-visitor-keys": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npm.taobao.org/@types/eslint-visitor-keys/download/@types/eslint-visitor-keys-1.0.0.tgz?cache=0&sync_timestamp=1572470950582&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Feslint-visitor-keys%2Fdownload%2F%40types%2Feslint-visitor-keys-1.0.0.tgz", |
| | |
| | | "resolved": "https://registry.npm.taobao.org/@types/webpack-env/download/@types/webpack-env-1.15.0.tgz", |
| | | "integrity": "sha1-vZlW1QRLH7Q+hpqbqRSIYv+Y2f0=", |
| | | "dev": true |
| | | }, |
| | | "@types/zrender": { |
| | | "version": "4.0.0", |
| | | "resolved": "https://registry.npm.taobao.org/@types/zrender/download/@types/zrender-4.0.0.tgz", |
| | | "integrity": "sha1-poBvEuxOzKrr2bDYFvBJrKYYj70=" |
| | | }, |
| | | "@typescript-eslint/eslint-plugin": { |
| | | "version": "1.13.0", |
| | |
| | | "requires": { |
| | | "jsbn": "~0.1.0", |
| | | "safer-buffer": "^2.1.0" |
| | | } |
| | | }, |
| | | "echarts": { |
| | | "version": "4.6.0", |
| | | "resolved": "https://registry.npm.taobao.org/echarts/download/echarts-4.6.0.tgz?cache=0&sync_timestamp=1577438297540&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fecharts%2Fdownload%2Fecharts-4.6.0.tgz", |
| | | "integrity": "sha1-taR6EEbOyTzu75VPnuVHUTQFWOw=", |
| | | "requires": { |
| | | "zrender": "4.2.0" |
| | | } |
| | | }, |
| | | "ee-first": { |
| | |
| | | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", |
| | | "dev": true |
| | | }, |
| | | "resize-detector": { |
| | | "version": "0.1.10", |
| | | "resolved": "https://registry.npm.taobao.org/resize-detector/download/resize-detector-0.1.10.tgz", |
| | | "integrity": "sha1-HaP5YapfkUzLz9N1LVL9Rb7raSw=" |
| | | }, |
| | | "resize-observer-polyfill": { |
| | | "version": "1.5.1", |
| | | "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", |
| | |
| | | "resolved": "https://registry.npm.taobao.org/vue-class-component/download/vue-class-component-7.2.1.tgz", |
| | | "integrity": "sha1-WqDWrvTEKuyAHFP+spN6Mi0ycPk=" |
| | | }, |
| | | "vue-echarts": { |
| | | "version": "4.1.0", |
| | | "resolved": "https://registry.npm.taobao.org/vue-echarts/download/vue-echarts-4.1.0.tgz", |
| | | "integrity": "sha1-/0goqqWZ56qqyV41KX2WQZKjrw0=", |
| | | "requires": { |
| | | "lodash": "^4.17.15", |
| | | "resize-detector": "^0.1.10" |
| | | } |
| | | }, |
| | | "vue-eslint-parser": { |
| | | "version": "5.0.0", |
| | | "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-5.0.0.tgz?cache=0&sync_timestamp=1573306349811&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-eslint-parser%2Fdownload%2Fvue-eslint-parser-5.0.0.tgz", |
| | |
| | | "resolved": "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz", |
| | | "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=", |
| | | "dev": true |
| | | }, |
| | | "vuescroll": { |
| | | "version": "4.15.0-beta.1", |
| | | "resolved": "https://registry.npm.taobao.org/vuescroll/download/vuescroll-4.15.0-beta.1.tgz", |
| | | "integrity": "sha1-MAZYsFkKaV7LoPu7X6vk7g2RqH8=" |
| | | }, |
| | | "vuex": { |
| | | "version": "3.1.2", |
| | |
| | | "dev": true |
| | | } |
| | | } |
| | | }, |
| | | "zrender": { |
| | | "version": "4.2.0", |
| | | "resolved": "https://registry.npm.taobao.org/zrender/download/zrender-4.2.0.tgz?cache=0&sync_timestamp=1576159866096&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fzrender%2Fdownload%2Fzrender-4.2.0.tgz", |
| | | "integrity": "sha1-0AEwLhVfKN4fn8f81cJUutKEcc8=" |
| | | } |
| | | } |
| | | } |
| | |
| | | "lint": "vue-cli-service lint" |
| | | }, |
| | | "dependencies": { |
| | | "@types/echarts": "^4.4.2", |
| | | "axios": "^0.19.1", |
| | | "core-js": "^3.4.4", |
| | | "echarts": "^4.6.0", |
| | | "ele-calendar": "^1.2.0", |
| | | "element-ui": "^2.13.0", |
| | | "moment": "^2.24.0", |
| | | "register-service-worker": "^1.6.2", |
| | | "vue": "^2.6.10", |
| | | "vue-class-component": "^7.0.2", |
| | | "vue-echarts": "^4.1.0", |
| | | "vue-property-decorator": "^8.3.0", |
| | | "vue-router": "^3.1.3", |
| | | "vuescroll": "^4.15.0-beta.1", |
| | | "vuex": "^3.1.2" |
| | | }, |
| | | "devDependencies": { |
New file |
| | |
| | | import Vue from 'vue'; |
| | | |
| | | declare module 'vue/types/vue' { |
| | | interface Vue { |
| | | $echarts: any |
| | | } |
| | | } |
| | |
| | | -moz-osx-font-smoothing grayscale |
| | | text-align center |
| | | color #2c3e50 |
| | | |
| | | ::-webkit-scrollbar-track-piece { |
| | | background-color:#f8f8f8; |
| | | -webkit-border-radius: 2em; |
| | | -moz-border-radius: 2em; |
| | | border-radius: 2em; |
| | | } |
| | | /*滚动条的宽度*/ |
| | | ::-webkit-scrollbar { |
| | | width:6px; |
| | | } |
| | | /*滚动条的设置*/ |
| | | ::-webkit-scrollbar-thumb { |
| | | background-color:#ababab; |
| | | background-clip:padding-box; |
| | | -webkit-border-radius: 2em; |
| | | -moz-border-radius: 2em; |
| | | border-radius: 2em; |
| | | } |
| | | /*滚动条鼠标移上去*/ |
| | | ::-webkit-scrollbar-thumb:hover { |
| | | background-color:#9a9a9a; |
| | | } |
| | | |
| | | .z_shadow { |
| | | border-radius: 10px; |
| | | box-shadow: 0px 0px 10px 5px #D0E2E9; |
| | |
| | | <el-step title="方案设计" description="确立方案"></el-step> |
| | | <el-step title="预览" description=""></el-step> |
| | | </el-steps> |
| | | <div style="height: 55vh; padding:0px; box-sizing:boder-box; overflow: auto;"> |
| | | <div style="height: 45vh; padding:0px; box-sizing:boder-box; overflow: auto;"> |
| | | <div v-if="add_Step == 0" style="width: 100%; height: 100%;" align="center"> |
| | | <div style="padding-top: 5%; box-sizing:boder-box"> |
| | | <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> |
| | |
| | | }, |
| | | data () { |
| | | return { |
| | | add_Step: 0, |
| | | userId: undefined, |
| | | assign: undefined, |
| | | add_Step: 0, |
| | | loading_nextStep: false, |
| | | nextStepName: "下一步", |
| | | loading_cancel: false, |
| | |
| | | this.ruleForm = this.rowData; |
| | | this.xmId = this.rowData.id; |
| | | } |
| | | this.userId = localStorage.getItem('userId'); |
| | | this.assign = localStorage.getItem('assign'); |
| | | }, |
| | | methods:{ |
| | | Cancel() { |
| | |
| | | if (valid) { |
| | | is_null1 = true; |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | |
| | | // let items2 = new Date(ruleForm_.items[1]).Format("yyyy-MM-dd").toLocaleString(); |
| | | |
| | | let url = "/api/scheme/addOrUpdate"; |
| | | let me = this; |
| | | this.$axios.get(url,{ |
| | | params: { |
| | | reseachType: ruleForm_.objective, |
| | | name: ruleForm_.name, |
| | | startTime: items1, |
| | | endTime: items2, |
| | | id: this.xmId, |
| | | desp:ruleForm_.desp |
| | | id: me.xmId, |
| | | desp:ruleForm_.desp, |
| | | userId: me.userId |
| | | } |
| | | }).then(data_ => { |
| | | console.log(data_); |
| | | this.xmId = data_.data.data; |
| | | me.xmId = data_.data.data; |
| | | |
| | | this.add_Step = 1; |
| | | me.add_Step = 1; |
| | | }).catch(error =>{ |
| | | console.log(error); |
| | | }) |
| | | }, |
| | | |
| | |
| | | } |
| | | }, |
| | | saveStep3() { |
| | | let url = "/api/scheme/working/" + this.ruleForm.id; |
| | | this.$axios.get(url + datas).then(data_ => { |
| | | let url = "/api/scheme/working/" + this.xmId; |
| | | this.$axios.get(url).then(data_ => { |
| | | if(data_.data.success) { |
| | | this.$message('项目启动成功'); |
| | | this.Cancel(); |
| | |
| | | data() { |
| | | return { |
| | | showData: {}, |
| | | finish: false, |
| | | hideData: { |
| | | 'title': false, |
| | | 'scheme': false, |
| | |
| | | let url = "/api/sysRoleMapping/detail"; |
| | | this.$axios.get(url) |
| | | .then(data_ => { |
| | | console.log(data_); |
| | | let list = data_.data.data; |
| | | let parId = ""; |
| | | let obj = {}; |
| | |
| | | obj[id].children = [list[i]]; |
| | | } |
| | | } |
| | | |
| | | me.options_users = result; |
| | | |
| | | }).catch(error =>{ |
| | | console.log(error); |
| | | }) |
| | | }, |
| | | |
| | | getDetailed() { |
| | | let url = "/api/detail/parent/" + this.xmId; |
| | | this.$axios.get(url).then(data_ => { |
| | | console.log(data_); |
| | | this.defaultCheckedKeys = []; |
| | | this.showData = {}; |
| | | let details_ = data_.data.data; |
| | |
| | | } |
| | | |
| | | } |
| | | this.finish = true; |
| | | }).catch(error =>{ |
| | | console.log(error); |
| | | }) |
| | | |
| | | }, |
| | |
| | | <template> |
| | | <div class="class_substep"> |
| | | <div style="width: 79%; height: 100%; overflow: auto; padding-top: 0px; box-sizing: border-box;"> |
| | | <div class="class_substep" > |
| | | <div style="width: 79%;text-align: center; margin: 0 10px;"> |
| | | <h2 style="margin: 10px;">项目总金额:<span style="font-weight: bold;">{{money}}</span></h2> |
| | | </div> |
| | | <div style="width: 79%; height: 88%; overflow: auto; padding-top: 0px; box-sizing: border-box;"> |
| | | <transition name="el-zoom-in-top"> |
| | | <div v-show="showData['title']" class="transition-box" style="text-align: center; margin: 0 10px;"> |
| | | <h3 style="margin: 10px;">立题服务</h3> |
| | |
| | | data() { |
| | | return { |
| | | showData: {}, |
| | | money:0, |
| | | hideData: { |
| | | |
| | | 'title': false, |
| | | 'scheme': false, |
| | | 'search': false, |
| | |
| | | let url = "/api/sysRoleMapping/detail"; |
| | | this.$axios.get(url) |
| | | .then(data_ => { |
| | | console.log(data_); |
| | | let list = data_.data.data; |
| | | let parId = ""; |
| | | let obj = {}; |
| | |
| | | me.options_users = result; |
| | | |
| | | }).catch(error =>{ |
| | | console.log(error); |
| | | }) |
| | | }, |
| | | |
| | | getDetailed() { |
| | | this.showData = this.showData_; |
| | | this.form_= this.form_objs; |
| | | this.money = 0; |
| | | for (let itm_k in this.showData_) { |
| | | |
| | | let form_obj = {}; |
| | | form_obj = this.form_objs[itm_k]; |
| | | this.money += form_obj.budget; |
| | | } |
| | | }, |
| | | |
| | | //单一事件 |
| | |
| | | <style> |
| | | .class_substep { |
| | | height: 100%; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .class_substep .el-divider--horizontal { |
New file |
| | |
| | | <template> |
| | | <div class="class_dataImport"> |
| | | |
| | | <div style="height: 55vh; padding:0px; box-sizing:boder-box;"> |
| | | <div style="width: 1px; height: 1px;" align="center"> |
| | | <substep v-if="isShow1" ref="substep_zj" v-bind:xmId="xmId"></substep> |
| | | </div> |
| | | <div style="width: 100%; height: 100%;" align="center"> |
| | | <substepReadOnly v-if="isShow" v-bind:form_objs="form_objs" v-bind:showData_="showData_"></substepReadOnly> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import substep from './portion/substep.vue' |
| | | import substepReadOnly from './portion/substepReadOnly.vue' |
| | | export default { |
| | | name: 'dataImport', |
| | | props:{ |
| | | rowData:{ |
| | | type: Object, |
| | | required: true |
| | | } |
| | | }, |
| | | components: { |
| | | substepReadOnly, |
| | | substep |
| | | }, |
| | | data () { |
| | | return { |
| | | userId: undefined, |
| | | assign: undefined, |
| | | loading_nextStep: false, |
| | | isShow1: false, |
| | | isShow: false, |
| | | loading_cancel: false, |
| | | |
| | | ruleForm: {}, |
| | | xmId: null, |
| | | showData_: {}, |
| | | form_objs: {}, |
| | | |
| | | } |
| | | }, |
| | | mounted() { |
| | | |
| | | this.userId = localStorage.getItem('userId'); |
| | | this.assign = localStorage.getItem('assign'); |
| | | this.loadData(); |
| | | }, |
| | | methods:{ |
| | | loadData() { |
| | | |
| | | this.xmId = this.rowData.id; |
| | | this.isShow1 = true; |
| | | let me = this; |
| | | |
| | | let interval = setInterval(function(){ |
| | | let isFinish = me.$refs.substep_zj.finish; |
| | | if(isFinish) { |
| | | me.showData_ = me.$refs.substep_zj.showData; |
| | | me.form_objs = me.$refs.substep_zj.form_; |
| | | me.isShow = true; |
| | | clearInterval(interval); |
| | | } |
| | | |
| | | },1000); |
| | | |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style> |
| | | .class_dataImport .el-tabs__content{ |
| | | position: inherit; |
| | | } |
| | | |
| | | .class_dataImport .grid-content { |
| | | border-radius: 4px; |
| | | height: 60px; |
| | | min-height: 26px; |
| | | } |
| | | .class_dataImport .main-row .grid-content { |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .class_dataImport .z_grid-content2{ |
| | | display:table-cell; |
| | | vertical-align:bottom; |
| | | color: #2c3e50; |
| | | height: 50px; |
| | | } |
| | | |
| | | </style> |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | <el-col :span="4" ><el-button type="primary" @click="createNew">创建</el-button></el-col> |
| | | <el-col :span="4" > |
| | | <el-button type="primary" @click="createNew">创建</el-button> |
| | | |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | |
| | |
| | | <div class="list" v-infinite-scroll="load" infinite-scroll-disabled="disabled"> |
| | | <div v-for="one in dataList" :key="one.id" class="list-item" @click="showItem(one)"> |
| | | <el-row > |
| | | <el-col :span="20"><div class="grid-content z_grid-content1 grid-content_text">{{one.title}}</div></el-col> |
| | | <el-col :span="4"><div class="grid-content z_grid-content1 grid-content_time">{{one.time}}</div></el-col> |
| | | <el-col :span="18"><div class="grid-content z_grid-content1 grid-content_text">{{one.title}}</div></el-col> |
| | | <el-col :span="3"><div class="grid-content z_grid-content1 grid-content_exam">{{formatter(one.examine)}}</div></el-col> |
| | | <el-col :span="3"><div class="grid-content z_grid-content1 grid-content_time">{{one.time}}</div></el-col> |
| | | </el-row> |
| | | |
| | | <el-row> |
| | |
| | | </div> |
| | | |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button v-if="selectOne.attachment && selectOne.attachment != ''" type="primary" @click="download">下 载</el-button> |
| | | <el-button v-if="canEdit" type="primary" @click="edit">修改</el-button> |
| | | <el-button v-if="!selectOne.examine" type="primary" @click="addProject(selectOne)">生成项目</el-button> |
| | | <el-button v-if="selectOne.attachment && selectOne.attachment != ''" type="primary" @click="download(selectOne)">下 载</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | |
| | | <el-dialog title="创建话题" :visible.sync="dialogFormVisible"> |
| | | <el-dialog title="创建话题" :visible.sync="dialogFormVisible" @close="closeCreate" > |
| | | <el-form :model="form"> |
| | | <el-form-item label="话题名称" :label-width="formLabelWidth"> |
| | | <el-input v-model="form.title" autocomplete="off"></el-input> |
| | |
| | | ref="upload" |
| | | :on-change="onChange" |
| | | :on-exceed="handleExceed" |
| | | :on-success="uploadSuccess" |
| | | > |
| | | <el-button size="small" type="primary">点击上传</el-button> |
| | | <div slot="tip" class="el-upload__tip">不超过50M</div> |
| | |
| | | <el-button type="primary" @click="createTopic">确 定</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <div style="width: 0px; height: 0px;"> |
| | | <iframe ref="frame_export" style="width: 0px; height: 0px;"></iframe> |
| | | </div> |
| | | <el-dialog @close="Cancel" width="70%" top="50px" :visible.sync="dialog_1" append-to-body> |
| | | <newProject @closeNewProject="closeNewProject" v-bind:rowData="rowData" ref="newProject_"></newProject> |
| | | </el-dialog> |
| | | |
| | | <el-dialog @close="Cancel1" width="70%" top="50px" :visible.sync="dialog_2" append-to-body> |
| | | <newProject ref="newProject1_"></newProject> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import newProject from '../components/popup/newProject.vue' |
| | | export default { |
| | | components: { |
| | | newProject |
| | | }, |
| | | data() { |
| | | return { |
| | | rowData:undefined, |
| | | dialog_1: false, |
| | | uploadUrl:"/api/api/file/topicUpload", |
| | | form:{}, |
| | | pageno:1, |
| | |
| | | desp:"miaoshu", |
| | | attachment:"222" |
| | | }, |
| | | formLabelWidth:"40%", |
| | | dataList: [ |
| | | // {id:1,attachment:"222",title:"标题", desp:"描述时发生纠纷司符合双方酒叟发动机时代峰峻配电间 刀片机水电费搜豆腐皮搜的看法我都叫打破是觉得批发商附加费第三季度破发接收到发地方就搜到到四点分发偶读囧", time:"12分钟前"}, |
| | | // {id:1,attachment:"222",title:"11", desp:"111", time:"11111"}, |
| | |
| | | } |
| | | }, |
| | | computed: { |
| | | |
| | | noMore() { |
| | | return this.maxPage == this.pageno |
| | | }, |
| | |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | Cancel() { |
| | | this.$refs.newProject_.Cancel(); |
| | | this.dialogFormVisible = false; |
| | | }, |
| | | addProject(selected) { |
| | | let url = "/api/topic/exam/" + selected.id; |
| | | this.$axios.get(url) |
| | | .then(data_ => { |
| | | if(data_.data.success) { |
| | | this.rowData = { |
| | | id:selected.id, |
| | | desp:selected.desp, |
| | | name:selected.title, |
| | | //objective:this.selected.reseachType, |
| | | //items:[this.$moment(this.selected.startTime).format('YYYY-MM-DD'),this.$moment(this.selected.endTime).format('YYYY-MM-DD')] |
| | | } |
| | | this.dialogFormVisible = false; |
| | | this.dialog_1 = true; |
| | | }else { |
| | | this.$message({message:'创建项目失败', type: 'warning'}); |
| | | } |
| | | }).catch(error => { |
| | | }) |
| | | |
| | | |
| | | }, |
| | | closeNewProject() { |
| | | this.dialog_1 = false; |
| | | getData(); |
| | | }, |
| | | download(val) { |
| | | if(val) { |
| | | this.$refs.frame_export.src = "/api/api/file/download/" + val.id; |
| | | }else { |
| | | this.$message({message:'获取地址失败', type: 'warning'}); |
| | | } |
| | | |
| | | }, |
| | | uploadSuccess() { |
| | | this.dialogFormVisible = false; |
| | | }, |
| | | onChange(file, fileList) { |
| | | this.fileList = []; |
| | | this.fileList = fileList; |
| | | }, |
| | | canExam() { |
| | | return true; |
| | | }, |
| | | |
| | | createTopic() { |
| | | let me = this; |
| | | var userId = localStorage.getItem('userId'); |
| | |
| | | if(data_.data.success) { |
| | | this.$message('创建成功'); |
| | | me.dialogFormVisible = false; |
| | | me.getData(); |
| | | }else { |
| | | this.$message({message:'话题创建失败', type: 'warning'}); |
| | | } |
| | | }).catch(error => { |
| | | console.log(error); |
| | | }) |
| | | }else { |
| | | this.$refs.upload.submit(); |
| | | } |
| | | }, |
| | | handleRemove(file, fileList) { |
| | | console.log(file, fileList); |
| | | }, |
| | | handlePreview(file) { |
| | | console.log(file); |
| | | }, |
| | | handleExceed(files, fileList) { |
| | | this.$message.warning(`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`); |
| | |
| | | createNew() { |
| | | this.dialogFormVisible = true; |
| | | }, |
| | | formatter(exam){ |
| | | if(exam){ |
| | | return "已关联项目"; |
| | | } |
| | | }, |
| | | empty_() { |
| | | this.formInline = {}; |
| | | this.query_(); |
| | | }, |
| | | query_() { |
| | | this.getData(this.formInline); |
| | | this.getData(this.formInline, true); |
| | | }, |
| | | getData(query) { |
| | | canEdit() { |
| | | return this.selectOne.userId == this.userId; |
| | | }, |
| | | edit(){ |
| | | this.form = { |
| | | title: this.selectOne.title, |
| | | desp: this.selectOne.desp, |
| | | id: this.selectOne.id |
| | | }; |
| | | this.dialogFormVisible = true; |
| | | this.dialogVisible = false; |
| | | }, |
| | | closeCreate() { |
| | | this.dialogFormVisible = false; |
| | | this.getData(); |
| | | }, |
| | | getData(query,empty) { |
| | | if(empty) { |
| | | this.dataList = []; |
| | | } |
| | | let me = this; |
| | | this.loading = true |
| | | this.loading_table = true; |
| | |
| | | params |
| | | }) |
| | | .then(data_ => { |
| | | console.log(data_); |
| | | if(data_.data.success) { |
| | | me.dataList.push.apply(me.dataList, data_.data.data.records) |
| | | me.total = data_.data.data.total; |
| | | me.t |
| | | otal = data_.data.data.total; |
| | | me.pageno = data_.data.data.pageno; |
| | | me.maxPage = data_.data.data.maxPage; |
| | | |
| | |
| | | } |
| | | me.loading = false |
| | | }).catch(error => { |
| | | console.log(error); |
| | | me.loading = false |
| | | }) |
| | | }, |
| | |
| | | } |
| | | .grid-content_time { |
| | | font-weight: bold; |
| | | font-style: italic; |
| | | color: #909399; |
| | | } |
| | | .grid-content_exam { |
| | | color: #00aaff; |
| | | font-size: 14px; |
| | | } |
| | | .z_grid-content1{ |
| | | display:table-cell; |
| | | vertical-align:bottom; |
| | |
| | | import "element-ui/lib/theme-chalk/index.css"; |
| | | import Axios from 'axios'; |
| | | //npm i moment --save |
| | | import moment from 'moment' |
| | | import moment from 'moment'; |
| | | import echarts from 'echarts' |
| | | |
| | | |
| | | Vue.prototype.$echarts = echarts |
| | | Vue.use(ElementUI); |
| | | Vue.prototype.$moment = moment;//赋值使用 |
| | | |
| | |
| | | Axios.defaults.baseURL = '/api'; |
| | | Axios.defaults.headers.post['Content-Type'] = 'application/json'; |
| | | |
| | | Axios.interceptors.request.use( |
| | | config => { |
| | | let userId_ = localStorage.getItem('userId'); |
| | | if (!userId_) { // |
| | | router.replace({ |
| | | path: 'login', |
| | | |
| | | }) |
| | | } |
| | | return config; |
| | | }, |
| | | err => { |
| | | return Promise.reject(err); |
| | | }); |
| | | |
| | | |
| | | new Vue({ |
| | | router, |
| | |
| | | // let url = "/api/master/" + this.menuObj.tableName + "/all/1" |
| | | let url = "/api/field/" + this.menuObj.tableName; |
| | | this.$axios.get(url).then(data_ => { |
| | | console.log(data_); |
| | | me.tableFields = data_.data.data; |
| | | /* var fields_ = []; |
| | | var result = data_.data.data; |
| | |
| | | me.getData_edit(); |
| | | }) |
| | | .catch(error =>{ |
| | | console.log(error); |
| | | }) |
| | | }, |
| | | |
| | |
| | | } |
| | | } |
| | | ).then(data_ => { |
| | | console.log(data_); |
| | | let header_height = me.$refs.dataEdit_table.$el.getElementsByClassName('el-table__header-wrapper')[0].offsetHeight; |
| | | me.$refs.dataEdit_table.$el.getElementsByClassName('el-table__body-wrapper')[0].style['height'] = me.tableHeight - header_height + "px"; |
| | | me.$refs.dataEdit_table.$el.getElementsByClassName('el-table__body-wrapper')[0].style['min-height'] = me.tableHeight - header_height + "px"; |
| | |
| | | me.loading_edit = false; |
| | | }) |
| | | .catch(error =>{ |
| | | console.log(error); |
| | | }) |
| | | }, |
| | | |
| | |
| | | desp: this.desp |
| | | } |
| | | }).then(data_ => { |
| | | console.log(data_); |
| | | this.alert2_("当前流程正在审批"); |
| | | }) |
| | | .catch(error =>{ |
| | | console.log(error); |
| | | }); |
| | | }, |
| | | |
| | |
| | | }, |
| | | } |
| | | ).then(data_ => { |
| | | console.log(data_); |
| | | if (!data_.data.data.grid || !data_.data.data) { |
| | | this.tableData_edit = []; |
| | | this.currentPage_edit = 1; |
| | |
| | | this.loading_edit = false; |
| | | }) |
| | | .catch(error =>{ |
| | | console.log(error); |
| | | this.loading_edit = false; |
| | | this.tableData_edit = []; |
| | | this.currentPage_edit = 1; |
| | |
| | | let datas = "?datas=" + encodeURI(table_data.id); |
| | | this.$axios.post(url + datas |
| | | ).then(data_ => { |
| | | console.log(data_); |
| | | |
| | | this.query_edit(); |
| | | }) |
| | | .catch(error =>{ |
| | | console.log(error); |
| | | }); |
| | | |
| | | }, |
| | |
| | | let datas = "?datas=" + encodeURI(JSON.stringify(table_data)) + "&fields=" + fields_; |
| | | this.$axios.post(url + datas |
| | | ).then(data_ => { |
| | | console.log(data_); |
| | | |
| | | this.loading_button_add = false; |
| | | this.dialog_4_1_1 = false; |
| | | this.query_edit(); |
| | | }) |
| | | .catch(error =>{ |
| | | console.log(error); |
| | | }); |
| | | }, |
| | | |
| | |
| | | |
| | | this.$axios.post(url + datas |
| | | ).then(data_ => { |
| | | console.log(data_); |
| | | me.loading_button_update = false; |
| | | me.dialog_4_2 = false; |
| | | me.query_edit(); |
| | | }) |
| | | .catch(error =>{ |
| | | console.log(error); |
| | | }); |
| | | }, |
| | | |
| | |
| | | <el-container> |
| | | <el-header style="text-align: right; font-size: 15px;padding-right: 40px;"> |
| | | <i class="el-icon-user-solid"></i> |
| | | <span>admin</span> |
| | | <span>{{userName}}</span> |
| | | <el-button size="small" type="primary" @click="Cancel">退 出</el-button> |
| | | </el-header> |
| | | |
| | |
| | | }, |
| | | created() { |
| | | let userId_ = localStorage.getItem('userId'); |
| | | this.userName = localStorage.getItem('userName'); |
| | | let departId = localStorage.getItem('departId'); |
| | | if (!userId_ || !departId) { |
| | | this.$router.push('/login'); |
| | |
| | | let type; |
| | | if(departId == "100" || departId == "500") { |
| | | type = departId; |
| | | localStorage.setItem('assign', false); |
| | | }else { |
| | | type = "all"; |
| | | localStorage.setItem('assign', true); |
| | | } |
| | | |
| | | this.getMenu(type); |
| | |
| | | {'id': "111_1", 'title': "信息广场", 'path': 'square', 'parentId': "111"}, // |
| | | {'id': "111_2", 'title': "项目总览", 'path': 'list', 'parentId': "111"}, // |
| | | {'id': "111_3", 'title': "项目分析", 'path': 'Overview', 'parentId': "111"}, // |
| | | {'id': "111_4", 'title': "归档报告", 'path': 'project4', 'parentId': "111"}, // |
| | | // {'id': "111_4", 'title': "归档报告", 'path': 'project4', 'parentId': "111"}, // |
| | | {'id': "112_1", 'title': "任务列表", 'path': 'calendarTask', 'parentId': "112"}, // |
| | | ], |
| | | 100: [ |
| | |
| | | |
| | | Cancel() { |
| | | this.$router.push('/login'); |
| | | localStorage.setItem('userId', undefined); |
| | | }, |
| | | menuSelect(index, a){ |
| | | let isPage = index.substring(0,2); |
| | |
| | | <div class="class_mine"> |
| | | <el-row :gutter="12"> |
| | | <el-col :span="15"> |
| | | <el-card class="box-card" shadow="hover" style="width: 100%; height: 30vh;"> |
| | | <el-card class="box-card" shadow="hover" style="width: 100%; height: 32vh;"> |
| | | <div slot="header" class="clearfix"> |
| | | <span>概览</span> |
| | | </div> |
| | |
| | | <el-col :span="12"><div class="grid-content" style="font-size: 14px;">今天剩余工作总计</div></el-col> |
| | | </el-row> |
| | | <div style="width: 100%; height: 110px; overflow: auto;"> |
| | | |
| | | <div class="card1_div" v-for="(card1_itm, k) in overview1" :key="k"> |
| | | <div class="card1_header">{{card1_itm.name}}</div> |
| | | <div class="card1_body">{{card1_itm.count}}</div> |
| | |
| | | </el-card> |
| | | </el-col> |
| | | <el-col :span="9"> |
| | | <el-card class="box-card" shadow="hover" style="width: 100%; height: 30vh;"> |
| | | <el-card class="box-card" shadow="hover" style="width: 100%; height: 32vh;"> |
| | | <div slot="header" class="clearfix"> |
| | | <span>项目总览</span> |
| | | </div> |
| | |
| | | <div class="card2_body">{{sum_count}}</div> |
| | | <el-button size="mini" type="primary" round @click="see_click">查看所有</el-button> |
| | | </div> |
| | | <div class="card2_div" style="width: 80%;"> |
| | | |
| | | <div class="card2_div" style="margin-left:10%;width: 70%;"> |
| | | <div id="typeChart" :style="{width: '100%', height: '100%'}"></div> |
| | | </div> |
| | | |
| | | </div> |
| | |
| | | <div class="card3"> |
| | | <div class="card3_div" style="width: 40%; height: 34vh; overflow-y: auto; border-right: 1px solid #333333;"> |
| | | <el-table |
| | | :data="tableData" |
| | | height="200" |
| | | highlight-current-row |
| | | @row-click="setActiveTableData" |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="name" |
| | | label="项目名称" |
| | | > |
| | | </el-table-column> |
| | | </el-table> |
| | | :data="tableData" |
| | | height="200" |
| | | highlight-current-row |
| | | @row-click="setActiveTableData" |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="name" |
| | | label="项目名称" |
| | | > |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | </div> |
| | | <div class="card3_div" style="width: 58%;"> |
| | | <el-row :gutter="12" style="margin-top: 10px;"> |
| | | <el-col :span="8" style="text-align: center;"> |
| | | <el-progress type="circle" :percentage="card3Count.rate"></el-progress> |
| | | </el-col> |
| | | <el-col :span="10"> |
| | | <div style="height: 14vh;"> |
| | | <el-col :span="10" style="font-size: 14px;"> |
| | | <div style="height: 14vh; "> |
| | | <div> |
| | | <i class="el-icon-success" style="color: #40FF9E;"></i> |
| | | <span>昨日完成任务数:{{card3Count.complete1}}</span> |
| | | <span>昨日完成任务数:{{card3Count.yesDeal}}</span> |
| | | </div> |
| | | <div> |
| | | <el-progress :percentage="card3Count.rate1" style="margin: 5px;"></el-progress> |
| | |
| | | <div> |
| | | <div> |
| | | <i class="el-icon-success" style="color: #40FF9E;"></i> |
| | | <span>今日完成任务数:{{card3Count.complete2}}</span> |
| | | <span>今日完成任务数:{{card3Count.nowDeal}}</span> |
| | | </div> |
| | | <div> |
| | | <el-progress :percentage="card3Count.rate2" style="margin: 5px;"></el-progress> |
| | |
| | | |
| | | <el-col :span="6"> |
| | | <div style="height: 14vh;"> |
| | | <div><span>总任务:{{card3Count.sum1}}</span></div> |
| | | <div><span>未完成:{{card3Count.unfinished1}}</span></div> |
| | | <div><span>总任务:{{card3Count.yesTotal}}</span></div> |
| | | <div><span>已完成:{{card3Count.yesDeal}}</span></div> |
| | | </div> |
| | | |
| | | <div> |
| | | <div><span>总任务:{{card3Count.sum2}}</span></div> |
| | | <div><span>未完成:{{card3Count.unfinished2}}</span></div> |
| | | <div><span>总任务:{{card3Count.nowTotal}}</span></div> |
| | | <div><span>已完成:{{card3Count.nowDeal}}</span></div> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | overview1: [], |
| | | tableData: [], |
| | | activeTableData: {}, |
| | | |
| | | card3Count: {} |
| | | sum_count:0, |
| | | card3Count: {}, |
| | | typeChart:undefined, |
| | | } |
| | | }, |
| | | created() { |
| | | this.init(); |
| | | }, |
| | | mounted(){ |
| | | this.typeChart = this.$echarts.init(document.getElementById('typeChart')); |
| | | }, |
| | | methods: { |
| | | init() { |
| | | |
| | | this.$axios.get("/api/scheme/all") |
| | | .then(data_ => { |
| | | console.log(data_); |
| | | if (data_.data.success) { |
| | | var datas = data_.data.data; |
| | | this.tableData = datas; |
| | | } |
| | | }).catch(error => { |
| | | console.log(error); |
| | | }); |
| | | this.$axios.get("/api/scheme/typesCnt") |
| | | .then(data_ => { |
| | | console.log(data_); |
| | | if (data_.data.success) { |
| | | var datas = data_.data.data; |
| | | |
| | | this.sum_count = datas.total; |
| | | this.initChart(datas.typeCnt); |
| | | } |
| | | }).catch(error => { |
| | | console.log(error); |
| | | }); |
| | | this.date_ = this.$moment(new Date).format('YYYY年MM月DD日'); |
| | | this.overview1 = [ |
| | | {name: "我的任务", count: 15, warning: "已逾期11"}, |
| | | {name: "立案与方案开发", count: 15, warning: "已逾期11"}, |
| | | {name: "文献检索与筛选", count: 15, warning: "已逾期11"}, |
| | | {name: "数据提取", count: 15, warning: "已逾期11"}, |
| | | {name: "数据分析", count: 15, warning: "已逾期11"}, |
| | | {name: "文稿撰写", count: 15, warning: "已逾期11"}, |
| | | ]; |
| | | this.$axios.get("/api/detail/dayTask") |
| | | .then(data_ => { |
| | | console.log(data_); |
| | | if (data_.data.success) { |
| | | var datas = data_.data.data; |
| | | datas.map(el => { |
| | | if(el.delay > 0) { |
| | | el.warning="已逾期" + ell.delay; |
| | | }else { |
| | | el.warning = undefined; |
| | | } |
| | | el.count = el.total; |
| | | el.name = el.type; |
| | | return el; |
| | | }); |
| | | this.overview1 = datas; |
| | | } |
| | | }).catch(error => { |
| | | console.log(error); |
| | | }) |
| | | // this.overview1 = [ |
| | | // {name: "我的任务", count: 15, warning: "已逾期11"}, |
| | | // {name: "立案与方案开发", count: 15, warning: "已逾期11"}, |
| | | // {name: "文献检索与筛选", count: 15, warning: "已逾期11"}, |
| | | // {name: "数据提取", count: 15, warning: "已逾期11"}, |
| | | // {name: "数据分析", count: 15, warning: "已逾期11"}, |
| | | // {name: "文稿撰写", count: 15, warning: "已逾期11"}, |
| | | // ]; |
| | | |
| | | this.sum_count = 345; |
| | | |
| | | this.tableData = [ |
| | | {id: "1111111", name: "检查搜索肯德基传送"}, |
| | | {id: "1111111", name: "检查搜索肯德基传送"}, |
| | | {id: "1111111", name: "检查搜索肯德基传送"}, |
| | | {id: "1111111", name: "检查搜索肯德基传送"}, |
| | | {id: "1111111", name: "检查搜索肯德基传送"}, |
| | | {id: "1111111", name: "检查搜索肯德基传送"}, |
| | | {id: "1111111", name: "检查搜索肯德基传送"}, |
| | | {id: "1111111", name: "检查搜索肯德基传送"}, |
| | | {id: "1111111", name: "检查搜索肯德基传送"}, |
| | | {id: "1111111", name: "检查搜索肯德基传送"}, |
| | | ]; |
| | | |
| | | |
| | | this.card3Count = { |
| | | sum: 345, //总任务 |
| | | complete: 200, //已完成 |
| | | sum1: 20, //昨日总任务 |
| | | sum2: 16, |
| | | unfinished1: 10, //昨日未完成 |
| | | unfinished2: 6, |
| | | complete1: 10, //昨日已完成 |
| | | complete2: 10 |
| | | }; |
| | | this.card3Count.rate = Math.round(this.card3Count.complete/this.card3Count.sum * 100); |
| | | this.card3Count.rate1 = Math.round(this.card3Count.complete1/this.card3Count.sum1 * 100); |
| | | this.card3Count.rate2 = Math.round(this.card3Count.complete2/this.card3Count.sum2 * 100); |
| | | // this.card3Count = { |
| | | // total: 345, //总任务 |
| | | // deal: 200, //已完成 |
| | | // yesTotal: 20, //昨日总任务 |
| | | // nowTotal: 16, |
| | | // unfinished1: 10, //昨日未完成 |
| | | // unfinished2: 6, |
| | | // yesDeal: 10, //昨日已完成 |
| | | // nowDeal: 10 |
| | | // }; |
| | | |
| | | }, |
| | | |
| | |
| | | |
| | | setActiveTableData(currentRow, oldCurrentRow) { |
| | | this.activeTableData = currentRow; |
| | | this.$axios.get("/api/scheme/daywork/" + currentRow.id) |
| | | .then(data_ => { |
| | | console.log(data_); |
| | | if (data_.data.success) { |
| | | var datas = data_.data.data; |
| | | this.card3Count = datas; |
| | | |
| | | this.card3Count.rate = Math.round(this.card3Count.deal/(this.card3Count.total == 0 ? 1: this.card3Count.total) * 100); |
| | | this.card3Count.rate1 = Math.round(this.card3Count.yesDeal/(this.card3Count.yesTotal == 0 ? 1: this.card3Count.yesTotal) * 100); |
| | | this.card3Count.rate2 = Math.round(this.card3Count.nowDeal/(this.card3Count.nowTotal == 0 ? 1: this.card3Count.nowTotal) * 100); |
| | | |
| | | } |
| | | }).catch(error => { |
| | | console.log(error); |
| | | }) |
| | | }, |
| | | |
| | | initChart(val) { |
| | | if(!val){ |
| | | return; |
| | | } |
| | | this.typeChart.setOption({ |
| | | |
| | | backgroundColor: '#fff', |
| | | grid: { |
| | | top: '22%', |
| | | right: '2%', |
| | | left: '2%', |
| | | bottom: '18%' |
| | | }, |
| | | xAxis: [{ |
| | | type: 'category', |
| | | color: '#59588D', |
| | | data: ["未开始","进行中","已延期","已结束"], |
| | | axisLabel: { |
| | | margin: 8, |
| | | color: '#000', |
| | | textStyle: { |
| | | fontSize: 12 |
| | | }, |
| | | }, |
| | | axisLine: { |
| | | show:false, |
| | | |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | }], |
| | | yAxis: [{ |
| | | |
| | | axisLabel: { |
| | | show:false, |
| | | |
| | | }, |
| | | axisLine: { |
| | | show:false, |
| | | |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | splitLine: { |
| | | show:false, |
| | | |
| | | } |
| | | }], |
| | | series: [{ |
| | | type: 'bar', |
| | | data: val, |
| | | barWidth: '20px', |
| | | itemStyle: { |
| | | normal: { |
| | | color: "#409EFF", |
| | | barBorderRadius: [30, 30, 0, 0], |
| | | } |
| | | }, |
| | | label: { |
| | | normal: { |
| | | show: true, |
| | | fontSize: 18, |
| | | fontWeight: 'bold', |
| | | color: '#333', |
| | | position: 'top', |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | |
| | | }); |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | |
| | | <div style="float: left; width: 100%; height: 50px;"> |
| | | <span>请选择项目:</span> |
| | | <el-select @change="selectChange_" filterable v-model="value" placeholder="请选择" size="small"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | |
| | | |
| | | |
| | | |
| | | </div> |
| | | <div style="float: left; margin-left: 1%; width: 69%; height: 70vh; "> |
| | | <div class="z_shadow" style="float: left; margin: 10px; margin-top: 0px; width: 46%; height: 43%; border: 1px solid #e4eef9;"></div> |
| | | <div class="z_shadow" style="float: left; margin: 10px; margin-top: 0px; width: 46%; height: 43%; border: 1px solid #e4eef9;"></div> |
| | | <div class="z_shadow" style="float: left; margin: 10px; width: 46%; height: 43%; border: 1px solid #e4eef9;"></div> |
| | | <div class="z_shadow" style="float: left; margin: 10px; margin-top: 0px; width: 46%; height: 43%; border: 1px solid #e4eef9;"> |
| | | <div id="myChart" :style="{width: '100%', height: '100%'}"></div> |
| | | </div> |
| | | <div class="z_shadow" style="float: left; margin: 10px; margin-top: 0px; width: 46%; height: 43%; border: 1px solid #e4eef9;overflow: auto;padding: 5px;"> |
| | | <el-timeline :reverse="reverse"> |
| | | <el-timeline-item v-for="(deal, index) in deals" :key="index" :timestamp="deal.createTime"> |
| | | {{deal.desp}} |
| | | </el-timeline-item> |
| | | </el-timeline> |
| | | |
| | | </div> |
| | | <div class="z_shadow" style="float: left; margin: 10px; width: 46%; height: 43%; border: 1px solid #e4eef9;"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="6" v-for="(oneUser, index) in userList" :key="index"><div class="grid-content bg-purple"> |
| | | <i class="el-icon-user-solid"></i> |
| | | <span>{{oneUser.name}}</span></div></el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="z_shadow" style="float: left; margin: 10px; padding: 10px; box-sizing: border-box; width: 46%; height: 43%; border: 1px solid #e4eef9;"> |
| | | <h3 style="margin: 0px;">文档库</h3> |
| | | <div class="files_div"> |
| | | <div style="width: 0px; height: 0px;"> |
| | | <iframe ref="frame_export" style="width: 0px; height: 0px;"></iframe> |
| | | <iframe ref="frame_export" style="width: 0px; height: 0px;"></iframe> |
| | | </div> |
| | | <div v-if="fileLevel > 0"> |
| | | <el-button type="text" size="mini" @click="upFile_click">上一级</el-button> |
| | | <el-button type="text" size="mini" @click="upFile_click">上一级</el-button> |
| | | </div> |
| | | <div v-for="(file, k) in fileList" :key="k" @click="file_click(file)" class="file_div"> |
| | | <i v-if="file.type==='isfiles'" class="el-icon-folder"></i> |
| | | <i v-else-if="file.type==='isfile'" class="el-icon-tickets"></i> |
| | | <span>{{file.name}}</span> |
| | | </div> |
| | | |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | |
| | | export default { |
| | | |
| | | |
| | | data() { |
| | | return { |
| | | options: [ |
| | | { |
| | | value: '选项1', |
| | | label: '项目1' |
| | | }, { |
| | | value: '选项2', |
| | | label: '项目2' |
| | | }, { |
| | | value: '选项3', |
| | | label: '项目3' |
| | | }, { |
| | | value: '选项4', |
| | | label: '项目4' |
| | | }, { |
| | | value: '选项5', |
| | | label: '项目5' |
| | | } |
| | | ], |
| | | options: [], |
| | | deals: [], |
| | | value: '', |
| | | dialog_1: false, |
| | | fileLevel: 0, |
| | | fileList: [], |
| | | |
| | | |
| | | task_itm: [ |
| | | {'id': "111_1", 'name': "立题服务", desp: "描述看到静安寺", 'state': "进行中"}, // |
| | | {'id': "111_2", 'name': "方案开发服务", desp: "描述看到静安寺", 'state': "进行中"}, |
| | | {'id': "111_2", 'name': "方案开发服务", desp: "描述看到静安寺", 'state': "进行中"}, |
| | | {'id': "111_2", 'name': "方案开发服务", desp: "描述看到静安寺", 'state': "进行中"}, |
| | | {'id': "111_2", 'name': "方案开发服务", desp: "描述看到静安寺", 'state': "进行中"}, |
| | | {'id': "111_2", 'name': "方案开发服务", desp: "描述看到静安寺", 'state': "进行中"}, |
| | | {'id': "111_2", 'name': "方案开发服务", desp: "描述看到静安寺", 'state': "进行中"}, |
| | | {'id': "111_2", 'name': "方案开发服务", desp: "描述看到静安寺", 'state': "进行中"}, |
| | | {'id': "111_2", 'name': "方案开发服务", desp: "描述看到静安寺", 'state': "进行中"}, |
| | | {'id': "111_2", 'name': "方案开发服务", desp: "描述看到静安寺", 'state': "进行中"}, |
| | | {'id': "111_2", 'name': "方案开发服务", desp: "描述看到静安寺", 'state': "进行中"}, |
| | | |
| | | ] |
| | | |
| | | ], |
| | | myChart: undefined, |
| | | userList: [], |
| | | grandPa:"", |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.initSelect(); |
| | | |
| | | let fileList1 = [ |
| | | {name: "文件名称1", type: "isfile", path: ""}, |
| | | {name: "文件名称2", type: "isfile", path: ""}, |
| | | {name: "文件夹名称", type: "isfiles", path: ""}, |
| | | ]; |
| | | this.myChart = this.$echarts.init(document.getElementById('myChart')) |
| | | let fileList1 = [{ |
| | | name: "文件名称1", |
| | | type: "isfile", |
| | | path: "" |
| | | }, |
| | | { |
| | | name: "文件名称2", |
| | | type: "isfile", |
| | | path: "" |
| | | }, |
| | | { |
| | | name: "文件夹名称", |
| | | type: "isfiles", |
| | | path: "" |
| | | }, |
| | | ]; |
| | | this.fileList = fileList1; |
| | | this.initChart(); |
| | | }, |
| | | |
| | | |
| | | methods: { |
| | | initSelect() { |
| | | var me = this; |
| | | this.$axios.get("/api/scheme/all") |
| | | .then(data_ => { |
| | | console.log(data_); |
| | | if(data_.data.success){ |
| | | if (data_.data.success) { |
| | | me.options = []; |
| | | var datas = data_.data.data; |
| | | datas.forEach(function(one){ |
| | | datas.forEach(function(one) { |
| | | var item = { |
| | | value:one.id, |
| | | label:one.name |
| | | } |
| | | value: one.id, |
| | | label: one.name |
| | | } |
| | | me.options.push(item); |
| | | }); |
| | | } |
| | |
| | | }) |
| | | }, |
| | | file_click(file) { |
| | | if (file.type == 'isfiles') { |
| | | let fileList2 = [ |
| | | {name: "子文件名称1", type: "isfile", path: ""}, |
| | | {name: "子文件名称2", type: "isfile", path: ""}, |
| | | {name: "子文件夹名称", type: "isfiles", path: ""}, |
| | | ]; |
| | | this.fileList = fileList2; |
| | | this.fileLevel ++; |
| | | } |
| | | else { |
| | | if (!file.file) { |
| | | |
| | | let url = "/api/file/child" ; |
| | | this.$axios.get(url,{ |
| | | params:{ |
| | | path:encodeURI(file.path) |
| | | } |
| | | }) |
| | | .then(data_ => { |
| | | console.log(data_); |
| | | if (data_.data.success) { |
| | | |
| | | var datas = data_.data.data; |
| | | this.fileList = datas; |
| | | if(datas.length > 0) { |
| | | this.grandPa = datas[0].grandPa; |
| | | } |
| | | |
| | | this.fileLevel++; |
| | | } |
| | | }).catch(error => { |
| | | console.log(error); |
| | | }) |
| | | |
| | | } else { |
| | | //下载 |
| | | this.$refs.frame_export.src = ""; |
| | | if (file.path) { |
| | | let url = "/api/api/file/downloadPath?path=" + encodeURI(file.path); |
| | | this.$refs.frame_export.src = url; |
| | | } |
| | | |
| | | } |
| | | }, |
| | | upFile_click() { |
| | | this.fileLevel --; |
| | | if(!this.grandPa) { |
| | | this.$message({message:'请刷新界面后重试', type: 'warning'}); |
| | | return; |
| | | } |
| | | let url = "/api/file/child" ; |
| | | this.$axios.get(url,{ |
| | | params:{ |
| | | path:encodeURI(this.grandPa) |
| | | } |
| | | }) |
| | | .then(data_ => { |
| | | console.log(data_); |
| | | if (data_.data.success) { |
| | | |
| | | var datas = data_.data.data; |
| | | this.fileList = datas; |
| | | this.fileLevel--; |
| | | } |
| | | }).catch(error => { |
| | | console.log(error); |
| | | }) |
| | | |
| | | let fileList2 = [ |
| | | {name: "文件名称1", type: "isfile", path: ""}, |
| | | {name: "文件名称2", type: "isfile", path: ""}, |
| | | {name: "文件夹名称", type: "isfiles", path: ""}, |
| | | ]; |
| | | this.fileList = fileList2; |
| | | }, |
| | | |
| | | |
| | | Cancel() { |
| | | |
| | | |
| | | }, |
| | | selectChange_(val) { |
| | | let me = this; |
| | | let url = "/api/scheme/getSchemeInfo/" + this.value; |
| | | this.$axios.get(url,{ |
| | | |
| | | this.$axios.get(url, { |
| | | |
| | | }).then(data_ => { |
| | | console.log(data_); |
| | | // 图 |
| | | // 记录 |
| | | // 人员 |
| | | // 详情 |
| | | //目录 |
| | | }).catch(error =>{ |
| | | console.log(error); |
| | | console.log(data_); |
| | | if (data_.data.success) { |
| | | let result = data_.data.data; |
| | | me.initChart(result.option); |
| | | me.userList = result.users; |
| | | result.paths = result.paths.map(el => { |
| | | el.path = decodeURI(el.path); |
| | | return el; |
| | | }); |
| | | result.record = result.record.map(el => { |
| | | var imoment = this.$moment(el.createTime); |
| | | // 格式化成,年月日 |
| | | let iformat = imoment.format('YYYY-MM-DD HH:mm:ss'); |
| | | el.createTime = iformat; |
| | | if(!el.desp) { |
| | | el.desp = "暂无描述"; |
| | | } |
| | | return el; |
| | | }); |
| | | result.scheme = result.scheme.map(el => { |
| | | if(el.finish) { |
| | | el.state="已结束"; |
| | | }else if(el.delay) { |
| | | el.state="已延期"; |
| | | }else if(el.edit) { |
| | | el.state="待启动"; |
| | | }else { |
| | | el.state="进行中"; |
| | | } |
| | | return el; |
| | | }); |
| | | |
| | | me.fileList = result.paths; |
| | | me.task_itm = result.scheme; |
| | | me.deals = result.record; |
| | | } |
| | | }).catch(error => { |
| | | console.log(error); |
| | | }) |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | }, |
| | | initChart(datas) { |
| | | this.myChart.setOption({ |
| | | backgroundColor: '#FFF', |
| | | grid: { |
| | | top: '12%', |
| | | bottom: '19%', |
| | | left: '8%', |
| | | right: '8%' |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | label: { |
| | | show: false |
| | | } |
| | | }, |
| | | legend: { |
| | | data: ["参考", "实际"], |
| | | }, |
| | | xAxis: { |
| | | boundaryGap: false, //默认,坐标轴留白策略 |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | interval: 0, //隔几个显示 |
| | | rotate: 30, |
| | | showMinLabel: true, |
| | | color: "#393C40" |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | alignWithLabel: true |
| | | }, |
| | | data: [ |
| | | '12-3', '12-4', '12-5', '12-6', '12-7', '12-8', '12-9', '12-10', '12-11' |
| | | ] |
| | | }, |
| | | yAxis: { |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | splitLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | type: 'dashed', |
| | | color: 'rgba(33,148,246,0.2)' |
| | | } |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | splitArea: { |
| | | show: true, |
| | | areaStyle: { |
| | | color: 'rgb(245,250,254)' |
| | | } |
| | | } |
| | | }, |
| | | series: [{ |
| | | name: "实际", |
| | | type: 'line', |
| | | symbol: 'circle', |
| | | symbolSize: 7, |
| | | lineStyle: { |
| | | color: '#0c64eb', |
| | | shadowBlur: 12, |
| | | shadowColor: '#0c64eb', |
| | | shadowOffsetX: 1, |
| | | shadowOffsetY: 1 |
| | | }, |
| | | itemStyle: { |
| | | color: '#0c64eb', |
| | | borderWidth: 1, |
| | | borderColor: '#FFF' |
| | | }, |
| | | label: { |
| | | show: false, |
| | | distance: 1, |
| | | emphasis: { |
| | | show: true, |
| | | offset: [25, -2], |
| | | //borderWidth:1, |
| | | // borderColor:'rgb(33,148,246)', |
| | | //formatter:'{bg|{b}\n数据量:{c}}', |
| | | |
| | | color: '#FFF', |
| | | padding: [8, 20, 8, 6], |
| | | //width:60, |
| | | height: 36, |
| | | formatter: function(params) { |
| | | var name = params.name; |
| | | var value = params.data; |
| | | var str = name + '\n实际:' + value; |
| | | return str; |
| | | }, |
| | | rich: { |
| | | bg: { |
| | | |
| | | width: 78, |
| | | //height:42, |
| | | color: '#FFF', |
| | | padding: [20, 0, 20, 10] |
| | | }, |
| | | br: { |
| | | width: '100%', |
| | | height: '100%' |
| | | } |
| | | |
| | | } |
| | | } |
| | | }, |
| | | data: [ |
| | | 20, 18, 17, 10, 7, 4, |
| | | ] |
| | | }, |
| | | { |
| | | name: "参考", |
| | | type: 'line', |
| | | symbol: 'circle', |
| | | symbolSize: 7, |
| | | lineStyle: { |
| | | color: '#a6a8b6', |
| | | shadowBlur: 12, |
| | | shadowColor: '#a6a8b6', |
| | | shadowOffsetX: 1, |
| | | shadowOffsetY: 1 |
| | | }, |
| | | itemStyle: { |
| | | color: '#a6a8b6', |
| | | borderWidth: 1, |
| | | borderColor: '#FFF' |
| | | }, |
| | | label: { |
| | | show: false, |
| | | distance: 1, |
| | | emphasis: { |
| | | show: true, |
| | | offset: [25, -2], |
| | | //borderWidth:1, |
| | | // borderColor:'rgb(33,148,246)', |
| | | //formatter:'{bg|{b}\n数据量:{c}}', |
| | | |
| | | color: '#FFF', |
| | | padding: [8, 20, 8, 6], |
| | | //width:60, |
| | | height: 36, |
| | | formatter: function(params) { |
| | | var name = params.name; |
| | | var value = params.data; |
| | | var str = name + '\n参考:' + value; |
| | | return str; |
| | | }, |
| | | |
| | | } |
| | | }, |
| | | data: [ |
| | | 20, 17.5, 15, 12.5, 10, |
| | | 7.5, 5, 2.5, 0 |
| | | ] |
| | | } |
| | | ] |
| | | }); |
| | | }, |
| | | |
| | | }, |
| | | |
| | | } |
| | | </script> |
| | | |
| | |
| | | text-align: left; |
| | | background-color: #dee0e2; |
| | | } |
| | | |
| | | .files_div{ |
| | | |
| | | .files_div { |
| | | height: 90%; |
| | | overflow: auto; |
| | | } |
| | | |
| | | .file_div { |
| | | width: 30%; |
| | | height: 20px; |
| | | float: left; |
| | | } |
| | | |
| | | .file_div :hover { |
| | | cursor: pointer; |
| | | font-weight: bold; |
| | |
| | | <span>{{task_itm.desp}}</span> |
| | | <div v-for="(type_itm, k_) in task_itm.children" :key="k_" class="right_row_"> |
| | | <span>{{k_+1}}、{{type_itm.typeStr}}</span> |
| | | <el-button size="mini" type="primary" style="float: right; margin-top: 10px;" @click="handleTask(type_itm.id, type_itm.mustAttach, type_itm)">处理任务</el-button> |
| | | <el-button size="mini" type="primary" v-if="userId === task_itm.userId" style="float: right; margin-top: 10px;" @click="handleTask(type_itm.id, type_itm.mustAttach, type_itm)">处理任务</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | ], |
| | | prop:'date' ,//对应日期字段名 |
| | | DayDataTree: [], |
| | | |
| | | userId:undefined, |
| | | dialog_1: false, |
| | | handleTaskType: {}, |
| | | upload_url: "", |
| | |
| | | let iformat = imoment.format('YYYY-MM'); |
| | | let systemDate = iformat + '-01 00:00:00'; |
| | | this.getDatedef(systemDate); |
| | | |
| | | this.userId = localStorage.getItem('userId'); |
| | | }, |
| | | |
| | | methods: { |
| | |
| | | this.$refs.upload.submit();//开始上传 |
| | | } |
| | | else { |
| | | var me = this; |
| | | let params = this.upData |
| | | let url = "/api/detail/deal/" + id; |
| | | this.$axios.get(url, { |
| | |
| | | }) |
| | | .then(data_ => { |
| | | console.log(data_); |
| | | let datas= data_.data.data; |
| | | datas = datas.map(el => { |
| | | var imoment = this.$moment(el.date); |
| | | // 格式化成,年月日 |
| | | let iformat = imoment.format('YYYY-MM-DD'); |
| | | el.date = iformat; |
| | | return el; |
| | | }) |
| | | this.datedef = datas; |
| | | if(data_.data.success) { |
| | | this.$message('处理成功'); |
| | | me.Cancel(); |
| | | }else { |
| | | this.$message({message:'处理任务失败', type: 'warning'}); |
| | | } |
| | | }).catch(error => { |
| | | console.log(error); |
| | | }); |
| | |
| | | |
| | | <div class="btn-line"> |
| | | <el-button type="primary" @click="addProject">新建项目</el-button> |
| | | <el-button type="primary" @click="editProject">编辑项目</el-button> |
| | | <el-button type="primary" @click="onSubmit">查看详情</el-button> |
| | | <el-button type="primary" v-if="editShow" @click="editProject">编辑项目</el-button> |
| | | <el-button type="primary" @click="showDetail">查看详情</el-button> |
| | | |
| | | </div> |
| | | |
| | |
| | | <el-dialog @close="Cancel" width="70%" top="50px" :visible.sync="dialog_1" append-to-body> |
| | | <newProject @closeNewProject="closeNewProject" v-bind:rowData="rowData" ref="newProject_"></newProject> |
| | | </el-dialog> |
| | | <el-dialog v-if="dialog_2" @close="Cancel2" width="70%" top="50px" :visible.sync="dialog_2" append-to-body> |
| | | <prodetail @closeNewProject="closeDetail" v-bind:rowData="detailData" ref="newProject2_"></prodetail> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import newProject from '../components/popup/newProject.vue' |
| | | import prodetail from '../components/popup/prodetail.vue' |
| | | export default { |
| | | |
| | | components: { |
| | | newProject |
| | | newProject, |
| | | prodetail |
| | | }, |
| | | data() { |
| | | return { |
| | | rowData:undefined, |
| | | editShow: true, |
| | | |
| | | loading_table: false, |
| | | query: "", |
| | | rowData:undefined, |
| | | detailData:undefined, |
| | | dialog_1: false, |
| | | dialog_2: false, |
| | | pagenum: 1, |
| | | pagesize: 15, |
| | | total: 0, |
| | | selected: undefined, |
| | | labelPosition: "left", |
| | | tableData: [], |
| | | userId:"", |
| | | assign:undefined, |
| | | formInline: { |
| | | user: '', |
| | | region: '' |
| | |
| | | }, |
| | | mounted() { //组件配置后,页面显示前。用于加载数据 |
| | | this.getData(); |
| | | this.userId = localStorage.getItem('userId'); |
| | | this.assign = localStorage.getItem('assign'); |
| | | }, |
| | | methods: { |
| | | Cancel() { |
| | | this.$refs.newProject_.Cancel(); |
| | | this.dialog_1 = false; |
| | | }, |
| | | Cancel2() { |
| | | this.dialog_2 = false; |
| | | this.closeDetail(); |
| | | }, |
| | | closeDetail() { |
| | | this.detailData = undefined; |
| | | }, |
| | | showDetail() { |
| | | if(!this.selected){ |
| | | |
| | | this.$message({message:'请选中一条未启动的项目', type: 'warning'}); |
| | | return; |
| | | } |
| | | this.dialog_2 = true; |
| | | }, |
| | | tableChange(val) { |
| | | this.selected = val; |
| | | this.detailData = val; |
| | | if (this.selected.userId == this.userId) { |
| | | this.editShow = true; |
| | | }else { |
| | | this.editShow = false; |
| | | } |
| | | |
| | | }, |
| | | handleCurrentChange(pageno) { |
| | | this.pagenum = pageno; |
| | |
| | | this.loading_table = true; |
| | | let pageno = this.pagenum; |
| | | let url = "/api/scheme/page/" + pageno; |
| | | |
| | | let params = { |
| | | pageSize: this.pagesize |
| | | }; |
| | | |
| | | if(this.assign) { |
| | | params.userId = this.userId; |
| | | } |
| | | if(query){ |
| | | params.name = query.name; |
| | | params.status = query.status; |
| | |
| | | }, |
| | | dateFormat_(row, colum, val ,index) { |
| | | return this.$moment(val).format('YYYY-MM-DD'); |
| | | |
| | | }, |
| | | status_(row, colum, val ,index) { |
| | | if(val == "working") { |
| | |
| | | |
| | | |
| | | },closeNewProject() { |
| | | this.dialog_1 = false |
| | | this.dialog_1 = false; |
| | | query_(); |
| | | }, |
| | | |
| | | } |
| | |
| | | this.$axios.get(url,{ |
| | | params |
| | | }).then(data_ => { |
| | | console.log(data_); |
| | | if(data_.data.success) { |
| | | localStorage.setItem('userId',data_.data.data.id); |
| | | localStorage.setItem('userName',data_.data.data.id); |
| | | localStorage.setItem('userName',data_.data.data.name); |
| | | localStorage.setItem('roleId',data_.data.data.roleCode); |
| | | localStorage.setItem('roleName',data_.data.data.roleName); |
| | | localStorage.setItem('departId',data_.data.data.departCode); |
| | |
| | | } |
| | | |
| | | }).catch(error =>{ |
| | | console.log(error); |
| | | }) |
| | | |
| | | |
| | |
| | | // 修改的配置 |
| | | // 将baseUrl: '/api',改为baseUrl: '/', |
| | | publicPath: '/', |
| | | outputDir: 'dist', |
| | | devServer: { |
| | | proxy: { |
| | | '/api/api': { |