Merge remote-tracking branch 'origin/master'
| | |
| | | # VUE_APP_API_URL = 'http://192.168.0.163:10010/' |
| | | |
| | | # 萍姐 |
| | | VUE_APP_API_URL = 'http://192.168.0.105:10010/' |
| | | VUE_APP_API_URL = 'http://192.168.0.108:10010/' |
| | | |
| | | # 测试服务 |
| | | # VUE_APP_API_URL = 'https://dmtest.ahapp.net/gateway_interface' |
| | |
| | | <ul class="toolbar" v-permissions="['business:ywpatrolscheme:create', 'business:ywpatrolscheme:delete']"> |
| | | <li><el-button type="primary" @click="editClick()" icon="el-icon-plus" |
| | | v-permissions="['business:ywpatrolscheme:create']">新建</el-button></li> |
| | | <el-button type="primary" plain :loading="isWorking.export" v-permissions="['business:ywpatrolscheme:exportExcel']" |
| | | @click="exportExcel">导出</el-button> |
| | | <el-button type="primary" plain :loading="isWorking.export" |
| | | v-permissions="['business:ywpatrolscheme:exportExcel']" @click="exportExcel">导出</el-button> |
| | | <!-- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" |
| | | v-permissions="['business:ywpatrolscheme:delete']">删除</el-button></li> --> |
| | | </ul> |
| | |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | |
| | | <el-table-column prop="title" label="计划名称" min-width="100px"></el-table-column> |
| | | <el-table-column prop="lineId" label="计划编号" min-width="100px"></el-table-column> |
| | | <el-table-column prop="code" label="计划编号" min-width="100px"></el-table-column> |
| | | <el-table-column prop="userName" label="负责人员" min-width="100px"></el-table-column> |
| | | |
| | | <el-table-column prop="startDate" label="计划日期" min-width="150px"> |
| | |
| | | this.$emit('close') |
| | | } else { |
| | | this.activeTabs = 0 |
| | | this.zlList = [] |
| | | this.wyList = [] |
| | | } |
| | | } |
| | | } |
| | |
| | | this.$refs.selectHouse.open('选择房源', { contractId: this.form.contractId, type: 0 }) |
| | | }, |
| | | getCompanyList () { |
| | | companyList({}) |
| | | companyList({ type: 2, status: 0 }) |
| | | .then(res => { |
| | | this.comparyList = res |
| | | }) |
| | |
| | | <el-tag type="success" v-if="info.status === 0">开启</el-tag> |
| | | <el-tag type="info" v-if="info.status === 1">关闭</el-tag> |
| | | </div> |
| | | <el-button type="danger" v-if="info.status === 0" @click="closeDW()">关闭流水</el-button> |
| | | <el-button type="danger" v-if="info.status !== 1 || !['3','4'].includes(info.contractStatus)" @click="closeDW()">关闭流水</el-button> |
| | | </div> |
| | | <div class="line"></div> |
| | | <div class="main"> |
| | |
| | | tabsClick(val) { |
| | | this.activeTabs = val |
| | | }, |
| | | closeDW (id) { |
| | | closeDW () { |
| | | this.$confirm('确认关闭此流水吗?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | close(id) |
| | | close(this.info.id) |
| | | .then(res => { |
| | | this.getDetails() |
| | | }) |
| | |
| | | <template> |
| | | <GlobalWindow width="800px" :title="title" :visible.sync="visible" @close="close" :confirm-working="isWorking" @confirm="confirm"> |
| | | <GlobalWindow width="800px" :title="title" :visible.sync="visible" @close="close" :confirm-working="isWorking" |
| | | @confirm="confirm"> |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="位置类型" prop="areaType"> |
| | | <el-select v-model="form.areaType"> |
| | |
| | | <i class="el-icon-plus avatar-uploader-icon"></i> |
| | | <div>图片/视频</div> |
| | | </div> |
| | | </el-upload> |
| | | </el-upload> |
| | | <div v-for="(item, i) in fileList" :key="i" class="item"> |
| | | <i @click="handleDelImg(i)" class="el-icon-error close"></i> |
| | | <el-image :src="item.fileurlFull" :preview-src-list="[item.fileurlFull]" v-if="item.type == 0" |
| | |
| | | // 表单数据 |
| | | form: { |
| | | id: null, |
| | | creator: '', |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | floor: '', |
| | | isdeleted: '', |
| | | title: '', |
| | | remark: '', |
| | | status: '', |
| | |
| | | floorId: '', |
| | | roomId: '', |
| | | userId: '', |
| | | phone: '', |
| | | submitDate: '', |
| | | cateId: '', |
| | | areaType: '0', |
| | |
| | | // 新建 |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form = { |
| | | id: null, |
| | | editDate: '', |
| | | floor: '', |
| | | title: '', |
| | | remark: '', |
| | | status: '', |
| | | sortnum: '', |
| | | content: '', |
| | | getDate: '', |
| | | projectId: '', |
| | | buildingId: '', |
| | | floorId: '', |
| | | roomId: '', |
| | | userId: '', |
| | | submitDate: '', |
| | | cateId: '', |
| | | areaType: '0', |
| | | code: '', |
| | | dealStatus: '', |
| | | dispatchUserId: '', |
| | | dispatchDate: '', |
| | | dispatchInfo: '', |
| | | dealUserId: '', |
| | | dealDate: '', |
| | | dealInfo: '', |
| | | dealType: '' |
| | | } |
| | | this.buildList = [] |
| | | this.roomList = [] |
| | | this.levelList = [] |
| | | this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | |
| | | changeBuild(e) { |
| | | this.$set(this.form, 'floorId', '') |
| | | this.$set(this.form, 'roomId', '') |
| | | if(this.form.areaType == 1){ |
| | | if (this.form.areaType == 1) { |
| | | this.getLevel(e) |
| | | }else{ |
| | | } else { |
| | | this.getRoom(e) |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | }, |
| | | getLevel(buildingId) { |
| | | getFloorList({ buildingId}).then(res => { |
| | | getFloorList({ buildingId }).then(res => { |
| | | this.levelList = res |
| | | }) |
| | | }, |
| | |
| | | }) |
| | | }, |
| | | changeSel(e) { |
| | | if(e && e.length == 2){ |
| | | if (e && e.length == 2) { |
| | | this.$set(this.form, 'cateId', e[1]) |
| | | }else{ |
| | | } else { |
| | | this.$set(this.form, 'cateId', '') |
| | | } |
| | | }, |
| | |
| | | <template> |
| | | <GlobalWindow width="920px" title="工单详情" :visible.sync="visible" :confirm-working="isWorking" @close="close" |
| | | <GlobalWindow width="960px" title="工单详情" :visible.sync="visible" :confirm-working="isWorking" @close="close" |
| | | @confirm="confirm"> |
| | | <div class="main"> |
| | | <div class="title"> |
| | | <span>工单详情</span> |
| | | <div> |
| | | <div class="status primaryColor" v-if="info.dealStatus == 0 || info.dealStatus == null">待指派</div> |
| | | <div class="status" v-if="info.dealStatus == 1">已指派</div> |
| | | <div class="status green" v-if="info.dealStatus == 1">已指派</div> |
| | | <div class="status gray" v-if="info.dealStatus == 2">已处理</div> |
| | | </div> |
| | | </div> |
| | |
| | | import { detailById, dispatchOrder, dealOrder } from '@/api/workorder/ywWorkorder' |
| | | import { getUserList } from '@/api/system/user' |
| | | import { Message, Loading } from 'element-ui' |
| | | import dayjs from 'dayjs' |
| | | export default { |
| | | components: { |
| | | GlobalWindow |
| | |
| | | const { id } = this |
| | | detailById(id).then(res => { |
| | | this.info = res |
| | | if(this.info.dealStatus == 1){ |
| | | this.$set(this.param, 'getDate',dayjs().format('YYYY-MM-DD HH:mm:ss') ) |
| | | } |
| | | }) |
| | | }, |
| | | getStaff() { |
| | |
| | | align-items: center; |
| | | |
| | | .status { |
| | | padding: 0 6px; |
| | | height: 22px; |
| | | line-height: 22px; |
| | | padding: 0 12px; |
| | | height: 24px; |
| | | line-height: 24px; |
| | | border-radius: 2px; |
| | | border: 1px solid #00BA92; |
| | | color: #00BA92; |
| | |
| | | } |
| | | |
| | | .primaryColor { |
| | | border: 1px solid $primary-color; |
| | | border: 1px solid rgba(63, 126, 239,.2); |
| | | background-color: rgba(63, 126, 239,.2); |
| | | } |
| | | |
| | | .green{ |
| | | background-color: rgba(83, 183, 148, .2); |
| | | border: 1px solid rgba(83, 183, 148, .2); |
| | | } |
| | | .gray { |
| | | color: gray; |
| | | border: 1px solid gray; |
| | | color: #333333; |
| | | background-color: rgba(128, 128, 128, .2); |
| | | border: 1px solid rgba(128, 128, 128, .2); |
| | | } |
| | | } |
| | | |
| | |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | .la{ |
| | | margin-bottom: 0; |
| | | width: 72px; |
| | | } |
| | | } |
| | | |
| | | .max { |
| | |
| | | <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']"> |
| | | <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus" |
| | | v-permissions="['business:category:create']">新建</el-button></li> |
| | | <li v-permissions="['business:category:exportExcel']"><el-button type="primary" |
| | | @click="exportExcel">导出</el-button></li> |
| | | <!-- <li v-permissions="['business:category:exportExcel']"><el-button type="primary" |
| | | @click="exportExcel">导出</el-button></li> --> |
| | | </ul> |
| | | <el-table row-key="id" :tree-props="{ children: 'childCategoryList' }" v-loading="isWorking.search" |
| | | :data="dataList" stripe @selection-change="handleSelectionChange"> |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item prop="cateId" label="工单分类"> |
| | | <el-cascader v-model="searchForm.areaIds" @change="changeSel" placeholder="请选择巡检区域" clearable |
| | | <el-cascader v-model="searchForm.areaIds" @change="changeSel" placeholder="请选择工单分类" clearable |
| | | :options="cateList" :props="{ |
| | | label: 'name', |
| | | value: 'id', |
| | | children: 'childCategoryList' |
| | | }"></el-cascader> |
| | | </el-form-item> |
| | | <el-form-item label="提交日期"> |
| | | <el-form-item label="上报时间"> |
| | | <el-date-picker v-model="searchForm.selDate" @change="changeSelDate" format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd" type="daterange"></el-date-picker> |
| | | </el-form-item> |
| | |
| | | buildingId: '', |
| | | cateId: '', |
| | | } |
| | | this.buildList = [] |
| | | this.search() |
| | | }, |
| | | changeSelDate(e) { |
| | |
| | | <view class="la"><text class="red">*</text>选择设备</view>
|
| | | <view class="line">
|
| | | <view class="sel_wrap" @click="showModal = true">
|
| | | <view class="left" :class="param.deviceName ? '' : 'placeholder9'">{{ param.deviceName ? param.deviceName : '请选择设备' }}</view>
|
| | | <view class="left" :class="param.deviceName ? '' : 'placeholder9'">
|
| | | {{ param.deviceName ? param.deviceName : '请选择设备' }}
|
| | | </view>
|
| | | <u-icon name="arrow-right" color="#999999" size="17"></u-icon>
|
| | | </view>
|
| | | <image class="icon" src="@/static/side/scan.png" mode=""></image>
|
| | | <image @click="openQrcode" class="icon" src="@/static/side/scan.png" mode=""></image>
|
| | | </view>
|
| | | </view>
|
| | | <view class="item"> |
| | | <view class="la">设备状态</view> |
| | | <view class="line"> |
| | | <view class="radio_wrap"> |
| | | <view class="ite" :class="{active: param.status == 0}" @click="statusChange(0)">正常</view> |
| | | <view class="ite" :class="{active: param.status == 1}" @click="statusChange(1)">损坏</view> |
| | | <view class="ite" :class="{active: param.status == 2}" @click="statusChange(2)">报废</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="la">上传视频/图片</view> |
| | | <view class="upload_wrap"> |
| | | <view class="upload_file" @click="showUpload = true"> |
| | | <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon> |
| | | <view class="mt6">图片/视频</view> |
| | | </view> |
| | | <view class="upload_file" v-for="(item, i) in fileList" :key="i"> |
| | | <u-icon class="close" size="20" name="close-circle-fill" color="red" |
| | | @click="fileDel('fileList', i)"></u-icon> |
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image> |
| | | <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="la">运维备注</view> |
| | | <view class="line"> |
| | | <textarea v-model="param.content" placeholder="请输入" placeholder-class="placeholder9" /> |
| | | </view> |
| | | </view> |
| | | <view class="item">
|
| | | <view class="la">设备状态</view>
|
| | | <view class="line">
|
| | | <view class="radio_wrap">
|
| | | <view class="ite" :class="{active: param.status == 0}" @click="statusChange(0)">正常</view>
|
| | | <view class="ite" :class="{active: param.status == 1}" @click="statusChange(1)">损坏</view>
|
| | | <view class="ite" :class="{active: param.status == 2}" @click="statusChange(2)">报废</view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="la">上传视频/图片</view>
|
| | | <view class="upload_wrap">
|
| | | <view class="upload_file" @click="showUpload = true">
|
| | | <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
|
| | | <view class="mt6">图片/视频</view>
|
| | | </view>
|
| | | <view class="upload_file" v-for="(item, i) in fileList" :key="i">
|
| | | <u-icon class="close" size="20" name="close-circle-fill" color="red"
|
| | | @click="fileDel('fileList', i)"></u-icon>
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="la">运维备注</view>
|
| | | <view class="line">
|
| | | <textarea v-model="param.content" placeholder="请输入" placeholder-class="placeholder9" />
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="sub_btn" @click="onSubmit">提交</view> |
| | | <!-- --> |
| | | <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay> |
| | | <view class="sel_upload_wrap"> |
| | | <view class="btn" @click="uploadImage">选择图片</view> |
| | | <view class="btn" @click="uploadVideo">选择视频</view> |
| | | </view> |
| | | </u-popup> |
| | | <!-- --> |
| | | <u-popup :show="showModal" @close="showModal = false" :safeAreaInsetBottom="true" :round="10" closeable closeOnClickOverlay> |
| | | <view class="appr_modal"> |
| | | <view class="title">请选择设备</view> |
| | | <view class="search_wrap"> |
| | | <image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image> |
| | | <input v-model="searchValue" @confirm="getDevice()" type="text" placeholder="搜索设备名称/编号" placeholder-class="placeholder9" /> |
| | | </view> |
| | | <view class="modal_list"> |
| | | <view class="item" v-for="item,i in deviceList" @click="deviceClick(item)"> |
| | | <view class="name">[{{item.code}}] {{ item.name }}</view> |
| | | <image v-if="activeDevice.id == item.id" src="@/static/radioed.png" mode=""></image> |
| | | </view> |
| | | </view> |
| | | <view class="sub_btn" @click="handleDevice">确定选择</view> |
| | | </view> |
| | | <view class="sub_btn" @click="onSubmit">提交</view>
|
| | | <!-- -->
|
| | | <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
|
| | | <view class="sel_upload_wrap">
|
| | | <view class="btn" @click="uploadImage">选择图片</view>
|
| | | <view class="btn" @click="uploadVideo">选择视频</view>
|
| | | </view>
|
| | | </u-popup>
|
| | | <!-- -->
|
| | | <u-popup :show="showModal" @close="showModal = false" :safeAreaInsetBottom="true" :round="10" closeable
|
| | | closeOnClickOverlay>
|
| | | <view class="appr_modal">
|
| | | <view class="title">请选择设备</view>
|
| | | <view class="search_wrap">
|
| | | <image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image>
|
| | | <input v-model="searchValue" @confirm="getDevice()" type="text" placeholder="搜索设备名称/编号"
|
| | | placeholder-class="placeholder9" />
|
| | | </view>
|
| | | <view class="modal_list">
|
| | | <view class="item" v-for="item,i in deviceList" @click="deviceClick(item)">
|
| | | <view class="name">[{{item.code}}] {{ item.name }}</view>
|
| | | <image v-if="activeDevice.id == item.id" src="@/static/radioed.png" mode=""></image>
|
| | | </view>
|
| | | </view>
|
| | | <view class="sub_btn" @click="handleDevice">确定选择</view>
|
| | | </view>
|
| | | </u-popup>
|
| | | <!-- -->
|
| | | <view class="reader-box" @click="stopScan" v-if="isScaning">
|
| | | <view class="reader" id="reader"></view>
|
| | | </view>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script> |
| | | import { |
| | | uploadUrl, |
| | | ywDevicePost, |
| | | ywDeviceCreate |
| | | } from '@/api' |
| | | <script>
|
| | | import {
|
| | | uploadUrl,
|
| | | ywDevicePost,
|
| | | ywDeviceCreate
|
| | | } from '@/api'
|
| | | import dayjs from 'dayjs';
|
| | | import {
|
| | | Html5Qrcode
|
| | | } from 'html5-qrcode';
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | param: {status: 0}, |
| | | showUpload: false, |
| | | showModal: false, |
| | | fileList: [], |
| | | |
| | | searchValue: '', |
| | | deviceList: [], |
| | | activeDevice: {}
|
| | | param: {
|
| | | status: 0
|
| | | },
|
| | | showUpload: false,
|
| | | showModal: false,
|
| | | fileList: [],
|
| | |
|
| | | searchValue: '',
|
| | | deviceList: [],
|
| | | activeDevice: {},
|
| | |
|
| | | html5Qrcode: null,
|
| | | isScaning: false,
|
| | | };
|
| | | }, |
| | | onLoad() { |
| | | this.getDevice() |
| | | }, |
| | | methods: { |
| | | onSubmit() { |
| | | const { param, fileList } = this |
| | | |
| | | if(!param.deviceId) return this.showToast('请先选择要维护的设备') |
| | | ywDeviceCreate({ |
| | | ...param, |
| | | userId: uni.getStorageSync('userInfo').id, |
| | | dealDate: dayjs().format('YYYY-MM-DD HH:mm:ss'), |
| | | multifileList: fileList |
| | | }).then(res => { |
| | | this.showToast('提交成功') |
| | | uni.navigateBack() |
| | | }) |
| | | }, |
| | | getDevice(){ |
| | | ywDevicePost({ |
| | | capacity: 9999, |
| | | page: 1, |
| | | model: { |
| | | name: this.searchValue |
| | | } |
| | | }).then(res => { |
| | | this.deviceList = res.data.records || [] |
| | | }) |
| | | }, |
| | | handleDevice() { |
| | | const { activeDevice } = this |
| | | if(!activeDevice.id) return this.showToast('请先选择设备') |
| | | this.$set(this.param, 'deviceId', activeDevice.id) |
| | | this.$set(this.param, 'deviceName', activeDevice.name) |
| | | this.showModal = false |
| | | }, |
| | | deviceClick(item) { |
| | | this.activeDevice = item |
| | | this.$forceUpdate() |
| | | }, |
| | | statusChange(val){ |
| | | this.param.status = val |
| | | }, |
| | | fileDel(str, i) { |
| | | this[str].splice(i, 1); |
| | | }, |
| | | uploadImage() { |
| | | this.showUpload = false; |
| | | let token = uni.getStorageSync('token') || ''; |
| | | uni.chooseImage({ |
| | | count: 4, |
| | | success: chooseImageRes => { |
| | | uni.showLoading({ |
| | | title: '上传中', |
| | | mask: true |
| | | }); |
| | | const tempFilePaths = chooseImageRes.tempFilePaths; |
| | | let imgs = tempFilePaths.map((value, index) => { |
| | | return { |
| | | name: 'file', |
| | | uri: value |
| | | }; |
| | | }); |
| | | uni.uploadFile({ |
| | | url: `${uploadUrl}`, |
| | | files: imgs, |
| | | name: 'file', |
| | | formData: { |
| | | folder: 'YW_DEVICE' |
| | | }, |
| | | header: { |
| | | Dm_user_token: token |
| | | }, |
| | | success: uploadFileRes => { |
| | | let res = JSON.parse(uploadFileRes.data); |
| | | if (res.data && res.data.length > 0) { |
| | | res.data.forEach(i => { |
| | | i.type = 0; |
| | | i.fileurl = i.imgaddr; |
| | | i.fileurlFull = i.url; |
| | | this.fileList.push(i); |
| | | }); |
| | | } |
| | | }, |
| | | fail(err) { |
| | | console.log('err', err); |
| | | }, |
| | | complete() { |
| | | uni.hideLoading(); |
| | | // if (i === chooseImageRes.tempFilePaths.length - 1) { |
| | | // uni.hideLoading() |
| | | // } |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | uploadVideo() { |
| | | this.showUpload = false; |
| | | let token = uni.getStorageSync('token') || ''; |
| | | uni.chooseVideo({ |
| | | success: chooseImageRes => { |
| | | uni.showLoading({ |
| | | title: '上传中', |
| | | mask: true |
| | | }); |
| | | uni.uploadFile({ |
| | | url: `${uploadUrl}`, |
| | | filePath: chooseImageRes.tempFilePath, |
| | | header: { |
| | | Dm_user_token: token |
| | | }, |
| | | name: 'file', |
| | | formData: { |
| | | folder: 'YW_DEVICE' |
| | | }, |
| | | success: uploadFileRes => { |
| | | let res = JSON.parse(uploadFileRes.data); |
| | | if (res.data && res.data.length > 0) { |
| | | res.data.forEach(i => { |
| | | i.type = 1; |
| | | i.fileurl = i.imgaddr; |
| | | i.fileurlFull = i.url; |
| | | this.fileList.push(i); |
| | | }); |
| | | } |
| | | }, |
| | | complete() { |
| | | uni.hideLoading(); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | },
|
| | | onLoad() {
|
| | | this.getDevice()
|
| | | },
|
| | | methods: {
|
| | | onSubmit() {
|
| | | const {
|
| | | param,
|
| | | fileList
|
| | | } = this
|
| | |
|
| | | if (!param.deviceId) return this.showToast('请先选择要维护的设备')
|
| | | ywDeviceCreate({
|
| | | ...param,
|
| | | userId: uni.getStorageSync('userInfo').id,
|
| | | dealDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
| | | multifileList: fileList
|
| | | }).then(res => {
|
| | | this.showToast('提交成功')
|
| | | uni.navigateBack()
|
| | | })
|
| | | },
|
| | | getDevice() {
|
| | | ywDevicePost({
|
| | | capacity: 9999,
|
| | | page: 1,
|
| | | model: {
|
| | | name: this.searchValue
|
| | | }
|
| | | }).then(res => {
|
| | | this.deviceList = res.data.records || []
|
| | | })
|
| | | },
|
| | | handleDevice() {
|
| | | const {
|
| | | activeDevice
|
| | | } = this
|
| | | if (!activeDevice.id) return this.showToast('请先选择设备')
|
| | | this.$set(this.param, 'deviceId', activeDevice.id)
|
| | | this.$set(this.param, 'deviceName', activeDevice.name)
|
| | | this.showModal = false
|
| | | },
|
| | | deviceClick(item) {
|
| | | this.activeDevice = item
|
| | | this.$forceUpdate()
|
| | | },
|
| | | statusChange(val) {
|
| | | this.param.status = val
|
| | | },
|
| | | fileDel(str, i) {
|
| | | this[str].splice(i, 1);
|
| | | },
|
| | | uploadImage() {
|
| | | this.showUpload = false;
|
| | | let token = uni.getStorageSync('token') || '';
|
| | | uni.chooseImage({
|
| | | count: 4,
|
| | | success: chooseImageRes => {
|
| | | uni.showLoading({
|
| | | title: '上传中',
|
| | | mask: true
|
| | | });
|
| | | const tempFilePaths = chooseImageRes.tempFilePaths;
|
| | | let imgs = tempFilePaths.map((value, index) => {
|
| | | return {
|
| | | name: 'file',
|
| | | uri: value
|
| | | };
|
| | | });
|
| | | uni.uploadFile({
|
| | | url: `${uploadUrl}`,
|
| | | files: imgs,
|
| | | name: 'file',
|
| | | formData: {
|
| | | folder: 'YW_DEVICE'
|
| | | },
|
| | | header: {
|
| | | Dm_user_token: token
|
| | | },
|
| | | success: uploadFileRes => {
|
| | | let res = JSON.parse(uploadFileRes.data);
|
| | | if (res.data && res.data.length > 0) {
|
| | | res.data.forEach(i => {
|
| | | i.type = 0;
|
| | | i.fileurl = i.imgaddr;
|
| | | i.fileurlFull = i.url;
|
| | | this.fileList.push(i);
|
| | | });
|
| | | }
|
| | | },
|
| | | fail(err) {
|
| | | console.log('err', err);
|
| | | },
|
| | | complete() {
|
| | | uni.hideLoading();
|
| | | // if (i === chooseImageRes.tempFilePaths.length - 1) {
|
| | | // uni.hideLoading()
|
| | | // }
|
| | | }
|
| | | });
|
| | | }
|
| | | });
|
| | | },
|
| | | uploadVideo() {
|
| | | this.showUpload = false;
|
| | | let token = uni.getStorageSync('token') || '';
|
| | | uni.chooseVideo({
|
| | | success: chooseImageRes => {
|
| | | uni.showLoading({
|
| | | title: '上传中',
|
| | | mask: true
|
| | | });
|
| | | uni.uploadFile({
|
| | | url: `${uploadUrl}`,
|
| | | filePath: chooseImageRes.tempFilePath,
|
| | | header: {
|
| | | Dm_user_token: token
|
| | | },
|
| | | name: 'file',
|
| | | formData: {
|
| | | folder: 'YW_DEVICE'
|
| | | },
|
| | | success: uploadFileRes => {
|
| | | let res = JSON.parse(uploadFileRes.data);
|
| | | if (res.data && res.data.length > 0) {
|
| | | res.data.forEach(i => {
|
| | | i.type = 1;
|
| | | i.fileurl = i.imgaddr;
|
| | | i.fileurlFull = i.url;
|
| | | this.fileList.push(i);
|
| | | });
|
| | | }
|
| | | },
|
| | | complete() {
|
| | | uni.hideLoading();
|
| | | }
|
| | | });
|
| | | }
|
| | | });
|
| | | },
|
| | |
|
| | | openQrcode() {
|
| | | this.isScaning = true;
|
| | | Html5Qrcode.getCameras().then((devices) => {
|
| | | if (devices && devices.length) {
|
| | | this.html5Qrcode = new Html5Qrcode('reader');
|
| | | this.html5Qrcode.start({
|
| | | facingMode: 'environment'
|
| | | }, {
|
| | | focusMode: 'continuous', //设置连续聚焦模式
|
| | | fps: 5, //设置扫码识别速度
|
| | | qrbox: 280 //设置二维码扫描框大小
|
| | | },
|
| | | (decodeText, decodeResult) => {
|
| | | if (decodeText) { //这里decodeText就是通过扫描二维码得到的内容
|
| | | this.action(decodeText) //对二维码逻辑处理
|
| | | this.stopScan(); //关闭扫码功能
|
| | | }
|
| | | },
|
| | | (err) => {
|
| | | // console.log(err); //错误信息
|
| | | }
|
| | | );
|
| | | }
|
| | | });
|
| | | },
|
| | |
|
| | | stopScan() {
|
| | | console.log('停止扫码')
|
| | | this.isScaning = false;
|
| | | if (this.html5Qrcode) {
|
| | | this.html5Qrcode.stop();
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
| | | }
|
| | |
|
| | | .line {
|
| | | display: flex; |
| | | align-items: center; |
| | | .icon{ |
| | | width: 52rpx; |
| | | height: 52rpx; |
| | | margin-left: 40rpx; |
| | | display: flex;
|
| | | align-items: center;
|
| | |
|
| | | .icon {
|
| | | width: 52rpx;
|
| | | height: 52rpx;
|
| | | margin-left: 40rpx;
|
| | | }
|
| | |
|
| | | textarea {
|
| | | box-sizing: border-box;
|
| | | width: 690rpx;
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | .sel_wrap { |
| | | .sel_wrap {
|
| | | flex: 1;
|
| | | height: 90rpx;
|
| | | display: flex;
|
| | |
| | | align-items: center;
|
| | | border-bottom: 1rpx solid #E5E5E5;
|
| | | }
|
| | | .radio_wrap{ |
| | | margin-top: 20rpx; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | .ite{ |
| | | width: 216rpx; |
| | | height: 68rpx; |
| | | background: #F7F7F7; |
| | | border-radius: 36rpx; |
| | | font-size: 30rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | .active{ |
| | | color: $primaryColor; |
| | | border-color: $primaryColor; |
| | | background: rgba(0,104,255,0.1); |
| | | } |
| | |
|
| | | .radio_wrap {
|
| | | margin-top: 20rpx;
|
| | | width: 100%;
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | |
|
| | | .ite {
|
| | | width: 216rpx;
|
| | | height: 68rpx;
|
| | | background: #F7F7F7;
|
| | | border-radius: 36rpx;
|
| | | font-size: 30rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | }
|
| | |
|
| | | .active {
|
| | | color: $primaryColor;
|
| | | border-color: $primaryColor;
|
| | | background: rgba(0, 104, 255, 0.1);
|
| | | }
|
| | | }
|
| | |
|
| | | .upload_wrap {
|
| | | display: flex;
|
| | | flex-wrap: wrap;
|
| | |
| | |
|
| | | }
|
| | | }
|
| | |
|
| | | .sel_upload_wrap {
|
| | | width: 100%;
|
| | | border-top: 1px solid #333333;
|
| | |
| | | text-align: center;
|
| | | }
|
| | | }
|
| | |
|
| | | .sub_btn {
|
| | | position: fixed;
|
| | | bottom: 68rpx;
|
| | |
| | | font-size: 32rpx;
|
| | | color: #FFFFFF;
|
| | | }
|
| | | .appr_modal { |
| | | padding: 36rpx 30rpx 0; |
| | | height: calc( 100vh - 120rpx ); |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin-bottom: 40rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | .search_wrap { |
| | | display: flex; |
| | | align-items: center; |
| | | width: 100%; |
| | | height: 76rpx; |
| | | background: #f2f2f2; |
| | | border-radius: 38rpx; |
| | | padding-left: 30rpx; |
| | | input{ |
| | | flex: 1; |
| | | } |
| | | .search { |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | } |
| | | } |
| | | .modal_list{ |
| | | height: calc( 100% - 360rpx ); |
| | | .item{ |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | height: 100rpx; |
| | | font-size: 30rpx; |
| | | border-bottom: 1px solid #E5E5E5; |
| | | image{ |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | | } |
| | | } |
| | | .active{ |
| | | color: $primaryColor; |
| | | } |
| | | } |
| | | |
| | | } |
| | |
|
| | | .appr_modal {
|
| | | padding: 36rpx 30rpx 0;
|
| | | height: calc(100vh - 120rpx);
|
| | |
|
| | | .title {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | color: #222222;
|
| | | margin-bottom: 40rpx;
|
| | | text-align: center;
|
| | | }
|
| | |
|
| | | .search_wrap {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | width: 100%;
|
| | | height: 76rpx;
|
| | | background: #f2f2f2;
|
| | | border-radius: 38rpx;
|
| | | padding-left: 30rpx;
|
| | |
|
| | | input {
|
| | | flex: 1;
|
| | | }
|
| | |
|
| | | .search {
|
| | | width: 28rpx;
|
| | | height: 28rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .modal_list {
|
| | | height: calc(100% - 360rpx);
|
| | |
|
| | | .item {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | height: 100rpx;
|
| | | font-size: 30rpx;
|
| | | border-bottom: 1px solid #E5E5E5;
|
| | |
|
| | | image {
|
| | | width: 40rpx;
|
| | | height: 40rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .active {
|
| | | color: $primaryColor;
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | .reader-box {
|
| | | position: fixed;
|
| | | top: 0;
|
| | | bottom: 0;
|
| | | left: 0;
|
| | | right: 0;
|
| | | background-color: rgba(0, 0, 0, 0.5);
|
| | | }
|
| | |
|
| | | .reader {
|
| | | width: 100%;
|
| | | // width: 540rpx;
|
| | | // height: 540rpx;
|
| | | position: absolute;
|
| | | top: 50%;
|
| | | left: 50%;
|
| | | transform: translate(-50%, -50%);
|
| | | }
|
| | | </style> |
| | |
| | | model: {
|
| | | ...param,
|
| | | queryStatus: activeTab,
|
| | | dispatchUserId: selectAll ? '' : uni.getStorageSync('userInfo').id,
|
| | | dealUserId: selectAll ? '' : uni.getStorageSync('userInfo').id,
|
| | | }
|
| | | }).then(res => {
|
| | | this.list = [...this.list, ...res.data.records]
|
| | |
| | | private String remark; |
| | | |
| | | @ApiModelProperty(value = "状态 0启用 1禁用", example = "1") |
| | | @ExcelColumn(name="状态",index = 9,width = 6,valueMapping = "0=启用;1=停用;") |
| | | @ExcelColumn(name="状态",index = 8,width = 6,valueMapping = "0=启用;1=停用;") |
| | | private Integer status; |
| | | |
| | | @ApiModelProperty(value = "排序码", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "超期任务数") |
| | | @TableField(exist = false) |
| | | @ExcelColumn(name="超期任务数",index = 8,width = 6) |
| | | private Integer timeOutTaskNum; |
| | | } |
| | |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键", example = "1") |
| | | @ExcelColumn(name="主键") |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "创建人编码", example = "1") |
| | | @ExcelColumn(name="创建人编码") |
| | | private Integer creator; |
| | | |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ExcelColumn(name="创建时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "更新人编码", example = "1") |
| | | @ExcelColumn(name="更新人编码") |
| | | private Integer editor; |
| | | |
| | | @ApiModelProperty(value = "更新时间") |
| | | @ExcelColumn(name="更新时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "是否删除0否 1是", example = "1") |
| | | @ExcelColumn(name="是否删除0否 1是") |
| | | private Integer isdeleted; |
| | | |
| | | @ApiModelProperty(value = "标题") |
| | | @ExcelColumn(name="标题") |
| | | private String title; |
| | | |
| | | @ApiModelProperty(value = "备注") |
| | | @ExcelColumn(name="备注") |
| | | private String remark; |
| | | |
| | | @ApiModelProperty(value = "状态 0启用 1禁用", example = "1") |
| | | @ExcelColumn(name="状态 0启用 1禁用") |
| | | private Integer status; |
| | | |
| | | @ApiModelProperty(value = "排序码", example = "1") |
| | | @ExcelColumn(name="排序码") |
| | | private Integer sortnum; |
| | | |
| | | @ApiModelProperty(value = "情况说明") |
| | | @ExcelColumn(name="情况说明") |
| | | private String content; |
| | | |
| | | @ApiModelProperty(value = "上门时间") |
| | | @ExcelColumn(name="上门时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date getDate; |
| | | |
| | | @ApiModelProperty(value = "所属项目编码(关联yw_project)", example = "1") |
| | | @ExcelColumn(name="所属项目编码(关联yw_project)") |
| | | private Integer projectId; |
| | | |
| | | @ApiModelProperty(value = "所属楼宇编码(关联yw_building)", example = "1") |
| | | @ExcelColumn(name="所属楼宇编码(关联yw_building)") |
| | | private Integer buildingId; |
| | | |
| | | @ApiModelProperty(value = "所属房间编码(关联yw_room)", example = "1") |
| | | @ExcelColumn(name="所属房间编码(关联yw_room)") |
| | | private Integer roomId; |
| | | @ApiModelProperty(value = "所属楼层编码(关联yw_floor)", example = "1") |
| | | @ExcelColumn(name="所属楼层编码(关联yw_floor)") |
| | | private Integer floorId; |
| | | |
| | | @ApiModelProperty(value = "提报人编码", example = "1") |
| | | @ExcelColumn(name="提报人编码") |
| | | private Integer userId; |
| | | |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ExcelColumn(name="联系电话") |
| | | private String phone; |
| | | |
| | | @ApiModelProperty(value = "提报时间") |
| | | @ExcelColumn(name="提报时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @ExcelColumn(name="上报时间",index = 5,width = 16,dateFormat = "yyyy-MM-dd HH:mm:ss") |
| | | private Date submitDate; |
| | | |
| | | @ApiModelProperty(value = "工单分类编码(关联category)", example = "1") |
| | | @ExcelColumn(name="工单分类编码(关联category)") |
| | | private Integer cateId; |
| | | |
| | | @ApiModelProperty(value = "保修区域类型 0室内维修 1公共区域", example = "1") |
| | | @ExcelColumn(name="保修区域类型 0室内维修 1公共区域") |
| | | @ExcelColumn(name="位置区域",valueMapping = "0=室内维修;1=公共区域;",index = 0,width = 10) |
| | | private Integer areaType; |
| | | |
| | | @ApiModelProperty(value = "工单编号") |
| | | @ExcelColumn(name="工单编号") |
| | | private String code; |
| | | |
| | | @ApiModelProperty(value = "处理状态 0待处理 1已分派 2已处理", example = "1") |
| | | @ExcelColumn(name="处理状态 0待处理 1已分派 2已处理") |
| | | @ExcelColumn(name="工单状态",index = 7,width = 10,valueMapping = "0=待处理;1=已分派;1=已处理;") |
| | | private Integer dealStatus; |
| | | |
| | | @ApiModelProperty(value = "分派人编码(关联system_user)", example = "1") |
| | | @ExcelColumn(name="分派人编码(关联system_user)") |
| | | private Integer dispatchUserId; |
| | | |
| | | @ApiModelProperty(value = "分派时间") |
| | | @ExcelColumn(name="分派时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date dispatchDate; |
| | | |
| | | @ApiModelProperty(value = "分派处理说明") |
| | | @ExcelColumn(name="分派处理说明") |
| | | private String dispatchInfo; |
| | | |
| | | @ApiModelProperty(value = "处理人编码(关联system_user)", example = "1") |
| | | @ExcelColumn(name="处理人编码(关联system_user)") |
| | | private Integer dealUserId; |
| | | |
| | | @ApiModelProperty(value = "处理时间") |
| | | @ExcelColumn(name="处理时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date dealDate; |
| | | |
| | | @ApiModelProperty(value = "处理备注") |
| | | @ExcelColumn(name="处理备注") |
| | | private String dealInfo; |
| | | |
| | | @ApiModelProperty(value = "处理方式 0指派后处理 1直接回复", example = "1") |
| | | @ExcelColumn(name="处理方式 0指派后处理 1直接回复") |
| | | private Integer dealType; |
| | | |
| | | @ApiModelProperty(value = "项目名称") |
| | | @TableField(exist = false) |
| | | private String projectName; |
| | |
| | | private String queryStatus; |
| | | |
| | | @ApiModelProperty(value = "楼宇名称") |
| | | @ExcelColumn(name="楼宇",index = 1,width = 10) |
| | | @TableField(exist = false) |
| | | private String buildingName; |
| | | @ApiModelProperty(value = "房源名称") |
| | | @ExcelColumn(name="房源",index = 2,width = 10) |
| | | @TableField(exist = false) |
| | | private String roomName; |
| | | @ApiModelProperty(value = "楼层名称") |
| | |
| | | @TableField(exist = false) |
| | | private String roomNum; |
| | | @ApiModelProperty(value = "提报人姓名") |
| | | @ExcelColumn(name="上报人",index = 4,width = 10) |
| | | @TableField(exist = false) |
| | | private String creatorName; |
| | | @ApiModelProperty(value = "提报人电话") |
| | |
| | | private String creatorMobile; |
| | | @ApiModelProperty(value = "处理人姓名") |
| | | @TableField(exist = false) |
| | | @ExcelColumn(name="处理人",index = 6,width = 10) |
| | | private String dealUserName; |
| | | @ApiModelProperty(value = "处理人组织") |
| | | @TableField(exist = false) |
| | | private String dealUserCompany; |
| | | @ApiModelProperty(value = "类别名称") |
| | | @ExcelColumn(name="工单分类",index = 3,width = 10) |
| | | @TableField(exist = false) |
| | | private String categoryName; |
| | | @ApiModelProperty(value = "分配人姓名") |
| | |
| | | import com.doumee.dao.admin.request.UpdateCompanySortDTO; |
| | | import com.doumee.dao.admin.response.CompanyDTO; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.YwContractMapper; |
| | | import com.doumee.dao.business.dao.CompanyMapper; |
| | | import com.doumee.dao.business.dao.join.CompanyJoinMapper; |
| | | import com.doumee.dao.business.model.Company; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.YwContract; |
| | | import com.doumee.dao.business.vo.CompanyTree; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.service.business.CompanyService; |
| | |
| | | |
| | | @Autowired |
| | | private CompanyJoinMapper companyJoinMapper; |
| | | @Autowired |
| | | private YwContractMapper ywContractMapper; |
| | | |
| | | |
| | | /** |
| | | * 创建财务公司 |
| | |
| | | .eq(Company::getType,company.getType()) |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,名称不能重复~"); |
| | | } |
| | | if(StringUtils.isNotBlank(company.getCode())){ |
| | | if(companyMapper.selectCount(new QueryWrapper<Company>().lambda() |
| | | .eq(Company::getCode,company.getCode()) |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,纳税识别号不能重复~"); |
| | | } |
| | | } |
| | | company.setCreateDate(new Date()); |
| | | company.setCreator(company.getLoginUserInfo().getId()); |
| | |
| | | .eq(Company::getName,company.getName()) |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,组织名称不能重复~"); |
| | | } |
| | | if(StringUtils.isNotBlank(company.getCode())){ |
| | | if(companyMapper.selectCount(new QueryWrapper<Company>().lambda() |
| | | .eq(Company::getCode,company.getCode()) |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,纳税识别号不能重复~"); |
| | | } |
| | | } |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if(user ==null){ |
| | |
| | | .eq(Member::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,该部门下存在人员信息,不能进行删除操作!"); |
| | | } |
| | | if(ywContractMapper.selectCount(new QueryWrapper<YwContract>().lambda().eq(YwContract::getCompanyId,id))>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "当前公司已关联业务,不可删除"); |
| | | } |
| | | |
| | | Company company = new Company(); |
| | | company.setId(id); |
| | |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,组织名称不能重复~"); |
| | | } |
| | | if(StringUtils.isNotBlank(company.getCode())){ |
| | | if(companyMapper.selectCount(new QueryWrapper<Company>().lambda() |
| | | .eq(Company::getCode,company.getCode()) |
| | | .ne(Company::getId,company.getId()) |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,纳税识别号不能重复~"); |
| | | } |
| | | } |
| | | |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if(user == null){ |
| | | user = company.getLoginUserInfo(); |
| | |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,名称不能重复~"); |
| | | } |
| | | if(StringUtils.isNotBlank(company.getCode())){ |
| | | if(companyMapper.selectCount(new QueryWrapper<Company>().lambda() |
| | | .eq(Company::getCode,company.getCode()) |
| | | .ne(Company::getId,company.getId()) |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,纳税识别号不能重复~"); |
| | | } |
| | | } |
| | | companyMapper.updateById(company); |
| | | return company.getId(); |
| | | } |
| | |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.YwAccountMapper; |
| | | import com.doumee.dao.business.YwContractRevenueMapper; |
| | | import com.doumee.dao.business.dao.CompanyMapper; |
| | | import com.doumee.dao.business.model.Company; |
| | | import com.doumee.dao.business.model.YwAccount; |
| | | import com.doumee.dao.business.model.YwContractRevenue; |
| | | import com.doumee.dao.business.model.YwProject; |
| | | import com.doumee.service.business.YwAccountService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | |
| | | private YwAccountMapper ywAccountMapper; |
| | | @Autowired |
| | | private CompanyMapper companyMapper; |
| | | @Autowired |
| | | private YwContractRevenueMapper ywContractRevenueMapper; |
| | | |
| | | @Override |
| | | public Integer create(YwAccount model) { |
| | |
| | | || !Constants.equalsInteger(ywProject.getType(),Constants.TWO)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,请选择正确的公司信息!"); |
| | | } |
| | | if(StringUtils.isNotBlank(model.getTitle())){ |
| | | if(ywAccountMapper.selectCount(new QueryWrapper<YwAccount>().lambda() |
| | | .eq(YwAccount::getTitle,model.getTitle()) |
| | | .eq(YwAccount::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,收支条目不能重复~"); |
| | | } |
| | | } |
| | | |
| | | |
| | | model.setCreator(model.getLoginUserInfo().getId()); |
| | | model.setIsdeleted(Constants.ZERO); |
| | | model.setCreateDate(new Date()); |
| | |
| | | |
| | | @Override |
| | | public void deleteById(Integer id, LoginUserInfo user) { |
| | | if(ywContractRevenueMapper.selectCount(new QueryWrapper<YwContractRevenue>().lambda().eq(YwContractRevenue::getAccountId,id))>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前收支账户已关联业务,不可删除"); |
| | | } |
| | | YwAccount model = new YwAccount(); |
| | | model.setId(id); |
| | | model.setIsdeleted(Constants.ONE); |
| | |
| | | || !Constants.equalsInteger(ywProject.getType(),Constants.TWO)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,请选择正确的公司信息!"); |
| | | } |
| | | if(StringUtils.isNotBlank(model.getTitle())){ |
| | | if(ywAccountMapper.selectCount(new QueryWrapper<YwAccount>().lambda() |
| | | .eq(YwAccount::getTitle,model.getTitle()) |
| | | .ne(YwAccount::getId,model.getId()) |
| | | .eq(YwAccount::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,收支条目不能重复~"); |
| | | } |
| | | } |
| | | |
| | | model.setEditDate(model.getCreateDate()); |
| | | model.setEditor(model.getCreator()); |
| | | ywAccountMapper.updateById(model); |
| | |
| | | new MPJLambdaWrapper<YwContractRevenue>().selectAll(YwContractRevenue.class) |
| | | .selectAs(YwContractBill::getCode,YwContractRevenue::getBillCode) |
| | | .selectAs(YwContract::getCode,YwContractRevenue::getContractCode) |
| | | .selectAs(YwContract::getStatus,YwContractRevenue::getContractStatus) |
| | | .selectAs(YwCustomer::getName,YwContractRevenue::getCustomerName) |
| | | .selectAs(SystemUser::getRealname,YwContractRevenue::getRealname) |
| | | .selectAs(YwAccount::getTitle,YwContractRevenue::getAccountTitle) |
| | |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | | public Integer create(YwContract model) { |
| | | isParamValidCreated(model); |
| | | |
| | | |
| | | model.setCreator(model.getLoginUserInfo().getId()); |
| | | model.setIsdeleted(Constants.ZERO); |
| | | model.setCreateDate(new Date()); |
| | | model.setStatus(Constants.ZERO); |
| | | model.setEditDate(model.getCreateDate()); |
| | | model.setEditor(model.getCreator()); |
| | | if(model.getStartDate().getTime() > System.currentTimeMillis()){ |
| | | model.setStatus(Constants.ZERO); |
| | | }else if(model.getStartDate().getTime() <= System.currentTimeMillis() && model.getEndDate().getTime() > System.currentTimeMillis()){ |
| | | model.setStatus(Constants.ONE); |
| | | }else{ |
| | | model.setStatus(Constants.TWO); |
| | | } |
| | | model.setStatus(Constants.ZERO);//待执行 |
| | | model.setRemark(getRemarlByParam(model)); |
| | | ywContractMapper.insert(model); |
| | |
| | | update.setBtFee(param.getBtFee()); |
| | | update.setBtRemark(getbackRentRemarkByParam(param)); |
| | | ywContractMapper.updateById(update); |
| | | // if(1==1){ |
| | | // throw new BusinessException(ResponseStatus.NOT_ALLOWED); |
| | | // } |
| | | dealLogBiz(param,Constants.YwLogType.CONTRACT_BACK, param.getLoginUserInfo().getRealname(),getbackRentLogByParam(param)); |
| | | return param.getId(); |
| | | } |
| | |
| | | closeBills.add(bill); |
| | | noBills.add(bill); |
| | | } |
| | | // if(bill.getStartDate().getTime()>param.getEditDate().getTime()){ |
| | | // //如果还没开始,账单直接关闭 |
| | | // closeBills.add(bill); |
| | | // noBills.add(bill); |
| | | // }else{ |
| | | // canBills.add(bill); |
| | | // } |
| | | }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.ONE) ){ |
| | | if(bill.getStartDate().getTime()>param.getBtDate().getTime()){ |
| | | // if(bill.getEndDate().getTime()<param.getEditDate().getTime()){ |
| | | //如果已结清,账单直接关闭 |
| | | noBills.add(bill); |
| | | }else{ |
| | |
| | | addBill.setContractId(param.getId()); |
| | | addBill.setType(Constants.TWO); |
| | | addBill.setStatus(Constants.ZERO); |
| | | addBill.setTotleFee(addBill.getReceivableFee()); |
| | | if(Constants.equalsInteger(addBill.getFeeType(),Constants.ONE)){ |
| | | addBill.setStartDate(addBill.getPlanPayDate()); |
| | | addBill.setEndDate(addBill.getPlanPayDate()); |
| | |
| | | .like(StringUtils.isNotBlank(model.getTitle()),YwPatrolScheme::getTitle,model.getTitle()) |
| | | //查询有时段交集的数据 |
| | | .apply(Objects.nonNull(model.getStartDate())&&Objects.nonNull(model.getEndDate()), |
| | | " t.START_DATE <= '"+Utils.Date.getStart(pageWrap.getModel().getEndDate())+"' and t.END_DATE >= '"+Utils.Date.getStart(pageWrap.getModel().getStartDate())+"' " |
| | | " t.START_DATE <= '"+pageWrap.getModel().getEndDate()+"' and t.END_DATE >= '"+pageWrap.getModel().getStartDate()+"' " |
| | | ) |
| | | // .ge(Objects.nonNull(model.getStartDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getStartDate())) |
| | | // .le(Objects.nonNull(model.getEndDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getEndDate())) |
| | |
| | | .like(YwRoom::getRoomNum,pageWrap.getModel().getRoomName()) |
| | | ); |
| | | } |
| | | |
| | | if (pageWrap.getModel().getCreator() != null) { |
| | | queryWrapper.eq(YwWorkorder::getCreator, pageWrap.getModel().getCreator()); |
| | | } |