123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433 |
- <template>
- <view>
- <cu-custom :backUrl="'/pages/index/index?id=apps'" :isBack="true" bgColor="bg-gradual-blue">
- <block slot="content">建筑垃圾巡视</block>
- </cu-custom>
- <!-- 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>
- <!-- 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 {
- components: {
- },
- computed: mapState({
- userInfo: (state) => state.user.userInfo,
- avatar: (state) => state.user.avatar
- }),
- data () {
- return {
- disFlag: true, // 启用动态获取处理单位则设置为false
- processingUnits: [],
- fileList1: [],
- nodeFlag: false,
- inputForm: {
- no: '',
- processingUnit: '',
- processingUnitName: '',
- clearUserId: '',
- clearUserName: '',
- clearUserMobile: '',
- remarks: '',
- },
- rules: {
- 'processingUnit': [
- {
- required: true,
- message: '处理单位不能为空',
- trigger: ['blur', 'change']
- }
- ],
- }
- }
- },
- // 页面加载时执行
- async created() {
- let data = await overService.getMaxNo();
- if (data) {
- let newNo = parseInt(data, 10) + 1;
- this.inputForm.no = 'XS-J' + newNo;
- } else {
- // 获取当前年份
- let nowY = new Date().getFullYear();
- this.inputForm.no = 'XS-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.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;
- });
- },
- props: {
- status: {
- type: String,
- default: ''
- }
- },
- watch: {
- },
- methods: {
- init (id) {
- this.nodeFlag = true
- this.inputForm.id = id
- /*if (id) {
- financeInvoiceService.queryById(id).then((data) => {
- if (this.status === 'testSee') {
- this.nodeFlag = true
- this.testFlag = true
- } else {
- this.commonApi.getTaskNameByProcInsId(data.procInsId).then((data) => {
- if (this.isNotEmpty(data)) {
- if (data === '发起人重新申请' || this.isEmpty(data)) {
- this.nodeFlag = false
- } else if (data === '发票管理员审核'){
- this.nodeFlag = true
- this.addFlag = true
- }
- }else {
- this.testFlag = true
- this.addFlag = true
- console.log('没有')
- }
- })
- }
- this.inputForm = this.recover(this.inputForm, data)
- if (this.inputForm.workAttachmentDtoList) {
- this.inputForm.workAttachmentDtoList.forEach( (item,index) => {
- this.$set(this.showFileList, index, true);
- })
- }
- let i = this.inputForm.financeInvoiceBaseDTOList.length
- let sun = 0
- for (let j = 0; j < i; j++) {
- sun = (100*sun + 100* this.inputForm.financeInvoiceBaseDTOList[j].account)/100
- }
- this.inputForm.accountTotal = sun
- this.inputForm.billingDate = this.formatDate(new Date())
- if ( !this.nodeFlag && this.status !== 'testSee') {
- this.inputForm.financeInvoiceDetailDTOList.push({
- code: '',
- number: '',
- account: sun,
- rate: '',
- amount: '',
- tax: '',
- allAmount: ''
- })
- }
- if (!this.isEmpty(this.inputForm.billingWorkplaceRealId)) {
- this.bankList = []
- workClientService.queryById(this.inputForm.billingWorkplaceRealId).then((data) => {
- if (this.isNotEmpty(data.cwWorkClientBillingDTOList)) {
- data.cwWorkClientBillingDTOList.forEach(i => {
- i.ourBank = i.accountHolder
- let test = {label: i.ourBank, value: i.id, account: i.account}
- this.bankList.push(test)
- this.$set(this.inputForm, 'openBank', i.id);
- })
- } else {
- this.bankList = []
- }
- })
- }
- })
- }*/
- },
- formatDate(date) {
- const dateNew = new Date(date); // 将日期字符串转换为 Date 对象
- const year = dateNew.getFullYear();
- const month = (dateNew.getMonth() + 1).toString().padStart(2, '0');
- const day = dateNew.getDate().toString().padStart(2, '0');
- return `${year}-${month}-${day}`;
- },
- isEmpty(value) {
- let result = false;
- if (value == null || value == undefined) {
- result = true;
- }
- if (typeof value == 'string' && (value.replace(/\s+/g, "") == "" || value == "")) {
- result = true;
- }
- if (typeof value == "object" && value instanceof Array && value.length === 0) {
- result = true;
- }
- return result;
- },
- isNotEmpty (value) {
- return !this.isEmpty(value)
- },
- /**
- * 判断是否为空
- */
- isNull(val) {
- if (val instanceof Array) {
- if (val.length === 0) return true;
- } else if (val instanceof Object) {
- if (JSON.stringify(val) === "{}") return true;
- } else {
- if (
- val === "null" ||
- val == null ||
- val === "undefined" ||
- val === undefined ||
- val === ""
- )
- return true;
- return false;
- }
- return false;
- },
- formatDateNew(date) {
- const year = date.getFullYear();
- const month = (date.getMonth() + 1).toString().padStart(2, '0');
- const day = date.getDate().toString().padStart(2, '0');
- const hours = date.getHours().toString().padStart(2, '0');
- const minutes = date.getMinutes().toString().padStart(2, '0');
- const seconds = date.getSeconds().toString().padStart(2, '0');
- 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) {
- // 存在错误,显示提示信息
- errors.forEach(error => {
- uni.showToast({
- title: error,
- icon: 'none',
- duration: 2000
- });
- });
- reject('Form validation failed');
- } else {
- // 所有验证通过,执行保存操作
- this.$refs.inputForm.validate().then(() => {
- uni.showLoading();
- 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');
- });
- }).catch(() => {
- reject('Form validation failed');
- });
- }
- });
- },
- // 删除图片
- deletePic(event) {
- this[`fileList${event.name}`].splice(event.index, 1)
- },
- // 新增图片
- async afterRead(event) {
- // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
- let lists = [].concat(event.file)
- let fileListLen = this[`fileList${event.name}`].length
- lists.map((item) => {
- this[`fileList${event.name}`].push({
- ...item,
- status: 'uploading',
- message: '上传中'
- })
- })
- for (let i = 0; i < lists.length; i++) {
- 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',
- message: '',
- url: result
- }))
- fileListLen++
- }
- },
- uploadFilePromise(url, index) {
- console.log($auth.getUserToken())
- return new Promise((resolve, reject) => {
- let a = uni.uploadFile({
- url: 'http://localhost:8000/app/file/webUpload/fileUpload', // 仅为示例,非真实的接口地址
- filePath: url,
- name: 'file',
- formData: {
- user: this.$store.state.user.userInfo
- },
- header: {
- 'token': $auth.getUserToken(),
- },
- success: (res) => {
- // this.fileList1[index].url = url
- setTimeout(() => {
- const dataObj = JSON.parse(res.data);
- const url = dataObj.url;
- resolve(url);
- }, 1000);
- },
- fail: (err) => {
- console.error('Upload failed:', err);
- }
- });
- })
- },
- 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>
- .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);
- }
- .u-page__upload-item {
- margin-top: 10px;
- }
- .button-container {
- margin-top: 20px;
- text-align: center;
- }
- .cu-form-group .title {
- min-width: 100px;
- }
- </style>
|