Merge remote-tracking branch 'remotes/origin/ldeyun' into ldeyun

# Conflicts:
#	pages/login/login.vue
#	pages/views/zhongheguanli/zhiban/index.vue
This commit is contained in:
mnz 2025-01-23 08:37:57 +08:00
commit 3f29785a61
7 changed files with 536 additions and 334 deletions

View File

@ -1,3 +1,3 @@
# 开发环境 # 开发环境
# 请求接口地址 # 请求接口地址
VITE_REQUEST_BASE_URL = http://10.75.15.249:8080 VITE_REQUEST_BASE_URL = http://10.75.166.6:8080

View File

@ -1,123 +1,122 @@
{ {
"name" : "数智产销", "name": "数智产销",
"appid" : "__UNI__9F097F0", "appid": "__UNI__9F097F0",
"description" : "", "description": "",
"versionName" : "1.1.3", "versionName": "1.1.4",
"versionCode" : 20250120, "versionCode": 20250121,
"transformPx" : false, "transformPx": false,
/* 5+App */ /* 5+App */
"app-plus" : { "app-plus": {
"usingComponents" : true, "usingComponents": true,
"nvueStyleCompiler" : "uni-app", "nvueStyleCompiler": "uni-app",
"compilerVersion" : 3, "compilerVersion": 3,
"splashscreen" : { "splashscreen": {
"alwaysShowBeforeRender" : true, "alwaysShowBeforeRender": true,
"waiting" : true, "waiting": true,
"autoclose" : true, "autoclose": true,
"delay" : 0 "delay": 0
}, },
"compatible" : { "compatible": {
"ignoreVersion" : true "ignoreVersion": true
}, },
/* */ /* */
"modules" : { "modules": {
"Geolocation" : {}, "Geolocation": {},
"Fingerprint" : {}, "Fingerprint": {},
"Camera" : {}, "Camera": {},
"Barcode" : {} "Barcode": {}
}, },
/* */ /* */
"distribute" : { "distribute": {
/* android */ /* android */
"android" : { "android": {
"permissions" : [ "permissions": [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>", "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>", "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>", "<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>", "<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
] ]
}, },
/* ios */ /* ios */
"ios" : { "ios": {
"dSYMs" : false "dSYMs": false
}, },
/* SDK */ /* SDK */
"sdkConfigs" : { "sdkConfigs": {
"ad" : {}, "ad": {},
"geolocation" : { "geolocation": {
"system" : { "system": {
"__platform__" : [ "android" ] "__platform__": ["android"]
} }
} }
}, },
"icons" : { "icons": {
"android" : { "android": {
"hdpi" : "unpackage/res/icons/72x72.png", "hdpi": "unpackage/res/icons/72x72.png",
"xhdpi" : "unpackage/res/icons/96x96.png", "xhdpi": "unpackage/res/icons/96x96.png",
"xxhdpi" : "unpackage/res/icons/144x144.png", "xxhdpi": "unpackage/res/icons/144x144.png",
"xxxhdpi" : "unpackage/res/icons/192x192.png" "xxxhdpi": "unpackage/res/icons/192x192.png"
}, },
"ios" : { "ios": {
"appstore" : "unpackage/res/icons/1024x1024.png", "appstore": "unpackage/res/icons/1024x1024.png",
"ipad" : { "ipad": {
"app" : "unpackage/res/icons/76x76.png", "app": "unpackage/res/icons/76x76.png",
"app@2x" : "unpackage/res/icons/152x152.png", "app@2x": "unpackage/res/icons/152x152.png",
"notification" : "unpackage/res/icons/20x20.png", "notification": "unpackage/res/icons/20x20.png",
"notification@2x" : "unpackage/res/icons/40x40.png", "notification@2x": "unpackage/res/icons/40x40.png",
"proapp@2x" : "unpackage/res/icons/167x167.png", "proapp@2x": "unpackage/res/icons/167x167.png",
"settings" : "unpackage/res/icons/29x29.png", "settings": "unpackage/res/icons/29x29.png",
"settings@2x" : "unpackage/res/icons/58x58.png", "settings@2x": "unpackage/res/icons/58x58.png",
"spotlight" : "unpackage/res/icons/40x40.png", "spotlight": "unpackage/res/icons/40x40.png",
"spotlight@2x" : "unpackage/res/icons/80x80.png" "spotlight@2x": "unpackage/res/icons/80x80.png"
}, },
"iphone" : { "iphone": {
"app@2x" : "unpackage/res/icons/120x120.png", "app@2x": "unpackage/res/icons/120x120.png",
"app@3x" : "unpackage/res/icons/180x180.png", "app@3x": "unpackage/res/icons/180x180.png",
"notification@2x" : "unpackage/res/icons/40x40.png", "notification@2x": "unpackage/res/icons/40x40.png",
"notification@3x" : "unpackage/res/icons/60x60.png", "notification@3x": "unpackage/res/icons/60x60.png",
"settings@2x" : "unpackage/res/icons/58x58.png", "settings@2x": "unpackage/res/icons/58x58.png",
"settings@3x" : "unpackage/res/icons/87x87.png", "settings@3x": "unpackage/res/icons/87x87.png",
"spotlight@2x" : "unpackage/res/icons/80x80.png", "spotlight@2x": "unpackage/res/icons/80x80.png",
"spotlight@3x" : "unpackage/res/icons/120x120.png" "spotlight@3x": "unpackage/res/icons/120x120.png"
} }
} }
} }
} }
}, },
/* */ /* */
"quickapp" : {}, "quickapp": {},
/* */ /* */
"mp-weixin" : { "mp-weixin": {
"appid" : "", "appid": "",
"setting" : { "setting": {
"urlCheck" : false "urlCheck": false
}, },
"usingComponents" : true "usingComponents": true
}, },
"mp-alipay" : { "mp-alipay": {
"usingComponents" : true "usingComponents": true
}, },
"mp-baidu" : { "mp-baidu": {
"usingComponents" : true "usingComponents": true
}, },
"mp-toutiao" : { "mp-toutiao": {
"usingComponents" : true "usingComponents": true
}, },
"uniStatistics" : { "uniStatistics": {
"enable" : false "enable": false
}, },
"vueVersion" : "3" "vueVersion": "3"
} }
/* */ /* */

