1.审批角标 2.请假审批历史查询

This commit is contained in:
yangzhq68909 2025-05-27 11:35:28 +08:00
parent 61a1034efd
commit 0aafb0d04a
33 changed files with 238 additions and 211 deletions

View File

@ -4,5 +4,5 @@ NODE_ENV = 'development'
VITE_DELETE_CONSOLE = false
# 是否开启sourcemap
VITE_SHOW_SOURCEMAP = true
VITE_SERVER_BASEURL = 'http://10.75.15.247:8080/jeecg-boot'
VITE_SERVER_BASEURL = 'http://10.75.15.249:8080/jeecg-boot'
#VITE_SERVER_BASEURL = 'https://36.112.48.190/jeecg-boot'

View File

@ -33,16 +33,16 @@ export default defineUniPages({
text: '首页',
},
{
"iconPath": "static/tabbar/tabbar-produce.png",
"selectedIconPath": "static/tabbar/tabbar-produce-2.png",
"pagePath": "pages/produce/index",
"iconPath": "static/tabbar/tabbar-production.png",
"selectedIconPath": "static/tabbar/tabbar-production-2.png",
"pagePath": "pages/production/index",
"text": "生产"
},
{
iconPath: 'static/tabbar/tabbar-workHome-2.png',
selectedIconPath: 'static/tabbar/tabbar-workHome.png',
pagePath: 'pages/workHome/index',
text: '工作台',
iconPath: 'static/tabbar/tabbar-operation.png',
selectedIconPath: 'static/tabbar/tabbar-operation-2.png',
pagePath: 'pages/operation/index',
text: '经营',
},
{
iconPath: 'static/tabbar/tabbar-user-2.png',

View File

@ -26,7 +26,7 @@ export function querySuperiorSystemApi(config : Object) { // 上级制度
export function queryFactorySystemApi(config : Object) { //
return http({
url: '/cxczd/cxcZdgl/list',
url: '/cxczd/cxcZdgl/zsList',
method: 'GET',
data: config
})

View File

@ -1,5 +1,6 @@
<template>
<wd-cell-group border>
<wd-cell-group>
<wd-cell title="申请信息" value="历史查询" size="large" clickable @click="onClick"/>
<wd-cell title="职工姓名" :value="info.username_dictText" />
<wd-cell title="所属单位" :value="info.sysOrgCode_dictText" />
<wd-cell title="联系方式" :value="info.phone" />
@ -10,29 +11,21 @@
<wd-cell title="出发地" :value="info.departure" />
<wd-cell title="目的地" :value="info.destination" />
<wd-cell title="请假原因" :value="info.reason" />
<wd-cell title="附件" v-if="info.path&&info.path.length>0">
<template v-for="(img, index) in info.path" :key="index">
<wd-cell title="附件" v-if="info.path">
<template v-for="(img, index) in image" :key="index">
<wd-img :width="100" :height="100" :src="img" :enable-preview="true" />
</template>
</wd-cell>
</wd-cell-group>
</template>
<script setup lang="ts">
import {
ref,
onMounted
} from 'vue'
<script setup>
import {
queryByIdApi
} from '@/api/humanResource/absence'
import {
getEnvBaseUrl,
imgUrl
} from '@/utils/index'
import {
useUserStore
} from '@/store/user'
defineOptions({
name: 'index',
@ -40,54 +33,26 @@
styleIsolation: 'shared',
},
})
const userStore = useUserStore();
const examineleader = ref('')
const imageValue = ref([])
const ifShowFj = ref(false)
const imageStyles = {
width: 64,
height: 64,
border: {
color: "#dce7e1",
width: 2,
style: 'dashed',
radius: '2px'
}
}
const uploadUrl = getEnvBaseUrl() + '/sys/common/upload?appPath=职工请假/' + userStore.userInfo.department + '/' +
userStore.userInfo.realname
const info = ref({})
const image = ref([])
const props = defineProps({
history: {
type: String,
default: ""
},
activeKey: {
type: String,
default: ""
},
formData: {
type: Object,
default: () => { },
default: () => {},
}
})
const info = ref({})
const onClick = () => {
uni.navigateTo({
url: `/pages-humanResource/absence/index?username=${info.value.username}`
});
}
//
const qjQueryById = () => {
console.log(props.formData)
queryByIdApi(props.formData.dataId).then((res) => {
if (res.success) {
if (res.result.records[0].zwmc == '单位专家' || res.result.records[0].zwmc == '基层正职' ||
res.result.records[0].zwmc == '高级主管') {
examineleader.value = '分管领导';
} else {
examineleader.value = '审批领导';
}
info.value = res.result.records[0]
// imageValue
info.value.path = info.value.path.split(',').map(path => imgUrl(path))
console.log(info)
image.value = info.value.path.split(',').map(path => imgUrl(path))
}
})
}
@ -95,7 +60,6 @@
onMounted(() => {
qjQueryById()
})
</script>
<style lang="scss" scoped>

View File

@ -167,7 +167,6 @@
errors
}) => {
if (valid) {
console.log('----',model)
const submitData = {
...model,
type: model.type[model.type.length - 1], //

View File

@ -21,10 +21,11 @@
<wd-cell title="目的地" :value="info.destination" />
<wd-cell title="请假原因" :value="info.reason" />
<wd-cell title="附件" v-if="info.path">
<template v-for="(img, index) in joy" :key="index">
<template v-for="(img, index) in image" :key="index">
<wd-img :width="100" :height="100" :src="img" :enable-preview="true" />
</template>
</wd-cell>
<wd-cell title="流程状态" :value="info.bpmStatus_dictText" />
<wd-cell title="销假时间" :value="info.resumptiontime" v-if="info.resumptiontime && info.bpmStatus == '3'" />
<view v-if="!info.resumptiontime && info.bpmStatus == '3'">
<wd-calendar label="销假时间" prop="resumptiontime" v-model="resumptiontime" :min-date="minDate"/>
@ -58,7 +59,7 @@
const userStore = useUserStore();
const info = ref({})
const path = ref([])
const joy = ref([])
const image = ref([])
const resumptiontime = ref(0)
const minDate = ref(0)
const queryById = (e) => {
@ -66,7 +67,7 @@
if (res.success) {
info.value = res.result.records[0]
minDate.value = dateStringToTimestamp(info.value.begintime)
joy.value = info.value.path.split(',').map(path => imgUrl(path))
image.value = info.value.path.split(',').map(path => imgUrl(path))
}
})
}

View File

@ -10,6 +10,7 @@
<template>
<PageLayout navTitle="请假信息">
<wd-card style="margin-top: 10px;">
<view v-show="!username">
<wd-row>
<wd-col :span="12"><uni-title title="所属单位" align="left" type="h5"></uni-title></wd-col>
<wd-col :span="12"><uni-title title="重置" align="right" type="h5" color="#666666"
@ -27,14 +28,19 @@
</wd-row>
<wd-row>
<wd-col :span="12">
<uni-easyinput v-model="realname" placeholder="姓名模糊查询" @change="queryLeave" @clear="queryLeave" />
<uni-easyinput v-model="realname" placeholder="姓名模糊查询" @change="queryLeave"
@clear="queryLeave" />
</wd-col>
<wd-col :span="12">
<uni-easyinput v-model="contractNumber" placeholder="劳动合同号查询" @change="queryLeave" @clear="queryLeave" />
<uni-easyinput v-model="contractNumber" placeholder="劳动合同号查询" @change="queryLeave"
@clear="queryLeave" />
</wd-col>
</wd-row>
</view>
<wd-row>
<wd-col :span="24"><uni-title title="请假时间" align="left" type="h5"></uni-title></wd-col>
<wd-col :span="12"><uni-title title="请假时间" align="left" type="h5"></uni-title></wd-col>
<wd-col :span="12"><uni-title title="重置" align="right" type="h5" color="#666666"
@click="reset" v-show="username"></uni-title></wd-col>
</wd-row>
<wd-row>
<wd-col :span="24">
@ -74,17 +80,19 @@
const type = ref('') //
const range = ref([]) //
const timeout = ref(null)
const username = ref('') //
let pageNo = 1
let pageSize = 10
let loading = false
const queryLeave = (e) => {
console.log('----', range.value)
let param = {
sysOrgCode: orgCode.value,
begin: range.value[0],
end: range.value[1],
type: type.value,
// username: username.value,
username: username.value,
realname: realname.value,
contractNumbers: contractNumber.value
}
@ -151,7 +159,6 @@
orgCode.value = ''
range.value = []
type.value = ''
// username.value = ''
realname.value = ''
contractNumber.value = ''
queryLeave()
@ -164,8 +171,12 @@
}
onLoad((options) => {
getList()
if (options.username) {
username.value = options.username
}
queryLeave()
});
onReachBottom(() => {
if (loading) return
queryLeave(1); //1

View File

@ -37,7 +37,6 @@
})
// option
watch(() => props.path, (newVal) => {
console.log(newVal)
if (newVal) compName.value = newVal;
//
const comp = modules[`/src/pages-bpm/${compName.value}.vue`]

View File

@ -102,7 +102,6 @@
pageNo,
pageSize
}).then((res) => {
console.log(res)
if (res.success) {
list.value = [...list.value,...res.result.records];
}
@ -120,7 +119,6 @@
const handleChange = (data) => {
const rowkey = data.map((item) => item.username).join(',')
console.log(rowkey)
// var params = {
// taskId:userTask.value.id,
// taskAssignee:rowkey
@ -140,7 +138,6 @@
const goToPage = (item)=>{
//
if(item.taskAssigneeName&&item.taskAssigneeName!=''){
console.log(11)
//
uni.navigateTo({
url:`/pages-process/taskHandle`,

View File

@ -132,7 +132,6 @@
const show1Change = (val, type) => {
let selectUser = val[0]
console.log(selectUser)
switch (type) {
case 'show1':
model.value.entrust = selectUser.username

View File

@ -94,7 +94,6 @@
}
const showNodeInfo= (data,taskId)=>{
console.log(data)
// this.$refs.nodeInfoModel.close();
// this.$refs.nodeInfoModel.showInfo(data,taskId);
}
@ -103,9 +102,7 @@
const eventChannel = proxy.getOpenerEventChannel();
eventChannel.on('taskData',(params)=>{
let useData = JSON.parse(params);
console.log(123)
getProcessNodeInfo({taskId:useData.id}).then(res=>{
console.log(res)
if(res.success){
let data = {
dataId:res.result.dataId,
@ -123,19 +120,14 @@
path.value = tempFormUrl; //url
}
})
console.log(useData)
getNodePositionInfo({processInstanceId:useData.processInstanceId}).then((res)=>{
console.log(res)
if (res.success) {
nodePositionInfo.value = res.result
console.log(res)
}
})
getHisInfo({processInstanceId:useData.processInstanceId}).then((res)=>{
console.log(res)
if (res.success) {
console.log(res)
dataSource.value = res.result.records
//
completedNum.value = res.result.records.length
@ -153,7 +145,6 @@
'processInstanceId': formData.value.procInsId
})
let url = `${getEnvBaseUrl()}/act/task/traceImage?${params}`;
console.log(url)
return url;
})
</script>

View File

@ -30,16 +30,16 @@
"text": "首页"
},
{
"iconPath": "static/tabbar/tabbar-produce.png",
"selectedIconPath": "static/tabbar/tabbar-produce-2.png",
"pagePath": "pages/produce/index",
"iconPath": "static/tabbar/tabbar-production.png",
"selectedIconPath": "static/tabbar/tabbar-production-2.png",
"pagePath": "pages/production/index",
"text": "生产"
},
{
"iconPath": "static/tabbar/tabbar-workHome-2.png",
"selectedIconPath": "static/tabbar/tabbar-workHome.png",
"pagePath": "pages/workHome/index",
"text": "工作台"
"iconPath": "static/tabbar/tabbar-operation.png",
"selectedIconPath": "static/tabbar/tabbar-operation-2.png",
"pagePath": "pages/operation/index",
"text": "经营"
},
{
"iconPath": "static/tabbar/tabbar-user-2.png",
@ -131,7 +131,16 @@
}
},
{
"path": "pages/produce/index",
"path": "pages/operation/index",
"type": "page",
"layout": "default",
"style": {
"navigationStyle": "custom",
"navigationBarTitleText": "经营数据"
}
},
{
"path": "pages/production/index",
"type": "page",
"layout": "default",
"style": {
@ -158,39 +167,39 @@
}
},
{
"path": "pages/produce/ribaoshuju/rbsjLsxq",
"path": "pages/production/ribaoshuju/rbsjLsxq",
"type": "page"
},
{
"path": "pages/produce/ribaoshuju/trqRbsj",
"path": "pages/production/ribaoshuju/trqRbsj",
"type": "page"
},
{
"path": "pages/produce/ribaoshuju/yyRbsj",
"path": "pages/production/ribaoshuju/yyRbsj",
"type": "page"
},
{
"path": "pages/produce/shishishuju/aqbjSssj",
"path": "pages/production/shishishuju/aqbjSssj",
"type": "page"
},
{
"path": "pages/produce/shishishuju/gycsSssj",
"path": "pages/production/shishishuju/gycsSssj",
"type": "page"
},
{
"path": "pages/produce/shishishuju/index",
"path": "pages/production/shishishuju/index",
"type": "page"
},
{
"path": "pages/produce/shishishuju/nyxhSssj",
"path": "pages/production/shishishuju/nyxhSssj",
"type": "page"
},
{
"path": "pages/produce/shishishuju/trqSssj",
"path": "pages/production/shishishuju/trqSssj",
"type": "page"
},
{
"path": "pages/produce/shishishuju/ysjSssj",
"path": "pages/production/shishishuju/ysjSssj",
"type": "page"
}
],

View File

@ -39,13 +39,31 @@
</swiper>
<wd-row>
<wd-col :span="12" v-for="(item, index) in middleApps" :key="index" @click="goToProcess">
<wd-img :width="50" :height="50" :src="getFileAccessHttpUrl(item.icon)"></wd-img>
<wd-col :span="12" @click="goToProcess">
<wd-img :width="50" :height="50"
:src="getFileAccessHttpUrl('https://static.jeecg.com/upload/test/line2_icon1_1595818065964.png')"></wd-img>
<view class="textBox">
<wd-text :text="item.title"></wd-text>
<wd-text :text="item.subTitle"></wd-text>
<wd-badge :modelValue="badge">
<wd-text text="个人审批"></wd-text>
</wd-badge>
</view>
</wd-col>
<wd-col :span="12" @click="goToProcess">
<wd-img :width="50" :height="50"
:src="getFileAccessHttpUrl('https://static.jeecg.com/upload/test/line2_icon2_1595818070168.png')"></wd-img>
<view class="textBox">
<wd-text text="我发起流程"></wd-text>
</view>
</wd-col>
<!-- <wd-col :span="12" v-for="(item, index) in middleApps" :key="index" @click="goToProcess">
<wd-img :width="50" :height="50" :src="getFileAccessHttpUrl(item.icon)"></wd-img>
<view class="textBox">
<wd-badge modelValue="12">
<wd-text :text="item.title"></wd-text>
</wd-badge>
<wd-text :text="item.subTitle"></wd-text>
</view>
</wd-col> -->
</wd-row>
<view class="serveBox">
@ -67,17 +85,39 @@
</PageLayout>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import { getFileAccessHttpUrl } from '@/common/uitls'
import { onLoad } from '@dcloudio/uni-app'
import { useToast } from 'wot-design-uni'
import { useRouter } from '@/plugin/uni-mini-router'
<script setup>
import {
ref
} from 'vue'
import {
getFileAccessHttpUrl
} from '@/common/uitls'
import {
onLoad
} from '@dcloudio/uni-app'
import {
useToast
} from 'wot-design-uni'
import {
useRouter
} from '@/plugin/uni-mini-router'
import Grid from '@/components/Grid/Grid.vue'
import { queryCarouselApi, getUserPermissionApi } from '@/api/system'
import { getEnvBaseUrl } from '@/utils/index'
import { useUserStore } from '@/store/user'
import { useAppStore } from '@/store'
import {
queryCarouselApi,
getUserPermissionApi
} from '@/api/system'
import {
getEnvBaseUrl
} from '@/utils/index'
import {
useUserStore
} from '@/store/user'
import {
useAppStore
} from '@/store'
import {
taskListApi
} from '@/api/process'
defineOptions({
name: 'index',
options: {
@ -93,19 +133,22 @@
const usList = ref([])
const osList = ref([])
const msgCount = ref(0)
const dot = ref({ mailHome: false })
const dot = ref({
mailHome: false
})
const userStore = useUserStore()
const appStore = useAppStore()
const badge = ref(0)
const res = wx.getSystemInfoSync();
const statusHeight = res.statusBarHeight; //
const cusnavbarheight = (statusHeight + 30) + "px";
const goPage = (item : any) => {
const goPage = (item) => {
uni.navigateTo({
url: `${item.path}?title=${item.text}`
})
}
const goToProcess = ()=>{
const goToProcess = () => {
uni.navigateTo({
url: '/pages-process/approvalTabbar'
})
@ -113,14 +156,20 @@
const goPageMore = (page) => {
router.replace({ name: 'more', params: { backRouteName: 'index', type: page } })
router.replace({
name: 'more',
params: {
backRouteName: 'index',
type: page
}
})
}
const queryCarousel = () => {
//
queryCarouselApi({
zslb: 6
}).then((res : any) => {
}).then((res) => {
if (res.success) {
let arr = res.result.records[0].wenjian.split(',')
carouselList.value = arr.map((item) => {
@ -133,7 +182,7 @@
const queryModule = () => {
getUserPermissionApi({
token: userStore.userInfo.token,
}).then((res : any) => {
}).then((res) => {
if (res.success) {
let data = res.result.menu
data = data.filter(e => e.name == 'APP')[0] //APP
@ -161,21 +210,6 @@
})
}
middleApps.value = [
{
icon: 'https://static.jeecg.com/upload/test/line2_icon1_1595818065964.png',
title: '审批',
subTitle: '个人审批',
routeIndex: 'paper',
},
{
icon: 'https://static.jeecg.com/upload/test/line2_icon2_1595818070168.png',
title: '流程',
subTitle: '我发起流程',
routeIndex: 'draft',
},
]
/**
* 获取年月日
*/
@ -187,6 +221,18 @@
return `${y}-${m}-${d}`
}
const queryTaskBadge = () => {
taskListApi().then((res) => {
if (res.success) {
badge.value = res.result.total
}
})
}
onShow(() => {
queryTaskBadge()
})
onLoad(() => {
queryCarousel()
queryModule()

View File

@ -0,0 +1,16 @@
<route lang="json5" type="page">
{
layout: 'default',
style: {
navigationStyle: 'custom',
navigationBarTitleText: '经营数据',
},
}
</route>
<template>
<PageLayout :navbarShow="false">
<view style="margin: 100px;">
功能正在开发中... 请耐心等待
</view>
</PageLayout>
</template>

View File

@ -40,12 +40,6 @@
<sssjForm></sssjForm>
</scroll-view>
</view>
<view v-show="current === 2">
<scroll-view scroll-y :style="{ height: scrollViewHeight + 'px' }">
选项卡2的内容
</scroll-view>
</view>
</view>
</view>
</PageLayout>
@ -68,7 +62,7 @@
watchEffect,
onUnmounted
} from 'vue';
const items = ref(['日报数据', '实时数据', '经营数据'])
const items = ref(['日报数据', '实时数据'])
const current = ref(0)
const res = wx.getSystemInfoSync();
const statusHeight = res.statusBarHeight; //

View File

@ -74,7 +74,7 @@
import {
queryJinriShengchansj,
queryJinriYuanyouShengchansj
} from '@/api/produce';
} from '@/api/production';
import {
formatDate,
getDateAfterDays,

View File

@ -92,7 +92,7 @@
queryJinriShengchansj,
queryYearShengchansj,
queryJinriTrqShengchansj
} from '@/api/produce';
} from '@/api/production';
import {
formatDate,
getDateAfterDays

View File

@ -83,7 +83,7 @@
<script setup>
import {
queryJinriYuanyouShengchansj
} from '@/api/produce';
} from '@/api/production';
import {
formatDate,
getDateAfterDays

View File

@ -7,7 +7,7 @@
queryJinriShengchansj,
queryYearShengchansj,
queryJinriTrqShengchansj
} from '@/api/produce';
} from '@/api/production';
import {
formatDate,
getDateAfterDays

View File

@ -76,7 +76,7 @@
import {
queryJldZcList,
queryJldDataByZc
} from '@/api/produce'
} from '@/api/production'
import {
formatDate,
getDateAfterDays

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -13,18 +13,19 @@ interface NavigateToOptions {
"/pages/onlinePreview/detail" |
"/pages/onlinePreview/onlinePreview" |
"/pages/onlinePreview/onlinePreviewH5" |
"/pages/produce/index" |
"/pages/operation/index" |
"/pages/production/index" |
"/pages/user/people" |
"/pages/workHome/index" |
"/pages/produce/ribaoshuju/rbsjLsxq" |
"/pages/produce/ribaoshuju/trqRbsj" |
"/pages/produce/ribaoshuju/yyRbsj" |
"/pages/produce/shishishuju/aqbjSssj" |
"/pages/produce/shishishuju/gycsSssj" |
"/pages/produce/shishishuju/index" |
"/pages/produce/shishishuju/nyxhSssj" |
"/pages/produce/shishishuju/trqSssj" |
"/pages/produce/shishishuju/ysjSssj" |
"/pages/production/ribaoshuju/rbsjLsxq" |
"/pages/production/ribaoshuju/trqRbsj" |
"/pages/production/ribaoshuju/yyRbsj" |
"/pages/production/shishishuju/aqbjSssj" |
"/pages/production/shishishuju/gycsSssj" |
"/pages/production/shishishuju/index" |
"/pages/production/shishishuju/nyxhSssj" |
"/pages/production/shishishuju/trqSssj" |
"/pages/production/shishishuju/ysjSssj" |
"/pages-home/home/home" |
"/pages-message/chat/chat" |
"/pages-message/contacts/contacts" |
@ -58,7 +59,7 @@ interface NavigateToOptions {
interface RedirectToOptions extends NavigateToOptions {}
interface SwitchTabOptions {
url: "/pages/index/index" | "/pages/produce/index" | "/pages/workHome/index" | "/pages/user/people"
url: "/pages/index/index" | "/pages/production/index" | "/pages/operation/index" | "/pages/user/people"
}
type ReLaunchOptions = NavigateToOptions | SwitchTabOptions;

View File

@ -14,7 +14,7 @@
<script setup>
import {
queryJldZcList
} from '@/api/produce'
} from '@/api/production'
import {
queryMyDeptTreeListApi
} from '@/api/system/department'