Merge branch 'master' of http://ngtools.cn:53000/ldeyun/cxc-szcx-uniapp
# Conflicts: # .env.development # pages/views/shengchan/ribaoshuju/rbsjLsxq.vue # pages/views/shengchan/ribaoshuju/trqRbsj.vue # pages/views/shengchan/ribaoshuju/yyRbsj.vue # uni_modules/cxc-szcx-dateRangeSelect/readme.md
This commit is contained in:
commit
036b2ecb05
@ -14,3 +14,19 @@ export function initDictOption(dictCode) { // 获取部门所有人员信息
|
||||
data: dictCode
|
||||
})
|
||||
}
|
||||
|
||||
export function writeCommonJsonDisplay(dictCode) { // 通用json数据写入API
|
||||
return https({
|
||||
url: ' /sys/dict/getDictItems',
|
||||
method: 'get',
|
||||
data: dictCode
|
||||
})
|
||||
}
|
||||
|
||||
export function readCommonJsonDisplay(params) { // 通用json数据写入API
|
||||
return https({
|
||||
url: '/cxcPersonalTailor/cxcPersonalTailor/getByRules',
|
||||
method: 'get',
|
||||
data: params
|
||||
})
|
||||
}
|
@ -5,6 +5,9 @@
|
||||
<uni-card :is-shadow="false">
|
||||
<button type="primary" @click="toTaizhang">人员台账</button>
|
||||
</uni-card>
|
||||
<uni-card :is-shadow="false">
|
||||
<button v-if="roleDetail" type="primary" @click="toSzcs">通过素质测试</button>
|
||||
</uni-card>
|
||||
</uni-section>
|
||||
<uni-section title="统计信息" type="line">
|
||||
<uni-card :is-shadow="false">
|
||||
@ -16,10 +19,37 @@
|
||||
</uni-card>
|
||||
</uni-section>
|
||||
</uni-card>
|
||||
<uni-popup ref="popup" type="bottom" background-color="#fff">
|
||||
<cxc-szcx-jsonDataViewer :username="username" :persionalKey="persionalKey"
|
||||
:type="type"></cxc-szcx-jsonDataViewer>
|
||||
</uni-popup>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref
|
||||
} from 'vue';
|
||||
|
||||
import {
|
||||
useStore
|
||||
} from '@/store';
|
||||
const store = useStore();
|
||||
const roleDetail = ref(store.userinfo.realname === '廖德云' || store.userinfo.realname === '马敬朝');
|
||||
|
||||
// 定义要传入的参数
|
||||
const username = ref('');
|
||||
const persionalKey = ref('');
|
||||
const type = ref('');
|
||||
const popup = ref(null);
|
||||
|
||||
function toSzcs() {
|
||||
username.value = 'liaody'
|
||||
persionalKey.value = 'szcsRy'
|
||||
type.value = '5'
|
||||
popup.value.open();
|
||||
}
|
||||
|
||||
function toTaizhang() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/views/renliziyuan/renyuanxinxi/taizhang'
|
||||
|
@ -1,14 +1,15 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="stats-container">
|
||||
<uni-title :title="name.unit + '历史数据---单位(万方)'" color="blue" type="h2"></uni-title>
|
||||
<uni-title v-if="type === 'trq'" :title="name.unit + '天然气---单位(万方)'" color="blue" type="h2"></uni-title>
|
||||
<uni-title v-if="type === 'yy'" :title="name.dw + '原油---单位(吨)'" color="blue" type="h2"></uni-title>
|
||||
</view>
|
||||
<view class="dateSelect">
|
||||
<cxc-szcx-dateRangeSelect :mode="'range'" v-model="dateRange"></cxc-szcx-dateRangeSelect>
|
||||
</view>
|
||||
<cxc-szcx-lineChart v-if="type === 'trq'" :dataList="dataList" x-field="rqDate" y-field="rq" legend-field="unit" :reference-value="0"></cxc-szcx-lineChart>
|
||||
|
||||
<cxc-szcx-lineChart :dataList="dataList" x-field="rqDate" y-field="rq" legend-field="unit"
|
||||
:reference-value="0"></cxc-szcx-lineChart>
|
||||
<cxc-szcx-lineChart v-if="type === 'yy'" :dataList="dataList" x-field="scrq" y-field="rcwy" legend-field="dw" :reference-value="0"></cxc-szcx-lineChart>
|
||||
<view style="margin: 0 15px">
|
||||
<view class="stats-container">
|
||||
<view class="stats-item">最大值: {{ dataStats.max }}</view>
|
||||
@ -16,7 +17,7 @@
|
||||
<view class="stats-item">平均值: {{ dataStats.average }}</view>
|
||||
</view>
|
||||
|
||||
<view class="table-container">
|
||||
<view v-if="type === 'trq'" class="table-container">
|
||||
<!-- 表头 -->
|
||||
<view class="tr header">
|
||||
<view class="th1">序号</view>
|
||||
@ -39,32 +40,39 @@
|
||||
<view v-if="!dataList.length" class="empty">暂无相关数据</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
|
||||
<view v-if="type === 'yy'" class="table-container">
|
||||
<!-- 表头 -->
|
||||
<view class="tr header">
|
||||
<view class="th1">序号</view>
|
||||
<view class="th">名称</view>
|
||||
<view class="th">日期</view>
|
||||
<view class="th">日油量</view>
|
||||
</view>
|
||||
<scroll-view scroll-Y="true" class="scroll-wrapper">
|
||||
<!-- 表格内容 -->
|
||||
<view class="tr" v-for="(item, index) in dataList" :key="index" :class="{ even: index % 2 === 0 }">
|
||||
<view class="td1">{{ index + 1 }}</view>
|
||||
<view class="td">{{ item.dw }}</view>
|
||||
<view class="td">{{ item.scrq }}</view>
|
||||
<view class="td" :class="{ negative: item.rcwy < 0 }">
|
||||
{{ item.rcwy }}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 空数据提示 -->
|
||||
<view v-if="!dataList.length" class="empty">暂无相关数据</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref,
|
||||
onMounted,
|
||||
computed,
|
||||
nextTick,
|
||||
watchEffect,
|
||||
warn,
|
||||
watch
|
||||
} from 'vue';
|
||||
import {
|
||||
onLoad
|
||||
} from '@dcloudio/uni-app';
|
||||
import {
|
||||
queryJinriShengchansj,
|
||||
queryJinriYuanyouShengchansj
|
||||
} from '@/api/shengchan.js';
|
||||
import {
|
||||
formatDate,
|
||||
getDateAfterDays,
|
||||
getDateAfterMonths
|
||||
} from '@/utils/dateTime.js';
|
||||
import { ref, onMounted, computed, nextTick, watchEffect, warn, watch } from 'vue';
|
||||
import { onLoad } from '@dcloudio/uni-app';
|
||||
import { queryJinriShengchansj, queryJinriYuanyouShengchansj } from '@/api/shengchan.js';
|
||||
import { formatDate, getDateAfterDays, getDateAfterMonths } from '@/utils/dateTime.js';
|
||||
const name = ref({});
|
||||
const type = ref('');
|
||||
const dateRange = ref([]);
|
||||
@ -121,7 +129,7 @@
|
||||
queryParms.pageSize = 500;
|
||||
|
||||
// 添加参数有效性检查
|
||||
if (!queryParms.rqDate_begin || !queryParms.rqDate_end) {
|
||||
if (!queryParms.scrq_begin || !queryParms.scrq_end) {
|
||||
console.error('参数格式化失败:', queryParms);
|
||||
return;
|
||||
}
|
||||
@ -130,7 +138,7 @@
|
||||
if (res.success) {
|
||||
console.log(res);
|
||||
dataList.value = res.result.records;
|
||||
dataStats.value = calculateStats(dataList.value, 'rcwy');
|
||||
dataStats.value = calculateStats(dataList.value, 'rcwy').reverse();
|
||||
}
|
||||
});
|
||||
};
|
||||
@ -209,7 +217,8 @@
|
||||
default:
|
||||
console.warn('未知类型:', newType);
|
||||
}
|
||||
}, {
|
||||
},
|
||||
{
|
||||
immediate: true,
|
||||
deep: true
|
||||
}
|
||||
@ -251,19 +260,17 @@
|
||||
|
||||
.tr {
|
||||
display: flex;
|
||||
min-height: 18px;
|
||||
min-height: 14px;
|
||||
font-size: 12px;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.th,
|
||||
.td {
|
||||
flex: 1;
|
||||
min-width: 80px;
|
||||
padding: 10px;
|
||||
font-size: 14px;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
@ -279,12 +286,12 @@
|
||||
flex: 1;
|
||||
max-width: 40px;
|
||||
padding: 10px;
|
||||
font-size: 14px;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
height: 18px;
|
||||
height: 14px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
@ -297,7 +304,6 @@
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
|
||||
.empty {
|
||||
padding: 40px;
|
||||
text-align: center;
|
||||
|
@ -1,13 +1,23 @@
|
||||
<template>
|
||||
<view :class="{ gray: store.isgray == 1 }">
|
||||
<view class="progress-bar">
|
||||
<view style="padding: 0 10px">
|
||||
<view class="progress-bartime">
|
||||
<!-- 动态设置宽度和颜色 -->
|
||||
<view class="progressTime" :style="{ width: `${timePercent}%`, 'background-color': '#00aaff' }"></view>
|
||||
<!-- 显示带符号的百分比 -->
|
||||
<text class="progress-text">全年时间进度:{{ timePercent }}%</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="content">
|
||||
<!-- 标题行 -->
|
||||
<view class="header-row">
|
||||
<view class="title">天然气产量</view>
|
||||
<view class="more" @click="selectMore">更多>></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="container">
|
||||
<view v-for="(item, index) in shishiArr" :key="index" class="card-item" @click="handleCardClick(item.gas)">
|
||||
<view v-for="(item, index) in shishiArrSelect" :key="index" class="card-item" @click="handleCardClick(item.gas)">
|
||||
<view class="card">
|
||||
<text class="title">{{ item.gas }}</text>
|
||||
<view class="content">
|
||||
@ -20,16 +30,27 @@
|
||||
</view>
|
||||
<view class="progress-bar">
|
||||
<!-- 动态设置宽度和颜色 -->
|
||||
<view class="progress"
|
||||
:style="{ width: `${Math.abs(item.yearPerCent)}%`, 'background-color': item.yearPerCent < 0 ? '#ff4444' : '#007aff' }">
|
||||
</view>
|
||||
<view class="progress" :style="{ width: `${Math.abs(item.yearPerCent)}%`, 'background-color': item.yearPerCent < 0 ? '#ff4444' : '#007aff' }"></view>
|
||||
<!-- 显示带符号的百分比 -->
|
||||
<text v-if="!(item.yearPlan === '' || item.yearPlan === '0')"
|
||||
class="progress-text">{{ item.yearPerCent }}%</text>
|
||||
<text v-if="!(item.yearPlan === '' || item.yearPlan === '0')" class="progress-text">{{ item.yearPerCent }}%</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<uni-popup ref="popupSelect" type="top" background-color="#fff">
|
||||
<view style="margin-top: 50px">
|
||||
<view class="titlepopup">选择显示更多生产数据</view>
|
||||
<uni-data-checkbox
|
||||
style="font-size: 14px"
|
||||
@change="onselectionchange"
|
||||
:localdata="shishiArr"
|
||||
v-model="shishiArrDisplay"
|
||||
multiple
|
||||
:map="{ value: 'gas', text: 'gas' }"
|
||||
></uni-data-checkbox>
|
||||
</view>
|
||||
</uni-popup>
|
||||
<!-- 数据弹窗 -->
|
||||
<uni-popup ref="popup" type="bottom" background-color="#fff">
|
||||
<view class="popup-content">
|
||||
@ -49,8 +70,7 @@
|
||||
</view>
|
||||
<scroll-view scroll-X="true" scroll-Y="true" class="table-container">
|
||||
<!-- 表格内容 -->
|
||||
<view class="tr" v-for="(item, index) in filteredData" :key="index"
|
||||
:class="{ even: index % 2 === 0 }">
|
||||
<view class="tr" v-for="(item, index) in filteredData" :key="index" :class="{ even: index % 2 === 0 }">
|
||||
<view class="td1">{{ index + 1 }}</view>
|
||||
<view class="td">{{ item.unit }}</view>
|
||||
<view class="td" :class="{ negative: item.rq < 0 }">
|
||||
@ -72,42 +92,24 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref,
|
||||
onMounted,
|
||||
computed,
|
||||
nextTick,
|
||||
watchEffect
|
||||
} from 'vue';
|
||||
import {
|
||||
onLoad
|
||||
} from '@dcloudio/uni-app';
|
||||
import {
|
||||
queryJinriShengchansj,
|
||||
queryYearShengchansj,
|
||||
queryJinriTrqShengchansj
|
||||
} from '@/api/shengchan.js';
|
||||
import {
|
||||
formatDate,
|
||||
getDateAfterDays
|
||||
} from '@/utils/dateTime.js';
|
||||
import {
|
||||
beforeJump
|
||||
} from '@/utils/index.js';
|
||||
import {
|
||||
useStore
|
||||
} from '@/store';
|
||||
import {
|
||||
getYearProgress
|
||||
} from '@/utils/dateTime.js';
|
||||
import { ref, onMounted, computed, nextTick, watchEffect } from 'vue';
|
||||
import { onLoad } from '@dcloudio/uni-app';
|
||||
import { queryJinriShengchansj, queryYearShengchansj, queryJinriTrqShengchansj } from '@/api/shengchan.js';
|
||||
import { formatDate, getDateAfterDays } from '@/utils/dateTime.js';
|
||||
import { beforeJump } from '@/utils/index.js';
|
||||
import { useStore } from '@/store';
|
||||
import { getYearProgress } from '@/utils/dateTime.js';
|
||||
|
||||
const store = useStore();
|
||||
|
||||
const shishiArr = ref([]);
|
||||
const shishiArrSelect = ref([]);
|
||||
const shishiArrDisplay = ref(['气井气', '站线综合输差']);
|
||||
const dataJinriUnit = ref([]);
|
||||
const selectedGas = ref('');
|
||||
const filteredData = ref([]);
|
||||
const popup = ref(null);
|
||||
const popupSelect = ref(null);
|
||||
const strDate = ref('');
|
||||
const timePercent = ref(0);
|
||||
|
||||
@ -115,7 +117,6 @@
|
||||
const dataJinriSum = ref([]);
|
||||
const dataJinriSumUnit = ref([]);
|
||||
|
||||
|
||||
// 点击卡片处理
|
||||
// const handleCardClick = (gas) => {
|
||||
// selectedGas.value = gas;
|
||||
@ -134,10 +135,19 @@
|
||||
|
||||
// popup.value.open();
|
||||
// };
|
||||
function selectMore() {
|
||||
popupSelect.value.open();
|
||||
}
|
||||
const onselectionchange = () => {
|
||||
shishiArrSelect.value = [];
|
||||
shishiArrDisplay.value.forEach((item) => {
|
||||
shishiArrSelect.value.push(shishiArr.value.filter((item1) => item1.gas === item)[0]);
|
||||
});
|
||||
};
|
||||
|
||||
const handleCardClick = (gas) => {
|
||||
selectedGas.value = gas;
|
||||
filteredData.value = dataJinriSumUnit.value.filter(item => item.gas === gas);
|
||||
filteredData.value = dataJinriSumUnit.value.filter((item) => item.gas === gas);
|
||||
popup.value.open();
|
||||
};
|
||||
|
||||
@ -148,7 +158,7 @@
|
||||
onMounted(() => {
|
||||
getJinriTrqShengchansj();
|
||||
timePercent.value = getYearProgress();
|
||||
getJinriShengchansj()
|
||||
getJinriShengchansj();
|
||||
});
|
||||
|
||||
// 数字格式化
|
||||
@ -217,10 +227,10 @@
|
||||
tempArray.push(compositeZx);
|
||||
// tempArray.push(compositeJc);
|
||||
|
||||
return tempArray
|
||||
return tempArray;
|
||||
|
||||
// console.log(composite);
|
||||
};
|
||||
}
|
||||
|
||||
const getJinriTrqShengchansj = () => {
|
||||
const now = new Date();
|
||||
@ -236,7 +246,7 @@
|
||||
// // console.log(queryParms);
|
||||
queryJinriTrqShengchansj(queryParms).then((res) => {
|
||||
if (res.success) {
|
||||
console.log(1, res);
|
||||
// console.log(1, res);
|
||||
let temp = res.result;
|
||||
|
||||
temp.forEach((item) => {
|
||||
@ -245,9 +255,12 @@
|
||||
item.yearPerCent = calcPercent(item.yearPlan, item.yearVolume);
|
||||
}
|
||||
});
|
||||
console.log(2, temp)
|
||||
// console.log(2, temp);
|
||||
shishiArr.value = calcZhsc(temp);
|
||||
console.log(3, shishiArr.value)
|
||||
nextTick();
|
||||
onselectionchange();
|
||||
console.log(3, shishiArr.value);
|
||||
console.log(4, shishiArrSelect.value);
|
||||
}
|
||||
});
|
||||
};
|
||||
@ -272,11 +285,6 @@
|
||||
return parseFloat(percent.toFixed(2)); // 转为数值
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const getJinriShengchansj = () => {
|
||||
const now = new Date();
|
||||
if (now.getHours() < 11) {
|
||||
@ -407,6 +415,49 @@
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.header-row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 10 10rpx;
|
||||
border-bottom: 1rpx solid #eee;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
.titlepopup {
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.more {
|
||||
font-size: 26rpx;
|
||||
color: #666;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.more::after {
|
||||
content: '';
|
||||
width: 8rpx;
|
||||
height: 8rpx;
|
||||
border-top: 2rpx solid #666;
|
||||
border-right: 2rpx solid #666;
|
||||
transform: rotate(45deg);
|
||||
margin-left: 8rpx;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* 鼠标悬停效果 */
|
||||
.more:hover {
|
||||
color: #007aff;
|
||||
}
|
||||
.container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
@ -514,10 +565,10 @@
|
||||
}
|
||||
|
||||
.card {
|
||||
background: #ffffff;
|
||||
background: #ececec;
|
||||
border-radius: 16rpx;
|
||||
padding: 10rpx;
|
||||
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
|
||||
padding: 15rpx;
|
||||
box-shadow: 0 4rpx 12rpx rgba(179, 179, 179, 0.1);
|
||||
|
||||
.title {
|
||||
display: block;
|
||||
@ -561,7 +612,14 @@
|
||||
border-radius: 10px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-bartime {
|
||||
position: relative;
|
||||
height: 20px;
|
||||
background: #f0f0f0;
|
||||
border-radius: 10px;
|
||||
overflow: hidden;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
.progress {
|
||||
height: 100%;
|
||||
transition: all 0.3s;
|
||||
@ -570,6 +628,7 @@
|
||||
.progressTime {
|
||||
height: 100%;
|
||||
transition: all 0.3s;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.progress-text {
|
||||
|
@ -2,10 +2,18 @@
|
||||
<view :class="{ gray: store.isgray == 1 }">
|
||||
<!-- <view style="margin-left: 20rpx;"> <uni-title :title="strDate + ':生产数据'" type="h1" color="red" /> -->
|
||||
<!-- </view> -->
|
||||
|
||||
<view class="content">
|
||||
<!-- 标题行 -->
|
||||
<view class="header-row">
|
||||
<view class="title">原油产量</view>
|
||||
<view class="more"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="container">
|
||||
<view v-for="(item, index) in shishiArr" :key="index" class="card-item" @click="handleCardClick(item.gas)">
|
||||
<view class="card">
|
||||
<text class="title">{{ item.gas }}</text>
|
||||
<!-- <text class="title">{{ item.gas }}</text> -->
|
||||
<view class="content">
|
||||
<text class="label">日油量</text>
|
||||
<text class="value">{{ item.rcwy || '-' }}</text>
|
||||
@ -200,6 +208,41 @@ function sumByOil(records) {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.header-row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 15rpx 0;
|
||||
border-bottom: 1rpx solid #eee;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.more {
|
||||
font-size: 26rpx;
|
||||
color: #666;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.more::after {
|
||||
content: '';
|
||||
width: 8rpx;
|
||||
height: 8rpx;
|
||||
border-top: 2rpx solid #666;
|
||||
border-right: 2rpx solid #666;
|
||||
transform: rotate(45deg);
|
||||
margin-left: 8rpx;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* 鼠标悬停效果 */
|
||||
.more:hover {
|
||||
color: #007aff;
|
||||
}
|
||||
.container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
@ -304,10 +347,10 @@ function sumByOil(records) {
|
||||
}
|
||||
|
||||
.card {
|
||||
background: #ffffff;
|
||||
background: #ececec;
|
||||
border-radius: 16rpx;
|
||||
padding: 10rpx;
|
||||
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
|
||||
padding: 15rpx;
|
||||
box-shadow: 0 4rpx 12rpx rgba(197, 197, 197, 0.1);
|
||||
|
||||
.title {
|
||||
display: block;
|
||||
|
947
static/data/nlszcs.json
Normal file
947
static/data/nlszcs.json
Normal file
@ -0,0 +1,947 @@
|
||||
[{
|
||||
"序号": "1",
|
||||
"单位职务": "安全环保室主管",
|
||||
"姓名": "方超",
|
||||
"性别": "男",
|
||||
"劳动合同号": "239603",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "90.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "2",
|
||||
"单位职务": "安全环保督查中心(工程监督中心)助理员",
|
||||
"姓名": "孔玉",
|
||||
"性别": "男",
|
||||
"劳动合同号": "239616",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "87.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "3",
|
||||
"单位职务": "人力资源服务中心副主任",
|
||||
"姓名": "陈康朝",
|
||||
"性别": "男",
|
||||
"劳动合同号": "103333",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "88.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "4",
|
||||
"单位职务": "人力资源服务中心主管师",
|
||||
"姓名": "韩斌",
|
||||
"性别": "男",
|
||||
"劳动合同号": "018733",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "84.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "5",
|
||||
"单位职务": "治安保卫中心主办",
|
||||
"姓名": "齐显琛",
|
||||
"性别": "男",
|
||||
"劳动合同号": "100496",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "87.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "6",
|
||||
"单位职务": "柳屯输气管理区主管师",
|
||||
"姓名": "殷丽丽",
|
||||
"性别": "女",
|
||||
"劳动合同号": "008925",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "87.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "7",
|
||||
"单位职务": "东濮采气管理区副经理",
|
||||
"姓名": "王全超",
|
||||
"性别": "男",
|
||||
"劳动合同号": "009115",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "82.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "8",
|
||||
"单位职务": "东濮采气管理项目部副经理",
|
||||
"姓名": "彭江苏",
|
||||
"性别": "男",
|
||||
"劳动合同号": "018645",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "86.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "9",
|
||||
"单位职务": "天然气计量化验中心助理师",
|
||||
"姓名": "张海波",
|
||||
"性别": "男",
|
||||
"劳动合同号": "237229",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "90.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "10",
|
||||
"单位职务": "开发研究所助理师",
|
||||
"姓名": "王瑞浩",
|
||||
"性别": "男",
|
||||
"劳动合同号": "241327",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "86.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "11",
|
||||
"单位职务": "天津LNG项目部助理师",
|
||||
"姓名": "史航",
|
||||
"性别": "男",
|
||||
"劳动合同号": "100474",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "88.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "12",
|
||||
"单位职务": "通南巴项目主管师",
|
||||
"姓名": "黄卓",
|
||||
"性别": "男",
|
||||
"劳动合同号": "039385",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "87.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "13",
|
||||
"单位职务": "输气管理项目部助理师",
|
||||
"姓名": "孙宇明",
|
||||
"性别": "男",
|
||||
"劳动合同号": "102625",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "85.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "14",
|
||||
"单位职务": "输气管理项目部助理师",
|
||||
"姓名": "张艺皓",
|
||||
"性别": "男",
|
||||
"劳动合同号": "240971",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "83.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2025年8月"
|
||||
},
|
||||
{
|
||||
"序号": "15",
|
||||
"单位职务": "生产调度室主管",
|
||||
"姓名": "向龙",
|
||||
"性别": "男",
|
||||
"劳动合同号": "103812",
|
||||
"2024.02考试成绩": "98.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "16",
|
||||
"单位职务": "计划财务室助理员",
|
||||
"姓名": "吴曾科",
|
||||
"性别": "男",
|
||||
"劳动合同号": "236709",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "86.0",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "17",
|
||||
"单位职务": "经营管理室主办",
|
||||
"姓名": "穆丽",
|
||||
"性别": "女",
|
||||
"劳动合同号": "001334",
|
||||
"2024.02考试成绩": "87.0",
|
||||
"2024.08考试成绩": "82.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "18",
|
||||
"单位职务": "综合办公室助理员",
|
||||
"姓名": "杨非非",
|
||||
"性别": "男",
|
||||
"劳动合同号": "236635",
|
||||
"2024.02考试成绩": "93.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "19",
|
||||
"单位职务": "群众工作办公室助理员",
|
||||
"姓名": "余杰",
|
||||
"性别": "男",
|
||||
"劳动合同号": "236739",
|
||||
"2024.02考试成绩": "95.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "20",
|
||||
"单位职务": "群众工作办公室助理员",
|
||||
"姓名": "马婷",
|
||||
"性别": "女",
|
||||
"劳动合同号": "239720",
|
||||
"2024.02考试成绩": "94.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "21",
|
||||
"单位职务": "市场开发室主管",
|
||||
"姓名": "靳丽娟",
|
||||
"性别": "女",
|
||||
"劳动合同号": "022648",
|
||||
"2024.02考试成绩": "95.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "22",
|
||||
"单位职务": "安全环保督查中心(工程监督中心)主办",
|
||||
"姓名": "杨家田",
|
||||
"性别": "男",
|
||||
"劳动合同号": "239723",
|
||||
"2024.02考试成绩": "91.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "23",
|
||||
"单位职务": "安全环保督查中心(工程监督中心)主办",
|
||||
"姓名": "罗继勇",
|
||||
"性别": "男",
|
||||
"劳动合同号": "239766",
|
||||
"2024.02考试成绩": "92.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "24",
|
||||
"单位职务": "天然气计量化验中心副主任",
|
||||
"姓名": "张杰",
|
||||
"性别": "男",
|
||||
"劳动合同号": "240802",
|
||||
"2024.02考试成绩": "93.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "25",
|
||||
"单位职务": "天然气计量化验中心主管师",
|
||||
"姓名": "姜文峰",
|
||||
"性别": "男",
|
||||
"劳动合同号": "237664",
|
||||
"2024.02考试成绩": "94.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "26",
|
||||
"单位职务": "治安保卫中心助理员",
|
||||
"姓名": "李巍",
|
||||
"性别": "男",
|
||||
"劳动合同号": "098529",
|
||||
"2024.02考试成绩": "97.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "27",
|
||||
"单位职务": "开发研究所助理师",
|
||||
"姓名": "王志远",
|
||||
"性别": "男",
|
||||
"劳动合同号": "241278",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "80.0",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "28",
|
||||
"单位职务": "东濮采气管理区副经理",
|
||||
"姓名": "王鹏",
|
||||
"性别": "男",
|
||||
"劳动合同号": "237338",
|
||||
"2024.02考试成绩": "98.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "29",
|
||||
"单位职务": "东濮采气管理区主管师",
|
||||
"姓名": "于蔚兰",
|
||||
"性别": "女",
|
||||
"劳动合同号": "101355",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "83.0",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "30",
|
||||
"单位职务": "东濮采气管理区主管师",
|
||||
"姓名": "何战波",
|
||||
"性别": "男",
|
||||
"劳动合同号": "239771",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "87.0",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "31",
|
||||
"单位职务": "东濮采气管理区助理师",
|
||||
"姓名": "裴昱赫",
|
||||
"性别": "男",
|
||||
"劳动合同号": "239561",
|
||||
"2024.02考试成绩": "92.0",
|
||||
"2024.08考试成绩": "83.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "32",
|
||||
"单位职务": "东濮采气管理区助理师",
|
||||
"姓名": "李锡原",
|
||||
"性别": "男",
|
||||
"劳动合同号": "241174",
|
||||
"2024.02考试成绩": "94.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "33",
|
||||
"单位职务": "文留输气管理区副经理",
|
||||
"姓名": "王京健",
|
||||
"性别": "男",
|
||||
"劳动合同号": "239543",
|
||||
"2024.02考试成绩": "100.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "34",
|
||||
"单位职务": "文留输气管理区副经理",
|
||||
"姓名": "胡海",
|
||||
"性别": "男",
|
||||
"劳动合同号": "095325",
|
||||
"2024.02考试成绩": "98.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "35",
|
||||
"单位职务": "文留输气管理区主管",
|
||||
"姓名": "刘先振",
|
||||
"性别": "男",
|
||||
"劳动合同号": "013995",
|
||||
"2024.02考试成绩": "96.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "36",
|
||||
"单位职务": "文留输气管理区主管师",
|
||||
"姓名": "张琦",
|
||||
"性别": "男",
|
||||
"劳动合同号": "239530",
|
||||
"2024.02考试成绩": "97.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "37",
|
||||
"单位职务": "柳屯输气管理区主管师",
|
||||
"姓名": "韩宣春",
|
||||
"性别": "男",
|
||||
"劳动合同号": "022645",
|
||||
"2024.02考试成绩": "98.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "38",
|
||||
"单位职务": "巡线大队主管师",
|
||||
"姓名": "王斌",
|
||||
"性别": "男",
|
||||
"劳动合同号": "025333",
|
||||
"2024.02考试成绩": "100.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "39",
|
||||
"单位职务": "压缩机维保项目部副经理",
|
||||
"姓名": "郭阳",
|
||||
"性别": "男",
|
||||
"劳动合同号": "013992",
|
||||
"2024.02考试成绩": "94.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "40",
|
||||
"单位职务": "压缩机维保项目部副经理",
|
||||
"姓名": "张恒立",
|
||||
"性别": "男",
|
||||
"劳动合同号": "240655",
|
||||
"2024.02考试成绩": "93.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "41",
|
||||
"单位职务": "压缩机维保项目部助理师",
|
||||
"姓名": "张博",
|
||||
"性别": "男",
|
||||
"劳动合同号": "241196",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "89.0",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "42",
|
||||
"单位职务": "普光项目部副经理",
|
||||
"姓名": "王宝华",
|
||||
"性别": "男",
|
||||
"劳动合同号": "017889",
|
||||
"2024.02考试成绩": "97.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "43",
|
||||
"单位职务": "普光项目部党支部副书记",
|
||||
"姓名": "杨申",
|
||||
"性别": "男",
|
||||
"劳动合同号": "239677",
|
||||
"2024.02考试成绩": "100.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "44",
|
||||
"单位职务": "普光项目部主管师",
|
||||
"姓名": "周峰",
|
||||
"性别": "男",
|
||||
"劳动合同号": "095931",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "89.0",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "45",
|
||||
"单位职务": "普光项目部助理师",
|
||||
"姓名": "安克法",
|
||||
"性别": "男",
|
||||
"劳动合同号": "239718",
|
||||
"2024.02考试成绩": "92.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "46",
|
||||
"单位职务": "输气管理项目部副主任师",
|
||||
"姓名": "蔡小虎",
|
||||
"性别": "男",
|
||||
"劳动合同号": "043004",
|
||||
"2024.02考试成绩": "96.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "47",
|
||||
"单位职务": "人力资源服务中心主管师",
|
||||
"姓名": "熊文",
|
||||
"性别": "男",
|
||||
"劳动合同号": "041870",
|
||||
"2024.02考试成绩": "98.0",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年2月"
|
||||
},
|
||||
{
|
||||
"序号": "48",
|
||||
"单位职务": "生产调度室主管",
|
||||
"姓名": "孙东阳",
|
||||
"性别": "男",
|
||||
"劳动合同号": "013998",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "94.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "49",
|
||||
"单位职务": "综合办公室主办",
|
||||
"姓名": "王谦",
|
||||
"性别": "男",
|
||||
"劳动合同号": "236681",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "92.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "50",
|
||||
"单位职务": "综合办公室助理师",
|
||||
"姓名": "王云尧",
|
||||
"性别": "男",
|
||||
"劳动合同号": "240974",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "95.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "51",
|
||||
"单位职务": "安全环保室助理员",
|
||||
"姓名": "高晨峰",
|
||||
"性别": "男",
|
||||
"劳动合同号": "240477",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "94.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "52",
|
||||
"单位职务": "组织人事室助理员",
|
||||
"姓名": "吕晓路",
|
||||
"性别": "男",
|
||||
"劳动合同号": "237039",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "92.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "53",
|
||||
"单位职务": "市场开发室主办",
|
||||
"姓名": "郑慧研",
|
||||
"性别": "男",
|
||||
"劳动合同号": "101099",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "100.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "54",
|
||||
"单位职务": "安全环保督查中心(工程监督中心)主办",
|
||||
"姓名": "张龙超",
|
||||
"性别": "男",
|
||||
"劳动合同号": "236628",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "94.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "55",
|
||||
"单位职务": "安全环保督查中心(工程监督中心)助理师",
|
||||
"姓名": "杨高峰",
|
||||
"性别": "男",
|
||||
"劳动合同号": "240973",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "91.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "56",
|
||||
"单位职务": "生产服务中心党支部副书记",
|
||||
"姓名": "柳彬",
|
||||
"性别": "男",
|
||||
"劳动合同号": "098107",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "95.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "57",
|
||||
"单位职务": "治安保卫中心副主任",
|
||||
"姓名": "杨舜",
|
||||
"性别": "男",
|
||||
"劳动合同号": "100521",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "93.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "58",
|
||||
"单位职务": "天然气计量化验中心主管",
|
||||
"姓名": "程志伟",
|
||||
"性别": "男",
|
||||
"劳动合同号": "101359",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "91.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "59",
|
||||
"单位职务": "开发研究所副所长",
|
||||
"姓名": "曹正安",
|
||||
"性别": "男",
|
||||
"劳动合同号": "039383",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "93.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "60",
|
||||
"单位职务": "开发研究所主管师",
|
||||
"姓名": "龙一慧",
|
||||
"性别": "女",
|
||||
"劳动合同号": "240318",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "93.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "61",
|
||||
"单位职务": "开发研究所主管师",
|
||||
"姓名": "李香芹",
|
||||
"性别": "女",
|
||||
"劳动合同号": "040224",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "92.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "62",
|
||||
"单位职务": "文留输气管理区副经理",
|
||||
"姓名": "张海波",
|
||||
"性别": "男",
|
||||
"劳动合同号": "042449",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "98.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "63",
|
||||
"单位职务": "柳屯输气管理区党支部副书记、副经理",
|
||||
"姓名": "张超",
|
||||
"性别": "男",
|
||||
"劳动合同号": "103814",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "94.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "64",
|
||||
"单位职务": "通南巴项目助理师",
|
||||
"姓名": "梁鹏辉",
|
||||
"性别": "男",
|
||||
"劳动合同号": "240534",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "98.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2026年8月"
|
||||
},
|
||||
{
|
||||
"序号": "65",
|
||||
"单位职务": "市场开发室主管",
|
||||
"姓名": "徐胜愿",
|
||||
"性别": "男",
|
||||
"劳动合同号": "043083",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "96.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "66",
|
||||
"单位职务": "安全环保室主办",
|
||||
"姓名": "鲍灵云",
|
||||
"性别": "女",
|
||||
"劳动合同号": "098095",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "95.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "67",
|
||||
"单位职务": "组织人事室主办",
|
||||
"姓名": "高俊华",
|
||||
"性别": "女",
|
||||
"劳动合同号": "097139",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "99.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "68",
|
||||
"单位职务": "人力资源服务中心助理师",
|
||||
"姓名": "周正葳",
|
||||
"性别": "男",
|
||||
"劳动合同号": "240970",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "99.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "69",
|
||||
"单位职务": "人力资源服务中心业务员",
|
||||
"姓名": "武文斌",
|
||||
"性别": "男",
|
||||
"劳动合同号": "236789",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "94.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "70",
|
||||
"单位职务": "纪检监督室助理员",
|
||||
"姓名": "屈倩竹",
|
||||
"性别": "女",
|
||||
"劳动合同号": "240735",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "93.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "71",
|
||||
"单位职务": "天然气计量化验中心副主任",
|
||||
"姓名": "郭照祥",
|
||||
"性别": "男",
|
||||
"劳动合同号": "237637",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "92.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "72",
|
||||
"单位职务": "天然气计量化验中心副主任师",
|
||||
"姓名": "段善友",
|
||||
"性别": "男",
|
||||
"劳动合同号": "096248",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "92.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "73",
|
||||
"单位职务": "东濮采气管理区主管",
|
||||
"姓名": "张凯",
|
||||
"性别": "男",
|
||||
"劳动合同号": "018913",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "98.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "74",
|
||||
"单位职务": "东濮采气管理区主办",
|
||||
"姓名": "胡小光",
|
||||
"性别": "男",
|
||||
"劳动合同号": "097043",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "95.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "75",
|
||||
"单位职务": "东濮采气管理项目部主管",
|
||||
"姓名": "贾福东",
|
||||
"性别": "男",
|
||||
"劳动合同号": "026356",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "93.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "76",
|
||||
"单位职务": "柳屯输气管理区助理师",
|
||||
"姓名": "刘子敬",
|
||||
"性别": "男",
|
||||
"劳动合同号": "240638",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "95.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "77",
|
||||
"单位职务": "柳屯输气管理区助理师",
|
||||
"姓名": "马天娇",
|
||||
"性别": "女",
|
||||
"劳动合同号": "241155",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "93.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "78",
|
||||
"单位职务": "压缩机维保项目部助理师",
|
||||
"姓名": "王帅",
|
||||
"性别": "男",
|
||||
"劳动合同号": "103322",
|
||||
"2024.02考试成绩": "83.0",
|
||||
"2024.08考试成绩": "93.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "79",
|
||||
"单位职务": "山东管道项目部业务员",
|
||||
"姓名": "侯明路",
|
||||
"性别": "男",
|
||||
"劳动合同号": "238781",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "91.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "80",
|
||||
"单位职务": "普光项目部副经理",
|
||||
"姓名": "姚文涛",
|
||||
"性别": "男",
|
||||
"劳动合同号": "073696",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "99.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "81",
|
||||
"单位职务": "普光项目部主管师",
|
||||
"姓名": "彭端勇",
|
||||
"性别": "男",
|
||||
"劳动合同号": "101106",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "98.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "82",
|
||||
"单位职务": "普光项目部助理师",
|
||||
"姓名": "陈饷",
|
||||
"性别": "男",
|
||||
"劳动合同号": "023239",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "96.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "83",
|
||||
"单位职务": "通南巴项目部主管",
|
||||
"姓名": "李鹏辉",
|
||||
"性别": "男",
|
||||
"劳动合同号": "101104",
|
||||
"2024.02考试成绩": "87.0",
|
||||
"2024.08考试成绩": "96.0",
|
||||
"2025.02考试成绩": "",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "84",
|
||||
"单位职务": "通南巴项目部助理师",
|
||||
"姓名": "付小波",
|
||||
"性别": "男",
|
||||
"劳动合同号": "013974",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "93.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "85",
|
||||
"单位职务": "天津LNG项目部技术员",
|
||||
"姓名": "江嘉俊",
|
||||
"性别": "男",
|
||||
"劳动合同号": "103317",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "99.0",
|
||||
"截止有效期": "2027年2月"
|
||||
},
|
||||
{
|
||||
"序号": "86",
|
||||
"单位职务": "天津LNG项目部业务员",
|
||||
"姓名": "周晓亮",
|
||||
"性别": "男",
|
||||
"劳动合同号": "026622",
|
||||
"2024.02考试成绩": "",
|
||||
"2024.08考试成绩": "",
|
||||
"2025.02考试成绩": "93.0",
|
||||
"截止有效期": "2027年2月"
|
||||
}
|
||||
]
|
@ -1,139 +1,162 @@
|
||||
# cxc-szcx-dateRangeSelect
|
||||
# # 紧凑型日期时间选择器组件说明书
|
||||
|
||||
## 一、组件概述
|
||||
`compact-datetime-picker` 是一个基于 Vue 开发的紧凑型日期时间选择器组件,用于在页面中选择日期范围。组件提供了自然周期和相对周期两种选择模式,并且支持快捷选择本周、本月、本季、本年、近一周、近一月、近一季、近一年等常见时间范围。
|
||||
### 紧凑型日期时间选择器组件说明
|
||||
|
||||
## 二、组件依赖
|
||||
- **Vue**:组件基于 Vue 框架开发。
|
||||
- **uni-popup**:来自 `uni-app` 的弹窗组件,用于显示日期选择器的弹出层。
|
||||
|
||||
## 三、组件使用方法
|
||||
#### 一、组件功能
|
||||
该组件是基于 UniApp 开发的紧凑型日期选择器,支持以下功能:
|
||||
1. **三种选择模式**:
|
||||
- 单选(single)
|
||||
- 范围选择(range)
|
||||
- 多选(multiple)
|
||||
2. **弹出式日历选择**:
|
||||
- 支持月份滑动切换
|
||||
- 显示农历日期
|
||||
- 支持同天范围选择
|
||||
3. **数据双向绑定**:
|
||||
- 通过 `modelValue` 实现父子组件数据同步
|
||||
4. **自定义样式**:
|
||||
- 紧凑型输入框设计
|
||||
- 支持自定义主题颜色
|
||||
- 响应式布局适配
|
||||
|
||||
### 1. 引入组件
|
||||
在需要使用该组件的 Vue 文件中,引入 `compact-datetime-picker` 组件。
|
||||
|
||||
#### 二、组件Props
|
||||
|
||||
| 参数名 | 类型 | 默认值 | 说明 |
|
||||
|--------------|------------|----------|--------------------------|
|
||||
| `modelValue` | Array/Date | `[null]` | 双向绑定的值(根据模式变化) |
|
||||
| `mode` | String | `single` | 选择模式(single/range/multiple) |
|
||||
|
||||
|
||||
#### 三、组件数据
|
||||
|
||||
| 名称 | 类型 | 说明 |
|
||||
|------------|--------|--------------------------|
|
||||
| `dateRange` | Array | 当前选中的日期范围(内部状态) |
|
||||
|
||||
|
||||
#### 四、组件方法
|
||||
|
||||
| 方法名 | 参数 | 说明 |
|
||||
|----------------|------------|--------------------------|
|
||||
| `openPicker` | 无 | 打开日历选择器 |
|
||||
| `calendarConfirm` | `e` | 日历确认回调(处理选中数据) |
|
||||
|
||||
|
||||
#### 五、事件说明
|
||||
|
||||
| 事件名 | 说明 | 返回值 |
|
||||
|--------------|--------------------------|----------------------|
|
||||
| `update:modelValue` | 数据更新时触发 | 当前选中的日期数组 |
|
||||
|
||||
|
||||
#### 六、样式说明
|
||||
```vue
|
||||
<style scoped>
|
||||
.input-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.compact-input {
|
||||
flex: 1;
|
||||
padding: 6px 8px;
|
||||
font-size: 16px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
border: 1px solid #dcdfe6;
|
||||
border-radius: 4px;
|
||||
text-align: center;
|
||||
width: 120px;
|
||||
}
|
||||
|
||||
.compact-input.active {
|
||||
border-color: #409eff;
|
||||
background-color: #f5f7ff;
|
||||
}
|
||||
</style>
|
||||
```
|
||||
|
||||
**关键样式点**:
|
||||
1. 输入框宽度固定为 120px
|
||||
2. 紧凑型设计(height: 20px)
|
||||
3. 活动状态样式增强
|
||||
4. 水平排列布局
|
||||
|
||||
|
||||
#### 七、使用示例
|
||||
```vue
|
||||
<template>
|
||||
<view>
|
||||
<compact-datetime-picker v-model="dateRange" />
|
||||
<!-- 单选模式 -->
|
||||
<compact-datetime-picker
|
||||
v-model="singleDate"
|
||||
mode="single"
|
||||
/>
|
||||
|
||||
<!-- 范围选择模式 -->
|
||||
<compact-datetime-picker
|
||||
v-model="rangeDate"
|
||||
mode="range"
|
||||
/>
|
||||
|
||||
<!-- 多选模式 -->
|
||||
<compact-datetime-picker
|
||||
v-model="multipleDate"
|
||||
mode="multiple"
|
||||
/>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CompactDateTimePicker from '@/components/compact-datetime-picker.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
CompactDateTimePicker
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dateRange: [null, null]
|
||||
singleDate: null,
|
||||
rangeDate: [null, null],
|
||||
multipleDate: []
|
||||
};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
```
|
||||
|
||||
### 2. 组件属性
|
||||
| 属性名 | 类型 | 默认值 | 描述 |
|
||||
| ---- | ---- | ---- | ---- |
|
||||
| `modelValue` | `Array` | `[null, null]` | 双向绑定的日期范围数组,第一个元素为开始日期,第二个元素为结束日期。 |
|
||||
|
||||
## 四、组件内部实现
|
||||
|
||||
### 1. 模板部分
|
||||
- **输入框区域**:显示开始日期和结束日期的输入框,点击输入框可打开日期选择弹窗。
|
||||
- **日期选择弹窗**:
|
||||
- **快捷按钮区域**:包含自然周期和相对周期的切换按钮,以及不同模式下的快捷操作按钮。
|
||||
- **日历选择区域**:显示当前月份的日历,可选择日期。
|
||||
- **操作按钮**:包含取消和确定按钮,用于关闭弹窗和确认选择的日期范围。
|
||||
|
||||
### 2. 脚本部分
|
||||
|
||||
#### 2.1 数据属性
|
||||
#### 八、注意事项
|
||||
1. **日期格式要求**:
|
||||
- 单选模式:`YYYY-MM-DD` 字符串格式
|
||||
- 范围模式:`[startDate, endDate]` 数组格式
|
||||
- 多选模式:`[date1, date2, ...]` 数组格式
|
||||
2. **依赖组件**:
|
||||
- 需安装 `wu-calendar` 组件(第三方库)
|
||||
3. **异常处理**:
|
||||
```javascript
|
||||
data() {
|
||||
return {
|
||||
isNatural: true, // 是否为自然周期模式
|
||||
activeType: 'start', // 当前活跃的日期选择类型(开始或结束)
|
||||
currentMonth: new Date(), // 当前显示的月份
|
||||
tempStart: null, // 临时开始日期
|
||||
tempEnd: null, // 临时结束日期
|
||||
weekDays: ['日', '一', '二', '三', '四', '五', '六'], // 星期几的显示文本
|
||||
quickButtonszr: [
|
||||
{ label: '本周', type: 'week' },
|
||||
{ label: '本月', type: 'month' },
|
||||
{ label: '本季', type: 'quarter' },
|
||||
{ label: '本年', type: 'year' }
|
||||
], // 自然周期模式下的快捷按钮
|
||||
quickButtonsxd: [
|
||||
{ label: '近一周', type: 'week' },
|
||||
{ label: '近一月', type: 'month' },
|
||||
{ label: '近一季', type: 'quarter' },
|
||||
{ label: '近一年', type: 'year' }
|
||||
] // 相对周期模式下的快捷按钮
|
||||
};
|
||||
calendarConfirm(e) {
|
||||
this.dateRange = [];
|
||||
try {
|
||||
this.dateRange.push(formatDate(new Date(e.range.before)));
|
||||
this.dateRange.push(formatDate(new Date(e.range.after)));
|
||||
} catch (error) {
|
||||
return; // 异常处理
|
||||
}
|
||||
this.$emit('update:modelValue', this.dateRange);
|
||||
}
|
||||
```
|
||||
4. **性能优化**:
|
||||
- 建议使用 `:range-end-repick="true"` 开启范围重新选择
|
||||
- 通过 `:item-height="45"` 控制日历行高
|
||||
|
||||
#### 2.2 计算属性
|
||||
- `formattedStart`:格式化后的开始日期。
|
||||
- `formattedEnd`:格式化后的结束日期。
|
||||
- `calendarDays`:生成当前月份的日历数据。
|
||||
- `monthText`:当前月份的显示文本。
|
||||
|
||||
#### 2.3 监听属性
|
||||
```javascript
|
||||
watch: {
|
||||
modelValue: {
|
||||
immediate: true,
|
||||
handler(newVal) {
|
||||
this.tempStart = newVal[0];
|
||||
this.tempEnd = newVal[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
监听 `modelValue` 的变化,初始化临时日期。
|
||||
#### 九、扩展功能建议
|
||||
1. 添加时间选择功能
|
||||
2. 支持自定义日期禁用范围
|
||||
3. 增加国际化支持
|
||||
4. 添加动画过渡效果
|
||||
5. 支持预设常用日期范围
|
||||
|
||||
#### 2.4 方法
|
||||
- **打开弹窗并初始化临时值**:`openPicker(type)`,打开日期选择弹窗,并根据活跃类型初始化临时日期。
|
||||
- **日期点击处理**:`handleDayClick(day)`,处理日期点击事件,更新临时开始或结束日期。
|
||||
- **确认选择**:`confirmSelection()`,确认选择的日期范围,触发 `update:modelValue` 事件并关闭弹窗。
|
||||
- **关闭弹窗**:`closePicker()`,关闭日期选择弹窗,并重置临时日期。
|
||||
- **重置临时日期**:`resetTempDates()`,将临时日期重置为当前的 `modelValue`。
|
||||
- **生成日历数据**:`generateCalendar(date)`,根据给定的月份生成日历数据。
|
||||
- **日期选择处理**:`selectDate(date)`,处理日期选择,更新 `modelValue`。
|
||||
- **切换月份**:`changeMonth(offset)`,切换当前显示的月份。
|
||||
- **判断日期状态**:
|
||||
- `isSelected(date)`:判断日期是否被选中。
|
||||
- `isEnd(date)`:判断日期是否为结束日期。
|
||||
- `isToday(date)`:判断日期是否为今天。
|
||||
- `isStart(date)`:判断日期是否为开始日期。
|
||||
- `isInRange(date)`:判断日期是否在选择的范围内。
|
||||
- `isSameDay(d1, d2)`:判断两个日期是否为同一天。
|
||||
- **快捷范围设置**:`setQuickRange(type)`,根据快捷按钮的类型设置日期范围,并关闭弹窗。
|
||||
- **自然周期计算**:`calcNaturalRange(type, currentDate)`,计算自然周期模式下的日期范围。
|
||||
- **相对周期计算**:`calcRelativeRange(type, currentDate)`,计算相对周期模式下的日期范围。
|
||||
- **周计算(周一为起点)**:
|
||||
- `getWeekStart(date)`:获取一周的开始日期。
|
||||
- `getWeekEnd(startDate)`:获取一周的结束日期。
|
||||
- **月末处理**:`lastDayOfMonth(date)`,获取给定月份的最后一天。
|
||||
- **月末日调整**:`adjustMonthEnd(start, end)`,调整开始日期到合适的月末日期。
|
||||
- **闰年判断**:`isLeapYear(year)`,判断给定年份是否为闰年。
|
||||
- **模式切换**:`toggleMode(isNatural)`,切换自然周期和相对周期模式。
|
||||
- **日期格式化**:`formatDate(date)`,将日期格式化为 `YYYY-MM-DD` 的字符串。
|
||||
|
||||
### 3. 样式部分
|
||||
- **输入框区域**:设置输入框的样式,包括边框、背景色、字体大小等。
|
||||
- **紧凑弹窗**:设置弹窗的整体样式,包括背景色、边框半径等。
|
||||
- **紧凑头部**:设置月份标题和导航箭头的样式。
|
||||
- **紧凑日期网格**:设置星期几和日期的显示样式,以及不同状态下的日期背景色和字体颜色。
|
||||
- **快捷按钮区域**:设置模式切换按钮和快捷操作按钮的样式。
|
||||
- **底部操作**:设置取消和确定按钮的样式。
|
||||
|
||||
## 五、注意事项
|
||||
- 组件使用了 `uni-popup` 组件,确保项目中已正确引入和配置。
|
||||
- 日期范围的选择逻辑较为复杂,特别是在自然周期和相对周期的切换以及快捷范围设置时,需注意日期的计算和显示。
|
||||
- 组件的样式是基于 `scoped` 作用域的,可根据项目需求进行调整和扩展。
|
||||
如果需要进一步定制化,可以修改以下部分:
|
||||
1. 日历组件配置(`wu-calendar` 参数)
|
||||
2. 日期格式化函数(`formatDate`)
|
||||
3. 输入框样式和交互逻辑
|
||||
4. 异常处理机制
|
@ -1 +1,90 @@
|
||||
# cxc-szcx-dictSelect
|
||||
### 组件说明:`uni-data-checkbox` 多选字典项选择组件
|
||||
|
||||
#### 一、组件概述
|
||||
该组件基于 Vue 3 和 `uni-data-checkbox` 实现了一个多选的字典项选择器。它通过传入字典编码(`dictCode`)从后端接口获取字典项数据,并将其展示为多选框列表。组件支持双向数据绑定,可将选中的值同步给父组件,同时在选中值发生变化时触发 `change` 事件。
|
||||
|
||||
#### 二、组件使用的技术栈
|
||||
- **框架**:Vue 3(使用组合式 API)
|
||||
- **UI 组件**:`uni-data-checkbox`(用于展示多选框列表)
|
||||
- **请求库**:假设使用了自定义的 `getDictItemsApi` 函数进行后端数据请求
|
||||
|
||||
#### 三、组件输入(Props)
|
||||
|
||||
| 属性名 | 类型 | 是否必填 | 默认值 | 说明 |
|
||||
| ---- | ---- | ---- | ---- | ---- |
|
||||
| `dictCode` | String | 是 | 无 | 用于从后端获取字典项数据的字典编码 |
|
||||
| `modelValue` | String | 否 | '' | 双向绑定的选中值,多个值以逗号分隔 |
|
||||
|
||||
#### 四、组件输出(Emits)
|
||||
|
||||
| 事件名 | 说明 | 参数 |
|
||||
| ---- | ---- | ---- |
|
||||
| `update:modelValue` | 当选中值发生变化时,用于更新父组件的 `modelValue` | 选中值的字符串,多个值以逗号分隔 |
|
||||
| `change` | 当选中值发生变化时触发 | 选中值的字符串,多个值以逗号分隔 |
|
||||
|
||||
#### 五、组件内部数据
|
||||
|
||||
| 变量名 | 类型 | 说明 |
|
||||
| ---- | ---- | ---- |
|
||||
| `dictItems` | Ref<Array> | 存储从后端获取的字典项数据 |
|
||||
| `selectedValuesArray` | Ref<Array> | 存储当前选中的值,以数组形式存储 |
|
||||
|
||||
#### 六、组件方法
|
||||
|
||||
##### 1. `loadDictItems`
|
||||
- **功能**:异步从后端接口获取字典项数据,并将其赋值给 `dictItems`。
|
||||
- **实现逻辑**:
|
||||
- 调用 `getDictItemsApi` 函数,传入 `props.dictCode` 进行数据请求。
|
||||
- 若请求成功,将响应数据的 `result` 字段赋值给 `dictItems.value`。
|
||||
- 若请求失败,在控制台输出错误信息。
|
||||
|
||||
##### 2. 监听 `selectedValuesArray` 的变化
|
||||
- **功能**:当 `selectedValuesArray` 发生变化时,将选中的值转换为字符串,并触发 `update:modelValue` 和 `change` 事件通知父组件。
|
||||
- **实现逻辑**:
|
||||
- 使用 `watch` 函数监听 `selectedValuesArray` 的变化。
|
||||
- 当变化发生时,将新的选中值数组使用 `join(',')` 方法转换为字符串。
|
||||
- 触发 `update:modelValue` 和 `change` 事件,将转换后的字符串作为参数传递。
|
||||
|
||||
##### 3. 监听 `props.modelValue` 的变化
|
||||
- **功能**:当父组件传递的 `modelValue` 发生变化时,更新 `selectedValuesArray`。
|
||||
- **实现逻辑**:
|
||||
- 使用 `watch` 函数监听 `props.modelValue` 的变化。
|
||||
- 当变化发生时,将新的 `modelValue` 使用 `split(',')` 方法转换为数组,并赋值给 `selectedValuesArray.value`。
|
||||
- `immediate: true` 表示在组件初始化时就会执行一次监听回调,确保初始值能正确同步。
|
||||
|
||||
#### 七、组件生命周期钩子
|
||||
|
||||
##### `onMounted`
|
||||
- **功能**:在组件挂载后调用 `loadDictItems` 函数,从后端获取字典项数据。
|
||||
|
||||
#### 八、使用示例
|
||||
```vue
|
||||
<template>
|
||||
<div>
|
||||
<MyDictCheckbox
|
||||
:dictCode="myDictCode"
|
||||
v-model="selectedValues"
|
||||
@change="handleChange"
|
||||
/>
|
||||
<p>当前选中的值: {{ selectedValues }}</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from 'vue';
|
||||
import MyDictCheckbox from './MyDictCheckbox.vue';
|
||||
|
||||
const myDictCode = 'exampleDictCode';
|
||||
const selectedValues = ref('');
|
||||
|
||||
const handleChange = (newValue) => {
|
||||
console.log('选中值发生变化:', newValue);
|
||||
};
|
||||
</script>
|
||||
```
|
||||
|
||||
#### 九、注意事项
|
||||
- 确保 `getDictItemsApi` 函数能正确获取后端数据,且响应数据的格式符合 `{ result: [...] }`。
|
||||
- 若 `modelValue` 初始值为空字符串,`selectedValuesArray` 会初始化为空数组。
|
||||
- 由于使用了 `watch` 的 `deep: true` 选项,在 `selectedValuesArray` 内部元素发生变化时也会触发监听回调,可能会影响性能,需注意。
|
@ -1,35 +1,106 @@
|
||||
# trq-depart-select
|
||||
# 1.0.1
|
||||
更新,添加返回值,将整个机构对象返回父组件
|
||||
```javascript
|
||||
const onpopupclosed = ((e) => {
|
||||
selectDepartID.value = tempSelectDepartID.value
|
||||
$emit('change', selectDepartID.value, departInfo)
|
||||
})
|
||||
### 组件说明:单位选择组件
|
||||
|
||||
#### 一、组件概述
|
||||
此组件为基于 UniApp 和 Vue 3 构建的单位选择组件,借助 `uni-data-picker` 组件实现单位的选择功能。组件支持依据传入的 `returnCodeOrID` 属性,返回单位的 `orgCode` 或者 `id`。组件会从后端获取单位列表数据,并在用户选择单位时触发 `change` 事件通知父组件。
|
||||
|
||||
#### 二、组件使用的技术栈
|
||||
- **框架**:Vue 3(使用组合式 API)
|
||||
- **状态管理**:`@/store` (推测使用了 Vuex 或 Pinia 进行状态管理)
|
||||
- **UI 组件**:`uni-data-picker` (用于展示单位选择器)
|
||||
- **请求库**:自定义的 API 请求函数(如 `queryMyDeptTreeListApi`)
|
||||
|
||||
#### 三、组件输入(Props)
|
||||
|
||||
| 属性名 | 类型 | 是否必填 | 默认值 | 说明 |
|
||||
| ---- | ---- | ---- | ---- | ---- |
|
||||
| `returnCodeOrID` | String | 否 | "orgCode" | 决定返回单位的 `orgCode` 还是 `id` |
|
||||
|
||||
#### 四、组件输出(Emits)
|
||||
|
||||
| 事件名 | 说明 | 参数 |
|
||||
| ---- | ---- | ---- |
|
||||
| `change` | 当用户选择单位时触发,用于通知父组件选择结果 | 选中单位的 `orgCode` 或 `id`,以及单位的全部信息对象 |
|
||||
|
||||
#### 五、组件内部数据
|
||||
|
||||
| 变量名 | 类型 | 说明 |
|
||||
| ---- | ---- | ---- |
|
||||
| `departList` | Ref<Array> | 存储从后端获取的单位列表数据 |
|
||||
| `selectDepartID` | Ref<String> | 当前选中的单位 ID |
|
||||
| `selectDepartIDS` | Ref<Array> | 选中的级联单位 ID 数组 |
|
||||
| `tempSelectDepartID` | Ref<String> | 临时选择的单位 ID |
|
||||
| `depart` | Ref<Object> | 对 `uni-data-picker` 组件的引用 |
|
||||
| `departInfo` | Ref<Object> | 选中单位的全部信息 |
|
||||
|
||||
#### 六、组件方法
|
||||
|
||||
##### 1. `getDepartList`
|
||||
- **功能**:异步从后端获取单位列表数据,并将其赋值给 `departList`。
|
||||
- **实现逻辑**:
|
||||
- 调用 `queryMyDeptTreeListApi` 函数进行数据请求。
|
||||
- 若请求成功,将响应数据的 `result` 字段赋值给 `departList.value`。
|
||||
- 若请求失败,在控制台输出错误信息。
|
||||
|
||||
##### 2. `onnodeclick`
|
||||
- **功能**:处理用户点击单位节点的事件,更新 `departInfo` 和 `tempSelectDepartID`。
|
||||
- **实现逻辑**:
|
||||
- 将点击的单位信息赋值给 `departInfo.value`。
|
||||
- 根据 `props.returnCodeOrID` 的值,将点击单位的 `orgCode` 或 `value` 赋值给 `tempSelectDepartID.value`。
|
||||
|
||||
##### 3. `onchange`
|
||||
- **功能**:处理 `uni-data-picker` 的 `change` 事件,更新 `selectDepartID`。
|
||||
- **实现逻辑**:将选择的单位 ID 赋值给 `selectDepartID.value`。
|
||||
|
||||
##### 4. `onpopupclosed`
|
||||
- **功能**:处理 `uni-data-picker` 弹出框关闭的事件,将 `tempSelectDepartID` 的值赋给 `selectDepartID`。
|
||||
- **实现逻辑**:将 `tempSelectDepartID.value` 赋值给 `selectDepartID.value`。
|
||||
|
||||
##### 5. 监听 `tempSelectDepartID` 的变化
|
||||
- **功能**:当 `tempSelectDepartID` 发生变化时,触发 `change` 事件通知父组件。
|
||||
- **实现逻辑**:
|
||||
- 使用 `watch` 函数监听 `tempSelectDepartID` 的变化。
|
||||
- 当变化发生时,触发 `change` 事件,将 `tempSelectDepartID` 的新值和 `departInfo` 作为参数传递。
|
||||
- `immediate: true` 表示在组件初始化时就会执行一次监听回调。
|
||||
- `deep: true` 表示深度监听,确保 `tempSelectDepartID` 内部属性变化也能被捕获。
|
||||
|
||||
#### 七、组件生命周期钩子
|
||||
|
||||
##### `onLoad`
|
||||
- **功能**:在页面加载时调用 `getDepartList` 函数,从后端获取单位列表数据。
|
||||
|
||||
#### 八、样式说明
|
||||
```css
|
||||
.no-wrap-picker::v-deep .uni-data-picker-item {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
```
|
||||
增加选择到最后层级触发的change时间,返回数据到父组件的功能
|
||||
- 此样式规则用于强制 `uni-data-picker` 的选项不换行,超出部分隐藏并显示省略号。
|
||||
|
||||
```javascript
|
||||
const onchange = ((e) => {
|
||||
$emit('change', e.detail.value[e.detail.value.length - 1].value, {})
|
||||
})
|
||||
#### 九、使用示例
|
||||
```vue
|
||||
<template>
|
||||
<div>
|
||||
<UnitSelector
|
||||
:returnCodeOrID="'id'"
|
||||
@change="handleUnitChange"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import UnitSelector from './UnitSelector.vue';
|
||||
|
||||
const handleUnitChange = (selectedId, unitInfo) => {
|
||||
console.log('选中的单位 ID:', selectedId);
|
||||
console.log('选中单位的信息:', unitInfo);
|
||||
};
|
||||
</script>
|
||||
```
|
||||
|
||||
|
||||
|
||||
# 1.0
|
||||
|
||||
属性 returnCodeOrID 默认值 orgCode, 组件返回单位的orgCode, 不设置属性或设置为其他,组件返回 单位ID
|
||||
|
||||
事件:change 选择内容发生变化时发生,通过emit 返回给父组件 选择单位的ID或code
|
||||
|
||||
由于uni-data-picker 无法选择任意节点数据,通过关闭组件事件返回当前选择的节点数据。
|
||||
```javascript
|
||||
const onpopupclosed = ((e) => {
|
||||
selectDepartID.value = tempSelectDepartID.value
|
||||
$emit('change', selectDepartID.value)
|
||||
})
|
||||
```
|
||||
|
||||
|
||||
#### 十、注意事项
|
||||
- 确保 `queryMyDeptTreeListApi` 函数能正确获取后端数据,且响应数据的格式符合 `{ success: true, result: [...] }`。
|
||||
- 由于使用了 `watch` 的 `deep: true` 选项,在 `tempSelectDepartID` 内部元素发生变化时也会触发监听回调,可能会影响性能,需注意。
|
||||
- 代码中注释掉的部分(如 `onnodeclick` 和 `onpopupclosed` 中触发 `change` 事件的代码)可能是之前的实现逻辑,若需要可根据实际情况恢复使用。
|
Loading…
Reference in New Issue
Block a user