qrcode-app/pages/apply/user.vue
wyw 039cf70aa6 提示框导入
当班信息页面功能处理
链接跳转 接入 菜单参数 orgid
导入接口 获取组织为班组的列表 获取当班显示信息
requset 基础方法修改
2024-11-22 09:36:11 +08:00

386 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<!-- 当班工作人员 -->
<view class="content">
<view class="container">
<view class="form-sub">
<u-form :model="model" ref="uForm" label-width="90px" class="demo-ruleForm" size="mini">
<view style="position: relative;">
<view style="position: absolute;left: -10px;color: #3d4b70;top: -3px;">*</view>
</view>
<view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;">组织信息</view>
<u-form-item label="班组名称" prop="DEPARTMENT_NAME" borderBottom ref="item1"
@click="handleShowSheet({title: '班组名称'})">
<u--input v-model="model.DEPARTMENT_NAME" border="none" suffixIcon="arrow-right"
customStyle="margin:0px;display:flex;padding:3px 9px"
suffixIconStyle="font-size:12px"></u--input>
</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-sticky offset-top="20">
<view class="sub-form">
<view class="sub-form-wrap">
<u--form labelPosition="left" labelWidth="auto" labelAlign="center"
errorType="border-bottom" style="margin-bottom: 50px;" ref="sForm">
<uni-collapse :border="false" accordion>
<uni-card style="margin-bottom: 5px;" margin="0" spacing="0" :is-shadow="false"
v-for="(item, index) in model.LISTPERSON_SCHEDULING">
<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-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>
</u--form>
</view>
</view>
</u-sticky> -->
<!--
<view style="display: flex;flex-direction: row;" class="bottom-button">
<u-button type="primary" @click="reset" color="#3d4b70" :plain="true"
style="margin-right: 5px;">重置</u-button>
<u-button type="primary" @click="submit" color="#3d4b70" style="margin-left: 5px;"
v-if="loading == false">提交</u-button>
<u-button type="primary" loading loadingText="加载中" color="#3d4b70" style="margin-left: 5px;"
v-if="loading == true">提交</u-button>
</view> -->
<query-selector :show="selectorInfo.showPopup" :defaultChecked="selectorInfo.defaultChecked"
:title="selectorInfo.title" :lists="selectorInfo.dataLists" @search="handleSearch"
@select="handleSelected" @close="selectorInfo.showPopup=false" :total="selectorInfo.totalCount" />
</view>
</view>
</view>
</template>
<script>
import {
PagedDep,
WorkerScheduling
} from '../../services/apply'
import {
initFilter,
extendRule
} from '../../utils/common'
export default {
data() {
return {
OrgId: '',
model: {
DEPARTMENT_NAME: '磨重一班',
DEPARTMENT_ID: '',
SchedulingType: '',
COUNT_WORKER: '',
COUNT_LEVEL: '',
START_TIME: '',
END_TIME: '',
SchedulingNEXTTIME: '',
LISTPERSON_SCHEDULING: [{
NAME: ''
}],
LISTUSER_LEAVE: [{
NAME: ''
}],
ListUser: []
},
selectorInfo: {
showPopup: false,
totalCount: 0,
title: '班组名称',
// itemData: {},
index: 0,
dataLists: [],
defaultText: '',
defaultValue: '',
name: '',
defaultChecked: []
},
}
},
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() {
//如果需要兼容微信小程序并且校验规则中含有方法等只能通过setRules方法设置规则。
this.$refs.uForm.setRules(this.rules)
},
methods: {
WorkerScheduling() {
const modelRequest = {
Keyword: this.model.DEPARTMENT_ID,
OrgId: this.OrgId
}
WorkerScheduling(modelRequest).then(res => {
if (res.IsSuccessful) {
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
}
},
//显示组件
handleChange() {
this.selectorInfo.showPopup = true
this.selectorInfo.title = '班组名称'
this.handleSearch()
},
//数据加载
handleSearch(val, pageIndex) {
var p = {
name: this.selectorInfo.name,
title: this.selectorInfo.title,
val: val,
pageIndex: pageIndex
}
this.handleShowSheet(p)
},
async handleShowSheet(p) {
var defaultChecked = []
const json = initFilter(this.OrgId, null, "NAME", 0, (p.pageIndex ?? 1));
json.IgnoreDataRule = true
json.Limit = 20
if (p.val) {
extendRule(json, "NAME", 9, p.val)
}
let dataSelect = await PagedDep(json).then(res => {
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 {
// 暂无数据
}
},
handleSelected(e) {
this.selectorInfo.showPopup = false
this.model.DEPARTMENT_NAME = e.NAME
this.model.DEPARTMENT_ID = e.ID
this.WorkerScheduling()
}
}
}
</script>
<style>
.content {
background-color: #f4f7ff;
width: 100%;
/* #ifndef APP-PLUS */
height: calc(100vh - 44px - 50px); // 非APP平台下生效
/* #endif */
/* #ifdef APP-PLUS */
height: calc(100vh); // APP平台下生效
/* #endif */
}
.container {
padding: 20px 16px 10px 16px;
}
.form-sub {
/* margin: 20px 16px 10px 16px; */
/* border: 1px solid #EBEEF5; */
padding: 20px 30px 10px 30px;
/* box-shadow: rgba(0, 0, 0, 0.08) 0px 0px 3px 1px; */
background-color: #ffffff;
border-radius: 10px;
}
.demo-ruleForm>>>.u-form-item__body__left__content__label {
font-size: 14px;
color: #8e8b9c;
/* justify-content: flex-start; */
}
.demo-ruleForm>>>.u-form-item__body__left__content__ {
left: -11px;
top: 0px
}
.demo-ruleForm>>>.u-textarea__field {
font-size: 14px;
}
.demo-ruleForm>>>.u-cell__title-text {
font-size: 14px;
}
.demo-ruleForm-thr>>>.u-textarea {
padding: 9px 9px 25px 9px;
}
.demo-ruleForm-thr>>>.u-form-item__body__left__content__label {
font-size: 14px;
color: #8e8b9c;
/* justify-content: flex-start; */
}
.demo-ruleForm-thr>>>.u-form-item__body__left__content__ {
left: -11px;
top: 0px
}
.demo-ruleForm-thr>>>.u-textarea__field {
font-size: 14px;
}
.demo-ruleForm-thr>>>.u-cell__title-text {
font-size: 14px;
}
.bottom-button {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
padding: 10px 16px;
box-sizing: border-box;
background: #f4f7ff;
z-index: 999;
}
</style>