95
package-lock.json generated
View File

@ -1,95 +0,0 @@
{
"name": "cxc-szcx-uniapp",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"dependencies": {
"@dcloudio/uni-ui": "^1.5.6",
"base-64": "^1.0.0",
"dayjs": "^1.11.13",
"echarts": "^5.6.0"
}
},
"node_modules/@dcloudio/uni-ui": {
"version": "1.5.6",
"resolved": "https://registry.npmjs.org/@dcloudio/uni-ui/-/uni-ui-1.5.6.tgz",
"integrity": "sha512-jmb98PasFvZkrIDXGh94GbdWg2/jyhgs1HUG+bU8eyL7Ltias/5XBz4q8w9RXyWUfqepJRqapPA2IIQpLCuTIg==",
"license": "Apache-2.0"
},
"node_modules/base-64": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/base-64/-/base-64-1.0.0.tgz",
"integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="
},
"node_modules/dayjs": {
"version": "1.11.13",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
},
"node_modules/echarts": {
"version": "5.6.0",
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz",
"integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "2.3.0",
"zrender": "5.6.1"
}
},
"node_modules/tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
"license": "0BSD"
},
"node_modules/zrender": {
"version": "5.6.1",
"resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz",
"integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==",
"license": "BSD-3-Clause",
"dependencies": {
"tslib": "2.3.0"
}
}
},
"dependencies": {
"@dcloudio/uni-ui": {
"version": "1.5.6",
"resolved": "https://registry.npmjs.org/@dcloudio/uni-ui/-/uni-ui-1.5.6.tgz",
"integrity": "sha512-jmb98PasFvZkrIDXGh94GbdWg2/jyhgs1HUG+bU8eyL7Ltias/5XBz4q8w9RXyWUfqepJRqapPA2IIQpLCuTIg=="
},
"base-64": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/base-64/-/base-64-1.0.0.tgz",
"integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="
},
"dayjs": {
"version": "1.11.13",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
},
"echarts": {
"version": "5.6.0",
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz",
"integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==",
"requires": {
"tslib": "2.3.0",
"zrender": "5.6.1"
}
},
"tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
},
"zrender": {
"version": "5.6.1",
"resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz",
"integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==",
"requires": {
"tslib": "2.3.0"
}
}
}
}

