提示框导入

当班信息页面功能处理
链接跳转 接入 菜单参数 orgid
导入接口 获取组织为班组的列表 获取当班显示信息
requset 基础方法修改
This commit is contained in:
wyw 2024-11-22 09:36:11 +08:00
parent 68c1124ad6
commit 039cf70aa6
6 changed files with 272 additions and 203 deletions

View File

@ -3,6 +3,7 @@ import uView from '@/uni_modules/uview-ui'
// #ifndef VUE3 // #ifndef VUE3
import Vue from 'vue' import Vue from 'vue'
import './utils/showMsg.js'
import './uni.promisify.adaptor' import './uni.promisify.adaptor'
import QuerySelector from 'components/custom/query-selector.vue' import QuerySelector from 'components/custom/query-selector.vue'

View File

@ -34,7 +34,7 @@
{ {
"path": "pages/apply/user", "path": "pages/apply/user",
"style": { "style": {
"navigationBarTitleText": "当班工" "navigationBarTitleText": "当班作人员"
} }
}, },
{ {

View File

@ -8,53 +8,119 @@
<view style="position: absolute;left: -10px;color: #3d4b70;top: -3px;">*</view> <view style="position: absolute;left: -10px;color: #3d4b70;top: -3px;">*</view>
</view> </view>
<view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;">组织信息</view> <view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;">组织信息</view>
<u-form-item label="组织名称" prop="NAME" borderBottom ref="item1"> <u-form-item label="班组名称" prop="DEPARTMENT_NAME" borderBottom ref="item1"
<u--input v-model="model.NAME" border="none" @click="handleShowSheet({title: '班组名称'})">
customStyle="margin:0px;display:flex;padding:3px 9px"></u--input> <u--input v-model="model.DEPARTMENT_NAME" border="none" suffixIcon="arrow-right"
</u-form-item>
<u-form-item label="员工数" prop="COUNT" borderBottom @click="showSex = true;" ref="item1">
<u--input v-model="model.COUNT" disabled disabledColor="#ffffff" placeholder="员工数量"
border="none" suffixIcon="arrow-right" fontSize="14px"
customStyle="margin:0px;display:flex;padding:3px 9px" customStyle="margin:0px;display:flex;padding:3px 9px"
suffixIconStyle="font-size:12px"></u--input> suffixIconStyle="font-size:12px"></u--input>
</u-form-item> </u-form-item>
<u-form-item label="当班状态" prop="SchedulingType" borderBottom @click="showSex = true;" ref="item1">
<u--input v-model="model.SchedulingType" disabled disabledColor="#ffffff" placeholder="员工数量"
border="none" fontSize="14px"
customStyle="margin:0px;display:flex;padding:3px 9px"></u--input>
</u-form-item>
<u-form-item label="当班开始时间" prop="START_TIME" borderBottom @click="showSex = true;" ref="item1">
<u--input v-model="model.START_TIME" disabled disabledColor="#ffffff" placeholder="员工数量"
border="none" fontSize="14px"
customStyle="margin:0px;display:flex;padding:3px 9px"></u--input>
</u-form-item>
<u-form-item label="当班结束时间" prop="END_TIME" borderBottom @click="showSex = true;" ref="item1">
<u--input v-model="model.END_TIME" disabled disabledColor="#ffffff" placeholder="员工数量"
border="none" fontSize="14px"
customStyle="margin:0px;display:flex;padding:3px 9px"></u--input>
</u-form-item>
<u-form-item label="当班员工数" prop="COUNT_WORKER" borderBottom @click="showSex = true;" ref="item1">
<u--input v-model="model.COUNT_WORKER" disabled disabledColor="#ffffff" placeholder="员工数量"
border="none" fontSize="14px"
customStyle="margin:0px;display:flex;padding:3px 9px"></u--input>
</u-form-item>
<u-form-item label="请假员工数" prop="COUNT_LEVEL" borderBottom @click="showSex = true;" ref="item1">
<u--input v-model="model.COUNT_LEVEL" disabled disabledColor="#ffffff" placeholder="员工数量"
border="none" fontSize="14px"
customStyle="margin:0px;display:flex;padding:3px 9px"></u--input>
</u-form-item>
<u-form-item label="下次排班时间" prop="SchedulingNEXTTIME" borderBottom @click="showSex = true;"
ref="item1">
<u--input v-model="model.SchedulingNEXTTIME" disabled disabledColor="#ffffff" placeholder="员工数量"
border="none" fontSize="14px"
customStyle="margin:0px;display:flex;padding:3px 9px"></u--input>
</u-form-item>
<!-- <u-form-item label="员工信息" prop="SchedulingNEXTTIME" borderBottom @click="showSex = true;"
ref="item1">
</u-form-item> -->
<!-- <u-form-item>工作人员信息</u-form-item> -->
<u-form-item>
<u-list key="qb">
<u-list-item v-for=" item in model.ListUser">
<u-cell style="background-color: whitesmoke;" :title="item"> </u-cell>
</u-list-item>
</u-list>
</u-form-item>
<!-- <u-form-item key="db">
<u-list>
<u-list-item v-for="item in model.LISTPERSON_SCHEDULING">
<u-cell :title="`${item.NAME + '(当班)'}`">
</u-cell>
</u-list-item>
</u-list>
</u-form-item>
<u-form-item key="qj">
<u-list>
<u-list-item v-for="(item, index) in model.LISTUSER_LEAVE">
<u-cell :title="item.NAME+' (请假)'"> </u-cell>
</u-list-item>
</u-list>
</u-form-item> -->
</u-form> </u-form>
<!-- 动态加载用户信息 --> <!-- 动态加载用户信息 -->
<u-sticky offset-top="20"> <!-- <u-sticky offset-top="20">
<view class="sub-form"> <view class="sub-form">
<view class="sub-form-wrap"> <view class="sub-form-wrap">
<u--form labelPosition="left" labelWidth="auto" labelAlign="center" <u--form labelPosition="left" labelWidth="auto" labelAlign="center"
errorType="border-bottom" ref="sForm"> errorType="border-bottom" style="margin-bottom: 50px;" ref="sForm">
<uni-collapse :border="false" accordion> <uni-collapse :border="false" accordion>
<uni-card style="margin-bottom: 16px;" margin="0" spacing="0" :is-shadow="false" <uni-card style="margin-bottom: 5px;" margin="0" spacing="0" :is-shadow="false"
v-for="(item, index) in model.Nav_ListUser.filter(i => !i.IS_DELETED)"> v-for="(item, index) in model.LISTPERSON_SCHEDULING">
<uni-collapse-item :title="(index+1) + '. ' + item.NAME" name="1"> <uni-collapse-item :title="(index+1) + '. ' + item.NAME" name="1">
<u-form-item label="姓名" prop="NAME" borderBottom> <u-form-item label="姓名" prop="NAME" borderBottom>
<u--input disabled disabledColor="#fff" v-model="item.NAME" <u--input disabled disabledColor="#fff" v-model="item.NAME"
border="none" inputAlign="right"></u--input> border="none" inputAlign="right"></u--input>
</u-form-item> </u-form-item>
<u-form-item label="性别" prop="SEX" borderBottom> <u-form-item label="性别" prop="SEX" borderBottom>
<u--input disabled disabledColor="#fff" v-model="item.NAME" <u--input disabled disabledColor="#fff" v-model="item.SEX" border="none"
border="none" inputAlign="right"></u--input> inputAlign="right"></u--input>
</u-form-item> </u-form-item>
</uni-collapse-item> </uni-collapse-item>
</uni-card> </uni-card>
<uni-card style="margin-bottom: 5px;" margin="0" spacing="0" :is-shadow="false"
v-for="(item, index) in model.LISTUSER_LEAVE">
<uni-collapse-item :title="(index+1) + '. ' + item.NAME" name="1">
<u-form-item label="姓名" prop="NAME" borderBottom>
<u--input disabled disabledColor="#fff" v-model="item.NAME"
border="none" inputAlign="right"></u--input>
</u-form-item>
<u-form-item label="性别" prop="SEX" borderBottom>
<u--input disabled disabledColor="#fff" v-model="item.SEX" border="none"
inputAlign="right"></u--input>
</u-form-item>
</uni-collapse-item>
</uni-card>
</uni-collapse> </uni-collapse>
</u--form> </u--form>
</view> </view>
</view> </view>
</u-sticky> </u-sticky> -->
<!--
<view style="display: flex;flex-direction: row;" class="bottom-button"> <view style="display: flex;flex-direction: row;" class="bottom-button">
<u-button type="primary" @click="reset" color="#3d4b70" :plain="true" <u-button type="primary" @click="reset" color="#3d4b70" :plain="true"
style="margin-right: 5px;">重置</u-button> style="margin-right: 5px;">重置</u-button>
@ -62,16 +128,11 @@
v-if="loading == false">提交</u-button> v-if="loading == false">提交</u-button>
<u-button type="primary" loading loadingText="加载中" color="#3d4b70" style="margin-left: 5px;" <u-button type="primary" loading loadingText="加载中" color="#3d4b70" style="margin-left: 5px;"
v-if="loading == true">提交</u-button> v-if="loading == true">提交</u-button>
</view> </view> -->
<u-action-sheet :show="showSex" :actions="actions" title="请选择性别" @close="showSex = false"
@select="sexSelect"> <query-selector :show="selectorInfo.showPopup" :defaultChecked="selectorInfo.defaultChecked"
</u-action-sheet> :title="selectorInfo.title" :lists="selectorInfo.dataLists" @search="handleSearch"
<u-datetime-picker :show="dateTimePickerInfo.showCheckDate" mode="date" @select="handleSelected" @close="selectorInfo.showPopup=false" :total="selectorInfo.totalCount" />
v-model='dateTimePickerInfo.defaultDateTime' :formatter="formatter" @confirm="handleCheckDate"
@close="dateTimePickerInfo.showCheckDate = false;"
@cancel="dateTimePickerInfo.showCheckDate = false;"></u-datetime-picker>
<u-picker :show="pickerShow" :columns="pickerColumns" @confirm="pickerConfirm"
@cancel="pickerCancel"></u-picker>
</view> </view>
</view> </view>
@ -80,184 +141,167 @@
<script> <script>
import { import {
RegisterUser PagedDep,
} from '../../services/apply.js' WorkerScheduling
import config from '../../config/common.js' } from '../../services/apply'
import { import {
isChinaMobilePhone, initFilter,
easyCheckID, extendRule
getNowFormatDate } from '../../utils/common'
} from '../../utils/common.js'
export default { export default {
data() { data() {
return { return {
showSex: false, OrgId: '',
appurl: config.uni_app_url,
formatter: null,
pickerShow: false,
loading: false,
pickerColumns: [Array(60).fill(null).map((_, i) => i)],
model: { model: {
NAME:'组织名称', DEPARTMENT_NAME: '磨重一班',
COUNT:'员工数量', DEPARTMENT_ID: '',
Nav_ListUser: [{ SchedulingType: '',
NAME: '姓名显示', COUNT_WORKER: '',
SEX: '性别显示' COUNT_LEVEL: '',
START_TIME: '',
}] END_TIME: '',
SchedulingNEXTTIME: '',
LISTPERSON_SCHEDULING: [{
NAME: ''
}],
LISTUSER_LEAVE: [{
NAME: ''
}],
ListUser: []
}, },
dateTimePickerInfo: { selectorInfo: {
showCheckDate: false, showPopup: false,
defaultDateTime: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd'), totalCount: 0,
value: '', title: '班组名称',
// itemData: {},
index: 0,
dataLists: [],
defaultText: '',
defaultValue: '',
name: '',
defaultChecked: []
}, },
actions: [{
name: '男',
},
{
name: '女',
},
],
rules: {
'NAME': {
type: 'string',
required: true,
message: '请填写姓名',
trigger: ['blur', 'change']
},
'COUNT': {
type: 'string',
max: 1,
required: true,
message: '请选择男或女',
trigger: ['blur', 'change']
},
},
radio: '',
switchVal: false
} }
}, },
onLoad() {}, onLoad(option) {
this.model.DEPARTMENT_ID = option.DEPARTMENT_ID // 'B18F95F4-572A-E521-1412-FA8CE50DC98A'
this.OrgId = option.OrgId // 'B043B28B-BBC3-C452-6052-4FBA1457ABFA'
this.WorkerScheduling()
},
onReady() { onReady() {
//setRules //setRules
this.$refs.uForm.setRules(this.rules) this.$refs.uForm.setRules(this.rules)
}, },
methods: { methods: {
sexSelect(e) { WorkerScheduling() {
this.model.userInfo.Sex = e.name const modelRequest = {
this.$refs.uForm.validateField('userInfo.Sex') Keyword: this.model.DEPARTMENT_ID,
}, OrgId: this.OrgId
showCheckDate() {
if (this.model.userInfo.InTime == null) {
this.model.userInfo.InTime = uni.$u.timeFormat(new Date(),
'yyyy-mm-dd')
} }
this.dateTimePickerInfo = { WorkerScheduling(modelRequest).then(res => {
showCheckDate: true, if (res.IsSuccessful) {
defaultDateTime: this.model.userInfo.InTime, this.model = res.Data
var ListUser = []
if (this.model.LISTPERSON_SCHEDULING != null && this.model.LISTPERSON_SCHEDULING.length >
0) {
this.model.LISTPERSON_SCHEDULING.forEach(e => {
ListUser.push(e.NAME + '(当班)')
})
}
if (this.model.LISTUSER_LEAVE != null && this.model.LISTUSER_LEAVE.length > 0) {
this.model.LISTUSER_LEAVE.forEach(e => {
ListUser.push(e.NAME + '(请假)')
})
}
this.model.ListUser = ListUser
} else {
uni.$showErrorInfo(res.ErrorMessage)
// this.model.DEPARTMENT_NAME = ''
this.model.DEPARTMENT_ID = ''
this.model.SchedulingType = ''
this.model.COUNT_WORKER = ''
this.model.COUNT_LEVEL = ''
this.model.START_TIME = ''
this.model.END_TIME = ''
this.model.SchedulingNEXTTIME = ''
this.model.LISTPERSON_SCHEDULING = []
this.model.LISTUSER_LEAVE = []
this.model.ListUser = []
}
})
},
closePicker() {
this.comPickerInfo = {
showSheet: false,
columns: [],
title: '',
name: '',
formIndex: undefined
} }
}, },
handleCheckDate(e) {
// let v = uni.$u.timeFormat(e.value, 'yyyy-mm-dd') //
this.model.userInfo.InTime = uni.$u.timeFormat(e.value, handleChange() {
'yyyy-mm-dd') this.selectorInfo.showPopup = true
this.dateTimePickerInfo.showCheckDate = false this.selectorInfo.title = '班组名称'
this.handleSearch()
}, },
pickerConfirm(e) {
this.model.userInfo.WORKINGYEAR = e.value.toString() //
this.pickerShow = false handleSearch(val, pageIndex) {
var p = {
name: this.selectorInfo.name,
title: this.selectorInfo.title,
val: val,
pageIndex: pageIndex
}
this.handleShowSheet(p)
}, },
pickerCancel(e) {
this.pickerShow = false async handleShowSheet(p) {
}, var defaultChecked = []
reset() { const json = initFilter(this.OrgId, null, "NAME", 0, (p.pageIndex ?? 1));
this.model.userInfo = { json.IgnoreDataRule = true
Name: '', json.Limit = 20
Sex: '', if (p.val) {
Phone: '', extendRule(json, "NAME", 9, p.val)
ID_CARD: '', }
InTime: '', let dataSelect = await PagedDep(json).then(res => {
WORKINGYEAR: '', this.selectorInfo.totalCount = res.TotalCount
if (res != undefined && res.Data.length > 0) {
for (let i = 0; i < res.Data.length; i++) {
res.Data[i].name = res.Data[i].NAME
res.Data[i].code = res.Data[i].CODE
}
}
return res.Data
})
if (defaultChecked == null)
defaultChecked = []
if (dataSelect.length) {
this.selectorInfo = {
totalCount: this.selectorInfo.totalCount,
showPopup: true,
title: p.title,
name: p.name,
dataLists: dataSelect,
defaultChecked: defaultChecked
}
} else {
//
} }
}, },
submit() { handleSelected(e) {
this.selectorInfo.showPopup = false
// if (this.model.userInfo.Name == '' || this.model.DEPARTMENT_NAME = e.NAME
// this.model.userInfo.Sex == '' || this.model.DEPARTMENT_ID = e.ID
// this.model.userInfo.Phone == '' || this.WorkerScheduling()
// this.model.userInfo.ID_CARD == '' || }
// this.model.userInfo.InTime == '') {
// uni.showToast({
// icon: 'error',
// title: ''
// })
// return
// }
// if (isChinaMobilePhone(this.model.userInfo.Phone) == false) {
// uni.showToast({
// icon: 'error',
// title: ''
// })
// return
// }
// if (easyCheckID(this.model.userInfo.ID_CARD) == false) {
// uni.showToast({
// icon: 'error',
// title: ''
// })
// return
// }
// this.loading = true
// const json = {
// Name: this.model.userInfo.Name,
// Sex: this.model.userInfo.Sex == '' ? '1' : '0',
// Phone: this.model.userInfo.Phone,
// ID_CARD: this.model.userInfo.ID_CARD,
// InTime: this.model.userInfo.InTime,
// WORKINGYEAR: this.model.userInfo.WORKINGYEAR,
// }
// // const json = {
// // Name: '',
// // Sex: '0',
// // Phone: '18480141719',
// // ID_CARD: '230182200000000000',
// // InTime: '2024-07-25',
// // WORKINGYEAR: '0',
// // }
// RegisterUser(json).then((res) => {
// if (res.code == 200) {
// this.loading = false
// uni.showToast({
// title: '',
// icon: 'none'
// })
// setTimeout(() => {
// uni.hideToast();
// location.href = this.appurl
// // uni.redirectTo({
// // url: '/pages/webview/webview?url=' + this.appurl
// // })
// }, 1500)
// // uni.navigateTo({
// // url: '/pages/apply/complete?type=success'
// // })
// } else {
// this.loading = false
// uni.showToast({
// title: res.msg,
// icon: 'none'
// })
// // uni.navigateTo({
// // url: `/pages/apply/complete?type=failed&title=${res.msg}`
// // })
// }
// }).catch((err) => {
// this.loading = false
// uni.navigateTo({
// url: `/pages/apply/complete?type=failed&title=${err.msg}`
// })
// })
},
} }
} }
</script> </script>

View File

@ -1,10 +1,10 @@
<template> <template>
<view class="content"> <view class="content">
<view class="list"> <view class="list">
<u-grid :border="false" :col="2"> <!-- @click="click" --> <u-grid :border="false" :col="2"> <!-- @click="click" -->
<u-grid-item v-for="(baseListItem,baseListIndex) in baseList" :key="baseListIndex" bgColor="#fff"> <u-grid-item v-for="(baseListItem,baseListIndex) in baseList" :key="baseListIndex" bgColor="#fff">
<u-icon :customStyle="{paddingTop:20+'rpx'}" :name="baseListItem.iconName" :size="42" <u-icon :customStyle="{paddingTop:20+'rpx'}" :name="baseListItem.iconName" :size="42"
@click="menuClick(baseListItem.url)" color="#304ffe"></u-icon> @click="menuClick(baseListItem)" color="#304ffe"></u-icon>
<text class="grid-text">{{baseListItem.name}}</text> <text class="grid-text">{{baseListItem.name}}</text>
</u-grid-item> </u-grid-item>
</u-grid> </u-grid>
@ -26,6 +26,10 @@
export default { export default {
data() { data() {
return { return {
DEPARTMENT_ID: 'B18F95F4-572A-E521-1412-FA8CE50DC98A',
OrgId: '',
baseList: [ baseList: [
{ {
@ -79,9 +83,9 @@
// }) // })
// }, // },
menuClick(linkToUrl) { menuClick(menuInfo) {
uni.navigateTo({ uni.navigateTo({
url: linkToUrl url: menuInfo.url +'?DEPARTMENT_ID='+this.DEPARTMENT_ID+'&OrgId='+menuInfo.ORG_ID
}) })
}, },
goCamera() { goCamera() {

View File

@ -15,4 +15,24 @@ export const RegisterUser = (params) => {
data: params, data: params,
}) })
} }
//获取班组
export const PagedDep = (params) => {
return request.send({
url: '/BI/H5Controller/PagedDep',
method: 'post',
data: params,
})
}
//获取某个班组的当班信息
export const WorkerScheduling = (params) => {
return request.send({
url: '/BI/H5Controller/WorkerScheduling',
method: 'post',
data: params,
})
}

View File

@ -8,7 +8,7 @@ export default {
const pages = getCurrentPages() const pages = getCurrentPages()
const currentPage = pages[pages.length - 1] const currentPage = pages[pages.length - 1]
const Options = currentPage.options const Options = currentPage.options
let Company = Options.Company?Options.Company:'XLK' let Company = Options.Company ? Options.Company : 'XLK'
let tenantId = '' let tenantId = ''
if (Company == 'DCJD') { if (Company == 'DCJD') {
tenantId = 'A0000025' tenantId = 'A0000025'
@ -31,13 +31,13 @@ export default {
'Tenant': tenantId, // avue配置相关 'Tenant': tenantId, // avue配置相关
...params.header ...params.header
} }
if (method == "post") { // if (method == "post") {
header = { // header = {
'Content-Type': 'application/x-www-form-urlencoded', // 'Content-Type': 'application/x-www-form-urlencoded',
'Tenant': tenantId, // 'Tenant': tenantId,
...params.header // ...params.header
}; // };
} // }
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
uni.request({ uni.request({
url: config.serviceHost(url), url: config.serviceHost(url),