diff --git a/src/pages/approval/components/Components.vue b/src/pages/approval/components/Components.vue
index d331ce8..001aede 100644
--- a/src/pages/approval/components/Components.vue
+++ b/src/pages/approval/components/Components.vue
@@ -1,5 +1,5 @@
-
+
+
+
+
+
+
+
+
+
+
+
@@ -88,8 +104,11 @@
import Images from '@/pages/approval/components/Images.vue'
import Description from '@/pages/approval/components/Description.vue'
import MemberOrDepartment from '@/pages/approval/components/MemberOrDepartment.vue'
+ import Leave from '@/pages/approval/components/Leave.vue'
+ import DatetimePickerGroup from '@/pages/approval/components/DatetimePickerGroup.vue'
+ import Overtime from '@/pages/approval/components/Overtime.vue'
- const columns = ref>([
+ const columns = ref>([
{
value: 0,
label: '男装'
diff --git a/src/pages/approval/components/DatetimePicker.vue b/src/pages/approval/components/DatetimePicker.vue
index 95fc9c5..e27f5d8 100644
--- a/src/pages/approval/components/DatetimePicker.vue
+++ b/src/pages/approval/components/DatetimePicker.vue
@@ -6,7 +6,9 @@
- {{ text || placeholder }}
+
+ {{ text || placeholder }}
+
@@ -104,7 +106,31 @@
},
placeholder: {
type: String,
- default: '请输入'
+ default: '请选择'
+ },
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ disabledText: {
+ type: String,
+ default: ''
+ },
+ minDate: {
+ type: [Number, null],
+ default: null
+ },
+ maxDate: {
+ type: [Number, null],
+ default: null
+ },
+ minDateText: {
+ type: String,
+ default: ''
+ },
+ maxDateText: {
+ type: String,
+ default: ''
}
})
@@ -159,6 +185,13 @@
}
const openDialog = () => {
+ if (props.disabled) {
+ uni.showToast({
+ title: props.disabledText,
+ icon: 'none'
+ })
+ return
+ }
if (!props.value) {
if (text.value === '') {
timestamp.value = new Date().getTime()
@@ -180,6 +213,20 @@
}
const confirm = () => {
+ if (props.minDate && timestamp.value < props.minDate) {
+ uni.showToast({
+ title: props.minDateText,
+ icon: 'none'
+ })
+ return
+ }
+ if (props.maxDate && timestamp.value > props.maxDate) {
+ uni.showToast({
+ title: props.maxDateText,
+ icon: 'none'
+ })
+ return
+ }
show.value = false
returnTimestamp.value = timestamp.value
if (props.type === 'dateHalfDay') {
@@ -193,4 +240,16 @@
const afterLeave = () => {
showPicker.value = false
}
+
+ const clear = () => {
+ text.value = ''
+ date.value = ''
+ halfDay.value = ''
+ returnTimestamp.value = 0
+ emits('change', { id: props.id, value: returnTimestamp.value, text: text.value })
+ }
+
+ defineExpose({
+ clear
+ })
diff --git a/src/pages/approval/components/DatetimePickerGroup.vue b/src/pages/approval/components/DatetimePickerGroup.vue
new file mode 100644
index 0000000..3d3142d
--- /dev/null
+++ b/src/pages/approval/components/DatetimePickerGroup.vue
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/approval/components/Input.vue b/src/pages/approval/components/Input.vue
index 96df501..9334107 100644
--- a/src/pages/approval/components/Input.vue
+++ b/src/pages/approval/components/Input.vue
@@ -11,6 +11,7 @@
:placeholder="placeholder"
:maxlength="type === 'text' ? 30 : 15"
v-model="text"
+ :readonly="readonly"
@input="change(id, $event)"
>
@@ -46,6 +47,10 @@
placeholder: {
type: String,
default: '请输入'
+ },
+ readonly: {
+ type: Boolean,
+ default: false
}
})
@@ -56,6 +61,14 @@
const change = (id, data) => {
emits('change', { id, value: data.value })
}
+
+ const clear = () => {
+ text.value = ''
+ }
+
+ defineExpose({
+ clear
+ })
diff --git a/src/pages/approval/components/MemberOrDepartment.vue b/src/pages/approval/components/MemberOrDepartment.vue
index 5339c4c..e582118 100644
--- a/src/pages/approval/components/MemberOrDepartment.vue
+++ b/src/pages/approval/components/MemberOrDepartment.vue
@@ -6,7 +6,9 @@
- {{ text || placeholder }}
+
+ {{ text || placeholder }}
+
diff --git a/src/pages/approval/components/Overtime.vue b/src/pages/approval/components/Overtime.vue
new file mode 100644
index 0000000..683a52c
--- /dev/null
+++ b/src/pages/approval/components/Overtime.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/approval/components/SelectPicker.vue b/src/pages/approval/components/SelectPicker.vue
index 4ce41f7..99708b3 100644
--- a/src/pages/approval/components/SelectPicker.vue
+++ b/src/pages/approval/components/SelectPicker.vue
@@ -12,7 +12,9 @@
v-model="picker"
:columns="columns"
size="large"
- />
+ @change="change"
+ select-size="large"
+ >
@@ -51,11 +53,17 @@
}
})
+ const emits = defineEmits(['change'])
+
onMounted(() => {
if (props.value) {
picker.value = props.value
}
})
+
+ const change = ({ value }) => {
+ emits('change', { id: props.id, value: props.columns.find(item => item.value === value) })
+ }