wangqiang 9 місяців тому
батько
коміт
3641988f4b
2 змінених файлів з 196 додано та 198 видалено
  1. 31 0
      api/garbageClearance/overService.js
  2. 165 198
      pages/edt/PatrolWorkOrderForm.vue

+ 31 - 0
api/garbageClearance/overService.js

@@ -0,0 +1,31 @@
+import request from "../../common/request"
+
+export default {
+	save: function (inputForm) {
+		return request({
+			url: "/look/over/save",
+			method: "post",
+			data: inputForm,
+		});
+	},
+
+	getMaxNo: function () {
+		return request({
+			url: "/look/over/getMaxNo",
+			method: "get",
+		});
+	},
+	getProcessingUnit: function () {
+		return request({
+			url: "/look/over/getProcessingUnit",
+			method: "get",
+		});
+	},
+	getUserInfoByOffId: function (officeId) {
+		return request({
+			url: "/look/over/getUserInfoByOffId",
+			method: "get",
+			params: {officeId: officeId}
+		});
+	},
+};

+ 165 - 198
pages/edt/PatrolWorkOrderForm.vue

@@ -1,68 +1,72 @@
 <template>
     <view>
-        <cu-custom :backUrl="'/pages/index/index?id=apps'" :isBack="true" bgColor="bg-gradual-blue" >
+        <cu-custom :backUrl="'/pages/index/index?id=apps'" :isBack="true" bgColor="bg-gradual-blue">
             <block slot="content">建筑垃圾处理</block>
         </cu-custom>
-        <u--form :model="inputForm" labelWidth="100px" class="u-form" labelPosition="left" :rules="rules" ref="inputForm" v-if="!nodeFlag" >
-
-
-            <u-form-item label="巡视工单" prop="no"
-                         :rules="[
-				     ]">
-                <u--input v-model="inputForm.no" :disabled="true" placeholder="工单编号" clearable></u--input>
-            </u-form-item>
-
-            <u-form-item label="处理单位" borderBottom prop="processingUnit" :required="true">
-                <jp-picker v-model="inputForm.processingUnit" rangeKey="label" rangeValue="value" :range="[
-                    { label: '审计费', value: '1' },
-                    { label: '工程审核费', value: '2' },
-                    { label: '咨询费', value: '3' },
-                    { label: '预算编制费', value: '4' },
-                    { label: '招标代理费', value: '5' },
-                    { label: '司法鉴定费', value: '6' },
-                    { label: '其他', value: '8' },
-                    { label: '技术服务费', value: '9' },
-                    { label: '鉴证咨询服务*评估费', value: '10' },
-                    { label: '其他咨询服务*专家咨询费', value: '11' },
-                    { label: '会计服务', value: '12' },
-                    { label: '竣工决算编制费', value: '13' },
-                    { label: '*信息技术服务*技术服务费', value: '14' },
-                ]" ></jp-picker>
-            </u-form-item>
-
-            <u-form-item label="清运专员" prop="clearUserName"
-                         :rules="[
-				     ]">
-                <u--input v-model="inputForm.clearUserName" :disabled="true" placeholder="清运专员" clearable></u--input>
-            </u-form-item>
-
-            <u-form-item label="联系方式" prop="clearUserMobile"
-                         :rules="[
-				     ]">
-                <u--input v-model="inputForm.clearUserMobile" :disabled="true" placeholder="联系方式" clearable></u--input>
-            </u-form-item>
-
-            <view class="u-demo-block">
-                <text class="u-demo-block__title">基础用法</text>
-                <view class="u-demo-block__content">
-                    <view class="u-page__upload-item">
-                        <u-upload
-                                :fileList="fileList1"
-                                @afterRead="afterRead"
-                                @delete="deletePic"
-                                name="1"
-                                multiple
-                                :maxCount="10"
-                        ></u-upload>
-                    </view>
-                </view>
+
+        <!-- First Section: 巡视工单 to 联系方式 -->
+        <view class="form-section">
+            <u--form :model="inputForm" labelWidth="100px" class="u-form" labelPosition="left" :rules="rules" ref="inputForm" v-if="!nodeFlag">
+
+                <u-form-item label="巡视工单" prop="no">
+                    <u--input v-model="inputForm.no" :disabled="true" placeholder="工单编号" clearable></u--input>
+                </u-form-item>
+
+                <u-form-item label="处理单位" borderBottom prop="processingUnit" :required="true" v-if="!disFlag">
+                    <jp-picker v-model="inputForm.processingUnit" rangeKey="label" rangeValue="value" :range="processingUnits" @input="getUserInfoByOffId"></jp-picker>
+                </u-form-item>
+
+                <u-form-item label="处理单位" borderBottom prop="processingUnitName" :required="true" v-else-if="disFlag">
+                    <u--input v-model="inputForm.processingUnitName" :disabled="true" placeholder="处理单位" clearable></u--input>
+                </u-form-item>
+
+                <u-form-item label="清运专员" prop="clearUserName">
+                    <u--input v-model="inputForm.clearUserName" :disabled="true" placeholder="清运专员" clearable></u--input>
+                </u-form-item>
+
+                <u-form-item label="联系方式" prop="clearUserMobile">
+                    <u--input v-model="inputForm.clearUserMobile" :disabled="true" placeholder="联系方式" clearable></u--input>
+                </u-form-item>
+            </u--form>
+        </view>
+
+        <!-- Second Section: 上传图片 -->
+        <view class="form-section">
+            <text class="u-demo-block__title">现场照片</text>
+            <view class="u-page__upload-item">
+                <u-upload
+                        :fileList="fileList1"
+                        @afterRead="afterRead"
+                        @delete="deletePic"
+                        name="1"
+                        multiple
+                        :maxCount="10"
+                ></u-upload>
             </view>
