Ver código fonte

更新工作人员端事件报送

libushang 6 meses atrás
pai
commit
698d90fd95

+ 310 - 1
src/views/event/add.vue

@@ -1,2 +1,311 @@
 <template>
-</template>
+    <van-form @submit="on_submit">
+        <div style="padding-top: 8px;background: #fff">
+            <van-field
+                required
+                v-model="form.event_title"
+                label="事件标题"
+                placeholder="请填写事件标题"
+                :rules="[{ required: true, message: '请填写事件标题'  }]"
+            />
+
+            <van-field
+                required
+                v-model="form.event_type_text"
+                label="事件类型"
+                placeholder="请选择事件类型"
+                :rules="[{ required: true, message: '请选择事件类型'  }]"
+                readonly
+                @click="form.showPicker_event_type = true"
+            />
+
+            <van-field
+                required
+                v-model="form.event_level_text"
+                label="事件等级"
+                placeholder="请选择事件等级"
+                :rules="[{ required: true, message: '请选择事件等级'  }]"
+                readonly
+                right-icon="warning-o"
+                @click="form.showPicker_event_level = true"
+                @click-right-icon="handleEventLevel"
+            >
+            </van-field>
+            
+            <van-field
+                required
+                v-model="form.event_status_text"
+                label="事件状态"
+                placeholder="请选择事件状态"
+                :rules="[{ required: true, message: '请选择事件状态'  }]"
+                readonly
+                @click="form.showPicker_event_status = true"
+            />
+
+            <van-field
+                required
+                v-model="form.event_time"
+                label="事发时间"
+                placeholder="请选择事发时间"
+                :rules="[{ required: true, message: '请选择事发时间'  }]"
+                readonly
+                @click="form.showPicker_event_time = true"
+            />
+
+            <van-field
+                required
+                v-model="form.report_time"
+                label="上报时间"
+                placeholder="请选择上报时间"
+                :rules="[{ required: true, message: '请选择上报时间'  }]"
+                readonly
+                @click="form.showPicker_report_time = true"
+            />
+
+            <van-field
+                v-model="form.deaths"
+                label="死亡人数"
+                placeholder="请填写死亡人数"
+                :rules="[{ required: true, message: '请填写死亡人数'  }]"
+            />
+
+            <van-field
+                v-model="form.injuries"
+                label="受伤人数"
+                placeholder="请填写受伤人数"
+                :rules="[{ required: false, message: '请填写受伤人数'  }]"
+                type="digit"
+            />
+
+            <van-field
+                v-model="form.missing"
+                label="失联人数"
+                placeholder="请填写失联人数"
+                :rules="[{ required: false, message: '请填写失联人数'  }]"
+                type="digit"
+            />
+
+            <van-field
+                required
+                v-model="form.event_source"
+                label="事件来源"
+                placeholder="请填写事件来源"
+                :rules="[{ required: false, message: '请填写事件来源'  }]"
+            />
+
+            <van-field
+                center
+                required
+                v-model="form.address"
+                label="事发地点"
+                placeholder="请填写事发地点"
+                :rules="[{ required: false, message: '请填写事发地点'  }]"
+                readonly
+            >
+                <template #button>
+                    <van-button size="small" type="primary" @click="handleMap">地图定位</van-button>
+                </template>
+            </van-field>
+
+            <van-field
+                required
+                v-model="form.event_description"
+                label="事件概要"
+                placeholder="请填写事件概要"
+                :rules="[{ required: true, message: '请填写事件概要'  }]"
+                rows="3"
+                autosize
+                type="textarea"
+                maxlength="250"
+                show-word-limit
+            />
+        </div>
+
+        <div class="popup-footer" style="padding-bottom:16px;">
+            <van-button @click="handleCancel()" class="cancel-btn">取 消</van-button>
+            <van-button type="primary" native-type="submit" class="confirm-btn">确 定</van-button>
+        </div>
+    </van-form>
+    
+    <van-popup v-model:show="form.showPicker_event_type" round position="bottom">
+        <van-picker
+            :columns="opt_event_type"
+            @cancel="form.showPicker_event_type = false"
+            @confirm="onConfirm_event_type"
+        />
+    </van-popup>
+    
+    <van-popup v-model:show="form.showPicker_event_level" round position="bottom">
+        <van-picker
+            :columns="opt_event_level"
+            @cancel="form.showPicker_event_level = false"
+            @confirm="onConfirm_event_level"
+        />
+    </van-popup>
+    
+    <van-popup v-model:show="form.showPicker_event_status" round position="bottom">
+        <van-picker
+            :columns="opt_event_status"
+            @cancel="form.showPicker_event_status = false"
+            @confirm="onConfirm_event_status"
+        />
+    </van-popup>
+
+    <van-popup v-model:show="form.showPicker_event_time" round position="bottom">
+        <van-picker-group
+            title="事发时间"
+            :tabs="['选择日期', '选择时间']"
+            @confirm="onConfirm_event_time"
+            @cancel="form.showPicker_event_time = false"
+            >
+            <van-date-picker v-model="date_1" :max-date="maxDate" />
+            <van-time-picker v-model="time_1" />
+        </van-picker-group>
+    </van-popup>
+
+    <van-popup v-model:show="form.showPicker_report_time" round position="bottom">
+        <van-picker-group
+            title="上报时间"
+            :tabs="['选择日期', '选择时间']"
+            @confirm="onConfirm_report_time"
+            @cancel="form.showPicker_report_time = false"
+            >
+            <van-date-picker v-model="date_1" :max-date="maxDate" />
+            <van-time-picker v-model="time_1" />
+        </van-picker-group>
+    </van-popup>
+</template>
+<script lang="ts" setup>
+import {reactive, ref, toRefs, getCurrentInstance} from 'vue';
+import {useRouter} from "vue-router";
+import { addTaskResult } from "@/api/riskManagement";
+import { showToast } from 'vant';
+
+const proxy = getCurrentInstance()?.proxy;
+const { mm_event_type } = toRefs<any>(proxy?.useDict( 'mm_event_type' ));
+
+const router = useRouter();
+const maxDate =  new Date();
+const date_1 = ref();
+const time_1 = ref();
+
+const data = reactive({
+    form: {
+        event_title: '',
+        event_type: '',
+        event_type_text: '',
+        event_level: '',
+        event_level_text: '',
+        event_status: '',
+        event_status_text: '',
+        event_time: '',
+        report_time: '',
+        event_source: '',
+        event_description: '',
+        deaths: '',
+        injuries: '',
+        missing: '',
+        address: '',
+
+        showPicker_event_type: false,
+        showPicker_event_level: false,
+        showPicker_event_status: false,
+        showPicker_event_time: false,
+        showPicker_report_time: false,
+    }
+});
+const {form} = toRefs(data);
+
+const opt_event_type = [
+    { text: '自然灾害', value: '0' },
+    { text: '事故灾害', value: '1' },
+    { text: '公共卫生事件', value: '2' },
+    { text: '社会安全事件', value: '3' }
+];
+
+const opt_event_level = [
+    { text: '一般', value: '1' },
+    { text: '较大', value: '2' },
+    { text: '重大', value: '3' },
+    { text: '特别重大', value: '4' },
+    { text: '其他', value: '0' },
+];
+
+const opt_event_status = [
+    { text: '已登记', value: '0' },
+    { text: '指挥中', value: '1' },
+    { text: '指挥结束', value: '2' },
+    { text: '已关闭', value: '3' }
+];
+
+const onConfirm_event_type = ({selectedOptions}) => {
+    form.value.showPicker_event_type = false
+    form.value.event_type = selectedOptions[0].value;
+    form.value.event_type_text = selectedOptions[0].text;
+}
+
+const onConfirm_event_level = ({selectedOptions}) => {
+    form.value.showPicker_event_level = false
+    form.value.event_level = selectedOptions[0].value;
+    form.value.event_level_text = selectedOptions[0].text;
+}
+
+const onConfirm_event_status = ({selectedOptions}) => {
+    form.value.showPicker_event_status = false
+    form.value.event_status = selectedOptions[0].value;
+    form.value.event_status_text = selectedOptions[0].text;
+}
+
+const onConfirm_event_time = () => {
+    form.value.event_time = `${date_1.value.join('-')} ${time_1.value.join(':')}`;
+    console.log('form.value.event_time:', form.value.event_time);
+    form.value.showPicker_event_time = false;
+}
+
+const onConfirm_report_time = () => {
+    form.value.report_time = `${date_1.value.join('-')} ${time_1.value.join(':')}`;
+    console.log('form.value.event_time:', form.value.report_time);
+    form.value.showPicker_report_time = false;
+}
+
+const handleEventLevel = () => {
+
+};
+const handleMap = () => {
+
+};
+
+const on_submit = () => {
+    console.log('on_submit', {});
+    addTaskResult({
+        
+    }).then((res)=>{
+        router.back();
+    });
+};
+
+const handleCancel = () => {
+    router.back();
+}
+
+</script>
+
+<style lang="scss" scoped>
+.van-doc-block__title {
+  color: var(--van-doc-text-color-4);
+  margin: 0px;
+  padding: 0 6vmin;
+  font-size: 4.6vmin;
+  font-weight: 600;
+  line-height: 6.0vmin;
+}
+
+.van-doc-block__sub_title {
+    margin: 0px;
+    padding: 0 6vmin;
+    font-size: 3.6vmin;
+    font-weight: 400;
+    line-height: 6.0vmin;
+    color: #1989fa;
+}
+</style>

+ 1 - 1
src/views/worker/eventManagement/eventList.vue

@@ -4,7 +4,7 @@
     <van-search
       v-model="queryParams.search_keyword"
       class="common-search"
-      placeholder="请输入事件标题/是否地点"
+      placeholder="请输入事件标题/事发地点"
       :left-icon="searchImg"
       :right-icon="closeImg"
       :clearable="false"