diff --git a/hb_client/README-zh.md b/hb_client/README-zh.md index d248632..9701f92 100644 --- a/hb_client/README-zh.md +++ b/hb_client/README-zh.md @@ -1,6 +1,6 @@ # vue-admin-template -> 这是一个极简的 vue admin 管理后台。它只包含了 Element UI & axios & iconfont & permission control & lint,这些搭建后台必要的东西。 +> 这是一个极简的 vue admin 管理后台。它只包含了 Element UI & & iconfont & permission control & lint,这些搭建后台必要的东西。 [线上地址](http://panjiachen.github.io/vue-admin-template) diff --git a/hb_client/src/api/cms.js b/hb_client/src/api/cms.js new file mode 100644 index 0000000..ef35a86 --- /dev/null +++ b/hb_client/src/api/cms.js @@ -0,0 +1,38 @@ +import request from '@/utils/request' +//获取文章列表 +export function getArticles(data) { + return request({ + url: '/cms/article/', + method: 'get', + params: data + }) +} +//获取某个文章 +export function getArticle(id) { + return request({ + url: `/cms/article/${id}/`, + method: 'get', + }) +} +//新增文章 +export function createArticle(data) { + return request({ + url: '/cms/article/', + method: 'post', + data + }) +} +// +export function updateArticle(id,data) { + return request({ + url: `/cms/article/${id}/`, + method: 'put', + data + }) +} +export function deleteArticle(id) { + return request({ + url: `/cms/article/${id}/`, + method: 'delete' + }) +} diff --git a/hb_client/src/api/srm.js b/hb_client/src/api/srm.js index ea364db..83aed02 100644 --- a/hb_client/src/api/srm.js +++ b/hb_client/src/api/srm.js @@ -7,6 +7,14 @@ export function getPlanGantt(data) { params: data }) } +//计划数量统计 +export function planCount(data) { + return request({ + url: '/srm/plan/count/', + method: 'post', + data + }) +} //合格率 export function getProcessYield(data) { return request({ @@ -15,6 +23,14 @@ export function getProcessYield(data) { data }) } +//工序当前进度 +export function getProcessNow(data) { + return request({ + url: '/srm/process/now/', + method: 'post', + data + }) +} //到岗统计 export function getatwork(data) { return request({ @@ -24,3 +40,20 @@ export function getatwork(data) { }) } +//产品数量统计 +export function productCount(data) { + return request({ + url: '/srm/product/count/', + method: 'post', + data + }) +} +//订单数量统计 +export function orderCount(data) { + return request({ + url: '/srm/order/count/', + method: 'post', + data + }) +} + diff --git a/hb_client/src/router/index.js b/hb_client/src/router/index.js index 7a25709..1b9cb25 100644 --- a/hb_client/src/router/index.js +++ b/hb_client/src/router/index.js @@ -1,7 +1,7 @@ import Vue from 'vue' import Router from 'vue-router' -Vue.use(Router) +Vue.use(Router); /* Layout */ import Layout from '@/layout' @@ -608,6 +608,21 @@ export const asyncRoutes = [ }, ] }, + { + path: '/cms', + component: Layout, + redirect: '/cms/article', + name: '企业资讯', + meta: { title: '', icon: 'home', perms: ['cms_manage'] }, + children: [ + { + path: 'article', + name: 'article', + component: () => import('@/views/cms/article'), + meta: { title: '新闻资讯', icon: 'home', perms: ['article'] } + }, + ] + }, { path: '/system', component: Layout, diff --git a/hb_client/src/views/bigScreen/bottomRight.vue b/hb_client/src/views/bigScreen/bottomRight.vue index 51989cd..6481401 100644 --- a/hb_client/src/views/bigScreen/bottomRight.vue +++ b/hb_client/src/views/bigScreen/bottomRight.vue @@ -6,7 +6,7 @@
- 企业咨询 + 企业资讯
@@ -14,7 +14,10 @@
- +
@@ -26,7 +29,7 @@ export default { data () { return { cdata:{}, - config: { + /* config: { header: ['消息', '发布时间'], data: [ ['张思', '2022-03-05'], @@ -53,7 +56,7 @@ export default { index: false, // columnWidth: [50], align: ['center'] - } + }*/ } }, watch: { @@ -87,6 +90,14 @@ export default { deep: true } }, + props:{ + configArticle:{ + type:Object, + default:()=>{ + return {} + } + } + }, mounted () { this.drawTimingFn(); }, @@ -101,39 +112,7 @@ export default { }, 3600000); }, setData () { - this.config = { - header: ['消息', '发布时间'], - data: [ - ['张思', '2022-03-05'], - ['李森', '2022-03-05'], - ['王师', '2022-03-05'], - ['赵迪', '2022-03-05'], - ['孟津', '2022-03-05'], - ['张思', '2022-03-05'], - ['李森', '2022-03-05'], - ['王师', '2022-03-05'], - ['赵迪', '2022-03-05'], - ['孟津', '2022-03-05'], - ['孙东课', '2022-03-05'], - ['周神秘', '2022-03-05'], - ['吴老弟', '2022-03-05'], - ['郑成功', '2022-03-05'], - ['冯宝宝', '2022-03-05'], - ['孙东课', '2022-03-05'], - ['周神秘', '2022-03-05'], - ['吴老弟', '2022-03-05'], - ['郑成功', '2022-03-05'], - ['冯宝宝', '2022-03-05'] - ], - rowNum: 15, //表格行数 - headerHeight: 35, - headerBGC: '#0f1325', //表头 - oddRowBGC: '#0f1325', //奇数行 - evenRowBGC: '#171c33', //偶数行 - index: false, - // columnWidth: [50], - align: ['center'] - } + this.config = this.configArticle; } } }; diff --git a/hb_client/src/views/bigScreen/centerLeft1.vue b/hb_client/src/views/bigScreen/centerLeft1.vue index 98ba8f4..9b84107 100644 --- a/hb_client/src/views/bigScreen/centerLeft1.vue +++ b/hb_client/src/views/bigScreen/centerLeft1.vue @@ -21,9 +21,9 @@
@@ -45,63 +45,12 @@ data() { return { options: {}, - numberData: [ - { - number: { - number: [15], - toFixed: 1, - textAlign: 'left', - content: '{nt}', - style: { - fontSize: 24 - } - }, - text: '今日产量' - }, - { - number: { - number: [1144], - toFixed: 1, - textAlign: 'left', - content: '{nt}', - style: { - fontSize: 24 - } - }, - text: '年累计完成量' - }, - { - number: { - number: [361], - toFixed: 1, - textAlign: 'left', - content: '{nt}', - style: { - fontSize: 24 - } - }, - text: '在制品数量' - }, - { - number: { - number: [361], - toFixed: 1, - textAlign: 'left', - content: '{nt}', - style: { - fontSize: 24 - } - }, - text: '不合格数量' - }, - - ], cdata: { xData: ["冷加工", "热弯", "化学钢化"], seriesData: [ {value: 25, name: "冷加工"}, {value: 20, name: "热弯"}, - {value: 35, name: "化学钢化"} + {value: 30, name: "化学钢化"} ] } } @@ -109,6 +58,14 @@ components: { Echart }, + props:{ + numberData:{ + type:Array, + default:()=>{ + return [] + } + } + }, mounted() { this.changeTiming() }, @@ -166,8 +123,12 @@ }, 3000) }, changeNumber() { - this.numberData.forEach((item, index) => { - item.number.number[0] += ++index + this.numberData.forEach((item) => { + /*item.number.number[0] += ++index + item.number = {...item.number}*/ + let num = 0; + item.number.number[0] = 0; + item.number.number[0] = num; item.number = {...item.number} }) } diff --git a/hb_client/src/views/bigScreen/centerLeft2.vue b/hb_client/src/views/bigScreen/centerLeft2.vue index 76caa5b..1d75039 100644 --- a/hb_client/src/views/bigScreen/centerLeft2.vue +++ b/hb_client/src/views/bigScreen/centerLeft2.vue @@ -21,9 +21,9 @@
@@ -45,63 +45,13 @@ data() { return { options: {}, - numberData: [ - { - number: { - number: [15], - toFixed: 1, - textAlign: 'left', - content: '{nt}', - style: { - fontSize: 24 - } - }, - text: '今日产量' - }, - { - number: { - number: [1144], - toFixed: 1, - textAlign: 'left', - content: '{nt}', - style: { - fontSize: 24 - } - }, - text: '年累计完成量' - }, - { - number: { - number: [361], - toFixed: 1, - textAlign: 'left', - content: '{nt}', - style: { - fontSize: 24 - } - }, - text: '在制品数量' - }, - { - number: { - number: [361], - toFixed: 1, - textAlign: 'left', - content: '{nt}', - style: { - fontSize: 24 - } - }, - text: '不合格数量' - }, - ], cdata: { xData: ["镀膜", "夹层", "包边", "装框"], seriesData: [ {value: 10, name: "镀膜"}, - {value: 5, name: "夹层"}, + {value: 13, name: "夹层"}, {value: 15, name: "包边"}, - {value: 25, name: "装框"} + {value: 20, name: "装框"} ] } } @@ -109,6 +59,14 @@ components: { Echart }, + props:{ + numberDataTwo:{ + type:Array, + default:()=>{ + return [] + } + } + }, mounted() { this.changeTiming() }, @@ -164,8 +122,10 @@ }, 3000) }, changeNumber() { - this.numberData.forEach((item, index) => { - item.number.number[0] += ++index + this.numberDataTwo.forEach((item) => { + let num = 0; + item.number.number[0] = 0; + item.number.number[0] = num; item.number = {...item.number} }) } diff --git a/hb_client/src/views/bigScreen/index.vue b/hb_client/src/views/bigScreen/index.vue index ee5698a..94daa33 100644 --- a/hb_client/src/views/bigScreen/index.vue +++ b/hb_client/src/views/bigScreen/index.vue @@ -50,45 +50,61 @@
-
+
-
+ +
+
- +
+
- +
- -
- + +
+ - +
- - + + - +
@@ -110,8 +126,9 @@ import bottomRight from './bottomRight' import {getPlanGantt} from "@/api/srm"; import {getProductionplanList} from "@/api/pm"; - import {getProcessYield} from "@/api/srm"; + import {getProcessYield,productCount,getProcessNow,planCount,orderCount} from "@/api/srm"; import {getContractList, getOrderList} from "@/api/sam"; + import {getArticles} from "@/api/cms"; export default { mixins: [drawMixin], @@ -236,7 +253,7 @@ unit: '%' }, water: { - data: [24, 45], + data: [45, 90], shape: 'roundRect', formatter: '{value}%', waveNum: 3 @@ -277,18 +294,9 @@ }, //人员到岗 userConfig: { - header: ['姓名', '部门', '到岗情况'], + header: ['姓名', '到岗情况'], data: [ - ['张思', '一车间', "已到岗"], - ['李森', '一车间', "已到岗"], - ['王师', '一车间', "未到岗"], - ['赵迪', '一车间', "已到岗"], - ['孟津', '一车间', "已到岗"], - ['孙东课', '一车间', "已到岗"], - ['周神秘', '二车间', "已到岗"], - ['吴老弟', '二车间', "未到岗"], - ['郑成功', '二车间', "已到岗"], - ['冯宝宝', '二车间', "已到岗"] + ['冯宝宝', "已到岗"] ], rowNum: 7, //表格行数 headerHeight: 35, @@ -296,6 +304,127 @@ oddRowBGC: '#0f1325', //奇数行 evenRowBGC: '#171c33', //偶数行 index: false, + columnWidth: [70], + align: ['center'] + }, + //车间一 + numberData: [ + { + number: { + number: [0], + toFixed: 0, + textAlign: 'left', + content: '{nt}', + style: { + fontSize: 24 + } + }, + text: '今日产量' + }, + { + number: { + number: [0], + toFixed: 0, + textAlign: 'left', + content: '{nt}', + style: { + fontSize: 24 + } + }, + text: '年累计完成量' + }, + { + number: { + number: [0], + toFixed: 0, + textAlign: 'left', + content: '{nt}', + style: { + fontSize: 24 + } + }, + text: '在制品数量' + }, + { + number: { + number: [0], + toFixed: 0, + textAlign: 'left', + content: '{nt}', + style: { + fontSize: 24 + } + }, + text: '不合格数量' + }, + + ], + limitedOne:false, + //车间二 + numberDataTwo: [ + { + number: { + number: [0], + toFixed: 0, + textAlign: 'left', + content: '{nt}', + style: { + fontSize: 24 + } + }, + text: '今日产量' + }, + { + number: { + number: [0], + toFixed: 0, + textAlign: 'left', + content: '{nt}', + style: { + fontSize: 24 + } + }, + text: '年累计完成量' + }, + { + number: { + number: [0], + toFixed: 0, + textAlign: 'left', + content: '{nt}', + style: { + fontSize: 24 + } + }, + text: '在制品数量' + }, + { + number: { + number: [0], + toFixed: 0, + textAlign: 'left', + content: '{nt}', + style: { + fontSize: 24 + } + }, + text: '不合格数量' + }, + + ], + limitedTwo:false, + configArticle: { + header: ['标题','置顶','作者', '发布时间'], + data: [ + ['郑成功', '2022-03-05'], + ['冯宝宝', '2022-03-05'] + ], + rowNum: 15, //表格行数 + headerHeight: 40, + headerBGC: '#0f1325', //表头 + oddRowBGC: '#0f1325', //奇数行 + evenRowBGC: '#171c33', //偶数行 + index: false, // columnWidth: [50], align: ['center'] }, @@ -336,6 +465,9 @@ that.getCenterData(); that.getCenterRight2Data(); that.getUserList(); + that.getOneData();//车间一 + that.getTwoData();//车间二 + that.getArticle(); }, beforeDestroy() { clearInterval(this.timing) @@ -365,9 +497,12 @@ }, getCenterData() { let that = this; + let dat = new Date(); + let Year = dat.getFullYear(); + let month = dat.getMonth() + 1; + let searchTime = Year + '-' + month + '-01'; that.numberShow = false; - //合同 - getContractList({ + getContractList({ //合同 type: 'big_screen', page: 1, page_size: 1, @@ -380,13 +515,47 @@ page: 1, page_size: 1, create_time_start: that.create_time_start - }).then((response) => { - if (response.data) { - that.titleItem[1].number.number[0] = response.data.count; - getProductionplanList({type: 'big_screen', page: 1, page_size: 1, tag: 'working'}).then((response) => { - if (response.data) { - that.titleItem[2].number.number[0] = response.data.count; - that.numberShow = true; + }).then((respons) => {//订单 + if (respons.data) { + that.titleItem[1].number.number[0] = respons.data.count; + getProductionplanList({type: 'big_screen', page: 1, page_size: 1, tag: 'working'}).then((respon) => { + if (respon.data) { + that.titleItem[2].number.number[0] = respon.data.count; + productCount({type: 'big_screen',datetime_start:searchTime,tag:1}).then(respo=>{ + if (respo.data) { + that.titleItem[3].number.number[0] = respo.data.count_selled; + that.titleItem[4].number.number[0] = respo.data.count_notok; + let mtestCount = respo.data.count_mtestok + respo.data.count_mtestnotok; + that.titleItem[5].number.number[0] = Math.floor((respo.data.count_mtestok/mtestCount)*100); + that.rate[0].tips = Math.floor((respo.data.count_ok/respo.data.count)*100); + getProcessNow({type: 'big_screen'}).then(res=>{//工序生产进度 + if (res.data) { + let list = res.data; + let data = []; + list.forEach(item => { + let obj = new Object(); + obj.name = item.process__name; + let value = Math.floor(item.count/item.count_real * 100); + obj.value = value>100?100:value; + data.push(obj) + }); + that.ranking.data = data; + //任务完成率 + /* planCount({type: 'big_screen'}).then(res=>{ + debugger; + })*/ + //准时交付率 + /*getOrderList({type: 'big_screen',page: 1, page_size: that.warningPageSize, tag: 'near_delivery'}).then((response) => { + if (response.data) { + that.warningList = response.data.results; + that.warningTotal = response.data.count; + } + });*/ + that.numberShow = true; + } + }) + } + }); } }); } @@ -418,6 +587,52 @@ } }); }, + //一车间 + getOneData(){ + let that = this; + that.limitedOne = false; + let dat = new Date(); + let Year = dat.getFullYear(); + let month = dat.getMonth() + 1; + let searchTime = Year + '-' + month + '-01'; + let searchYear = Year + '-' + '01-01'; + productCount({type: 'big_screen',datetime_start:searchTime,tag:2,dept:1}).then(response=>{ + if (response.data) { + that.numberData[0].number.number[0] = response.data.count; + that.numberData[2].number.number[0] = response.data.count_doing; + that.numberData[3].number.number[0] = response.data.count_notok; + productCount({type: 'big_screen',datetime_start:searchYear,tag:2,dept:1}).then(res=>{ + if (res.data) { + that.numberData[1].number.number[0] = res.data.count; + that.limitedOne = true; + } + }); + } + }); + }, + //二车间 + getTwoData(){ + let that = this; + that.limitedTwo = false; + let dat = new Date(); + let Year = dat.getFullYear(); + let month = dat.getMonth() + 1; + let searchTime = Year + '-' + month + '-01'; + let searchYear = Year + '-' + '01-01'; + productCount({type: 'big_screen',datetime_start:searchTime,tag:2,dept:2}).then(response=>{ + if (response.data) { + that.numberDataTwo[0].number.number[0] = response.data.count; + that.numberDataTwo[2].number.number[0] = response.data.count_doing; + that.numberDataTwo[3].number.number[0] = response.data.count_notok; + productCount({type: 'big_screen',datetime_start:searchYear,tag:2,dept:2}).then(res=>{ + if (res.data) { + that.numberDataTwo[1].number.number[0] = res.data.count; + that.limitedTwo = true; + } + }); + } + }); + }, //人员到岗情况列表 getUserList() { let that = this; @@ -429,7 +644,7 @@ list.forEach(item => { let obj = []; obj.push(item.name); - obj.push(item.dept_.name); + // obj.push(item.dept_.name); if (item.is_atwork) { obj.push("已到岗") } else { @@ -442,6 +657,32 @@ } }); }, + //企业资讯 + getArticle(){ + let that = this; + getArticles({type: 'big_screen',page:0}).then((response) => { + if (response.data) { + // this.configArticle = response.data; + let list = response.data; + let data=[]; + list.forEach(item => { + let obj = []; + obj.push(item.title); + if(item.is_top===false){ + obj.push('未置顶'); + }else{ + obj.push('已置顶'); + } + obj.push(item.author); + obj.push(item.create_time); + data.push(obj) + }); + that.configArticle.data=data; + } + }); + }, + + //任务完成进度 } } diff --git a/hb_client/src/views/cms/article.vue b/hb_client/src/views/cms/article.vue new file mode 100644 index 0000000..4aee150 --- /dev/null +++ b/hb_client/src/views/cms/article.vue @@ -0,0 +1,269 @@ + + + diff --git a/hb_client/src/views/dashboard/index.vue b/hb_client/src/views/dashboard/index.vue index 9103f1c..f5ace61 100644 --- a/hb_client/src/views/dashboard/index.vue +++ b/hb_client/src/views/dashboard/index.vue @@ -55,7 +55,7 @@
本月交付产品
- 30 + {{selledTotalCurrent}}
@@ -67,7 +67,7 @@
本月不合格产品
- 30 + {{notokTotalCurrent}}
@@ -337,7 +337,7 @@ import {getmaterialbatchList} from "@/api/inm"; import gantt from "@/components/Gantt/dashGantt"; import {getpEquipmentList} from "@/api/equipment"; - import {getProcessYield, getPlanGantt} from "@/api/srm"; + import {getProcessYield, getPlanGantt,productCount} from "@/api/srm"; import {getContractList, getOrderList} from "@/api/sam"; import {getToken} from '@/utils/auth' // get token from cookie export default { @@ -408,8 +408,8 @@ orderTotalCurrent: null, planTotalCount: null,//已排产任务总数 planTotalCurrent: null, - rderTotalCount: null,//累计交付产品总数 - derTotalCount: null,//累计不合格产品总数 + selledTotalCurrent: null,//累计交付产品总数 + notokTotalCurrent: null,//累计不合格产品总数 listLoadingPlan: false, listLoadingEm: false, listLoadingUser: false, @@ -490,22 +490,12 @@ that.currentDay = dat.getDate(); let create_time_start = that.currentYear + '-' + that.currentMonth + '-01'; //获取合同数 - getContractList({page: 1, page_size: 1}).then((response) => { - if (response.data) { - that.contractTotalCount = response.data.count; - } - }); getContractList({page: 1, page_size: 1, create_time_start: create_time_start}).then((response) => { if (response.data) { that.contractTotalCurrent = response.data.count; } }); //获取生产订单数 - getOrderList({page: 1, page_size: 1}).then((response) => { - if (response.data) { - that.orderTotalCount = response.data.count; - } - }); getOrderList({page: 1, page_size: 1, create_time_start: create_time_start}).then((response) => { if (response.data) { that.orderTotalCurrent = response.data.count; @@ -517,13 +507,19 @@ that.planTotalCount = response.data.count; } }); + //本月在制任务 getProductionplanList({page: 1, page_size: 1, tag: 'working'}).then((response) => { if (response.data) { that.planTotalCurrent = response.data.count; } }); - //获取交付产品 - + //本月交付产品&本月不合格产品 + productCount({datetime_start:create_time_start,tag:1}).then(respo=>{ + if (respo.data) { + that.selledTotalCurrent = respo.data.count_selled; + that.notokTotalCurrent = respo.data.count_notok; + } + }); //获取不合格产品 //获取成品率