You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
2.6 KiB
121 lines
2.6 KiB
<template> |
|
<view class="wrapper" v-if="show"> |
|
<view class="header text-center"> |
|
<fui-icon name="arrowleft" color="#fff" :size="50" @tap="show = false"></fui-icon> |
|
<text>审批意见</text> |
|
</view> |
|
<view class="body"> |
|
<uni-forms :label-width="90" :modelValue="formData" :rules="rules" ref="formRef"> |
|
<view class="cell"> |
|
<uni-forms-item label="上级领导" name="leaderEmpNo" > |
|
<uni-data-picker :localdata="leaders" placeholder="请选择上级领导" :border="false" :map="{text:'name', value: 'empNo'}" v-model="formData.leaderEmpNo"/> |
|
</uni-forms-item> |
|
</view> |
|
<view class="cell mt-6"> |
|
<uni-forms-item label="审批意见" name="approvalComment" > |
|
<textarea v-model="formData.approvalComment" placeholder="请输入审批意见"></textarea> |
|
</uni-forms-item> |
|
</view> |
|
</uni-forms> |
|
</view> |
|
<view class="footer flex end"> |
|
<view class="flex gap"> |
|
<m-button size="large" @tap="show = false">取消</m-button> |
|
<m-button size="large" type="primary" @tap="submit">审批通过</m-button> |
|
</view> |
|
</view> |
|
</view> |
|
</template> |
|
|
|
<script setup> |
|
import { reactive, ref, inject, watch } from "vue"; |
|
import { getLeaderList } from '@/api/user' |
|
|
|
const formData = reactive({}) |
|
const formRef = ref() |
|
const rules = { |
|
leaderEmpNo: { |
|
rules:[ |
|
{ |
|
required: true, |
|
errorMessage: '请选择上级领导', |
|
} |
|
] |
|
}, |
|
approvalComment: { |
|
rules:[ |
|
{ |
|
required: true, |
|
errorMessage: '请输入审批意见', |
|
} |
|
] |
|
} |
|
} |
|
const show = ref(false) |
|
const leaders = ref([]) |
|
const mail = inject("mail"); |
|
watch(() => mail.value.flowKey, (val) => { |
|
getLeaderList(val === 'second_approval' ? 'deputy' : 'leader').then(data => { |
|
leaders.value = data |
|
}) |
|
}) |
|
|
|
const props = defineProps({ |
|
modelValue: { |
|
type: Object |
|
} |
|
}) |
|
const emit = defineEmits(['update:modelValue', 'submit']) |
|
|
|
function submit() { |
|
formRef.value.validate().then(res => { |
|
emit('update:modelValue', formData) |
|
emit('submit', 'approvedSubmit') |
|
show.value = false |
|
}).catch(() => { |
|
uni.showToast({ |
|
title: '请检查输入项', |
|
icon: 'none' |
|
}) |
|
}) |
|
} |
|
|
|
function open() { |
|
show.value = true |
|
} |
|
|
|
defineExpose({ |
|
open |
|
}) |
|
</script> |
|
|
|
<style lang="scss"> |
|
.wrapper { |
|
position: fixed; |
|
top: 0; |
|
left: 0; |
|
right: 0; |
|
bottom: 0; |
|
background: #F1F1F1; |
|
z-index: 3; |
|
.header { |
|
background-color: var(--primary-color); |
|
color: #fff; |
|
height: 46px; |
|
line-height: 46px; |
|
position: relative; |
|
.fui-icon { |
|
position: absolute; |
|
left: 10px; |
|
} |
|
} |
|
.body { |
|
height: calc(100vh - 96px); |
|
} |
|
.footer { |
|
background-color: #fff; |
|
padding: 9px 12px; |
|
} |
|
|
|
} |
|
</style> |