|
|
@@ -0,0 +1,349 @@
|
|
|
+<template>
|
|
|
+ <view class="inspection-plan">
|
|
|
+ <view class="inspection-plan-create-form-box">
|
|
|
+ <uni-forms ref="valiFormRef" :rules="rules" label-width="350rpx" :model="valiFormData" label-position="left"
|
|
|
+ :border="true">
|
|
|
+
|
|
|
+ <view class="create-form-box">
|
|
|
+ <view class="form-box-title">
|
|
|
+ 巡检信息
|
|
|
+ </view>
|
|
|
+ <uni-forms-item class="is-first-border" label="巡检组" required name="group">
|
|
|
+ <view class="custom-text" @tap="handleOpenSelect('group')">
|
|
|
+ <view class="input-text" v-if="valiFormData.group">{{valiFormData.group}}</view>
|
|
|
+ <view class="placeholder-text" v-else>请选择</view>
|
|
|
+ <uni-icons type="down" size="16"></uni-icons>
|
|
|
+ </view>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="巡检负责人" required name="mainPerson">
|
|
|
+ <view class="custom-text" @tap="handleOpenSelect('mainPerson')">
|
|
|
+ <view class="input-text" v-if="valiFormData.mainPerson">{{valiFormData.mainPerson}}</view>
|
|
|
+ <view class="placeholder-text" v-else>请选择</view>
|
|
|
+ <uni-icons type="down" size="16"></uni-icons>
|
|
|
+ </view>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="协同人员" required name="withPerson">
|
|
|
+ <view class="custom-text">
|
|
|
+ <view class="input-text" v-if="valiFormData.withPerson">{{valiFormData.withPerson}}</view>
|
|
|
+ <view class="placeholder-text" v-else>请选择</view>
|
|
|
+ <uni-icons type="down" size="16"></uni-icons>
|
|
|
+ </view>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="巡检工作" required name="workType">
|
|
|
+ <view class="custom-text">
|
|
|
+ <view class="input-text" v-if="valiFormData.workType">{{valiFormData.workType}}</view>
|
|
|
+ <view class="placeholder-text" v-else>请选择</view>
|
|
|
+ <uni-icons type="down" size="16"></uni-icons>
|
|
|
+ </view>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="是否汛期" name="isWater">
|
|
|
+ <radio-group @change="radioChange" style="display: flex;justify-content: flex-end;">
|
|
|
+ <label style="margin-right: 20rpx; display: flex; align-items: center;">
|
|
|
+ <radio value="1" :checked="true" />是
|
|
|
+ </label>
|
|
|
+ <label style="display: flex; align-items: center;">
|
|
|
+ <radio value="0" />否
|
|
|
+ </label>
|
|
|
+ </radio-group>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="巡检类型" required name="type">
|
|
|
+ <view class="custom-text">
|
|
|
+ <view class="input-text" v-if="valiFormData.type">{{valiFormData.type}}</view>
|
|
|
+ <view class="placeholder-text" v-else>请选择</view>
|
|
|
+ <uni-icons type="down" size="16"></uni-icons>
|
|
|
+ </view>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="巡检周期" required name="cycle">
|
|
|
+ <view class="custom-text">
|
|
|
+ <view class="input-text" v-if="valiFormData.cycle">{{valiFormData.cycle}}</view>
|
|
|
+ <view class="placeholder-text" v-else>请选择</view>
|
|
|
+ <uni-icons type="down" size="16"></uni-icons>
|
|
|
+ </view>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="自定义天数" required name="customCycle">
|
|
|
+ <uni-easyinput type="number" class="custom-input" :inputBorder="false"
|
|
|
+ v-model="valiFormData.customCycle" placeholder="请输入水位" />
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="起止时间" required name="dateRange">
|
|
|
+ <uni-datetime-picker type="daterange" v-model="valiFormData.dateRange" :clear-icon="false">
|
|
|
+ <uni-easyinput suffixIcon="calendar" :clearable="false" class="custom-input"
|
|
|
+ :inputBorder="false" :value="valiFormData.dateRange.toString()" placeholder="请选择日期" />
|
|
|
+ </uni-datetime-picker>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="是否派工" name="isWork">
|
|
|
+ <radio-group @change="radioChange1" style="display: flex;justify-content: flex-end;">
|
|
|
+ <label style="margin-right: 20rpx; display: flex; align-items: center;">
|
|
|
+ <radio value="1" :checked="true" />是
|
|
|
+ </label>
|
|
|
+ <label style="display: flex; align-items: center;">
|
|
|
+ <radio value="0" />否
|
|
|
+ </label>
|
|
|
+ </radio-group>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="备注" name="remark">
|
|
|
+ <view class="custom-remark">
|
|
|
+ <view class="placeholder-text">
|
|
|
+ 点击图标开始录音
|
|
|
+ </view>
|
|
|
+ <view class="record-btn" @tap="handleStartRecord">
|
|
|
+ <image style="width: 100%; height: 100%;"
|
|
|
+ src="/static/images/components/recorder/record.svg" mode="scaleToFill"></image>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </uni-forms-item>
|
|
|
+ <custom-recorder ref="recorderRef"></custom-recorder>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="create-form-box">
|
|
|
+ <view class="form-box-title">
|
|
|
+ 巡检范围
|
|
|
+ </view>
|
|
|
+ <uni-forms-item label="巡检范围" required name="mapRange">
|
|
|
+ <uni-easyinput type="number" class="custom-input" :inputBorder="false"
|
|
|
+ v-model="valiFormData.mapRange" placeholder="请输入水位" />
|
|
|
+ </uni-forms-item>
|
|
|
+ <view class="form-box-btn">
|
|
|
+ <button type="primary" @tap="handleDraw" style="border-radius: 1998rpx;">
|
|
|
+ 前往绘制
|
|
|
+ </button>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </uni-forms>
|
|
|
+ <view class="empty" style="height: 110rpx;"></view>
|
|
|
+ </view>
|
|
|
+ <view class="bottom-btns">
|
|
|
+ <button type="primary" style="border-radius: 19998rpx; width: 100%;" @tap="handleSubmit">提交</button>
|
|
|
+ </view>
|
|
|
+ <custom-multi-select :show="ifOpenSelect" :columns="columns" :is-multi-select="isMulti" @cancel="onSelectClose" @confirm="onSelectSubmit"></custom-multi-select>
|
|
|
+ </view>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+ import {
|
|
|
+ reactive,
|
|
|
+ ref
|
|
|
+ } from 'vue';
|
|
|
+ import CustomRecorder from '@/components/Recorder/CustomRecorder.vue';
|
|
|
+ import CustomMultiSelect from '@/components/Select/CustomMultiSelect.vue';
|
|
|
+
|
|
|
+ const ifOpenSelect = ref(false)
|
|
|
+ const columns = ref([
|
|
|
+ {
|
|
|
+ label:"选项0",
|
|
|
+ value:"0"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label:"选项1",
|
|
|
+ value:"1"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label:"选项2",
|
|
|
+ value:"2"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label:"选项3",
|
|
|
+ value:"3"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label:"选项4",
|
|
|
+ value:"4"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label:"选项5",
|
|
|
+ value:"5"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label:"选项6",
|
|
|
+ value:"6"
|
|
|
+ },
|
|
|
+ ])
|
|
|
+ const isMulti = ref(true)
|
|
|
+ const handleOpenSelect = (type)=>{
|
|
|
+ // ifOpenSelect.value = true
|
|
|
+ if(type==='group'){
|
|
|
+ columns.value = []
|
|
|
+ for (let i = 0; i < 30; i++) {
|
|
|
+ columns.value.push({
|
|
|
+ label: `选项${i}`,
|
|
|
+ value: i
|
|
|
+ })
|
|
|
+ }
|
|
|
+ isMulti.value = true
|
|
|
+ ifOpenSelect.value = true
|
|
|
+ }
|
|
|
+ if(type==='mainPerson'){
|
|
|
+ columns.value = []
|
|
|
+ for (let i = 0; i < 20; i++) {
|
|
|
+ columns.value.push({
|
|
|
+ label: `选项${i}`,
|
|
|
+ value: i
|
|
|
+ })
|
|
|
+ }
|
|
|
+ isMulti.value = false
|
|
|
+ ifOpenSelect.value = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const onSelectClose = ()=>{
|
|
|
+ ifOpenSelect.value = false
|
|
|
+ }
|
|
|
+ const onSelectSubmit = (e)=>{
|
|
|
+ console.log(e)
|
|
|
+ ifOpenSelect.value = false
|
|
|
+ }
|
|
|
+
|
|
|
+ const handleDraw = () => {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/drawMap/index',
|
|
|
+ events:{
|
|
|
+ savePolygonCoords:(e)=>{
|
|
|
+ console.log(e.coords)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ const rules = {}
|
|
|
+ const valiFormRef = ref(null)
|
|
|
+ const valiFormData = reactive({
|
|
|
+ group: "",
|
|
|
+ mainPerson: "",
|
|
|
+ withPerson: "",
|
|
|
+ workType: "",
|
|
|
+ isWater: "1",
|
|
|
+ type: "",
|
|
|
+ cycle: "",
|
|
|
+ customCycle: "",
|
|
|
+ dateRange: [],
|
|
|
+ isWork: "1",
|
|
|
+ remark: "",
|
|
|
+
|
|
|
+ mapRange: "",
|
|
|
+ points: []
|
|
|
+ })
|
|
|
+ const radioChange = (e) => {
|
|
|
+ valiFormData.isWater = e.detail.value
|
|
|
+ }
|
|
|
+ const radioChange1 = (e) => {
|
|
|
+ valiFormData.isWork = e.detail.value
|
|
|
+ }
|
|
|
+
|
|
|
+ //录音器管理
|
|
|
+ const recorderRef = ref(null)
|
|
|
+ const handleStartRecord = () => {
|
|
|
+ recorderRef.value && recorderRef.value.handleOpenRecord()
|
|
|
+ }
|
|
|
+
|
|
|
+ // 提交
|
|
|
+ const handleSubmit = () => {
|
|
|
+ valiFormRef.value.validate().then((res) => {
|
|
|
+ console.log(res)
|
|
|
+ }).catch(e => {
|
|
|
+ console.log('err', e)
|
|
|
+ })
|
|
|
+ }
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+ .inspection-plan {
|
|
|
+ min-height: calc(100vh - var(--window-top) - 40rpx);
|
|
|
+ background-color: $uni-user-page-bgc;
|
|
|
+ padding: 20rpx;
|
|
|
+
|
|
|
+ .inspection-plan-create-form-box {
|
|
|
+
|
|
|
+ .create-form-box {
|
|
|
+ border-radius: 12rpx;
|
|
|
+ background: #FFFFFF;
|
|
|
+ padding: 30rpx;
|
|
|
+ margin-bottom: 20rpx;
|
|
|
+
|
|
|
+ &:last-child {
|
|
|
+ margin-bottom: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .form-box-title {
|
|
|
+ font-family: Source Han Sans;
|
|
|
+ font-size: 40rpx;
|
|
|
+ font-weight: 500;
|
|
|
+ font-feature-settings: "kern" on;
|
|
|
+ color: $uni-text-color;
|
|
|
+ }
|
|
|
+
|
|
|
+ .form-box-btn {
|
|
|
+ width: 50%;
|
|
|
+ margin: auto;
|
|
|
+ }
|
|
|
+
|
|
|
+ ::v-deep .custom-input {
|
|
|
+
|
|
|
+ input {
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+
|
|
|
+ .uni-input-placeholder {
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+
|
|
|
+ .uni-date__x-input {
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ::v-deep .uni-forms-item {
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ ::v-deep .custom-uni-form-item {
|
|
|
+ display: block;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 录音控制
|
|
|
+ ::v-deep .custom-remark {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-end;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ .placeholder-text {
|
|
|
+ margin-right: 20rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .record-btn {
|
|
|
+ width: 28rpx;
|
|
|
+ height: 40rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 自定义不用展示的输入框
|
|
|
+ ::v-deep .custom-text {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-end;
|
|
|
+ align-items: center;
|
|
|
+ font-size: 32rpx;
|
|
|
+
|
|
|
+ .input-text {
|
|
|
+ color: $uni-text-color;
|
|
|
+ }
|
|
|
+
|
|
|
+ .placeholder-text {
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: $uni-text-color-grey;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .bottom-btns {
|
|
|
+ position: fixed;
|
|
|
+ left: 0;
|
|
|
+ bottom: 0;
|
|
|
+ width: calc(100% - 40rpx);
|
|
|
+ height: 110rpx;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ padding: 0 20rpx;
|
|
|
+ background: #FFFFFF;
|
|
|
+ }
|
|
|
+ }
|
|
|
+</style>
|