+        </view>
 
-        </u--form>
+        <!-- Third Section: 备注 -->
+        <view class="form-section">
+            <u--form :model="inputForm" labelWidth="100px" class="u-form" labelPosition="left" :rules="rules" ref="inputForm" v-if="!nodeFlag">
+                <u-form-item label="备注" borderBottom prop="remarks">
+                    <u--textarea placeholder='请填写备注' :maxlength="500" v-model="inputForm.remarks"></u--textarea>
+                </u-form-item>
+
+                <view class="button-container">
+                    <u-button
+                            text="提交"
+                            size="large"
+                            type="primary"
+                            @click="saveForm"
+                    ></u-button>
+                </view>
+            </u--form>
+        </view>
     </view>
 </template>
 
 <script>
+    import overService from '@/api/garbageClearance/overService'
     import {mapState, mapMutations, mapActions} from 'vuex'
     import * as $auth from "../../common/auth";
     export default {
@@ -74,43 +78,73 @@
         }),
         data () {
             return {
+                disFlag: true,  // 启用动态获取处理单位则设置为false
+                processingUnits: [],
                 fileList1: [],
                 nodeFlag: false,
                 inputForm: {
                     no: '',
                     processingUnit: '',
+                    processingUnitName: '',
                     clearUserId: '',
                     clearUserName: '',
-                    clearUserMobile: ''
+                    clearUserMobile: '',
+                    remarks: '',
                 },
                 rules: {
-                    /*'billingWorkplaceReal': [
+                    'processingUnit': [
                         {
                             required: true,
-                            message: '实际开票单位不能为空',
+                            message: '处理单位不能为空',
                             trigger: ['blur', 'change']
                         }
-                    ],*/
+                    ],
                 }
             }
         },
-        /*ossService: null,
-        materialTypeService: null,
-        wareHouseService: null,
-        commonApi: null,*/
         // 页面加载时执行