View File

@ -109,7 +109,7 @@
username: username.value, username: username.value,
password: password.value, password: password.value,
captcha: 'app' captcha: 'app'
/*开发环境 end */ /*开发环境 end */
}).then((loginres) => { }).then((loginres) => {
if (loginres.success) { if (loginres.success) {
uni.setStorageSync('token', loginres.result.token) uni.setStorageSync('token', loginres.result.token)

View File

@ -2,7 +2,6 @@
<view> <view>
<scroll-view :scroll-y="true"> <scroll-view :scroll-y="true">
<uni-card> <uni-card>
<uni-title title="" type="h1" align="center"></uni-title>
<view> <view>
<uni-row> <uni-row>
<uni-col :span="11"><uni-title title="姓名 " align="left" type="h5"></uni-title></uni-col> <uni-col :span="11"><uni-title title="姓名 " align="left" type="h5"></uni-title></uni-col>
@ -34,6 +33,9 @@
:border="true" :data="ryDataList" @detail="detail"></zb-table> :border="true" :data="ryDataList" @detail="detail"></zb-table>
<uni-pagination :current="current" :pagerCount="pages" :total="total" prev-text="前一页" next-text="后一页" <uni-pagination :current="current" :pagerCount="pages" :total="total" prev-text="前一页" next-text="后一页"
:show-icon="false" @change="pagechange" /> :show-icon="false" @change="pagechange" />
<view>
<text class="example-info">当前页{{ current }}数据总量{{ total }}每页数据{{ pageSize }}</text>
</view>
</uni-card> </uni-card>
</scroll-view> </scroll-view>
@ -138,6 +140,7 @@
}) })
function detail(record) { function detail(record) {
uni.navigateTo({ uni.navigateTo({
url: "/pages/views/renliziyuan/renyuanxinxi/detail?data=" + encodeURIComponent(JSON.stringify(record)) url: "/pages/views/renliziyuan/renyuanxinxi/detail?data=" + encodeURIComponent(JSON.stringify(record))
}) })
@ -167,8 +170,7 @@
ryDataList.value = res.result.records ryDataList.value = res.result.records
total.value = res.result.total total.value = res.result.total
pages.value = res.result.pages pages.value = res.result.pages
current.value = res.result.current
} }
}).catch((err) => { }).catch((err) => {
console.log(err); console.log(err);

View File

@ -2,26 +2,26 @@
<view> <view>
<uni-card> <uni-card>
<uni-forms> <uni-forms>
<uni-forms-item> <uni-forms-item label="所属单位" label-position="top" name="depart">
<trq-depart-select returnCodeOrID="orgCode" @change="departChange"></trq-depart-select>
</uni-forms-item> </uni-forms-item>
</uni-forms> </uni-forms>
<uni-title title="所属单位 " align="center"></uni-title>
<trq-depart-select returnCodeOrID="orgCode" @change="departChange"></trq-depart-select>
<uni-row> <uni-row>
<uni-col :span="6"><button @click="getRyByxb(0)" type="primary" size="mini" <uni-col :span="12"><button @click="getRyByxb(0)" type="primary" size="mini"
style="margin: 10px 10px 10px 10px;">性别分组统计</button></uni-col> style="margin: 10px 10px 10px 10px;">性别分组统计</button></uni-col>
<uni-col :span="6"><button @click="getRyBynl(0)" type="primary" size="mini" <uni-col :span="12"><button @click="getRyBynl(0)" type="primary" size="mini"
style="margin: 10px 10px 10px 10px;">年龄分组统计</button></uni-col> style="margin: 10px 10px 10px 10px;">年龄分组统计</button></uni-col>
<uni-col :span="6"><button @click="getRyByxb(1)" type="primary" size="mini" </uni-row><uni-row><uni-col :span="12"><button @click="getRyByxb(1)" type="primary" size="mini"
style="margin: 10px 10px 10px 10px;">性别统计</button></uni-col> style="margin: 10px 10px 10px 10px;">性别全厂统计</button></uni-col>
<uni-col :span="6"><button @click="getRyBynl(1)" type="primary" size="mini" <uni-col :span="12"><button @click="getRyBynl(1)" type="primary" size="mini"
style="margin: 10px 10px 10px 10px;">年龄统计</button></uni-col> style="margin: 10px 10px 10px 10px;">年龄全厂统计</button></uni-col>
</uni-row> </uni-row>
</uni-card>
<uni-card>
<view>
<l-echart ref="chartRef"></l-echart>
</view>
<view style="width:750rpx; height:750rpx"><l-echart ref="myChart" @finished="init"></l-echart></view>
</uni-card> </uni-card>
</view> </view>
</template> </template>
@ -50,14 +50,18 @@
cxcRyDatacountByNlTotal cxcRyDatacountByNlTotal
} from '@/api/renyuan.js' } from '@/api/renyuan.js'
const chartRef = ref(null)
const ryCountData = ref([]) const ryCountData = ref([])
const departID = ref("") const departID = ref("")
const option = ref({ const option = ref({
notMerge: true, notMerge: true,
backgroundColor: '#F8FAFF', backgroundColor: '#F8FAFF',
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
showContent: this.showContent, showContent: "人员统计",
axisPointer: { axisPointer: {
type: 'shadow', type: 'shadow',
label: { label: {
@ -196,18 +200,19 @@
ryCountData.value = [] ryCountData.value = []
let queryParm = {}; let queryParm = {};
queryParm.orgCode = departID.value queryParm.orgCode = departID.value
cxcRyDatacountByXb(queryParm).then((res) => { if (val == 0) {
console.log(res); cxcRyDatacountByXb(queryParm).then((res) => {
if (res.success) { if (res.success) {
xData.value = []; ryCountData.value = res.result
ySeries.value = []; // console.log(ryCountData.value);
legData.value = []; xData.value = [];
let serie = { ySeries.value = [];
name: '', legData.value = [];
type: 'bar', let serie = {
data: [], name: '',
itemStyle: { type: 'bar',
normal: { data: [],
itemStyle: {
label: { label: {
show: true, // show: true, //
position: 'top', // position: 'top', //
@ -218,55 +223,303 @@
} }
} }
} }
} };
};
let serieMan = JSON.parse(JSON.stringify(serie)); let serieMan = JSON.parse(JSON.stringify(serie));
let serieTotal = JSON.parse(JSON.stringify(serie)); let serieTotal = JSON.parse(JSON.stringify(serie));
serieTotal.name = '总数'; serieTotal.name = '总数';
serieMan.name = '男'; serieMan.name = '男';
let serieWoman = JSON.parse(JSON.stringify(serie)); let serieWoman = JSON.parse(JSON.stringify(serie));
serieWoman.name = '女'; serieWoman.name = '女';
ryData.map(item => { ryCountData.value.map(item => {
xData.value.push(item.depart_name); xData.value.push(item.depart_name);
serieMan.data.push(item.man); serieMan.data.push(item.man);
serieWoman.data.push(item.woman); serieWoman.data.push(item.woman);
serieTotal.data.push(item.total); serieTotal.data.push(item.total);
}); });
ySeries.value.push(serieTotal); ySeries.value.push(serieTotal);
ySeries.value.push(serieMan); ySeries.value.push(serieMan);
ySeries.value.push(serieWoman); ySeries.value.push(serieWoman);
legData.value = ['总数', '男', '女'];
option.value.legend.data = legData.value;
option.value.xAxis[0].data = xData.value;
option.value.series = ySeries.value;
option.value.title.text = '人员性别统计';
legData = ['总数', '男', '女']; }
option.value.legend.data = legData.value;
option.value.xAxis[0].data = xData.value;
option.value.series = ySeries.value;
option.value.title.text = bmText + '人员性别统计';
} setTimeout(async () => {
if (!chartRef.value) return
const myChart = await chartRef.value.init(echarts)
myChart.setOption(option.value)
}, 300)
setTimeout(async () => {
if (!chartRef.value) return }).catch((err) => {
const myChart = await chartRef.value.init(echarts) console.log(err);
myChart.setOption(option.value) })
}, 300) }
}).catch((err) => { if (val == 1) {
console.log(err);
}) cxcRyDatacountByXbTotal(queryParm).then((res) => {
if (res.success) {
ryCountData.value = res.result
xData.value = [];
ySeries.value = [];
legData.value = [];
let serie = {
name: '',
type: 'bar',
data: [],
itemStyle: {
label: {
show: true, //
position: 'top', //
textStyle: {
//
color: 'black',
fontSize: 16
}
}
}
};
let serieMan = JSON.parse(JSON.stringify(serie));
let serieTotal = JSON.parse(JSON.stringify(serie));
serieTotal.name = '总数';
serieMan.name = '男';
let serieWoman = JSON.parse(JSON.stringify(serie));
serieWoman.name = '女';
ryCountData.value.map(item => {
xData.value.push("全厂");
serieMan.data.push(item.man);
serieWoman.data.push(item.woman);
serieTotal.data.push(item.total);
});
ySeries.value.push(serieTotal);
ySeries.value.push(serieMan);
ySeries.value.push(serieWoman);
legData.value = ['总数', '男', '女'];
option.value.legend.data = legData.value;
option.value.xAxis[0].data = xData.value;
option.value.series = ySeries.value;
option.value.title.text = '人员性别统计';
}
setTimeout(async () => {
if (!chartRef.value) return
const myChart = await chartRef.value.init(echarts)
myChart.setOption(option.value)
}, 300)
}).catch((err) => {
console.log(err);
})
}
} }
function getRyBynl(val) { function getRyBynl(val) {
ryCountData.value = [] ryCountData.value = []
let queryParm = {}; let queryParm = {};
queryParm.orgCode = departID.value queryParm.orgCode = departID.value
cxcRyDatacountByNl(queryParm).then((res) => { if (val == 0) {
console.log(res); cxcRyDatacountByNl(queryParm).then((res) => {
if (res.success) { if (res.success) {
ryCountData.value = res.result.records ryCountData.value = res.result
} xData.value = [];
}).catch((err) => { ySeries.value = [];
console.log(err); legData.value = [];
}) let serie = {
name: '',
type: 'bar',
data: [],
itemStyle: {
label: {
show: true, //
position: 'top', //
textStyle: {
//
color: 'black',
fontSize: 16
}
}
}
};
let serie20 = JSON.parse(JSON.stringify(serie));
serie20.name = '小于20岁';
let serie21_30 = JSON.parse(JSON.stringify(serie));
serie21_30.name = '21-30岁';
let serie31_40 = JSON.parse(JSON.stringify(serie));
serie31_40.name = '31-40岁';
let serie41_50 = JSON.parse(JSON.stringify(serie));
serie41_50.name = '41-50岁';
let serie51_60 = JSON.parse(JSON.stringify(serie));
serie51_60.name = '51-60岁';
let serie45 = JSON.parse(JSON.stringify(serie));
serie45.name = '45岁及以下';
let serie46_60 = JSON.parse(JSON.stringify(serie));
serie46_60.name = '45岁以上';
let serie51_55 = JSON.parse(JSON.stringify(serie));
serie51_55.name = '51-55岁';
let serie55 = JSON.parse(JSON.stringify(serie));
serie55.name = '55岁以上';
let serietotal = JSON.parse(JSON.stringify(serie));
serietotal.name = '总数';
let serieavgage = JSON.parse(JSON.stringify(serie));
serieavgage.name = '平均年龄';
ryCountData.value.map(item => {
xData.value.push(item.depart_name);
serietotal.data.push(item.total);
serie20.data.push(item.age20);
serie21_30.data.push(item.age21_30);
serie31_40.data.push(item.age31_40);
serie41_50.data.push(item.age41_50);
serie51_60.data.push(item.age51_60);
serie45.data.push(item.age45);
serie46_60.data.push(item.age46_60);
serie51_55.data.push(item.age51_55);
serie55.data.push(item.age55);
serieavgage.data.push(item.avgage);
});
this.ySeries.push(serietotal);
this.ySeries.push(serieavgage);
this.ySeries.push(serie20);
this.ySeries.push(serie21_30);
this.ySeries.push(serie31_40);
this.ySeries.push(serie41_50);
this.ySeries.push(serie51_60);
this.ySeries.push(serie45);
this.ySeries.push(serie46_60);
this.ySeries.push(serie51_55);
this.ySeries.push(serie55);
legData.value = ['总数', '平均年龄', '小于20岁', '21-30岁', '31-40岁', '41-50岁', '51-60岁', '45岁及以下',
'45岁以上', '51-55岁', '55岁以上'
];
option.value.legend.data = legData.value;
option.value.xAxis[0].data = xData.value;
option.value.series = ySeries.value;
option.value.title.text = '人员年龄统计';
}
setTimeout(async () => {
if (!chartRef.value) return
const myChart = await chartRef.value.init(echarts)
myChart.setOption(option.value)
}, 300)
}).catch((err) => {
console.log(err);
})
}
if (val == 1) {
cxcRyDatacountByNlTotal(queryParm).then((res) => {
if (res.success) {
ryCountData.value = res.result
xData.value = [];
ySeries.value = [];
legData.value = [];
let serie = {
name: '',
type: 'bar',
data: [],
itemStyle: {
label: {
show: true, //
position: 'top', //
textStyle: {
//
color: 'black',
fontSize: 16
}
}
}
};
let serie20 = JSON.parse(JSON.stringify(serie));
serie20.name = '小于20岁';
let serie21_30 = JSON.parse(JSON.stringify(serie));
serie21_30.name = '21-30岁';
let serie31_40 = JSON.parse(JSON.stringify(serie));
serie31_40.name = '31-40岁';
let serie41_50 = JSON.parse(JSON.stringify(serie));
serie41_50.name = '41-50岁';
let serie51_60 = JSON.parse(JSON.stringify(serie));
serie51_60.name = '51-60岁';
let serie45 = JSON.parse(JSON.stringify(serie));
serie45.name = '45岁及以下';
let serie46_60 = JSON.parse(JSON.stringify(serie));
serie46_60.name = '45岁以上';
let serie51_55 = JSON.parse(JSON.stringify(serie));
serie51_55.name = '51-55岁';
let serie55 = JSON.parse(JSON.stringify(serie));
serie55.name = '55岁以上';
let serietotal = JSON.parse(JSON.stringify(serie));
serietotal.name = '总数';
let serieavgage = JSON.parse(JSON.stringify(serie));
serieavgage.name = '平均年龄';
ryCountData.value.map(item => {
xData.value.push("全厂");
serietotal.data.push(item.total);
serie20.data.push(item.age20);
serie21_30.data.push(item.age21_30);
serie31_40.data.push(item.age31_40);
serie41_50.data.push(item.age41_50);
serie51_60.data.push(item.age51_60);
serie45.data.push(item.age45);
serie46_60.data.push(item.age46_60);
serie51_55.data.push(item.age51_55);
serie55.data.push(item.age55);
serieavgage.data.push(item.avgage);
});
this.ySeries.push(serietotal);
this.ySeries.push(serieavgage);
this.ySeries.push(serie20);
this.ySeries.push(serie21_30);
this.ySeries.push(serie31_40);
this.ySeries.push(serie41_50);
this.ySeries.push(serie51_60);
this.ySeries.push(serie45);
this.ySeries.push(serie46_60);
this.ySeries.push(serie51_55);
this.ySeries.push(serie55);
legData.value = ['总数', '平均年龄', '小于20岁', '21-30岁', '31-40岁', '41-50岁', '51-60岁', '45岁及以下',
'45岁以上', '51-55岁', '55岁以上'
];
option.value.legend.data = legData.value;
option.value.xAxis[0].data = xData.value;
option.value.series = ySeries.value;
option.value.title.text = '人员年龄统计';
}
setTimeout(async () => {
if (!chartRef.value) return
const myChart = await chartRef.value.init(echarts)
myChart.setOption(option.value)
}, 300)
}).catch((err) => {
console.log(err);
})
}
} }
</script> </script>

View File

@ -1,41 +1,54 @@
<template> <template>
<view :class="['f-col','aic',{'gray':store.isgray==1}]"> <view :class="[{'gray':store.isgray==1}]">
<picker fields="month" mode="date" @change="bindPickerChange" :value="index"> <view style="margin-top: 10px;margin-bottom: 10px;">
<view class="date">{{index}} 点击选择月份</view> <picker fields="month" mode="date" @change="bindPickerChange" :value="index">
</picker> <view class="date">{{index}} 点击选择月份</view>
<view class="info"> </picker>
<view class="info_title f-row aic"> </view>
<view class=""> <uni-row>
<uni-col :span="7">
<view class="titleStyle">
日期 日期
</view> </view>
<view class=""> </uni-col>
<uni-col :span="4">
<view class="titleStyle">
带班领导 带班领导
</view> </view>
</uni-col>
<view class=""> <uni-col :span="4">
<view class="titleStyle">
值班领导 值班领导
</view> </view>
<view class=""> </uni-col>
<uni-col :span="9">
<view class="titleStyle">
值班干部 值班干部
</view> </view>
</view> </uni-col>
<view class="data_box"> </uni-row>
<view class="data f-row aic" v-for="item,i in zhibanArr"> <uni-row>
<view class=""> <view v-for="(item,index) in zhibanArr">
<uni-col :span="7">
<view class="dataStyle">
{{item.date}} {{item.date}}
</view> </view>
<view class=""> </uni-col>
<uni-col :span="4">
<view class="dataStyle">
{{item.dbld_dictText}} {{item.dbld_dictText}}
</view> </view>
<view class=""> </uni-col><uni-col :span="4">
<view class="dataStyle">
{{item.zbld_dictText}} {{item.zbld_dictText}}
</view> </view>
<view class=""> </uni-col><uni-col :span="9">
<view class="dataStyle">
{{item.zbgbrealname}} {{item.zbgbrealname}}
</view> </view>
</view> </uni-col>
</view> </view>
</view> </uni-row>
</view> </view>
</template> </template>
@ -54,6 +67,36 @@
} from '@/store'; } from '@/store';
const store = useStore() const store = useStore()
import dayjs from 'dayjs'; import dayjs from 'dayjs';
let column = ref([{
name: 'date',
label: '日期',
width: 70,
align: 'center'
},
{
name: 'dbld_dictText',
label: '带班领导',
align: 'center',
width: 60
},
{
name: 'zbld_dictText',
label: '值班领导',
align: 'center',
width: 60
},
{
name: 'zbgbrealname',
label: '值班干部',
align: 'center',
width: 150
}
])
const zhibanArr = ref([]) const zhibanArr = ref([])
onLoad(() => { onLoad(() => {
zhibanQuery() zhibanQuery()
@ -84,36 +127,36 @@
color: #333333; color: #333333;
} }
.info {
background: #F8F8F8; .titleStyle {
border-radius: 8rpx; font-size: 12px;
color: #747474;
line-height: 25px;
height: 25px;
background: #F2F9FC;
text-align: center; text-align: center;
width: 690rpx; vertical-align: middle;
margin-top: 23rpx; border-left: 1px solid #919191;
border-bottom: 1px solid #919191;
;
}
.info_title { /* 内容样式 */
font-size: 24rpx; .dataStyle {
color: #333333; max-font-size: 14px;
padding: 24rpx 0; /* 最大字体限制 */
border-bottom: 1px solid #EFEFEF; min-font-size: 10px;
/* 最小字体限制 */
font-size: 12px;
color: #00007f;
line-height: 25px;
height: 25px;
font-weight: 500;
text-align: center;
vertical-align: middle;
border-bottom: 1px solid #919191;
border-left: 1px solid #919191;
text-overflow: ellipsis;
view {
flex: 1;
}
}
.data_box {
font-size: 24rpx;
padding-bottom: 24rpx;
color: #888888;
.data {
margin-top: 23rpx;
view {
flex: 1;
}
}
}
} }
</style> </style>