|
@@ -1,6 +1,6 @@
|
|
|
<template>
|
|
|
<div class="common-form-container">
|
|
|
- <van-form label-width="90" label-align="top" colon @submit="onSubmit">
|
|
|
+ <van-form label-width="120" label-align="top" colon @submit="onSubmit">
|
|
|
<div class="form-item">
|
|
|
<div class="form-header">
|
|
|
<div class="form-header-left">
|
|
@@ -16,8 +16,8 @@
|
|
|
:right-icon="selectIcon"
|
|
|
readonly
|
|
|
label="领导单位"
|
|
|
- placeholder="请输入领导单位"
|
|
|
- :rules="rules.dept"
|
|
|
+ placeholder="请选择领导单位"
|
|
|
+ :rules="rules.leader_unit"
|
|
|
@click="showPicker = true"
|
|
|
/>
|
|
|
<van-field
|
|
@@ -26,12 +26,12 @@
|
|
|
:right-icon="selectIcon"
|
|
|
readonly
|
|
|
label="领导姓名"
|
|
|
- placeholder="请输入领导姓名"
|
|
|
- :rules="rules.name"
|
|
|
+ placeholder="请选择领导姓名"
|
|
|
+ :rules="rules.leader_name"
|
|
|
@click="showPicker2 = true"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="form.info"
|
|
|
+ v-model="form.content"
|
|
|
class="common-field common-textarea"
|
|
|
rows="8"
|
|
|
type="textarea"
|
|
@@ -39,7 +39,7 @@
|
|
|
maxlength="300"
|
|
|
placeholder="请描述请示信息"
|
|
|
show-word-limit
|
|
|
- :rules="rules.info"
|
|
|
+ :rules="rules.content"
|
|
|
/>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -53,7 +53,7 @@
|
|
|
<van-popup v-model:show="showPicker" destroy-on-close round position="bottom">
|
|
|
<van-picker
|
|
|
:model-value="pickerValue"
|
|
|
- :columns="options"
|
|
|
+ :columns="unit_options"
|
|
|
@cancel="showPicker = false"
|
|
|
@confirm="onConfirm"
|
|
|
/>
|
|
@@ -62,7 +62,7 @@
|
|
|
<van-popup v-model:show="showPicker2" destroy-on-close round position="bottom">
|
|
|
<van-picker
|
|
|
:model-value="pickerValue2"
|
|
|
- :columns="options2"
|
|
|
+ :columns="leader_options"
|
|
|
@cancel="showPicker2 = false"
|
|
|
@confirm="onConfirm2"
|
|
|
/>
|
|
@@ -76,47 +76,46 @@ import {reactive, ref} from "vue";
|
|
|
import {showSuccessToast} from "vant";
|
|
|
import selectIcon from "@/assets/images/selectIcon.png";
|
|
|
import {Numeric} from "vant/es/utils";
|
|
|
+import { getUnits, getUserList, addLeaderRequest } from '@/api/emergencyCommandMap/JointDuty';
|
|
|
|
|
|
const route = useRoute();
|
|
|
const router = useRouter();
|
|
|
-let id = ref('');
|
|
|
+const id = ref('');
|
|
|
// 表单数据
|
|
|
const form = ref({
|
|
|
- dept: '',
|
|
|
- name: '',
|
|
|
- info: ''
|
|
|
+ leader_unit: '',
|
|
|
+ leader_name: '',
|
|
|
+ content: '',
|
|
|
+ // 以下默认即可
|
|
|
+ processing_status: '',
|
|
|
+ feeback_type: "1",
|
|
|
});
|
|
|
-const pickerValue = ref<Numeric[]>([]);
|
|
|
+const pickerValue = ref(<Numeric[]>([]));
|
|
|
const pickerValue2 = ref<Numeric[]>([]);
|
|
|
let uploaderErrors = ref('');
|
|
|
// 表单校验规则
|
|
|
const rules = reactive({
|
|
|
- dept: [{ required: true, message: "请选择领导单位" }],
|
|
|
- name: [{ required: true, message: "请选择领导姓名" }],
|
|
|
- info: [{ required: true, message: "请输入请示信息" }],
|
|
|
+ leader_unit: [{ required: true, message: "请选择领导单位" }],
|
|
|
+ leader_name: [{ required: true, message: "请选择领导姓名" }],
|
|
|
+ content: [{ required: true, message: "请输入请示信息" }],
|
|
|
});
|
|
|
let showPicker = ref(false);
|
|
|
let showPicker2 = ref(false);
|
|
|
|
|
|
-const options = [
|
|
|
- { text: '处理中', value: '处理中' },
|
|
|
- { text: '已完成', value: '已完成' },
|
|
|
-];
|
|
|
-const options2 = [
|
|
|
- { text: '处理中2', value: '处理中' },
|
|
|
- { text: '已完成2', value: '已完成' },
|
|
|
-];
|
|
|
+const unit_options = ref([/*{ text: 'dept_name', value: 'dept_id' }*/]);
|
|
|
+const leader_options = ref([/*{ text: 'nick_name', value: 'user_id' }*/]);
|
|
|
// 选择
|
|
|
const onConfirm = ({ selectedValues, selectedOptions }) => {
|
|
|
showPicker.value = false;
|
|
|
- pickerValue.value = selectedValues;
|
|
|
- form.value.dept = selectedOptions[0].value;
|
|
|
+ pickerValue.value = [selectedOptions[0].text];
|
|
|
+ form.value.leader_unit = selectedOptions[0].text;
|
|
|
+ fetchUsers(selectedValues[0]);
|
|
|
};
|
|
|
// 选择
|
|
|
const onConfirm2 = ({ selectedValues, selectedOptions }) => {
|
|
|
showPicker2.value = false;
|
|
|
- pickerValue2.value = selectedValues;
|
|
|
- form.value.name = selectedOptions[0].value;
|
|
|
+ pickerValue2.value = [selectedOptions[0].text];
|
|
|
+ form.value.leader_name = selectedOptions[0].text;
|
|
|
};
|
|
|
// 是否在提交
|
|
|
let submitting = ref(false);
|
|
@@ -130,15 +129,49 @@ const onCancel = () => {
|
|
|
const onSubmit = () => {
|
|
|
if (submitting.value) return;
|
|
|
submitting.value = true;
|
|
|
+ addLeaderRequest({
|
|
|
+ task_id: id.value,
|
|
|
+ ...form.value
|
|
|
+ }).then((res) => {
|
|
|
+ showSuccessToast(res.msg);
|
|
|
+ onCancel();
|
|
|
+ });
|
|
|
+ /*
|
|
|
setTimeout(() => {
|
|
|
submitting.value = false;
|
|
|
showSuccessToast('提交成功');
|
|
|
onCancel();
|
|
|
}, 1500);
|
|
|
+ */
|
|
|
+}
|
|
|
+
|
|
|
+const fetchUnits = async () => {
|
|
|
+ getUnits({}).then((res)=>{
|
|
|
+ const units = new Map();
|
|
|
+ res.data.forEach((unit) => {
|
|
|
+ if (!units.has(unit.unit_name)) {
|
|
|
+ units.set(unit.unit_name, {
|
|
|
+ value: unit.unit_id,
|
|
|
+ text: unit.unit_name
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ unit_options.value = Array.from(units.values());
|
|
|
+ })
|
|
|
+};
|
|
|
+
|
|
|
+const fetchUsers = async(deptId) => {
|
|
|
+ getUserList({ deptId }).then((res)=>{
|
|
|
+ leader_options.value = res.rows.map((user) => ({
|
|
|
+ value: user.userId,
|
|
|
+ text: user.nickName
|
|
|
+ }));
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
onMounted(() => {
|
|
|
- id.value = route.query.id;
|
|
|
+ id.value = route.query.id as string;
|
|
|
+ fetchUnits();
|
|
|
})
|
|
|
</script>
|
|
|
|