-        created() {
+        async created() {
+
+            let data = await overService.getMaxNo();
+            if (data) {
+                let newNo = parseInt(data, 10) + 1;
+                this.inputForm.no = 'XJ-J' + newNo;
+            } else {
+                // 获取当前年份
+                let nowY = new Date().getFullYear();
+                this.inputForm.no = 'XJ-J' + nowY + '0001';
+            }
+
+            // 如果要使用动态获取处理单位则设置为true
+            if (false) {
+                let units = await overService.getProcessingUnit();
+                let childs = units[0].children;
+
+                if (childs) {
+                    this.processingUnits = [];  // 初始化数组
+
+                    for (let i = 0; i < childs.length; i++) {
+                        this.processingUnits.push({
+                            label: childs[i].name,
+                            value: childs[i].id
+                        });
+                    }
+                }
+            }
 
-            /*this.ossService = new OSSService()
-            this.commonApi = new CommonApi()
-            this.materialTypeService = new MaterialTypeService()
-            this.wareHouseService = new WareHouseService()
+            this.inputForm.processingUnit = this.userInfo.officeDTO.id
+            this.inputForm.processingUnitName = this.userInfo.officeDTO.name
+            // 不动态获取  根据当前登录人去查
+            await overService.getUserInfoByOffId(this.userInfo.officeDTO.id)
+                .then(data => {
+                    this.inputForm.clearUserId = data.id
+                    this.inputForm.clearUserName = data.name
+                    this.inputForm.clearUserMobile = data.mobile
+                })
+                .catch(e => {
+                    throw e;
+                });
 
-            this.inputForm.actualDrawerEmailAddress = this.userInfo.email
-            this.inputForm.handledBy = this.userInfo.name
-            this.inputForm.handledById = this.userInfo.id
-            this.inputForm.handledByOffice = this.userInfo.officeDTO.id
-            this.inputForm.handledByOfficeName = this.userInfo.officeDTO.name*/
 
         },
         props: {
@@ -251,14 +285,26 @@
                 return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
             },
             saveForm(callback) {
+
                 return new Promise((resolve, reject) => {
                     // 表单规则验证
                     // ...
 
                     let errors = [];
 
+                    if (this.fileList1 && this.fileList1.length > 0) {
+                        // 将 fileList1 中的每个文件对象的属性名调整为新的属性名
+                        this.inputForm.fileList1 = this.fileList1.map(file => {
+                            return {
+                                attachmentName: file.name,
+                                fileSize: file.size,
+                                url: file.url,
+                                type: file.type,      // 如果不需要,可以不写
+                            };
+                        });
+                    }
 
-                    /*if (errors.length > 0) {
+                    if (errors.length > 0) {
                         // 存在错误,显示提示信息
                         errors.forEach(error => {
                             uni.showToast({
@@ -269,13 +315,17 @@
                         });
                         reject('Form validation failed');
                     } else {
-                        this.inputForm.account = this.inputForm.accountTotal
                         // 所有验证通过,执行保存操作
                         this.$refs.inputForm.validate().then(() => {
                             uni.showLoading();
-                            this.inputForm.status = '2';
-                            financeInvoiceService.saveForm(this.inputForm).then(data => {
-                                callback(data.businessTable, data.businessId);
+
+                            overService.save(this.inputForm).then(data => {
+
+                                uni.showToast({title:"提交成功", icon:"success"});
+                                // 返回上一页
+                                uni.navigateBack({
+                                    delta: 1
+                                });
                                 resolve('Form saved successfully');
                             }).catch(error => {
                                 reject('Save operation failed');
@@ -283,117 +333,9 @@
                         }).catch(() => {
                             reject('Form validation failed');
                         });
-                    }*/
-                });
-            },
-
-            // 修改状态
-            /*async updateStatusById (type, callback) {
-                if (type === 'reject' || type === 'reback') {
-                    financeInvoiceService.queryById(this.inputForm.id).then((data) => {
-                        if (data.status !== '2') { // status的值不等于“审核中”,就弹出提示
-                            this.loading = false
-                            this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
-                            throw new Error()
-                        } else {
-                            if (type === 'reject') {
-                                // 驳回
-                                this.inputForm.status = '4'
-                            }
-                            if (type === 'reback') {
-                                // 撤回
-                                this.inputForm.status = '3'
-                            }
-                            if (type === 'reject' || type === 'reback') {
-                                let param = {status: this.inputForm.status, id: this.inputForm.id}
-                                financeInvoiceService.updateStatusById(param).then(() => {
-                                    this.loading = false
-                                    callback()
-                                })
-                            }
-                        }
-                    })
-                } else if (type === 'hold') {
-                    financeInvoiceService.queryById(this.inputForm.id).then((data) => {
-                        if (data.status !== '4') { // status的值不等于“驳回”就弹出提示
-                            this.loading = false
-                            this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
-                            throw new Error()
-                        } else {
-                            // 终止
-                            let param = {status: '1', id: this.inputForm.id}
-                            financeInvoiceService.updateStatusById(param).then(() => {
-                                this.loading = false
-                                callback()
-                            })
-                        }
-                    })
-                }
-            },*/
-            /*reapplyForm (callback) {
-                this.loading = true
-                financeInvoiceService.queryById(this.inputForm.id).then((data) => {
-                    if (data.status !== '4') { // 审核状态不是“驳回”,就弹出提示
-                        this.loading = false
-                        this.$message.error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
-                        throw new Error('任务数据已发生改变或不存在,请在待办任务中确认此任务是否存在')
-                    } else {
-                        this.startFormTrue(callback)
-                    }
-                })
-            },*/
-            // 送审
-            /*async startFormTrue (callback) {
-                this.$refs.inputForm.validate().then(res => {
-                    this.inputForm.status = '2'
-                    financeInvoiceService.saveForm(this.inputForm).then((data) => {
-                        this.inputForm.id = data.businessId
-                        callback(data.businessTable, data.businessId, this.inputForm)
-                        this.$refs.inputForm.resetFields()
-                        this.loading = false
-                    }).catch(() => {
-                        this.$refs.inputForm.resetFields()
-                    }).catch((e) => {
-
-                    })
-                })
-            },*/
-            // 通过
-            /*async agreeForm (callback) {
-
-                return new Promise((resolve, reject) => {
-                    // 表单规则验证
-                    // ...
-
-                    let errors = [];
-                    let acc = 0
-
-                    if (errors.length > 0) {
-                        // 存在错误,显示提示信息
-                        errors.forEach(error => {
-                            uni.showToast({
-                                title: error,
-                                icon: 'none',
-                                duration: 2000
-                            });
-                        });
-                        reject('Form validation failed');
-                    } else {
-                        // 所有验证通过,执行保存操作
-                        this.$refs.inputForm.validate().then(res => {
-                            this.inputForm.status = '5'
-                            financeInvoiceService.saveForm(this.inputForm).then((data) => {
-                                callback(data.businessTable, data.businessId, this.inputForm)
-                                this.$refs.inputForm.resetFields()
-                                this.loading = false
-                            }).catch(() => {
-                                this.loading = false
-                                this.$refs.inputForm.resetFields()
-                            })
-                        })
                     }
                 });
-            },*/
+            },
 
             // 删除图片
             deletePic(event) {
@@ -412,7 +354,7 @@
                     })
                 })
                 for (let i = 0; i < lists.length; i++) {
-                    const result = await this.uploadFilePromise(lists[i].url)
+                    const result = await this.uploadFilePromise(lists[i].url, fileListLen)
                     let item = this[`fileList${event.name}`][fileListLen]
                     this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
                         status: 'success',
@@ -422,11 +364,11 @@
                     fileListLen++
                 }
             },
