Merge remote-tracking branch 'origin/master'
| | |
| | | VUE_APP_ROUTER_MODE = 'hash' |
| | | |
| | | # 项目上下文路径 |
| | | VUE_APP_CONTEXT_PATH = '/fn_admin' |
| | | VUE_APP_CONTEXT_PATH = '/' |
| | | |
| | | # 接口前缀 |
| | | VUE_APP_API_PREFIX = '/gateway_interface' |
| | |
| | | |
| | | # VUE_APP_API_URL = 'http://192.168.5.13/gateway_interface' |
| | | |
| | | VUE_APP_API_URL = 'http://192.168.0.162:10010/' |
| | | VUE_APP_API_URL = 'http://192.168.0.163:10010/' |
| | | |
| | | # VUE_APP_API_URL = 'http://192.168.0.108:10030/' |
| | |
| | | // 表单数据 |
| | | form: { |
| | | id: null, |
| | | type: '2', |
| | | type: '1', |
| | | name: '', |
| | | parentId: null, |
| | | disable: false, |
| | |
| | | <div class="df_ac mb20"> |
| | | <el-input v-model="modalSearchValue" placeholder="请输入客户名称" class="w400" @keyup.enter.native="queryList"> |
| | | </el-input> |
| | | <el-button class="ml10" type="primary" @click="queryList()">查询</el-button> |
| | | <el-button class="ml10 mr10" type="primary" @click="queryList()">查询</el-button> |
| | | <el-button class="ml10" @click="clear()">重置</el-button> |
| | | <el-button class="ml10" type="primary" @click="$refs.operaYwCustomerWindow.open('新建客户')">新建客户</el-button> |
| | | </div> |
| | | <el-table ref="table" v-loading="listLoading" :data="list" element-loading-text="Loading" border fit |
| | | :header-row-class-name="'table-header'" class="doumee-element-table doumee-element-tableb" |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" /> |
| | | <div style="text-align: right; margin-top: 15px;"> |
| | | <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" /> |
| | | </div> |
| | | </div> |
| | | <!-- 新建/修改 --> |
| | | <OperaYwCustomerWindow ref="operaYwCustomerWindow" @success="clear" /> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | |
| | | import { fetchList } from '@/api/customer' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaYwCustomerWindow from '@/views/client/components/OperaYwCustomerWindow' |
| | | export default { |
| | | components: { |
| | | Pagination, |
| | | GlobalWindow |
| | | GlobalWindow, |
| | | OperaYwCustomerWindow |
| | | }, |
| | | props: { |
| | | isShowChooseBtn: { |
| | |
| | | |
| | | const router = new VueRouter({ |
| | | // + (process.env.VUE_APP_ROUTER_MODE === 'hash' ? '#' : '') |
| | | base: process.env.VUE_APP_CONTEXT_PATH, |
| | | mode: process.env.VUE_APP_ROUTER_MODE, |
| | | // base: process.env.VUE_APP_CONTEXT_PATH, |
| | | mode: 'hash', |
| | | routes: [ |
| | | // 登录 |
| | | { |
| | |
| | | loading: false, |
| | | sorting: false, |
| | | searchForm: { |
| | | type: 2 |
| | | type: 1 |
| | | }, |
| | | list: [], |
| | | total: 0 |
| | |
| | | }, |
| | | // 获取组织树 |
| | | getfindCompanyTreePage () { |
| | | fetchList() |
| | | fetchList(1) |
| | | .then(res => { |
| | | if (res && res.length > 0) { |
| | | res[0].fsStatus = 1 |
| | |
| | | <div class="main_content"> |
| | | <el-form :model="form" label-position="top" ref="form" :rules="rules"> |
| | | <div class="head"> |
| | | <div class="m_title">基础信息-{{time.startDate}}~{{time.endDate}}</div> |
| | | <div class="m_title">基础信息</div> |
| | | <div class="tabs"> |
| | | <div class="tab" :class="{ active: form.feeType === 0 }" @click="timeTabClick(0)">周期费用</div> |
| | | <div class="tab" :class="{ active: form.feeType === 1 }" @click="timeTabClick(1)">一次性费用</div> |
| | |
| | | extends: BaseOpera, |
| | | data () { |
| | | const validateArr = (rule, value, callback) => { |
| | | if (value.length === 0 || !value) { |
| | | callback(new Error('请选择')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | if (!value) return callback(new Error('请选择')); |
| | | if (!value.length === 0) return callback(new Error('请选择')); |
| | | callback(); |
| | | }; |
| | | return { |
| | | form: { |
| | |
| | | { required: true, message: '请选择', trigger: 'blur' } |
| | | ], |
| | | date: [ |
| | | { validator: validateArr, trigger: 'blur' } |
| | | { required: true, validator: validateArr, trigger: 'blur' } |
| | | ], |
| | | receivableFee: [ |
| | | { required: true, message: '请输入', trigger: 'blur' } |
| | |
| | | }, |
| | | methods: { |
| | | open (title, target, time) { |
| | | var that = this |
| | | this.title = title |
| | | this.time.startDate = time.startDate |
| | | this.time.endDate = time.endDate |
| | | this.pickerOptions = { |
| | | disabledDate(time) { |
| | | // 如果没有后面的 -8.64e7 就是不可以选择今天的 |
| | | const beginDate = new Date(time.startDate).getTime() - 8.64e7 |
| | | const endDate = new Date(time.endDate).getTime() - 8.64e7 |
| | | const beginDate = new Date(that.time.startDate).getTime() - 8.64e7 |
| | | const endDate = new Date(that.time.endDate).getTime() |
| | | return beginDate > time.getTime() || endDate < time.getTime() |
| | | } |
| | | } |
| | |
| | | range-separator="至" |
| | | v-model="form.date" |
| | | @change="changeDate" |
| | | :picker-options="pickerOptions" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | value-format="yyyy-MM-dd" |
| | |
| | | startDate: '', |
| | | endDate: '', |
| | | price: 0, |
| | | feeType: 0, |
| | | receivableFeeCopy: '', |
| | | receivableFee: '', |
| | | planPayDate: '', |
| | | billType: 1, |
| | | billTypeCopy: 1, |
| | | date: [] |
| | | }, |
| | | pickerOptions: {}, |
| | | time: { |
| | | startDate: '', |
| | | endDate: '' |
| | | }, |
| | | rules: { |
| | | contractCode: [ |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | open (title, target) { |
| | | open (title, target, time) { |
| | | var that = this |
| | | this.title = title |
| | | this.time.startDate = time.startDate |
| | | this.time.endDate = time.endDate |
| | | this.pickerOptions = { |
| | | disabledDate(time) { |
| | | const beginDate = new Date(that.time.startDate).getTime() - 8.64e7 |
| | | const endDate = new Date(that.time.endDate).getTime() |
| | | return beginDate > time.getTime() || endDate < time.getTime() |
| | | } |
| | | } |
| | | this.getCompanyList() |
| | | this.visible = true |
| | | // 新建 |
| | |
| | | memberName: [{ required: true, message: '请选择' }], |
| | | zlDeposit: [{ required: true, message: '请输入' }], |
| | | zlPayType: [{ required: true, message: '请选择' }], |
| | | zlDate: [{ required: true, message: '请选择' }], |
| | | wyDeposit: [{ required: true, message: '请输入' }], |
| | | wyPayType: [{ required: true, message: '请选择' }], |
| | | wyDate: [{ required: true, message: '请选择' }] |
| | | wyPayType: [{ required: true, message: '请选择' }] |
| | | } |
| | |
| | | <GlobalWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :withFooter="false" |
| | | :confirm-working="isWorking" |
| | | @close="close" |
| | | @confirm="confirm"> |
| | |
| | | <div class="left"> |
| | | <span class="mr10">单位名称:{{info.renterName}}</span> |
| | | <el-tag type="success" v-if="info.status === 0">待执行</el-tag> |
| | | <el-tag type="success" v-if="info.status === 1">执行中</el-tag> |
| | | <el-tag type="success" v-if="info.status === 2">已到期</el-tag> |
| | | <el-tag type="success" v-if="info.status === 3">已退租</el-tag> |
| | | <el-tag type="success" v-if="info.status === 1">正常执行中</el-tag> |
| | | <el-tag type="info" v-if="info.status === 2">已到期</el-tag> |
| | | <el-tag type="info" v-if="info.status === 3">退租结算中</el-tag> |
| | | <el-tag type="info" v-if="info.status === 4">已退租</el-tag> |
| | | </div> |
| | | <el-button plain type="danger" v-if="[0, 1, 2].includes(info.status)" @click="refund">退租</el-button> |
| | | </div> |
| | |
| | | label="账单金额"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | :key="Date.now()" |
| | | prop="receivableFee" |
| | | label="应收金额"> |
| | | </el-table-column> |
| | |
| | | <el-table-column |
| | | prop="needReceivableFee" |
| | | label="需收金额"> |
| | | <template slot-scope="{row}"> |
| | | <el-tag type="success" v-if="row.needReceivableFee > 0">收</el-tag> |
| | | <el-tag type="warning" v-else>付</el-tag> |
| | | <span style="margin-left: 10px;">{{Math.abs(row.needReceivableFee)}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="账单来源"> |
| | |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | :key="Date.now()" |
| | | width="200" |
| | | prop="param1" |
| | | label="操作人"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | :key="Date.now()" |
| | | width="200" |
| | | prop="createDate" |
| | | label="操作时间"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | :key="Date.now()" |
| | | width="150" |
| | | label="操作"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.objType === 0">工单创建</span> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | :key="Date.now()" |
| | | prop="content" |
| | | label="操作内容"> |
| | | </el-table-column> |
| | |
| | | <template> |
| | | <GlobalWindow width="100%" :title="title" :visible.sync="visible" :confirm-working="isWorking" @close="close" |
| | | @confirm="confirm"> |
| | | <div class="tabs"> |
| | | <div class="tab" :class="{ active: activeTabs === 0 }" @click="tabsClick(0)">1、基本信息</div> |
| | | <div class="tab" :class="{ active: activeTabs === 1 }" @click="tabsClick(1)">2、费用条款</div> |
| | | <!-- :text="activeTabs === 0 ? '下一步' : '提交'"--> |
| | | <!-- :backText="activeTabs === 0 ? '返回' : '上一步'"--> |
| | | <GlobalWindow |
| | | width="100%" |
| | | :title="title" |
| | | :withFooter="false" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | @close="close"> |
| | | <div class="tabs fixed"> |
| | | <div class="tab" :class="{ active: activeTabs === 0 }">1、基本信息</div> |
| | | <div class="tab" :class="{ active: activeTabs === 1 }">2、费用条款</div> |
| | | </div> |
| | | <div v-show="activeTabs === 0"> |
| | | <div class="main"> |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="合同签订日期" prop="signDate"> |
| | | <el-date-picker type="date" v-model="form.signDate" value-format="yyyy-MM-dd" placeholder="请选择" /> |
| | | <el-date-picker type="date" v-model="form.signDate" value-format="yyyy-MM-dd" :clearable="false" placeholder="请选择" /> |
| | | </el-form-item> |
| | | <el-form-item label="合同开始日期" prop="startDate"> |
| | | <el-date-picker type="date" v-model="form.startDate" value-format="yyyy-MM-dd" placeholder="请选择" /> |
| | | <el-date-picker type="date" v-model="form.startDate" @change="getHouseData" :clearable="false" value-format="yyyy-MM-dd" placeholder="请选择" /> |
| | | </el-form-item> |
| | | <el-form-item label="合同结束日期" prop="endDate"> |
| | | <el-date-picker type="date" v-model="form.endDate" value-format="yyyy-MM-dd" placeholder="请选择" /> |
| | | <el-date-picker type="date" v-model="form.endDate" @change="getHouseData" :clearable="false" value-format="yyyy-MM-dd" placeholder="请选择" /> |
| | | </el-form-item> |
| | | <el-form-item label="归属项目" prop="projectId"> |
| | | <el-select v-model="form.projectId" placeholder="请选择"> |
| | |
| | | <el-button type="text" size="medium" @click="addZl">增加</el-button> |
| | | </div> |
| | | <div class="list"> |
| | | <template v-for="(item, index) in form.zlDetailList" :key="index"> |
| | | <div v-for="(item, index) in form.zlDetailList" :key="index"> |
| | | <el-form-item label="起始日期" prop="time"> |
| | | <el-date-picker type="daterange" v-model="item.time" @change="getDate1($event, index)" value-format="yyyy-MM-dd" placeholder="请选择" /> |
| | | </el-form-item> |
| | | <el-form-item label="合同单价" prop="price"> |
| | | <el-input placeholder="请输入" v-model="item.price"> |
| | | <el-select v-model="item.circleType" slot="append" placeholder="请选择"> |
| | | <el-input placeholder="请输入" v-model="item.price" class="input-with-select"> |
| | | <el-select v-model="item.circleType" style="width: 150px;" slot="append" placeholder="请选择"> |
| | | <el-option v-for="(item, index) in unitOps" :key="index" :value="item.value" :label="item.name"></el-option> |
| | | </el-select> |
| | | </el-input> |
| | |
| | | <el-link :underline="false" type="danger" @click="deleZl(index)" style="margin-left: 20px; flex-shrink: 0;">删除</el-link> |
| | | </div> |
| | | </el-form-item> |
| | | </template> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="planPayDate" label="付款日" align="center" show-overflow-tooltip /> |
| | | <el-table-column prop="receivableFee" label="应收" align="center" show-overflow-tooltip /> |
| | | <el-table-column label="应收" align="center" show-overflow-tooltip> |
| | | <template slot-scope="{row}"> |
| | | {{row.receivableFee}}元 |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div class="total"> |
| | | <span>总计</span> |
| | | <div>费用应收总计:{{zlPrice}},押金应收总计:{{form.zlDeposit}}</div> |
| | | <div>费用应收总计:{{zlPrice}}元,押金应收总计:{{form.zlDeposit}}元</div> |
| | | </div> |
| | | </div> |
| | | <!-- 物业条款 --> |
| | |
| | | <el-button type="text" size="medium" @click="addWy">增加</el-button> |
| | | </div> |
| | | <div class="list"> |
| | | <template v-for="(item, index) in form.wyDetailList" :key="index"> |
| | | <div v-for="(item, index) in form.wyDetailList" :key="index"> |
| | | <el-form-item label="起始日期" prop="time"> |
| | | <el-date-picker type="daterange" v-model="item.time" @change="getDate2($event, index)" value-format="yyyy-MM-dd" placeholder="请选择" /> |
| | | </el-form-item> |
| | | <el-form-item label="合同单价" prop="price"> |
| | | <el-input placeholder="请输入" v-model="item.price"> |
| | | <el-select v-model="item.circleType" slot="append" placeholder="请选择"> |
| | | <el-select v-model="item.circleType" style="width: 150px;" slot="append" placeholder="请选择"> |
| | | <el-option v-for="(item, index) in unitOps" :key="index" :value="item.value" :label="item.name"></el-option> |
| | | </el-select> |
| | | </el-input> |
| | |
| | | <el-link :underline="false" type="danger" @click="deleWy(index)" style="margin-left: 20px; flex-shrink: 0;">删除</el-link> |
| | | </div> |
| | | </el-form-item> |
| | | </template> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="planPayDate" label="付款日" align="center" show-overflow-tooltip /> |
| | | <el-table-column prop="receivableFee" label="应收" align="center" show-overflow-tooltip /> |
| | | <el-table-column prop="receivableFee" label="应收" align="center" show-overflow-tooltip> |
| | | <template slot-scope="{row}"> |
| | | {{row.receivableFee}}元 |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div class="total"> |
| | | <span>总计</span> |
| | | <div>费用应收总计:{{wyPrice}},押金应收总计:{{form.wyDeposit}}</div> |
| | | <div>费用应收总计:{{wyPrice}}元,押金应收总计:{{form.wyDeposit}}元</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="window__footer" style="position: sticky; bottom: 0; left: 0; z-index: 9; background: #ffffff;"> |
| | | <slot name="footer"> |
| | | <el-button @click="confirm" :loading="confirmWorking" type="primary">{{activeTabs === 0 ? '下一步' : '提交'}}</el-button> |
| | | <slot name="btns" /> |
| | | <el-button @click="close">{{activeTabs === 0 ? '返回' : '上一步'}}</el-button> |
| | | </slot> |
| | | </div> |
| | | <!-- 选择租客 --> |
| | | <MemberSearch ref="MemberSearchRef" @select="getTenant" /> |
| | |
| | | this.getUser() |
| | | this.getProject() |
| | | this.getCompany() |
| | | this.getHouseTree() |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | for (const key in this.form) { |
| | | if (['roomIds', 'fileList', 'wyDate', 'zlDate'].includes(key)) { |
| | | this.form[key] = [] |
| | | } else { |
| | | this.form[key] = target[key] |
| | | this.form[key] = '' |
| | | } |
| | | } |
| | | this.form.zlDetailList = [ |
| | | { |
| | | startDate: '', |
| | | endDate: '', |
| | | time: [], |
| | | price: '', |
| | | advanceDays: '' |
| | | } |
| | | ] |
| | | this.form.wyDetailList = [ |
| | | { |
| | | startDate: '', |
| | | endDate: '', |
| | | time: [], |
| | | price: '', |
| | | advanceDays: '' |
| | | } |
| | | ] |
| | | this.wyList = [] |
| | | this.zlList = [] |
| | | this.form.userId = this.userInfo.id |
| | | this.form.signDate = this.getDayTime() |
| | | this.form.startDate = this.getDayTime() |
| | | this.form.endDate = this.getDayTime(1) |
| | | this.getHouseTree() |
| | | }) |
| | | }, |
| | | getHouseData () { |
| | | if (this.form.startDate && this.form.endDate) { |
| | | this.getHouseTree() |
| | | } |
| | | }, |
| | | changeType (e) { |
| | | if (e === 0 || e === 2) { |
| | |
| | | this.cactiveTabs = 1 |
| | | } |
| | | }, |
| | | getDayTime (num) { |
| | | const today = new Date(); |
| | | const year = today.getFullYear(); |
| | | const month = today.getMonth() + 1; // 月份是从 0 开始的,因此需要加 1 |
| | | const day = today.getDate(); |
| | | if (!num) { |
| | | return `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`; |
| | | } else { |
| | | return `${year + 1}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`; |
| | | } |
| | | }, |
| | | confirm () { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | if (this.activeTabs === 0) { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) return |
| | | this.activeTabs = 1 |
| | | }) |
| | | } else if (this.activeTabs === 1) { |
| | | if (this.form.type === 0) { |
| | | this.$refs.paramCostRef.validate((valid1) => { |
| | | if (!valid1) { |
| | |
| | | this.submit() |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | submit () { |
| | | // 调用新建接口 |
| | |
| | | this.form.roomIds = arr.filter(item => item !== undefined); |
| | | }, |
| | | getHouseTree () { |
| | | tree({}) |
| | | tree({ |
| | | startDate: this.form.startDate, |
| | | endDate: this.form.endDate |
| | | }) |
| | | .then(res => { |
| | | res.forEach(item => { |
| | | item.disabled = true |
| | |
| | | } |
| | | }, |
| | | generateZL () { |
| | | getBillList({ ...this.form }) |
| | | getBillList({ ...this.form, billType: 0 }) |
| | | .then(res => { |
| | | let zlPrice = 0 |
| | | let arr = [] |
| | | res.forEach(item => { |
| | | if (item.costType === 0) { |
| | | zlPrice += item.receivableFee |
| | | arr.push(item) |
| | | } |
| | | arr.push(item) |
| | | }) |
| | | this.zlPrice = zlPrice |
| | | this.zlList = arr |
| | | }) |
| | | }, |
| | | generateWY () { |
| | | getBillList({ ...this.form }) |
| | | getBillList({ ...this.form, billType: 1 }) |
| | | .then(res => { |
| | | let zlPrice = 0 |
| | | let arr = [] |
| | | res.forEach(item => { |
| | | if (item.costType === 1) { |
| | | zlPrice += item.receivableFee |
| | | arr.push(item) |
| | | } |
| | | arr.push(item) |
| | | }) |
| | | this.wyPrice = zlPrice |
| | | this.wyList = arr |
| | |
| | | companyList({ type: 2 }) |
| | | .then(res => { |
| | | this.comparyList = res |
| | | this.form.companyId = res[0].id |
| | | }) |
| | | }, |
| | | tabsClick (val) { |
| | |
| | | this.form.fileList.push({ ...item, fileurl: item.imgaddr, name: item.originname, userName: this.userInfo.realname, createTime: this.getDay() }) |
| | | }, |
| | | close () { |
| | | this.$emit('close') |
| | | if (this.activeTabs === 0) { |
| | | this.$emit('close') |
| | | } else { |
| | | this.activeTabs = 0 |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | <style lang="scss" scoped> |
| | | @import '@/assets/style/variables.scss'; |
| | | |
| | | .fixed { |
| | | background: #ffffff; |
| | | position: sticky; |
| | | top: 0; |
| | | left: 0; |
| | | } |
| | | .tabs { |
| | | border-bottom: 1px solid #DFE2E8; |
| | | display: flex; |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="退租日期" prop="btDate" style="width: 33%;"> |
| | | <!-- @change="changeBtDate"--> |
| | | <el-date-picker |
| | | v-model="form.btDate" |
| | | type="date" |
| | |
| | | import AddPaymentBill from './addPaymentBill' |
| | | import { getUserList } from '@/api/system/user' |
| | | import { backRent, getCanBackBill } from '@/api/contract' |
| | | import { mapState } from 'vuex' |
| | | export default { |
| | | name: "terminateLease", |
| | | components: { |
| | | GlobalWindow, |
| | | AddCollectionBill, |
| | | AddPaymentBill |
| | | }, |
| | | computed: { |
| | | ...mapState(['userInfo']) |
| | | }, |
| | | extends: BaseOpera, |
| | | data() { |
| | |
| | | } |
| | | }, |
| | | watch: { |
| | | info: { |
| | | deep: true, |
| | | immediate: true, |
| | | handler(news, olds) { |
| | | const arr = [...this.info.terminateList, ...this.info.depositList] |
| | | let total1 = 0 |
| | | let total2 = 0 |
| | | arr.forEach(item => { |
| | | if (item.billType === 0) { |
| | | total1 += Number(item.price) |
| | | } else if (item.billType === 1) { |
| | | total2 += Number(item.price) |
| | | } |
| | | }) |
| | | this.receivable = total1 |
| | | this.meet = total2 |
| | | } |
| | | } |
| | | // info: { |
| | | // deep: true, |
| | | // immediate: true, |
| | | // handler(news, olds) { |
| | | // const arr = [...this.info.terminateList, ...this.info.depositList] |
| | | // let total1 = 0 |
| | | // let total2 = 0 |
| | | // arr.forEach(item => { |
| | | // if (item.billType === 0) { |
| | | // total1 += Number(item.price) |
| | | // } else if (item.billType === 1) { |
| | | // total2 += Number(item.price) |
| | | // } |
| | | // }) |
| | | // this.receivable = total1 |
| | | // this.meet = total2 |
| | | // } |
| | | // } |
| | | }, |
| | | methods: { |
| | | open (title, info) { |
| | | this.title = title |
| | | this.info = info |
| | | this.form.id = info.id |
| | | this.form.btSignDate = this.getDay() |
| | | console.log(this.userInfo) |
| | | this.form.btUserId = this.userInfo.id |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | }) |
| | |
| | | return item |
| | | } |
| | | }) |
| | | this.countData() |
| | | this.getUser() |
| | | this.visible = true |
| | | }, |
| | | countData () { |
| | | const arr = [...this.info.terminateList, ...this.info.depositList] |
| | | let total1 = 0 |
| | | let total2 = 0 |
| | | arr.forEach(item => { |
| | | if (item.billType === 0) { |
| | | total1 += Number(item.price) |
| | | } else if (item.billType === 1) { |
| | | total2 += Number(item.price) |
| | | } |
| | | }) |
| | | this.receivable = total1 |
| | | this.meet = total2 |
| | | }, |
| | | getDay () { |
| | | const today = new Date(); |
| | | const year = today.getFullYear(); |
| | | const month = today.getMonth() + 1; // 月份是从 0 开始的,因此需要加 1 |
| | | const day = today.getDate(); |
| | | return `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`; |
| | | }, |
| | | addZD () { |
| | | if (!this.form.btDate) return this.$message.warning('请选择退租日期') |
| | |
| | | renterName: this.info.renterName, |
| | | renterId: this.info.renterId, |
| | | billType: 1, |
| | | feeType: 0, |
| | | billTypeCopy: 1 |
| | | }, { startDate: this.info.startDate, endDate: this.form.btDate }) |
| | | }, |
| | |
| | | return item |
| | | } |
| | | }) |
| | | this.countData() |
| | | }).finally(() => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | getObjS (obj) { |
| | | this.info.terminateList.push(obj) |
| | | this.info.terminateList.forEach(item => { |
| | | item.receivableFee = Number(item.receivableFee) + 1 |
| | | item.receivableFee = Number(item.receivableFee) - 1 |
| | | }) |
| | | // this.info.terminateList.forEach(item => { |
| | | // item.receivableFee = Number(item.receivableFee) + 1 |
| | | // item.receivableFee = Number(item.receivableFee) - 1 |
| | | // }) |
| | | this.countData() |
| | | }, |
| | | confirm () { |
| | | this.$refs.form.validate((valid) => { |
| | |
| | | if (Number(num) > row.receivableFeeCopy) { |
| | | row.receivableFee = '' |
| | | row.price = 0 |
| | | this.countData() |
| | | this.$message.warning('不能大于原始应收付金额') |
| | | } else { |
| | | if (num) { |
| | |
| | | } else { |
| | | row.price = 0 |
| | | row.billType = row.billTypeCopy |
| | | console.log('billTypeCopy', row.billTypeCopy) |
| | | } |
| | | row.price = Math.abs(row.price); |
| | | this.countData() |
| | | } |
| | | } |
| | | } |
| | |
| | | <el-table-column prop="renterName" label="客户名称" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="startDate" label="开始日期" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="endDate" label="结束日期" min-width="100" show-overflow-tooltip /> |
| | | <!-- <el-table-column label="租赁单价" min-width="100" show-overflow-tooltip></el-table-column>--> |
| | | <el-table-column prop="zlFirstPrice" label="租赁单价" min-width="100" show-overflow-tooltip> |
| | | <template slot-scope="{row}"> |
| | | <div style="display: flex; align-items: center;"> |
| | | <span>{{row.zlFirstPrice}}</span> |
| | | <span v-if="row.zlFirstCircle === 0">元/m²·天</span> |
| | | <span v-if="row.zlFirstCircle === 1">元/m²·月</span> |
| | | <span v-if="row.zlFirstCircle === 2">元/天</span> |
| | | <span v-if="row.zlFirstCircle === 3">元/月</span> |
| | | <span v-if="row.zlFirstCircle === 4">元/年</span> |
| | | <span v-if="row.zlFirstCircle === 5">元/m²·年</span> |
| | | <span v-if="row.zlFirstCircle === 6">元/场</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="totalArea" label="租赁面积" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="signDate" label="签订日" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="code" label="合同编号" min-width="100" show-overflow-tooltip /> |
| | |
| | | </div> |
| | | <el-table v-loading="loading" :data="list" stripe> |
| | | <el-table-column prop="name" label="公司名称" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="shortName" label="公司简介" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="shortName" label="公司简称" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="code" label="纳税识别号" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="address" label="公司地址" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="accountNum" label="收支账户数量" min-width="100" show-overflow-tooltip /> |
| | |
| | | <el-option v-for="(item, index) in contract" :key="index" :value="item.id" :label="item.code"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="付款方" prop="renterName"> |
| | | <el-input v-model="form.renterName" disabled placeholder="请输入应收金额" v-trim /> |
| | | <el-form-item label="收款方" prop="renterName"> |
| | | <el-input v-model="form.renterName" disabled placeholder="收款方" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="房源" prop="ywContractRoomList"> |
| | | <el-select v-model="form.ywContractRoomList" multiple placeholder="请选择"> |
| | |
| | | <el-form-item label="公司名称" prop="name"> |
| | | <el-input v-model="param.name" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="公司简介" prop="shortName"> |
| | | <el-form-item label="公司简称" prop="shortName"> |
| | | <el-input v-model="param.shortName" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="纳税识别号"> |
| | |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped></style> |
| | | <style lang="scss" scoped></style> |
| | |
| | | uuid: this.captcha.uuid |
| | | }) |
| | | .then((res) => { |
| | | // window.location.href = process.env.VUE_APP_CONTEXT_PATH |
| | | if (this.isRemPsd) { |
| | | localStorage.setItem('username', this.username.trim()) |
| | | localStorage.setItem('password', this.password.trim()) |
| | |
| | | localStorage.removeItem('isRemPsd') |
| | | } |
| | | Cookies.set('dm_user_token', res) |
| | | this.$router.push('index') |
| | | window.location.href = process.env.VUE_APP_CONTEXT_PATH |
| | | }) |
| | | .catch(e => { |
| | | this.refreshCaptcha() |
| | |
| | | <el-table-column prop="feeArea" label="计费面积(m²)" min-width="80px"></el-table-column> |
| | | <el-table-column prop="" label="租赁状态" min-width="80px"> |
| | | <template v-slot="{row}"> |
| | | <span v-if="row.leaseStatus == 0">待租赁</span> |
| | | <span v-if="row.leaseStatus == 1">已租赁</span> |
| | | <span v-if="row.leaseStatus == 2">未开启租赁</span> |
| | | <span v-if="row.leaseStatus == 0">待租</span> |
| | | <span v-else-if="row.leaseStatus == 1">已租</span> |
| | | <span v-else>-</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="isInvestment" label="招商状态" min-width="60px"> |
| | |
| | | realname: param.name,
|
| | | id: param.id
|
| | | }).then(res => {
|
| | | this.memberList = res.data || []
|
| | | this.memberList = [{id: '', realname: '全部'}, ...res.data]
|
| | | })
|
| | | }
|
| | | }
|
| | |
| | | },
|
| | | getpeo() {
|
| | | findInternalList().then(res => {
|
| | | this.columns = [res.data]
|
| | | this.columns = [...res.data]
|
| | | })
|
| | | },
|
| | | confirm(e) { |
| | |
| | | <template>
|
| | | <view class="main_app">
|
| | | <!-- <view class="head_wrap">
|
| | | <!-- <view class="head_wrap">
|
| | | <view class="search_wrap">
|
| | | <image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image>
|
| | | <input v-model="param.keyword" @confirm="getList()" type="text" placeholder="搜索楼宇/房间名称" placeholder-class="placeholder9" />
|
| | | </view>
|
| | | </view> --> |
| | | <!-- --> |
| | | <view class="tabs"> |
| | | <view class="tab" :class="{active: param.queryStatus == '0,1'}" @click="tabsClick('0,1')"> |
| | | <text>待处理</text> |
| | | <text class="border"></text> |
| | | </view> |
| | | <view class="tab" :class="{active: param.queryStatus == 3}" @click="tabsClick(3)"> |
| | | <text>已处理</text> |
| | | <text class="border"></text> |
| | | </view> |
| | | <view class="tab" @click="allClick"> |
| | | <view class="name"> |
| | | <image v-if="selectAll" class="icon" src="@/static/checked.png" mode=""></image> |
| | | <image v-else class="icon" src="@/static/check.png" mode=""></image> |
| | | <text>查看全部</text> |
| | | </view> |
| | | <text class="border"></text> |
| | | </view> |
| | | </view> -->
|
| | | <!-- -->
|
| | | <view class="tabs">
|
| | | <view class="tab" :class="{active: param.queryStatus == '0,1'}" @click="tabsClick('0,1')">
|
| | | <text>待处理</text>
|
| | | <text class="border"></text>
|
| | | </view>
|
| | | <view class="tab" :class="{active: param.queryStatus == 3}" @click="tabsClick(3)">
|
| | | <text>已处理</text>
|
| | | <text class="border"></text>
|
| | | </view>
|
| | | <view class="tab" @click="allClick">
|
| | | <view class="name">
|
| | | <image v-if="selectAll" class="icon" src="@/static/checked.png" mode=""></image>
|
| | | <image v-else class="icon" src="@/static/check.png" mode=""></image>
|
| | | <text>查看全部</text>
|
| | | </view>
|
| | | <text class="border"></text>
|
| | | </view>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view class="list">
|
| | | <view class="item" v-for="item in list" @click="itemClick(item)">
|
| | | <image v-if="item.status == 0 || item.status == 1" src="@/static/side/xunjianed.png" class="icon"></image> |
| | | <image v-else src="@/static/side/xunjian.png" class="icon"></image>
|
| | | <view class="content">
|
| | | <view class="name_wrap line">
|
| | | <view class="name">{{item.planTitle}}</view>
|
| | | <view class="status" :class="{ |
| | | green: item.status == 1, |
| | | red: item.status == 2, |
| | | gray: item.status == 3 || item.status == 4 |
| | | }">{{statusM[item.status]}}</view>
|
| | | </view>
|
| | | <view class="line" v-if="item.startDate">任务日期:{{ item.startDate.slice(0, 11) }}</view>
|
| | | <view class="line">执行时间:{{ item.startDate.slice(11, 16) }} 至 {{ item.endDate.slice(11, 16) }}</view> |
| | | <view class="line"> |
| | | <view>完成情况:{{item.finishNum || 0}}/{{item.patrolNum}}</view> |
| | | <view class="btn"> |
| | | <image src="@/static/side/ic_saoma@2x.png" class="saoma" mode=""></image> |
| | | <view>扫码巡检</view> |
| | | </view> |
| | | <scroll-view scroll-y="true" class="scroll_Y" @scrolltolower="scrolltolower">
|
| | | <view class="list">
|
| | | <view class="item" v-for="item in list" @click="itemClick(item)">
|
| | | <image v-if="item.status == 0 || item.status == 1" src="@/static/side/xunjianed.png" class="icon"></image>
|
| | | <image v-else src="@/static/side/xunjian.png" class="icon"></image>
|
| | | <view class="content">
|
| | | <view class="name_wrap line">
|
| | | <view class="name">{{item.planTitle}}</view>
|
| | | <view class="status" :class="{
|
| | | green: item.status == 1,
|
| | | red: item.status == 2,
|
| | | gray: item.status == 3 || item.status == 4
|
| | | }">{{statusM[item.status]}}</view>
|
| | | </view>
|
| | | <view class="line" v-if="item.startDate">任务日期:{{ item.startDate.slice(0, 11) }}</view>
|
| | | <view class="line">执行时间:{{ item.startDate.slice(11, 16) }} 至 {{ item.endDate.slice(11, 16) }}</view>
|
| | | <view class="line">
|
| | | <view>完成情况:{{item.finishNum || 0}}/{{item.patrolNum}}</view>
|
| | | <view class="btn">
|
| | | <image src="@/static/side/ic_saoma@2x.png" class="saoma" mode=""></image>
|
| | | <view>扫码巡检</view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </scroll-view>
|
| | |
|
| | | <!-- -->
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script> |
| | | import { ywPatrolTaskPost } from '@/api'
|
| | | <script>
|
| | | import {
|
| | | ywPatrolTaskPost
|
| | | } from '@/api'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | param: { |
| | | queryStatus: '0,1' |
| | | }, |
| | | list: [], |
| | | activeTab: 0, |
| | | selectAll: false, |
| | | page: 1, |
| | | |
| | | statusM: { |
| | | 0: '待开始', |
| | | 1: '进行中', |
| | | 2: '已超期', |
| | | 3: '已完成', |
| | | 4: '已取消', |
| | | param: {
|
| | | queryStatus: '0,1'
|
| | | },
|
| | | list: [],
|
| | | activeTab: 0,
|
| | | selectAll: false,
|
| | | page: 1,
|
| | |
|
| | | statusM: {
|
| | | 0: '待开始',
|
| | | 1: '进行中',
|
| | | 2: '已超期',
|
| | | 3: '已完成',
|
| | | 4: '已取消',
|
| | | }
|
| | | };
|
| | | }, |
| | | onLoad() { |
| | | this.getList() |
| | | }, |
| | | onReachBottom() { |
| | | const {total,list} = this |
| | | if (list.length < total) { |
| | | this.page = this.page + 1 |
| | | this.getList() |
| | | } else { |
| | | this.showToast('暂无更多数据') |
| | | } |
| | | },
|
| | | methods: {
|
| | | tabsClick(val) { |
| | | this.param.status = val |
| | | this.page = 1 |
| | | this.list = [] |
| | | this.getList() |
| | | }, |
| | | allClick() { |
| | | this.selectAll = !this.selectAll |
| | | this.list = [] |
| | | this.page = 1 |
| | | this.getList() |
| | | }, |
| | | itemClick(item) { |
| | | uni.navigateTo({ |
| | | url: '/pages/polling/detail?id=' + item.id |
| | | }) |
| | | }, |
| | | getList() { |
| | | const { page, param, selectAll } = this |
| | | ywPatrolTaskPost({ |
| | | model: {...param, dealUserId: selectAll ? '' : uni.getStorageSync('userInfo').id, }, |
| | | page, |
| | | capacity: 10 |
| | | }).then(res => { |
| | | this.list = [...this.list, ...res.data.records] |
| | | this.total = res.data.total |
| | | }) |
| | | onLoad() {
|
| | | this.getList()
|
| | | },
|
| | | methods: { |
| | | scrolltolower() { |
| | | const { |
| | | total, |
| | | list |
| | | } = this |
| | | if (list.length < total) { |
| | | this.page = this.page + 1 |
| | | this.getList() |
| | | } else { |
| | | this.showToast('暂无更多数据') |
| | | } |
| | | },
|
| | | tabsClick(val) {
|
| | | this.param.queryStatus = val
|
| | | this.page = 1
|
| | | this.list = []
|
| | | this.getList()
|
| | | },
|
| | | allClick() {
|
| | | this.selectAll = !this.selectAll
|
| | | this.list = []
|
| | | this.page = 1
|
| | | this.getList()
|
| | | },
|
| | | itemClick(item) {
|
| | | uni.navigateTo({
|
| | | url: '/pages/polling/detail?id=' + item.id
|
| | | })
|
| | | },
|
| | | getList() {
|
| | | const {
|
| | | page,
|
| | | param,
|
| | | selectAll
|
| | | } = this
|
| | | ywPatrolTaskPost({
|
| | | model: {
|
| | | ...param,
|
| | | dealUserId: selectAll ? '' : uni.getStorageSync('userInfo').id,
|
| | | },
|
| | | page,
|
| | | capacity: 10
|
| | | }).then(res => {
|
| | | this.list = [...this.list, ...res.data.records]
|
| | | this.total = res.data.total
|
| | | })
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss" scoped> |
| | | .main_app{ |
| | | padding: 0 30rpx; |
| | | } |
| | | .tabs{ |
| | | display: flex; |
| | | width: 750rpx; |
| | | margin: 12rpx -30rpx 0; |
| | | border-bottom: 1rpx solid #E5E5E5; |
| | | .tab{ |
| | | font-size: 30rpx; |
| | | color: #666666; |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | height: 88rpx; |
| | | .name{ |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .icon{ |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | margin-right: 10rpx; |
| | | } |
| | | .border{ |
| | | width: 54rpx; |
| | | height: 6rpx; |
| | | background-color: #fff; |
| | | border-radius: 3rpx; |
| | | margin-top: 24rpx; |
| | | } |
| | | } |
| | | .active{ |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | .border{ |
| | | background-color: $primaryColor; |
| | | } |
| | | |
| | | } |
| | | |
| | | <style lang="scss" scoped>
|
| | | .main_app {
|
| | | padding: 0 30rpx;
|
| | | }
|
| | |
|
| | | .tabs {
|
| | | display: flex;
|
| | | width: 750rpx;
|
| | | margin: 12rpx -30rpx 0;
|
| | | border-bottom: 1rpx solid #E5E5E5;
|
| | |
|
| | | .tab {
|
| | | font-size: 30rpx;
|
| | | color: #666666;
|
| | | flex: 1;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | align-items: center;
|
| | | justify-content: flex-end;
|
| | | height: 88rpx;
|
| | |
|
| | | .name {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | }
|
| | |
|
| | | .icon {
|
| | | width: 28rpx;
|
| | | height: 28rpx;
|
| | | margin-right: 10rpx;
|
| | | }
|
| | |
|
| | | .border {
|
| | | width: 54rpx;
|
| | | height: 6rpx;
|
| | | background-color: #fff;
|
| | | border-radius: 3rpx;
|
| | | margin-top: 24rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .active {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | color: #222222;
|
| | |
|
| | | .border {
|
| | | background-color: $primaryColor;
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | .head_wrap {
|
| | | display: flex;
|
| | | align-items: center;
|
| | |
| | | background: #F7F7F7;
|
| | | border-radius: 38rpx;
|
| | | padding-left: 30rpx;
|
| | | input{ |
| | | flex: 1; |
| | |
|
| | | input {
|
| | | flex: 1;
|
| | | }
|
| | |
|
| | | .search {
|
| | | width: 28rpx;
|
| | | height: 28rpx;
|
| | |
| | |
|
| | | }
|
| | |
|
| | | .scroll_Y {
|
| | | height: calc(100vh - 230rpx);
|
| | | }
|
| | |
|
| | | .list {
|
| | | .item {
|
| | | display: flex;
|
| | | // height: 290rpx; |
| | | padding: 30rpx 0; |
| | | // height: 290rpx;
|
| | | padding: 30rpx 0;
|
| | | border-bottom: 2rpx solid #E5E5E5;
|
| | | &:nth-last-child(1){ |
| | | border: none; |
| | | }
|
| | | .icon {
|
| | | width: 80rpx;
|
| | | height: 80rpx; |
| | | height: 80rpx;
|
| | | margin-right: 24rpx;
|
| | | }
|
| | |
|
| | | .content {
|
| | | flex: 1; |
| | | color: #666666; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | .line{ |
| | | margin-bottom: 20rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | .btn{ |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | width: 180rpx; |
| | | height: 60rpx; |
| | | background: $primaryColor; |
| | | color: #fff; |
| | | font-size: 26rpx; |
| | | box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(0,104,255,0.3); |
| | | border-radius: 30rpx; |
| | | .saoma{ |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | margin-right: 8rpx; |
| | | } |
| | | } |
| | | &:nth-last-child(1){ |
| | | margin-bottom: 0; |
| | | } |
| | | } |
| | | .name_wrap{ |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | .name{ |
| | | display: flex; |
| | | align-items: flex-end; |
| | | font-weight: 600; |
| | | font-size: 34rpx; |
| | | color: #222222; |
| | | } |
| | | .status{ |
| | | color: $primaryColor; |
| | | } |
| | | .green{ |
| | | color: #0ADE79; |
| | | } |
| | | .gray{ |
| | | color: #999999; |
| | | } |
| | | flex: 1;
|
| | | color: #666666;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | justify-content: space-between;
|
| | |
|
| | | .line {
|
| | | margin-bottom: 20rpx;
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | align-items: center;
|
| | |
|
| | | .btn {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | width: 180rpx;
|
| | | height: 60rpx;
|
| | | background: $primaryColor;
|
| | | color: #fff;
|
| | | font-size: 26rpx;
|
| | | box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(0, 104, 255, 0.3);
|
| | | border-radius: 30rpx;
|
| | |
|
| | | .saoma {
|
| | | width: 28rpx;
|
| | | height: 28rpx;
|
| | | margin-right: 8rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | &:nth-last-child(1) {
|
| | | margin-bottom: 0;
|
| | | }
|
| | | }
|
| | |
|
| | | .name_wrap {
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | align-items: center;
|
| | |
|
| | | .name {
|
| | | display: flex;
|
| | | align-items: flex-end;
|
| | | font-weight: 600;
|
| | | font-size: 34rpx;
|
| | | color: #222222;
|
| | | }
|
| | |
|
| | | .status {
|
| | | color: $primaryColor;
|
| | | }
|
| | |
|
| | | .green {
|
| | | color: #0ADE79;
|
| | | }
|
| | |
|
| | | .gray {
|
| | | color: #999999;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | <u-icon name="arrow-right" color="#999999" size="15"></u-icon>
|
| | | </view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="item" v-if="param.areaType == 0">
|
| | | <view class="la">上门时间</view>
|
| | | <view class="line sel_wrap" @click="showTime = true">
|
| | | <view class="left" :class="param.getDate ? '' : 'placeholder9'">{{ param.getDate ? param.getDate : '请选择' }}
|
| | |
| | | <view class="line">位置类型:{{item.areaType == '0' ? '室内装修' : '公共区域'}}</view>
|
| | | <view class="line">工单分类:{{item.categoryName}}</view>
|
| | | <view class="line">上报时间:{{item.createDate}}</view>
|
| | | <view class="line">上门时间:{{item.getDate}}</view>
|
| | | <view class="line" v-if="item.getDate">上门时间:{{item.getDate}}</view>
|
| | | </view>
|
| | | </view>
|
| | | <view v-if="list.length == 0" class="empty_wrap">
|