-            uploadFilePromise(url) {
+            uploadFilePromise(url, index) {
                 console.log($auth.getUserToken())
                 return new Promise((resolve, reject) => {
                     let a = uni.uploadFile({
-                        url: 'http://localhost:8000/app/file/upload', // 仅为示例,非真实的接口地址
+                        url: 'http://localhost:8000/app/file/webUpload/fileUpload', // 仅为示例,非真实的接口地址
                         filePath: url,
                         name: 'file',
                         formData: {
@@ -436,8 +378,13 @@
                             'token': $auth.getUserToken(),
                         },
                         success: (res) => {
+
+                            // this.fileList1[index].url = url
+
                             setTimeout(() => {
-                                resolve(res.data.data);
+                                const dataObj = JSON.parse(res.data);
+                                const url = dataObj.url;
+                                resolve(url);
                             }, 1000);
                         },
                         fail: (err) => {
@@ -446,21 +393,41 @@
                     });
                 })
             },
+            getUserInfoByOffId(){
+                // 根据组织ID 获取 该村的 村支书
+                overService.getUserInfoByOffId(this.inputForm.processingUnit)
+                    .then(data => {
+                        this.inputForm.clearUserId = data.id
+                        this.inputForm.clearUserName = data.name
+                        this.inputForm.clearUserMobile = data.mobile
+                    })
+                    .catch(e => {
+                        throw e;
+                    });
+            }
         }
     }
 </script>
 
 <style>
-    .cu-form-group .title {
-        min-width: calc(4em + 40px);
+    .form-section {
+        padding: 10px 15px;
+        margin-bottom: 10px;
+        background-color: #ffffff;
+        border-radius: 5px;
+        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
     }
 
-    /* 样式示例,您可能需要根据实际情况调整 */
-    .upload-demo {
-        width: 40%;
+    .u-page__upload-item {
+        margin-top: 10px;
     }
+
     .button-container {
-        margin-top: 10px;
-        text-align: right;
+        margin-top: 20px;
+        text-align: center;
+    }
+
+    .cu-form-group .title {
+        min-width: 100px;
     }
 </style>