Commit ea4bb3525f5b71f1dbbe45c707f549bf37c5304e

Authored by wesley88
1 parent eef82803

1

admin-web-master/src/api/newly.js
1 1 import request from '@/utils/request'
2 2 // import request from '@/utils/request2'
3   -
4   -
  3 +// 退租决算管理oa
  4 +export function generalBySurrenderTenancy(data) {
  5 + return request({
  6 + url: '/oaInterconnection/generalBySurrenderTenancy',
  7 + method: 'post',
  8 + data
  9 + })
  10 +}
  11 +// 退租决算管理修改
  12 +export function changeContractInformationedit(data) {
  13 + return request({
  14 + url: '/changeContractInformation/edit',
  15 + method: 'post',
  16 + data
  17 + })
  18 +}
5 19 // 退租决算管理
6 20 export function changeContractInformationqueryByPage(data) {
7 21 return request({
... ...
admin-web-master/src/components/buscha/busChanew.vue 0 → 100644
  1 +<template>
  2 + <div>
  3 + <div v-show="type == '1'">
  4 + <el-tabs v-model="xiangTab">
  5 + <el-tab-pane label="申请信息" name="one">
  6 + <div style="margin-top: 30px;" class="editcss">
  7 + <TitleWithCircle title="基础信息" />
  8 + <div style="padding: 20px;margin-top: 10px;">
  9 + <el-form :model="newinfo" ref="ruleForm" label-width="140px" class="demo-ruleForm">
  10 + <el-form-item label="类型" prop="contractType">
  11 + <div class="duiqi">{{newinfo.contractType=='0'?'退租':newinfo.contractType=='1'?'续租':'-'}}</div>
  12 + </el-form-item>
  13 + <el-form-item label="申请理由" prop="contractType">
  14 + <div class="duiqi">{{newinfo.reasonForApplication || '-'}}</div>
  15 + </el-form-item>
  16 + <el-form-item label="申请时间" prop="contractNumber">
  17 + <div class="duiqi">{{newinfo.applicationTime || '-'}}</div>
  18 + </el-form-item>
  19 + </el-form>
  20 + </div>
  21 + </div>
  22 + </el-tab-pane>
  23 + <el-tab-pane label="合同信息" name="first">
  24 + <div style="margin-top: 30px;" class="editcss">
  25 + <TitleWithCircle title="合同信息" />
  26 + <div style="padding: 20px;margin-top: 10px;">
  27 + <el-form :model="info" ref="ruleForm" label-width="140px" class="demo-ruleForm">
  28 + <el-row :gutter="20">
  29 + <el-col :span="item.width == '50%(半行)'?12:item.width == '100%(一行)'?24:12" v-for="(item,index) in list1" >
  30 + <el-form-item :label="item.name" prop="appendicesContract" v-if="item.type == '附件'">
  31 + <div class="duiqi greens" @click ="item.value?openfile(item.value):''">{{item.value?'查看详情':'暂无文件'}}</div>
  32 + </el-form-item>
  33 + <el-form-item :label="item.name" prop="paymentDay" v-else-if="item.type != '资源' && item.type != '商家'">
  34 + <div class="duiqi">{{item.value}}<span v-if="item.key == 'earnestMoney' || item.key == 'contractAmount'"> 元</span></div>
  35 + </el-form-item>
  36 + </el-col>
  37 + </el-row>
  38 + <el-form-item label="附件信息" prop="appendicesContract">
  39 + <div class="duiqi greens" @click ="info.appendicesContract?openfile(info.appendicesContract):''">{{info.appendicesContract?'查看详情':'暂无文件'}}</div>
  40 + </el-form-item>
  41 + </el-form>
  42 + </div>
  43 + <TitleWithCircle title="合同修订历史" />
  44 + <div style="padding: 20px;margin-top: 10px;">
  45 + <el-table :data="list"
  46 + :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}">
  47 +
  48 + <el-table-column label="类型">
  49 + <template slot-scope="scope">
  50 + {{scope.row.contractChangeReason}}
  51 +
  52 + </template>
  53 + </el-table-column>
  54 + <el-table-column label="操作时间">
  55 + <template slot-scope="scope">
  56 + {{scope.row.updateDate}}
  57 +
  58 + </template>
  59 + </el-table-column>
  60 + <el-table-column label="操作人">
  61 + <template slot-scope="scope">
  62 + {{scope.row.updateUser}}
  63 +
  64 + </template>
  65 + </el-table-column>
  66 + <el-table-column label="操作">
  67 + <template slot-scope="scope">
  68 + <div @click="open(scope.row)" class="tableBtn greens">查看</div>
  69 + </template>
  70 + </el-table-column>
  71 + </el-table>
  72 +
  73 + </div>
  74 + </div>
  75 + </el-tab-pane>
  76 + <el-tab-pane label="商家信息" name="second">
  77 + <div style="margin-top: 30px;" class="editcss">
  78 + <TitleWithCircle title="基础信息" />
  79 + <div style="padding: 20px;margin-top: 10px;">
  80 + <el-form :model="shop" ref="ruleForm" label-width="140px" class="demo-ruleForm">
  81 + <el-row :gutter="20">
  82 + <el-col :span="9">
  83 + <el-form-item label="姓名" prop="name">
  84 + <div class="duiqi">{{shop.name}}</div>
  85 + </el-form-item>
  86 + </el-col>
  87 + <el-col :span="9">
  88 + <el-form-item label="手机号" prop="phone">
  89 + <div class="duiqi">{{shop.phone}}</div>
  90 + </el-form-item>
  91 + </el-col>
  92 + </el-row>
  93 + <el-row :gutter="20">
  94 + <el-col :span="9">
  95 + <el-form-item label="证件类型" prop="idCardType">
  96 + <div class="duiqi">{{shop.idCardType}}</div>
  97 + </el-form-item>
  98 + </el-col>
  99 + <el-col :span="9">
  100 + <el-form-item label="身份证号码" prop="idCardNumber">
  101 + <div class="duiqi">{{shop.idCardNumber}}</div>
  102 + </el-form-item>
  103 + </el-col>
  104 + </el-row>
  105 + <el-form-item label="身份证照片(正)" prop="idCardFrontImage">
  106 + <!-- <div style="margin-top: 10px;">
  107 + <el-image style="width: 200px;" :src="$baseURL+shop.idCardFrontImage" fit="contain"></el-image>
  108 + </div> -->
  109 + <div style="display: flex;">
  110 + <allimg :src="shop.idCardFrontImage" fit="contain" style="width: 112px;height: 112px;border: 1px dotted #dcdfe6;border-radius: 2px;overflow: hidden;margin: 0 10px 10px 0;"/>
  111 + </div>
  112 + </el-form-item>
  113 + <el-form-item label="身份证照片(反)" prop="idCardBackImage">
  114 + <!-- <div style="margin-top: 10px;">
  115 + <el-image style="width: 200px;" :src="$baseURL+shop.idCardBackImage" fit="contain"></el-image>
  116 + </div> -->
  117 + <div style="display: flex;">
  118 + <allimg :src="shop.idCardBackImage" fit="contain" style="width: 112px;height: 112px;border: 1px dotted #dcdfe6;border-radius: 2px;overflow: hidden;margin: 0 10px 10px 0;"/>
  119 + </div>
  120 + </el-form-item>
  121 + </el-form>
  122 + </div>
  123 + </div>
  124 + </el-tab-pane>
  125 + <el-tab-pane label="商户租赁信息" name="third">
  126 + <div class="editcss">
  127 + <div>
  128 + <el-table :data="tableData"
  129 + :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}">
  130 + <el-table-column label="商铺名称">
  131 + <template slot-scope="scope">
  132 + {{scope.row.shopName ? scope.row.shopName : scope.row.advertisingName?scope.row.advertisingName:scope.row.venueName}}
  133 +
  134 + </template>
  135 + </el-table-column>
  136 + <el-table-column label="实际使用面积" >
  137 + <template slot-scope="scope">
  138 + {{scope.row.actualArea ? scope.row.actualArea : scope.row.actualUsableArea?scope.row.actualUsableArea:'-'}}
  139 +
  140 + </template>
  141 + </el-table-column>
  142 + <el-table-column label="类型" >
  143 + <template slot-scope="scope">
  144 + {{scope.row.shopName ? '商铺' : scope.row.advertisingType?scope.row.advertisingType:'场地'}}
  145 +
  146 + </template>
  147 + </el-table-column>
  148 + <!-- <el-table-column label="状态" min-width="150">
  149 + <template slot-scope="scope">
  150 + {{scope.row.cereContractInformation.tenantName}}
  151 +
  152 + </template>
  153 + </el-table-column> -->
  154 + <el-table-column label="操作" >
  155 + <template slot-scope="scope">
  156 + <div class="tableBtn greens" @click="details(scope.row)">查看</div>
  157 + </template>
  158 + </el-table-column>
  159 + </el-table>
  160 +
  161 + </div>
  162 + </div>
  163 + </el-tab-pane>
  164 + </el-tabs>
  165 + <div v-if="newinfo.status == '1' && issp == '2'" style="margin-top: 20px;">
  166 + <TitleWithCircle title="审核情况"/>
  167 + <div style="padding: 20px;">
  168 + <el-form :model="info" label-width="100px" class="demo-ruleForm">
  169 + <el-form-item label="状态">
  170 + <el-radio v-model="radio" label="2">通过</el-radio>
  171 + <el-radio v-model="radio" label="3">不通过</el-radio>
  172 + </el-form-item>
  173 + <el-form-item label="审核意见">
  174 + <el-input maxlength="200" show-word-limit rows="4" v-model="reviewComments" placeholder="请输入审核意见"
  175 + type="textarea" />
  176 + </el-form-item>
  177 + </el-form>
  178 + </div>
  179 + </div>
  180 + <div v-if="(newinfo.status == '2' || newinfo.status == '3')&& newinfo.isInterior == '1'" style="margin-top: 20px;">
  181 + <TitleWithCircle title="审核结果"/>
  182 + <div style="padding: 20px;">
  183 + <el-form :model="newinfo" label-width="100px" class="demo-ruleForm">
  184 + <el-form-item label="状态">
  185 + <div class="duiqi">{{newinfo.status=='2'?'已同意':newinfo.status=='3'?'已拒绝':'无'}}</div>
  186 + </el-form-item>
  187 + <el-form-item label="审核意见">
  188 + <div class="duiqi">{{newinfo.reviewComments || '无'}}</div>
  189 + </el-form-item>
  190 + </el-form>
  191 + </div>
  192 + </div>
  193 + <div>
  194 + <el-button v-if="newinfo.status == '1' && issp == '2'" @click="minSev"
  195 + style="background-color: #3F9B6A;color: #fff;">确定</el-button>
  196 + <el-button class="buttonHover"
  197 + style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;margin-top: 20px;"
  198 + @click="changetype">返回</el-button>
  199 + </div>
  200 + </div>
  201 + <div v-show="type == '2'">
  202 + <oneht ref="onhet"></oneht>
  203 + <div>
  204 + <el-button class="buttonHover"
  205 + style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;margin-top: 20px;"
  206 + @click="changetype">返回</el-button>
  207 + </div>
  208 + </div>
  209 + <div v-show="type == '3'">
  210 + <div v-if="detailstype == '商铺'">
  211 + <resourceCommodity :editbgid="detailsinfo" @removeonaction="removeonaction"></resourceCommodity>
  212 + </div>
  213 + <div v-if="detailstype == '广告位'">
  214 + <chakanmap :editbgid="detailsinfo" @removeonaction="removeonaction"></chakanmap>
  215 + </div>
  216 + <div v-if="detailstype == '场地'">
  217 + <chakancd :editbgid="detailsinfo" @removeonaction="removeonaction"></chakancd>
  218 + </div>
  219 + </div>
  220 +
  221 + </div>
  222 +</template>
  223 +
  224 +<script>
  225 + import oneht from "@/components/chakan/oneht";
  226 + import {
  227 + queryByContractcontractNumber
  228 + } from '../../api/commodityLease.js'
  229 + import {
  230 + businessListGetById
  231 + } from '../../api/business.js'
  232 + import TitleWithCircle from '@/components/top/index';
  233 + import {
  234 + cerePlatformMerchantinfo
  235 + } from '../../api/newly.js'
  236 + import resourceCommodity from '@/components/resourceCommodity/index'
  237 + import chakanmap from '@/components/chakan/map'
  238 + import allimg from '@/components/chakan/allimg.vue';
  239 + import chakancd from '@/components/chakan/cd'
  240 +
  241 + import {
  242 + changeContractInformationedit
  243 + } from '@/api/newly.js'
  244 + export default {
  245 + components: {
  246 + oneht,
  247 + TitleWithCircle,
  248 + chakancd,
  249 + chakanmap,
  250 + resourceCommodity,
  251 + allimg
  252 + },
  253 + props: {
  254 + info: {
  255 + type: Object,
  256 + default: function() {
  257 + return {}; // 返回一个空数组作为默认值
  258 + },
  259 + },
  260 + newinfo: {
  261 + type: Object,
  262 + default: function() {
  263 + return {}; // 返回一个空数组作为默认值
  264 + },
  265 + },
  266 + issp: {
  267 + type: String,
  268 + default: function() {
  269 + return '1';
  270 + },
  271 + },
  272 + },
  273 + data() {
  274 + return {
  275 + reviewComments:'',
  276 + radio: '2',
  277 + url:'',
  278 + type:'1',
  279 + tableData: [],
  280 + xiangTab: 'one',
  281 + siteIds: [],
  282 + list: [],
  283 + advIds: [],
  284 + shopIds: [],
  285 + shop: {},
  286 + newshop:{},
  287 + newinfo:{},
  288 + detailsinfo:{},
  289 + detailstype:'',
  290 + list1:[]
  291 + }
  292 + },
  293 + created() {
  294 + console.log(this.info)
  295 + this.list1 = JSON.parse(this.info.templateInformation)
  296 + console.log(this.list1)
  297 + this.url = process.env.VUE_APP_DOMAIN_PREFIX_1
  298 + queryByContractcontractNumber({
  299 + contractNumber: this.info.contractNumber
  300 + }).then(res => {
  301 + console.error(res)
  302 + // this.shop = res.data.shop
  303 + this.siteIds = res.data.siteIds
  304 + this.shopIds = res.data.shopIds
  305 + this.advIds = res.data.advIds
  306 + this.list = res.data.list
  307 + this.tableData = [...res.data.siteIds, ...res.data.shopIds, ...res.data.advIds]
  308 + })
  309 + cerePlatformMerchantinfo({id:this.info.relatedMerchants}).then(res => {
  310 + console.error(res)
  311 + this.shop = res.data
  312 + })
  313 + },
  314 + computed: {
  315 +
  316 + },
  317 + methods: {
  318 + minSev() {
  319 + changeContractInformationedit({
  320 + ...this.newinfo,
  321 + status: this.radio,
  322 + reviewComments: this.reviewComments?this.reviewComments:null
  323 + }).then(res => {
  324 + console.error(res)
  325 + if (res.code == 200) {
  326 + this.$message({
  327 + message: '处理成功',
  328 + type: 'success'
  329 + })
  330 + this.newinfo.status = this.radio
  331 + this.$emit('removeonaction', '1')
  332 + } else {
  333 + this.$message({
  334 + message: '处理失败',
  335 + type: 'error'
  336 + })
  337 + }
  338 + })
  339 + },
  340 + removeonaction() {
  341 + this.type = '1'
  342 + },
  343 + details(row) {
  344 + this.detailstype = row.shopName?'商铺':row.advertisingType?'广告位':'场地'
  345 + this.detailsinfo = row
  346 + this.type = '3'
  347 + },
  348 + openfile(e) {
  349 + if (e) {
  350 + const fullUrl = this.$baseURL + e;
  351 + try {
  352 + window.open(fullUrl, '_blank'); // 在新标签页中打开文件
  353 + } catch (error) {
  354 + console.error('打开文件失败:', error);
  355 + }
  356 + } else {
  357 + console.error('无文件可查看');
  358 + }
  359 + },
  360 + changetype(){
  361 + this.xiangTab= 'first'
  362 + if(this.type == '1'){
  363 + this.$emit('removeonaction', '1')
  364 + }else{
  365 + this.type = '1'
  366 + }
  367 + },
  368 + open(row) {
  369 + console.error(row)
  370 + this.type = '2'
  371 + this.$refs.onhet.open(row)
  372 + },
  373 + closeFn() {
  374 + this.$emit('change', false);
  375 + },
  376 + }
  377 + }
  378 +</script>
  379 +<style>
  380 + .el-form-item__label {
  381 + color: #a2a2a2;
  382 + }
  383 +
  384 + .greens {
  385 + color: #3F9B6A;
  386 + }
  387 +</style>
... ...
admin-web-master/src/main.js
... ... @@ -37,15 +37,15 @@ Vue.prototype.$hostUrl =`${window.location.protocol}//${window.location.host}/cd
37 37  
38 38 let host = window.location.host;
39 39 if(host === 'localhost:8080' || host === 'localhost:8081' || host === 'localhost:9528'|| host === '192.168.31.45:9528'|| host === 'localhost:9529' ) {
40   - Vue.prototype.$baseURL ='https://jy.scjysm.asia:18086/cdwlMall'
41   - Vue.prototype.$fontBold = `https://jy.scjysm.asia:18086/cdwlMall/zsfwzxt/assets/Alibaba-PuHuiTi-Bold.ttf`
42   - Vue.prototype.$fontRegular = `https://jy.scjysm.asia:18086/cdwlMall/zsfwzxt/assets/Alibaba-PuHuiTi-Regular.ttf`
43   - Vue.prototype.$API = `https://jy.scjysm.asia:18086/cdwlMall/meserver/api`
  40 + // Vue.prototype.$baseURL ='https://jy.scjysm.asia:18086/cdwlMall'
  41 + // Vue.prototype.$fontBold = `https://jy.scjysm.asia:18086/cdwlMall/zsfwzxt/assets/Alibaba-PuHuiTi-Bold.ttf`
  42 + // Vue.prototype.$fontRegular = `https://jy.scjysm.asia:18086/cdwlMall/zsfwzxt/assets/Alibaba-PuHuiTi-Regular.ttf`
  43 + // Vue.prototype.$API = `https://jy.scjysm.asia:18086/cdwlMall/meserver/api`
44 44  
45   - // Vue.prototype.$baseURL ='https://zhgw-uat.028wlkj.com/cdwlMall'
46   - // Vue.prototype.$fontBold = `https://zhgw-uat.028wlkj.com/cdwlMall/zsfwzxt/assets/Alibaba-PuHuiTi-Bold.ttf`
47   - // Vue.prototype.$fontRegular = `https://zhgw-uat.028wlkj.com/cdwlMall/zsfwzxt/assets/Alibaba-PuHuiTi-Regular.ttf`
48   - // Vue.prototype.$API = `https://zhgw-uat.028wlkj.com/cdwlMall/meserver/api`
  45 + Vue.prototype.$baseURL ='https://zhgw-uat.028wlkj.com/cdwlMall'
  46 + Vue.prototype.$fontBold = `https://zhgw-uat.028wlkj.com/cdwlMall/zsfwzxt/assets/Alibaba-PuHuiTi-Bold.ttf`
  47 + Vue.prototype.$fontRegular = `https://zhgw-uat.028wlkj.com/cdwlMall/zsfwzxt/assets/Alibaba-PuHuiTi-Regular.ttf`
  48 + Vue.prototype.$API = `https://zhgw-uat.028wlkj.com/cdwlMall/meserver/api`
49 49 } else {
50 50 Vue.prototype.$API = `${window.location.protocol}//${window.location.host}/cdwlMall/meserver/api`
51 51 Vue.prototype.$baseURL =`${window.location.protocol}//${window.location.host}/cdwlMall`
... ...
admin-web-master/src/utils/request.js
... ... @@ -22,7 +22,7 @@ if(host === &#39;localhost:8080&#39; || host === &#39;localhost:8081&#39; || host === &#39;localhost
22 22 // baseURL = process.env.VUE_APP_DOMAIN_PREFIX_1;
23 23  
24 24  
25   - baseURL = 'http://128.10.249.23:9003';
  25 + baseURL = 'http://128.10.249.8:9003';
26 26  
27 27  
28 28 } else {
... ...
admin-web-master/src/views/shopRental/renewalMan/index copy.vue 0 → 100644
  1 +<template>
  2 + <div style="background-color:#f7f7f7;padding:10px 10px;">
  3 + <div class="zhuti" v-if="onaction == '1'">
  4 + <div style="height:58px;line-height:58px;">
  5 + <div style="color:#0006"> <span>商铺租赁服务</span> <span style="padding:0 5px;">></span> <span
  6 + style="color:#000000e6">续租管理</span></div>
  7 + </div>
  8 + <!-- 线上 -->
  9 + <div>
  10 + <!-- 搜索 -->
  11 + <div class="formSearch">
  12 + <el-form :inline="true" :model="pagequery">
  13 + <el-form-item label="合同名称">
  14 + <el-input v-model="pagequery.contractName" placeholder="请输入" style="width:168px;" />
  15 + </el-form-item>
  16 + </el-form>
  17 +
  18 + <div>
  19 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">查询
  20 + </el-button>
  21 + <el-button @click="resetting" class="buttonHover"
  22 + style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;">重置
  23 + </el-button>
  24 + </div>
  25 + </div>
  26 + <div style="margin-bottom: 20px;">
  27 + <el-button @click="openyujingSet()" style="background-color: #3F9B6A;color: #fff;padding:8px 15px;"
  28 + icon="el-icon-circle-plus-outline">预警设置</el-button>
  29 + <!-- <el-button @click="" style="background-color: #3F9B6A;color: #fff">批量导入</el-button> -->
  30 + </div>
  31 + <!-- 表格 -->
  32 +
  33 + <el-table :data="tableData"
  34 + :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}">
  35 + <el-table-column label="承租人名称">
  36 + <template slot-scope="scope">
  37 + {{scope.row.tenantName}}
  38 +
  39 + </template>
  40 + </el-table-column>
  41 + <el-table-column label="租赁类型">
  42 + <template slot-scope="scope">
  43 + {{scope.row.contractType}}
  44 +
  45 + </template>
  46 + </el-table-column>
  47 + <el-table-column label="租金/周期">
  48 + <template slot-scope="scope">
  49 + {{scope.row.contractAmount}} / {{scope.row.paymentCycle}}
  50 +
  51 + </template>
  52 + </el-table-column>
  53 + <el-table-column label="合同编号">
  54 + <template slot-scope="scope">
  55 + {{scope.row.contractNumber}}
  56 +
  57 + </template>
  58 + </el-table-column>
  59 + <el-table-column label="租赁起止时间">
  60 + <template slot-scope="scope">
  61 + {{scope.row.contractSigningDate}}至{{scope.row.contractTerminationDate}}
  62 +
  63 + </template>
  64 + </el-table-column>
  65 + <el-table-column label="到期天数">
  66 + <template slot-scope="scope">
  67 + {{ calculateDaysUntilExpiration(scope.row.contractTerminationDate)}}
  68 +
  69 + </template>
  70 + </el-table-column>
  71 + <el-table-column label="操作" fixed="right">
  72 + <template slot-scope="scope">
  73 + <div @click="details(scope.row)" class="tableBtn greens">查看</div>
  74 + <!-- <div @click="addgzd(scope.row)" class="tableBtn greens">发送提醒</div> -->
  75 + </template>
  76 + </el-table-column>
  77 + </el-table>
  78 + <div style="display: flex;justify-content: space-between;" class="bom">
  79 + <div style="font-size: 14px;">共 <span style="color: #3F9B6A;">{{total}}</span> 项数据</div>
  80 + <el-pagination :current-page="pagequery.pageNumber+1" :page-sizes="[10, 20, 50, 100]" :page-size="10"
  81 + background small layout="prev, pager, next" :total="total" @size-change="handleSizeChange"
  82 + @current-change="handleCurrentChange">
  83 + </el-pagination>
  84 + </div>
  85 +
  86 + </div>
  87 +
  88 + </div>
  89 +
  90 +
  91 +
  92 +
  93 +
  94 +
  95 + <el-dialog title="预警设置" :visible.sync="yujingSet" style="padding: 0;" width="60%" center :close-on-click-modal="false" :show-close="false" top="20vh">
  96 + <div>
  97 + <div style="margin-bottom: 20px;">
  98 + <el-form ref="form" :model="zhong" label-width="120px">
  99 + <el-form-item label="合同剩余天数">
  100 + <el-input v-model="zhong.contractExpirationDays"></el-input>
  101 + </el-form-item>
  102 + <el-form-item label="提醒内容">
  103 + <wang-editor v-model="zhong.reminderContent" ref="editor" :height="200"></wang-editor>
  104 + </el-form-item>
  105 +
  106 +
  107 +
  108 + </el-form>
  109 +
  110 + </div>
  111 + <div style="display: flex;justify-content: flex-end;">
  112 + <el-button @click="yuclose" class="buttonHover"
  113 + style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;">返回</el-button>
  114 + <el-button @click="yuChenk" style="background-color: #3F9B6A;color: #fff">确定</el-button>
  115 + </div>
  116 + </div>
  117 + </el-dialog>
  118 +
  119 + <div class="zhuti" v-if="onaction == '3'">
  120 + <div style="height:58px;line-height:58px;">
  121 + <div style="color:#0006"> <span>出租管理</span> <span style="padding:0 5px;">></span> <span
  122 + style="color:#000000e6">查看</span></div>
  123 + </div>
  124 + <div>
  125 + <busCha :info="detailsinfo" @removeonaction="removeonaction"></busCha>
  126 + </div>
  127 + <!-- <div>
  128 + <el-button class="buttonHover"
  129 + style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;margin-top: 20px;"
  130 + @click="removeonaction('1')">返回</el-button>
  131 + </div> -->
  132 + </div>
  133 +
  134 + </div>
  135 + <!-- </div> -->
  136 +
  137 +</template>
  138 +
  139 +<script>
  140 + import {
  141 + contractRenewalReminder,
  142 + } from '@/api/newly.js'
  143 + import {
  144 + cereReminderSet,
  145 + cereReminderSetedit
  146 + } from '../../../api/commodityLease.js'
  147 + // import add from './add'
  148 + import busCha from '../../../components/buscha/busCha'
  149 + import wangEditor from "@/components/editor/index"
  150 + export default {
  151 + data() {
  152 + return {
  153 + zhong: {
  154 +
  155 + },
  156 + yujingSet: false,
  157 + detailsinfo: {},
  158 + pagequery: {
  159 + pageNumber: 0,
  160 + pageSize: 10,
  161 + dataStatus:'1',
  162 + contractName: ''
  163 + },
  164 + tableData: [],
  165 + total: 0,
  166 + onaction: '1',
  167 + info: {}
  168 + }
  169 + },
  170 + components: {
  171 + busCha,
  172 + wangEditor
  173 + },
  174 + created() {
  175 + this.getAll()
  176 +
  177 + },
  178 + methods: {
  179 +
  180 + calculateDaysUntilExpiration(endDateString) {
  181 + const endDate = new Date(endDateString);
  182 + const today = new Date();
  183 + const timeDifference = endDate - today;
  184 + const daysDifference = Math.ceil(timeDifference / (1000 * 60 * 60 * 24));
  185 + return daysDifference >= 0 ? daysDifference : '已过期';
  186 + },
  187 +
  188 + yuclose() {
  189 + this.yujingSet = false
  190 + },
  191 + yuChenk() {
  192 + console.error(this.zhong)
  193 + cereReminderSetedit(this.zhong).then(res => {
  194 + console.error(res)
  195 + if (res.code == 200) {
  196 + this.$message({
  197 + message: '预警设置成功',
  198 + type: 'success'
  199 + })
  200 + this.yujingSet = false
  201 + } else {
  202 + this.$message({
  203 + message: '预警设置失败',
  204 + type: 'error'
  205 + })
  206 + }
  207 + })
  208 +
  209 + },
  210 + openyujingSet() {
  211 + cereReminderSet({
  212 + reminderType: '2'
  213 + }).then(res => {
  214 + console.error(res)
  215 + this.zhong = res.data
  216 + })
  217 + this.yujingSet = true
  218 + },
  219 + addgzd(row) {
  220 + this.detailsinfo = row
  221 + this.onaction = '2'
  222 + },
  223 + details(row) {
  224 + this.detailsinfo = row
  225 + this.onaction = '3'
  226 + },
  227 + biangeng(row) {
  228 + alert(`合同变更 - 店铺ID: ${row.id}`);
  229 + },
  230 + xuyue(row) {
  231 + alert(`合同续约 - 店铺ID: ${row.id}`);
  232 + },
  233 + zhongzhi(row) {
  234 + alert(`合同终止 - 店铺ID: ${row.id}`);
  235 + },
  236 + async getAll() {
  237 + const res = await contractRenewalReminder(this.pagequery)
  238 + this.tableData = res.data.content
  239 + this.total = res.data.totalElements
  240 + },
  241 + removeonaction(e) {
  242 + console.error(e)
  243 + this.onaction = e
  244 + },
  245 + handleCurrentChange(val) {
  246 + this.pagequery.pageNumber = val - 1
  247 + this.getAll()
  248 + },
  249 + handleSizeChange(val) {
  250 + this.pagequery.pageSize = val
  251 + },
  252 + // 查询按钮
  253 + async onSubmit() {
  254 + this.pagequery.pageNumber = 0
  255 + this.getAll()
  256 + },
  257 + //重置按钮
  258 + resetting() {
  259 + this.pagequery = {
  260 + pageNumber: 0,
  261 + pageSize: 10,
  262 + dataStatus:'1',
  263 + contractName: ''
  264 + },
  265 + this.getAll()
  266 + },
  267 + }
  268 +
  269 + }
  270 +</script>
  271 +
  272 +<style scoped>
  273 + .zhuti {
  274 + padding: 0 20px 20px 20px;
  275 + min-height: calc(100vh - 50px - 20px);
  276 + background-color: #Fff;
  277 +
  278 + }
  279 + .chengeXia{
  280 + border-bottom: 6px solid #3F9B6A;padding-bottom: 4px;color: #3F9B6A;
  281 + }
  282 +
  283 + /deep/ .el-form-item__content {
  284 + line-height: 0;
  285 + }
  286 +
  287 +
  288 +
  289 + .formSearch {
  290 + display: flex;
  291 + width: 100%;
  292 + font-size: 14px;
  293 + justify-content: space-between;
  294 + padding-bottom: 10px;
  295 +
  296 + }
  297 +
  298 + .greens {
  299 + color: #3F9B6A;
  300 + }
  301 +
  302 + /deep/ .el-table__row {
  303 + font-size: 14px;
  304 + color:#000000e6;
  305 + height:42px;
  306 + }
  307 +
  308 + .fenye {
  309 + margin-top: 20px;
  310 + display: flex;
  311 + justify-content: flex-end;
  312 + }
  313 +
  314 + /deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
  315 + background-color: #3F9B6A;
  316 + }
  317 +
  318 + .el-row {
  319 + margin-bottom: 20px;
  320 +
  321 + &:last-child {
  322 + margin-bottom: 0;
  323 + }
  324 + }
  325 +
  326 + .el-col {
  327 + border-radius: 4px;
  328 + }
  329 +
  330 + .bg-purple-dark {
  331 + background: #99a9bf;
  332 + }
  333 +
  334 + .bg-purple {
  335 + background: #d3dce6;
  336 + }
  337 +
  338 + .bg-purple-light {
  339 + background: #e5e9f2;
  340 + }
  341 +
  342 + .grid-content {
  343 + border-radius: 4px;
  344 + min-height: 36px;
  345 + }
  346 +
  347 + .row-bg {
  348 + padding: 10px 0;
  349 + background-color: #f9fafc;
  350 + }
  351 +
  352 + /deep/ .bg-purple[data-v-0e3fe4ec] {
  353 + background: #fff;
  354 + height: 50px;
  355 + }
  356 + /deep/ .bg-purple[data-v-3bebae82]{
  357 + background: #fff;
  358 + height: 50px;
  359 + }
  360 +
  361 +::v-deep .bg-purple{
  362 + background: #fff;
  363 + height: 50px;
  364 + }
  365 + /deep/ .el-form--label-top .el-form-item__label {
  366 + padding: 0;
  367 + }
  368 +::v-deep .el-form-item{
  369 + margin-bottom:16px;
  370 +}
  371 + .device-form .el-form-item__label::after {
  372 + content: "*";
  373 + color: #1A1A1A;
  374 + margin-left: 5px;
  375 + font-size: 16px;
  376 + }
  377 +
  378 +
  379 + ::v-deep .el-dialog__wrapper {
  380 + .el-dialog__header {
  381 + background-color: #FAFAFA;
  382 + }
  383 + }
  384 + ::v-deep .el-input__inner:focus {
  385 + border: #3F9B6A 1px solid;
  386 + }
  387 + .dialog-footer {
  388 + display: flex;
  389 + justify-content: flex-end;
  390 + border-top: solid rgba(209, 209, 209, 0.2) 2px;
  391 + padding-top: 20px;
  392 + }
  393 + ::v-deep .el-input__inner:focus {
  394 + border: #3F9B6A 1px solid;
  395 + }
  396 + ::v-deep .el-input__inner:hover {
  397 + border: #3F9B6A 1px solid;
  398 + }
  399 + ::v-deep .el-select .el-input.is-focus .el-input__inner{
  400 + border-color:#3F9B6A
  401 + }
  402 +::v-deep .btn .el-button:focus,
  403 +.el-button:hover {
  404 + border: 1px solid #3F9B6A;
  405 +}
  406 +.el-select-dropdown__item.selected{
  407 + color: #3F9B6A;
  408 +}
  409 +
  410 +.el-pagination__sizes .el-input .el-input__inner:hover{
  411 + border-color: #3F9B6A;
  412 +}
  413 +::v-deep .el-dialog__wrapper{
  414 +
  415 + .dialog_css{
  416 + margin-right: 12px;
  417 + margin-top:61px !important;
  418 + .el-dialog__title {
  419 + font-size: 16px !important;
  420 + font-weight: 600;
  421 + color: #000;
  422 + }
  423 + }
  424 + .diaslog_zhong{
  425 + margin-left: 20%;
  426 + margin-top:61px !important;
  427 + }
  428 +
  429 +}
  430 + ::v-deep .diaslog_zhong{
  431 + margin-left: 20%;
  432 + margin-top:61px !important;
  433 + .el-dialog__header{
  434 + background-color:#fff;
  435 + border-bottom:1px solid #EFEFEF;
  436 + .el-dialog__title{
  437 + font-size: 14px;
  438 + color: #000000e6;
  439 + }
  440 + }
  441 + .el-dialog__body{
  442 + padding:10px 20px 30px 20px
  443 + }
  444 + }
  445 +
  446 + /deep/ .el-table_1_column_8 .hetong{
  447 + color:#7DBB9A;
  448 + text-decoration: underline;
  449 +}
  450 +/deep/ .first-column-bg {
  451 + background-color: #FAFAFA !important;
  452 + }
  453 +
  454 +.el-table tr{
  455 + height:56px;
  456 +}
  457 +
  458 +::v-deep .table3{
  459 + .el-table__empty-block{
  460 + display:none;
  461 + }
  462 +}
  463 +::v-deep .textarea{
  464 + width: 85%;
  465 + .el-textarea__inner{
  466 + width: 100%;
  467 + }
  468 +}
  469 +::v-deep .el-button--mini{
  470 + padding: 7px 10px;
  471 +}
  472 +::v-deep .pass_input{
  473 + width: 100%;
  474 + .el-input__inner {
  475 + border: none;
  476 + padding:0;
  477 + }
  478 + }
  479 +::v-deep .pass_select{
  480 + width: 100%;
  481 + .el-input__inner {
  482 + border: none;
  483 + padding:0;
  484 + }
  485 + .el-icon-arrow-up:before{
  486 + content:''
  487 + }
  488 +
  489 +}
  490 + /deep/ .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{
  491 + background-color: #fff;
  492 +}
  493 +
  494 +
  495 +</style>
  496 +<style lang="scss" scoped>
  497 + ::v-deep .bian_css{
  498 + .el-dialog__header{
  499 + padding:0px;
  500 + }
  501 + }
  502 + ::v-deep .buttonHover:hover{
  503 + color:#3f9b6a !important;
  504 + border-color: #c5e1d2 !important;
  505 + background-color: #ecf5f0 !important;
  506 + outline: none;
  507 + }
  508 + ::v-deep .el-pagination__total{
  509 + position: absolute;
  510 + left: 33px;
  511 + }
  512 +</style>
  513 +
... ...
admin-web-master/src/views/shopRental/renewalMan/index.vue
... ... @@ -3,18 +3,26 @@
3 3 <div class="zhuti" v-if="onaction == '1'">
4 4 <div style="height:58px;line-height:58px;">
5 5 <div style="color:#0006"> <span>商铺租赁服务</span> <span style="padding:0 5px;">></span> <span
6   - style="color:#000000e6">续租管理</span></div>
  6 + style="color:#000000e6">退租决算管理</span></div>
7 7 </div>
8 8 <!-- 线上 -->
9 9 <div>
10 10 <!-- 搜索 -->
11 11 <div class="formSearch">
12 12 <el-form :inline="true" :model="pagequery">
13   - <el-form-item label="合同名称">
  13 + <!-- <el-form-item label="合同名称">
14 14 <el-input v-model="pagequery.contractName" placeholder="请输入" style="width:168px;" />
15 15 </el-form-item>
  16 + <el-form-item label="合同状态" prop="status">
  17 + <el-select v-model="pagequery.status" clearable placeholder="请选择" style="width: 168px;margin-right: 15px">
  18 + <el-option label="使用中" value="1"></el-option>
  19 + <el-option label="往期合同" value="2"></el-option>
  20 + <el-option label="已终止" value="3"></el-option>
  21 +
  22 + </el-select>
  23 + </el-form-item> -->
16 24 </el-form>
17   -
  25 +
18 26 <div>
19 27 <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">查询
20 28 </el-button>
... ... @@ -24,54 +32,55 @@
24 32 </div>
25 33 </div>
26 34 <div style="margin-bottom: 20px;">
27   - <el-button @click="openyujingSet()" style="background-color: #3F9B6A;color: #fff;padding:8px 15px;"
28   - icon="el-icon-circle-plus-outline">预警设置</el-button>
29   - <!-- <el-button @click="" style="background-color: #3F9B6A;color: #fff">批量导入</el-button> -->
30 35 </div>
31 36 <!-- 表格 -->
32   -
33 37 <el-table :data="tableData"
34 38 :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}">
35 39 <el-table-column label="承租人名称">
36 40 <template slot-scope="scope">
37   - {{scope.row.tenantName}}
38   -
  41 + {{scope.row.cereContractInformation.tenantName}}
39 42 </template>
40 43 </el-table-column>
41 44 <el-table-column label="租赁类型">
42 45 <template slot-scope="scope">
43   - {{scope.row.contractType}}
44   -
  46 + {{scope.row.cereContractInformation.contractType}}
45 47 </template>
46 48 </el-table-column>
47   - <el-table-column label="租金/周期">
  49 + <el-table-column label="手机号">
48 50 <template slot-scope="scope">
49   - {{scope.row.contractAmount}} / {{scope.row.paymentCycle}}
50   -
  51 + {{scope.row.cereContractInformation.tenantTelephone}}
51 52 </template>
52 53 </el-table-column>
53   - <el-table-column label="合同编号">
  54 + <el-table-column label="资源名称">
54 55 <template slot-scope="scope">
55   - {{scope.row.contractNumber}}
56   -
  56 + {{scope.row.cereContractInformation.cereBasicInformationShop.shopName || scope.row.cereContractInformation.cereAdvertisingInformation.advertisingName || scope.row.cereContractInformation.cereBasicInformationVenue.venueName}}
57 57 </template>
58 58 </el-table-column>
59 59 <el-table-column label="租赁起止时间">
60 60 <template slot-scope="scope">
61   - {{scope.row.contractSigningDate}}至{{scope.row.contractTerminationDate}}
62   -
  61 + {{scope.row.cereContractInformation.contractSigningDate}}至{{scope.row.cereContractInformation.contractTerminationDate}}
63 62 </template>
64 63 </el-table-column>
65   - <el-table-column label="到期天数">
  64 + <el-table-column label="申请时间">
66 65 <template slot-scope="scope">
67   - {{ calculateDaysUntilExpiration(scope.row.contractTerminationDate)}}
68   -
  66 + {{scope.row.createTime}}
69 67 </template>
70 68 </el-table-column>
71   - <el-table-column label="操作" fixed="right">
  69 + <el-table-column prop="status" label="状态">
72 70 <template slot-scope="scope">
73   - <div @click="details(scope.row)" class="tableBtn greens">查看</div>
74   - <!-- <div @click="addgzd(scope.row)" class="tableBtn greens">发送提醒</div> -->
  71 + <span v-if='scope.row.status == 1'>待审核</span>
  72 + <span v-else-if='scope.row.status == 2'>已同意</span>
  73 + <span v-else-if='scope.row.status == 3'>已拒绝</span>
  74 + <span v-else>待发起</span>
  75 + </template>
  76 + </el-table-column>
  77 + <el-table-column label="操作" min-width="150" fixed="right">
  78 + <template slot-scope="scope">
  79 + <div @click="details(scope.row,'1')" class="tableBtn greens">查看</div>
  80 + <!-- <div v-if='scope.row.status == 2' @click="addgzd(scope.row)" class="tableBtn greens">生成退租告知单</div> -->
  81 + <div v-if='scope.row.status == 1 && scope.row.isInterior == 1' @click="details(scope.row,'2')" class="tableBtn greens">审核</div>
  82 + <div v-if="scope.row.status == null || scope.row.status == '0'" @click="remove(scope.row)" class="tableBtn greens">内部审核</div>
  83 + <div v-if="scope.row.status == null || scope.row.status == '0'" @click="openOAitem(scope.row)" class="tableBtn greens">OA审核</div>
75 84 </template>
76 85 </el-table-column>
77 86 </el-table>
... ... @@ -92,37 +101,23 @@
92 101  
93 102  
94 103  
95   - <el-dialog title="预警设置" :visible.sync="yujingSet" style="padding: 0;" width="60%" center :close-on-click-modal="false" :show-close="false" top="20vh">
96   - <div>
97   - <div style="margin-bottom: 20px;">
98   - <el-form ref="form" :model="zhong" label-width="120px">
99   - <el-form-item label="合同剩余天数">
100   - <el-input v-model="zhong.contractExpirationDays"></el-input>
101   - </el-form-item>
102   - <el-form-item label="提醒内容">
103   - <wang-editor v-model="zhong.reminderContent" ref="editor" :height="200"></wang-editor>
104   - </el-form-item>
105   -
106   -
107   -
108   - </el-form>
109   -
110   - </div>
111   - <div style="display: flex;justify-content: flex-end;">
112   - <el-button @click="yuclose" class="buttonHover"
113   - style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;">返回</el-button>
114   - <el-button @click="yuChenk" style="background-color: #3F9B6A;color: #fff">确定</el-button>
115   - </div>
  104 + <div class="zhuti" v-if="onaction == '2'">
  105 + <div style="height:58px;line-height:58px;">
  106 + <div style="color:#0006"> <span>退租决算管理</span> <span style="padding:0 5px;">></span> <span
  107 + style="color:#000000e6">新增</span></div>
116 108 </div>
117   - </el-dialog>
118 109  
  110 + <div style="padding: 20px 20px 20px 0;">
  111 + <add :info="detailsinfo" @removeonaction="removeonaction"></add>
  112 + </div>
  113 + </div>
119 114 <div class="zhuti" v-if="onaction == '3'">
120 115 <div style="height:58px;line-height:58px;">
121   - <div style="color:#0006"> <span>出租管理</span> <span style="padding:0 5px;">></span> <span
  116 + <div style="color:#0006"> <span>退租决算管理</span> <span style="padding:0 5px;">></span> <span
122 117 style="color:#000000e6">查看</span></div>
123 118 </div>
124 119 <div>
125   - <busCha :info="detailsinfo" @removeonaction="removeonaction"></busCha>
  120 + <busCha :issp="issp" :info="detailsinfo.cereContractInformation" :newinfo="detailsinfo" @removeonaction="removeonaction"></busCha>
126 121 </div>
127 122 <!-- <div>
128 123 <el-button class="buttonHover"
... ... @@ -130,117 +125,316 @@
130 125 @click="removeonaction('1')">返回</el-button>
131 126 </div> -->
132 127 </div>
  128 + <div class="zhuti" v-if="onaction == '4'">
  129 + <div style="height:58px;line-height:58px;">
  130 + <div style="color:#0006"> <span>退租决算管理</span> <span style="padding:0 5px;">></span> <span
  131 + style="color:#000000e6">{{contractChangeReason}}</span></div>
  132 + </div>
133 133  
  134 + <div style="padding: 20px 20px 20px 0;">
  135 + <!-- <addremove :info="detailsinfo" :contractChangeReason="contractChangeReason" @removeonaction="removeonaction">
  136 + </addremove> -->
  137 + <!-- <add :info="detailsinfo" :contractChangeReason="contractChangeReason" @removeonaction="removeonaction"></add> -->
  138 + </div>
  139 + </div>
  140 + <el-dialog :visible.sync="openoa" title="OA" width="65%" append-to-body center :close-on-click-modal="false"
  141 + :close-on-press-escape="false" :show-close="false">
  142 + <el-form v-if="openoa" style="padding-right: 50px;padding-top: 20px;" :model="ruleForm" :rules="rulesoa" ref="oaForm" label-width="130px" class="demo-ruleForm">
  143 + <el-form-item label="审核人" prop="reviewers">
  144 + <el-select v-model="ruleForm.reviewers" placeholder="请选择" style="width: 100%;">
  145 + <el-option label="陈阳" value="1858710592190291968"></el-option>
  146 + </el-select>
  147 + </el-form-item>
  148 +
  149 + </el-form>
  150 + <div style="display: flex; justify-content: flex-end; align-items: center;padding: 20px 50px;">
  151 + <el-button @click="openoa =false" class="buttonHover"
  152 + style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;">取消</el-button>
  153 + <el-button @click="OA" style="background-color: #3F9B6A;color: #fff;">确定</el-button>
  154 + </div>
  155 + </el-dialog>
134 156 </div>
135   - <!-- </div> -->
  157 +
136 158  
137 159 </template>
138 160  
139 161 <script>
140   - import {
141   - contractRenewalReminder,
  162 + import {
  163 + changeContractInformationqueryByPage,changeContractInformationedit,generalBySurrenderTenancy
142 164 } from '@/api/newly.js'
143 165 import {
144   - cereReminderSet,
145   - cereReminderSetedit
146   - } from '../../../api/commodityLease.js'
147   - // import add from './add'
148   - import busCha from '../../../components/buscha/busCha'
149   - import wangEditor from "@/components/editor/index"
  166 + contractGetAllnew,
  167 + edit,
  168 + editById
  169 + } from '@/api/manage.js'
  170 +// import add from './add'
  171 + import addremove from '@/components/add/addremoveht.vue'
  172 + import busCha from '@/components/buscha/busChanew'
  173 + import {
  174 + cereContractInformation
  175 + } from '@/api/commodityLease.js'
  176 + import {
  177 + modifyResourceStatus,general
  178 + } from '@/api/newly.js'
  179 + import axios from 'axios'
150 180 export default {
151 181 data() {
152 182 return {
153   - zhong: {
154   -
  183 + issp:'1',
  184 + rulesoa: {
  185 + reviewers: [{
  186 + required: true,
  187 + message: '请选择审核人',
  188 + trigger: 'blur'
  189 + }, ],
155 190 },
156   - yujingSet: false,
  191 + ruleForm:{
  192 + reviewers:""
  193 + },
  194 + openoa:false,
  195 + contractChangeReason: '',
157 196 detailsinfo: {},
158 197 pagequery: {
  198 + // status:'1',
159 199 pageNumber: 0,
160 200 pageSize: 10,
161   - dataStatus:'1',
  201 + contractType:'1',
162 202 contractName: ''
163 203 },
164 204 tableData: [],
165 205 total: 0,
166 206 onaction: '1',
167   - info: {}
  207 + formInline: {},
  208 + oainfo:{}
168 209 }
169 210 },
170 211 components: {
  212 + // add,
171 213 busCha,
172   - wangEditor
  214 + addremove
173 215 },
174 216 created() {
175 217 this.getAll()
176   -
177 218 },
178 219 methods: {
179   -
180   - calculateDaysUntilExpiration(endDateString) {
181   - const endDate = new Date(endDateString);
182   - const today = new Date();
183   - const timeDifference = endDate - today;
184   - const daysDifference = Math.ceil(timeDifference / (1000 * 60 * 60 * 24));
185   - return daysDifference >= 0 ? daysDifference : '已过期';
186   - },
187   -
188   - yuclose() {
189   - this.yujingSet = false
  220 + addgzd(row) {
  221 + this.detailsinfo = row
  222 + this.onaction = '2'
  223 + },
  224 + remove(row) {
  225 + let that = this
  226 + this.$confirm('是否确定内部审核吗?', '提示', {
  227 + confirmButtonText: '确定',
  228 + cancelButtonText: '取消',
  229 + type: 'warning'
  230 + }).then(() => {
  231 + changeContractInformationedit({
  232 + ...row,
  233 + isInterior:'1',
  234 + status: '1',
  235 + }).then(res => {
  236 + console.error(res)
  237 + if (res.code == 200) {
  238 + this.$message({
  239 + message: '处理成功',
  240 + type: 'success'
  241 + })
  242 + this.resetting()
  243 +
  244 + } else {
  245 + this.$message({
  246 + message: res.msg,
  247 + type: 'error'
  248 + })
  249 + }
  250 +
  251 + })
  252 + })
  253 + },
  254 + openOAitem(row){
  255 + this.oainfo = row
  256 + this.ruleForm.reviewers = ''
  257 + this.openoa = true
  258 + },
  259 + downloadBase64File(base64String, fileName, mimeType) {
  260 + try {
  261 + // 将 Base64 字符串解码为二进制数据
  262 + const byteCharacters = atob(base64String);
  263 + const byteNumbers = new Array(byteCharacters.length);
  264 + for (let i = 0; i < byteCharacters.length; i++) {
  265 + byteNumbers[i] = byteCharacters.charCodeAt(i);
  266 + }
  267 + const byteArray = new Uint8Array(byteNumbers);
  268 +
  269 + // 创建 Blob 对象
  270 + const blob = new Blob([byteArray], { type: mimeType });
  271 +
  272 + // 生成下载链接并触发下载
  273 + const url = window.URL.createObjectURL(blob);
  274 + const link = document.createElement('a');
  275 + link.href = url;
  276 + link.setAttribute('download', fileName); // 设置下载文件名
  277 + document.body.appendChild(link);
  278 + link.click();
  279 +
  280 + // 清理生成的 URL 对象
  281 + window.URL.revokeObjectURL(url);
  282 + document.body.removeChild(link);
  283 +
  284 + console.log('文件下载成功:', fileName);
  285 + } catch (error) {
  286 + console.error('文件下载失败:', error);
  287 + }
190 288 },
191   - yuChenk() {
192   - console.error(this.zhong)
193   - cereReminderSetedit(this.zhong).then(res => {
194   - console.error(res)
195   - if (res.code == 200) {
  289 + async OA(){
  290 + // console.error(row)
  291 + let row = this.oainfo
  292 + await this.$refs.oaForm.validate((valid) => {
  293 +
  294 + })
  295 + if(!this.ruleForm.reviewers) {
  296 + return
  297 + }
  298 + const loading = this.$loading({
  299 + fullscreen: true
  300 + })
  301 + this.openoa = false
  302 + const response = await axios({
  303 + method: 'get',
  304 + url: this.$baseURL + row.cereContractInformation.appendicesContract, // 文件 URL
  305 + responseType: 'arraybuffer' // 指定响应类型为二进制数据
  306 + });
  307 + const file = new File([response.data], 'filename.txt', { type: 'text/plain' });
  308 + let fd = new FormData();
  309 + fd.append('files', file);
  310 + fd.append('reviewers', this.ruleForm.reviewers);
  311 + fd.append('fileNames', '合同.docx');
  312 + fd.append('title', `${row.cereContractInformation.contractName}退租审批`);
  313 + fd.append('changeContractInformationId', row.id);
  314 + // fd.append('sponsor', userData.user.id);
  315 + fd.append('sponsor', 11);
  316 + console.log(fd);
  317 +
  318 + generalBySurrenderTenancy(fd).then(res => {
  319 + console.log(res);
  320 + let data = JSON.parse(res.data)
  321 + if(data.code == '0'){
196 322 this.$message({
197   - message: '预警设置成功',
198   - type: 'success'
  323 + type: 'success',
  324 + message: '发起成功'
199 325 })
200   - this.yujingSet = false
  326 + loading.close();
  327 + this.resetting()
201 328 } else {
202 329 this.$message({
203   - message: '预警设置失败',
204   - type: 'error'
  330 + type: 'error',
  331 + message: data.message
205 332 })
206 333 }
207 334 })
  335 +
208 336  
209 337 },
210   - openyujingSet() {
211   - cereReminderSet({
212   - reminderType: '2'
213   - }).then(res => {
214   - console.error(res)
215   - this.zhong = res.data
216   - })
217   - this.yujingSet = true
  338 + gettime() {
  339 + // 获取当前时间
  340 + let currentTime = new Date();
  341 +
  342 + // 获取年份
  343 + let year = currentTime.getFullYear();
  344 +
  345 + // 获取月份(注意月份是从0开始计数的,所以需要加1)
  346 + let month = currentTime.getMonth() + 1;
  347 +
  348 + // 获取日期
  349 + let day = currentTime.getDate();
  350 +
  351 + // 获取小时
  352 + let hours = currentTime.getHours();
  353 +
  354 + // 获取分钟
  355 + let minutes = currentTime.getMinutes();
  356 +
  357 + // 获取秒数
  358 + let seconds = currentTime.getSeconds();
  359 +
  360 + // 获取毫秒数
  361 + let milliseconds = currentTime.getMilliseconds();
  362 +
  363 + // 格式化时间为 YYYY-MM-DD
  364 + let formattedDate = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
  365 +
  366 + // 格式化时间为 HH:MM:SS
  367 + let formattedTime =
  368 + `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
  369 +
  370 + // 格式化时间为 YYYY-MM-DD HH:MM:SS
  371 + let formattedDateTime = `${formattedDate} ${formattedTime}`;
  372 + return formattedDateTime
  373 +
218 374 },
219   - addgzd(row) {
220   - this.detailsinfo = row
221   - this.onaction = '2'
  375 + removeinfozz(row, e) {
  376 + let that = this
  377 + this.$confirm('确定要终止合同吗?', '提示', {
  378 + confirmButtonText: '确定',
  379 + cancelButtonText: '取消',
  380 + type: 'warning'
  381 + }).then(() => {
  382 + cereContractInformation({
  383 + ...row,
  384 + contractChangeReason: e,
  385 + status: '3',
  386 + originalContractCode: row.contractNumber,
  387 + updateDate: that.gettime(),
  388 + createDate: that.gettime(),
  389 + contractChangeTime: that.gettime(),
  390 + updateUser:localStorage.getItem('roleName')
  391 + }).then(res => {
  392 + console.error(res)
  393 + if (res.code == 200) {
  394 + this.$message({
  395 + message: '终止成功',
  396 + type: 'success'
  397 + })
  398 + let c1 = row.shopNumber
  399 + modifyResourceStatus({
  400 + resourcesId: c1,
  401 + status:"0"
  402 + }).then(res => {
  403 + console.error(res)
  404 + })
  405 + // this.$emit('removeonaction', '1')
  406 + this.getAll()
  407 + } else {
  408 + this.$message({
  409 + message: res.msg,
  410 + type: 'error'
  411 + })
  412 + }
  413 +
  414 + })
  415 + })
222 416 },
223   - details(row) {
  417 + details(row,e) {
  418 + this.issp = e
224 419 this.detailsinfo = row
225 420 this.onaction = '3'
226 421 },
227   - biangeng(row) {
228   - alert(`合同变更 - 店铺ID: ${row.id}`);
229   - },
230   - xuyue(row) {
231   - alert(`合同续约 - 店铺ID: ${row.id}`);
232   - },
233   - zhongzhi(row) {
234   - alert(`合同终止 - 店铺ID: ${row.id}`);
  422 + removeinfo(row, e) {
  423 + this.contractChangeReason = e
  424 + // console.error(this.contractChangeReason)
  425 + this.detailsinfo = row
  426 + this.onaction = '4'
235 427 },
236 428 async getAll() {
237   - const res = await contractRenewalReminder(this.pagequery)
  429 + const res = await changeContractInformationqueryByPage(this.pagequery)
238 430 this.tableData = res.data.content
239 431 this.total = res.data.totalElements
240 432 },
241 433 removeonaction(e) {
242 434 console.error(e)
243 435 this.onaction = e
  436 + this.pagequery.pageNumber = 0
  437 + this.getAll()
244 438 },
245 439 handleCurrentChange(val) {
246 440 this.pagequery.pageNumber = val - 1
... ... @@ -259,7 +453,8 @@
259 453 this.pagequery = {
260 454 pageNumber: 0,
261 455 pageSize: 10,
262   - dataStatus:'1',
  456 + status:'',
  457 + contractType:'1',
263 458 contractName: ''
264 459 },
265 460 this.getAll()
... ... @@ -270,29 +465,38 @@
270 465 </script>
271 466  
272 467 <style scoped>
  468 + .el-table {
  469 + /* height: calc(100vh - 330px); */
  470 + }
  471 +
273 472 .zhuti {
274   - padding: 0 20px 20px 20px;
  473 + padding: 0 20px 20px 20px;
275 474 min-height: calc(100vh - 50px - 20px);
276 475 background-color: #Fff;
277 476  
278 477 }
279   - .chengeXia{
280   - border-bottom: 6px solid #3F9B6A;padding-bottom: 4px;color: #3F9B6A;
  478 +
  479 + .chengeXia {
  480 + border-bottom: 6px solid #3F9B6A;
  481 + padding-bottom: 4px;
  482 + color: #3F9B6A;
281 483 }
282 484  
283   - /deep/ .el-form-item__content {
  485 + /* /deep/ .el-form-item__content {
284 486 line-height: 0;
285   - }
  487 + } */
286 488  
287   -
  489 + .tableBtn {
  490 + display: inline-block;
  491 + margin-right: 10px;
  492 + color: #ACACAC;
  493 + }
288 494  
289 495 .formSearch {
290 496 display: flex;
291 497 width: 100%;
292 498 font-size: 14px;
293 499 justify-content: space-between;
294   - padding-bottom: 10px;
295   -
296 500 }
297 501  
298 502 .greens {
... ... @@ -301,27 +505,21 @@
301 505  
302 506 /deep/ .el-table__row {
303 507 font-size: 14px;
304   - color:#000000e6;
305   - height:42px;
  508 + color: #000000e6;
  509 + height: 42px;
306 510 }
307 511  
308 512 .fenye {
309 513 margin-top: 20px;
310 514 display: flex;
311   - justify-content: flex-end;
  515 + justify-content: space-between;
312 516 }
313 517  
314 518 /deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
315 519 background-color: #3F9B6A;
316 520 }
317 521  
318   - .el-row {
319   - margin-bottom: 20px;
320 522  
321   - &:last-child {
322   - margin-bottom: 0;
323   - }
324   - }
325 523  
326 524 .el-col {
327 525 border-radius: 4px;
... ... @@ -353,161 +551,124 @@
353 551 background: #fff;
354 552 height: 50px;
355 553 }
356   - /deep/ .bg-purple[data-v-3bebae82]{
  554 +
  555 + /deep/ .bg-purple[data-v-3bebae82] {
357 556 background: #fff;
358 557 height: 50px;
359 558 }
360 559  
361   -::v-deep .bg-purple{
  560 + ::v-deep .bg-purple {
362 561 background: #fff;
363 562 height: 50px;
364 563 }
  564 +
365 565 /deep/ .el-form--label-top .el-form-item__label {
366 566 padding: 0;
367 567 }
368   -::v-deep .el-form-item{
369   - margin-bottom:16px;
370   -}
371   - .device-form .el-form-item__label::after {
372   - content: "*";
373   - color: #1A1A1A;
374   - margin-left: 5px;
375   - font-size: 16px;
376   - }
377   -
378 568  
379 569 ::v-deep .el-dialog__wrapper {
380 570 .el-dialog__header {
381   - background-color: #FAFAFA;
  571 + background-color: #fff;
382 572 }
383 573 }
384   - ::v-deep .el-input__inner:focus {
385   - border: #3F9B6A 1px solid;
386   - }
  574 +
  575 +
  576 +
387 577 .dialog-footer {
388 578 display: flex;
389 579 justify-content: flex-end;
390 580 border-top: solid rgba(209, 209, 209, 0.2) 2px;
391 581 padding-top: 20px;
392 582 }
393   - ::v-deep .el-input__inner:focus {
394   - border: #3F9B6A 1px solid;
395   - }
396   - ::v-deep .el-input__inner:hover {
397   - border: #3F9B6A 1px solid;
398   - }
399   - ::v-deep .el-select .el-input.is-focus .el-input__inner{
400   - border-color:#3F9B6A
401   - }
402   -::v-deep .btn .el-button:focus,
403   -.el-button:hover {
404   - border: 1px solid #3F9B6A;
405   -}
406   -.el-select-dropdown__item.selected{
  583 +
  584 +
  585 +
  586 +
  587 + .el-select-dropdown__item.selected {
407 588 color: #3F9B6A;
408   -}
  589 + }
  590 +
  591 + ::v-deep .el-dialog__title {
  592 + color: #000;
  593 + }
409 594  
410   -.el-pagination__sizes .el-input .el-input__inner:hover{
411   - border-color: #3F9B6A;
412   -}
413   -::v-deep .el-dialog__wrapper{
  595 + ::v-deep .el-dialog__wrapper {
414 596  
415   - .dialog_css{
  597 + .dialog_css {
416 598 margin-right: 12px;
417   - margin-top:61px !important;
418   - .el-dialog__title {
419   - font-size: 16px !important;
420   - font-weight: 600;
421   - color: #000;
422   - }
  599 + margin-top: 61px !important;
  600 +
  601 + }
  602 +
  603 + .diaslog_zhong {
  604 + margin-left: 222px;
  605 + margin-top: 61px !important;
  606 + }
  607 +
  608 + }
  609 +
  610 + /deep/ .el-table_1_column_8 .hetong {
  611 + color: #7DBB9A;
  612 + text-decoration: underline;
423 613 }
424   - .diaslog_zhong{
425   - margin-left: 20%;
426   - margin-top:61px !important;
427   - }
428   -
429   -}
430   - ::v-deep .diaslog_zhong{
431   - margin-left: 20%;
432   - margin-top:61px !important;
433   - .el-dialog__header{
434   - background-color:#fff;
435   - border-bottom:1px solid #EFEFEF;
436   - .el-dialog__title{
437   - font-size: 14px;
438   - color: #000000e6;
439   - }
440   - }
441   - .el-dialog__body{
442   - padding:10px 20px 30px 20px
443   - }
444   - }
445   -
446   - /deep/ .el-table_1_column_8 .hetong{
447   - color:#7DBB9A;
448   - text-decoration: underline;
449   -}
450   -/deep/ .first-column-bg {
  614 +
  615 + /deep/ .first-column-bg {
451 616 background-color: #FAFAFA !important;
452 617 }
453 618  
454   -.el-table tr{
455   - height:56px;
456   -}
  619 + .el-table tr {
  620 + height: 56px;
  621 + }
457 622  
458   -::v-deep .table3{
459   - .el-table__empty-block{
460   - display:none;
  623 + ::v-deep .table3 {
  624 + .el-table__empty-block {
  625 + display: none;
  626 + }
461 627 }
462   -}
463   -::v-deep .textarea{
464   - width: 85%;
465   - .el-textarea__inner{
466   - width: 100%;
  628 +
  629 + ::v-deep .textarea {
  630 + width: 85%;
  631 +
  632 + .el-textarea__inner {
  633 + width: 100%;
  634 + }
467 635 }
468   -}
469   -::v-deep .el-button--mini{
470   - padding: 7px 10px;
471   -}
472   -::v-deep .pass_input{
  636 +
  637 + ::v-deep .el-button--mini {
  638 + padding: 7px 10px;
  639 + }
  640 +
  641 + ::v-deep .pass_input {
473 642 width: 100%;
  643 +
474 644 .el-input__inner {
475 645 border: none;
476   - padding:0;
477   - }
478   - }
479   -::v-deep .pass_select{
480   - width: 100%;
481   - .el-input__inner {
482   - border: none;
483   - padding:0;
  646 + padding: 0;
484 647 }
485   - .el-icon-arrow-up:before{
486   - content:''
487 648 }
488 649  
489   -}
490   - /deep/ .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{
491   - background-color: #fff;
492   -}
  650 + ::v-deep .pass_select {
  651 + width: 100%;
493 652  
  653 + .el-input__inner {
  654 + border: none;
  655 + padding: 0;
  656 + }
494 657  
495   -</style>
496   -<style lang="scss" scoped>
497   - ::v-deep .bian_css{
498   - .el-dialog__header{
499   - padding:0px;
  658 + .el-icon-arrow-up:before {
  659 + content: ''
500 660 }
  661 +
501 662 }
502   - ::v-deep .buttonHover:hover{
503   - color:#3f9b6a !important;
504   - border-color: #c5e1d2 !important;
505   - background-color: #ecf5f0 !important;
506   - outline: none;
507   - }
508   - ::v-deep .el-pagination__total{
509   - position: absolute;
510   - left: 33px;
  663 +
  664 + /deep/ .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
  665 + background-color: #fff;
511 666 }
512 667 </style>
  668 +<style lang="scss" scoped>
  669 + ::v-deep .el-dialog__body {
  670 + padding: 0 0 !important;
  671 + }
513 672  
  673 +
  674 +</style>
... ...
admin-web-master/src/views/shopRental/rentTermination/index copy 3.vue 0 → 100644
  1 +<template>
  2 + <div style="background-color:#f7f7f7;padding:10px 10px;">
  3 + <div class="zhuti" v-if="onaction == '1'">
  4 + <div style="height:58px;line-height:58px;">
  5 + <div style="color:#0006"> <span>商铺租赁服务</span> <span style="padding:0 5px;">></span> <span
  6 + style="color:#000000e6">退租决算管理</span></div>
  7 + </div>
  8 + <!-- 线上 -->
  9 + <div>
  10 + <!-- 搜索 -->
  11 + <div class="formSearch">
  12 + <el-form :inline="true" :model="pagequery">
  13 + <el-form-item label="合同名称">
  14 + <el-input v-model="pagequery.contractName" placeholder="请输入" style="width:168px;" />
  15 + </el-form-item>
  16 + </el-form>
  17 +
  18 + <div>
  19 + <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">查询
  20 + </el-button>
  21 + <el-button @click="resetting" class="buttonHover"
  22 + style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;">重置
  23 + </el-button>
  24 + </div>
  25 + </div>
  26 + <!-- <div style="margin-bottom: 20px;">
  27 + <el-button @click="removeonaction('2')" style="background-color: #3F9B6A;color: #fff;padding:8px 15px;"
  28 + icon="el-icon-circle-plus-outline">新增</el-button>
  29 + <el-button @click="" style="background-color: #3F9B6A;color: #fff">批量导入</el-button>
  30 + </div> -->
  31 + <!-- 表格 -->
  32 +
  33 + <el-table :data="tableData"
  34 + :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}">
  35 + <el-table-column label="承租人名称">
  36 + <template slot-scope="scope">
  37 + {{scope.row.cereContractInformation.tenantName}}
  38 +
  39 + </template>
  40 + </el-table-column>
  41 + <el-table-column label="租赁类型">
  42 + <template slot-scope="scope">
  43 + {{scope.row.cereContractInformation.contractType}}
  44 +
  45 + </template>
  46 + </el-table-column>
  47 + <el-table-column label="手机号">
  48 + <template slot-scope="scope">
  49 + {{scope.row.cereContractInformation.tenantTelephone}}
  50 +
  51 + </template>
  52 + </el-table-column>
  53 + <el-table-column label="资源名称">
  54 + <template slot-scope="scope">
  55 + {{scope.row.cereContractInformation.cereBasicInformationShop.shopName || scope.row.cereContractInformation.cereAdvertisingInformation.advertisingName || scope.row.cereContractInformation.cereBasicInformationVenue.venueName}}
  56 +
  57 + </template>
  58 + </el-table-column>
  59 + <el-table-column label="租赁起止时间">
  60 + <template slot-scope="scope">
  61 + {{scope.row.cereContractInformation.contractSigningDate}}至{{scope.row.cereContractInformation.contractTerminationDate}}
  62 +
  63 + </template>
  64 + </el-table-column>
  65 + <el-table-column label="申请时间">
  66 + <template slot-scope="scope">
  67 + {{scope.row.createTime}}
  68 +
  69 + </template>
  70 + </el-table-column>
  71 + <el-table-column label="操作" fixed="right">
  72 + <template slot-scope="scope">
  73 + <div @click="details(scope.row)" class="tableBtn greens">查看</div>
  74 + <div @click="addgzd(scope.row)" class="tableBtn greens">生成退租告知单</div>
  75 + </template>
  76 + </el-table-column>
  77 + </el-table>
  78 + <div style="display: flex;justify-content: space-between;" class="bom">
  79 + <div style="font-size: 14px;">共 <span style="color: #3F9B6A;">{{total}}</span> 项数据</div>
  80 + <el-pagination :current-page="pagequery.pageNumber+1" :page-sizes="[10, 20, 50, 100]" :page-size="10" background
  81 + small layout="prev, pager, next" :total="total" @size-change="handleSizeChange"
  82 + @current-change="handleCurrentChange">
  83 + </el-pagination>
  84 + </div>
  85 +
  86 + </div>
  87 +
  88 + </div>
  89 +
  90 +
  91 +
  92 +
  93 +
  94 +
  95 + <div class="zhuti" v-if="onaction == '2'">
  96 + <div style="height:58px;line-height:58px;">
  97 + <div style="color:#0006"> <span>退租决算管理</span> <span style="padding:0 5px;">></span> <span
  98 + style="color:#000000e6">新增</span></div>
  99 + </div>
  100 +
  101 + <div style="padding: 20px 20px 20px 0;">
  102 + <add :info="detailsinfo" @removeonaction="removeonaction"></add>
  103 + </div>
  104 + </div>
  105 + <div class="zhuti" v-if="onaction == '3'">
  106 + <div style="height:58px;line-height:58px;">
  107 + <div style="color:#0006"> <span>退租决算管理</span> <span style="padding:0 5px;">></span> <span
  108 + style="color:#000000e6">查看</span></div>
  109 + </div>
  110 + <div>
  111 + <busCha :info="detailsinfo" @removeonaction="removeonaction"></busCha>
  112 + </div>
  113 + <!-- <div>
  114 + <el-button class="buttonHover"
  115 + style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;margin-top: 20px;"
  116 + @click="removeonaction('1')">返回</el-button>
  117 + </div> -->
  118 + </div>
  119 + </div>
  120 +
  121 +
  122 +</template>
  123 +
  124 +<script>
  125 + import {
  126 + changeContractInformationqueryByPage,
  127 + } from '@/api/newly.js'
  128 + import add from './add'
  129 + import busCha from '../../../components/buscha/busCha'
  130 + export default {
  131 + data() {
  132 + return {
  133 + detailsinfo:{},
  134 + pagequery: {
  135 + pageNumber: 0,
  136 + pageSize: 10,
  137 + contractName: '',
  138 + dataStatus:'1',
  139 + },
  140 + tableData: [],
  141 + total: 0,
  142 + onaction: '1',
  143 + info:{}
  144 + }
  145 + },
  146 + components: {
  147 + add,busCha
  148 + },
  149 + created() {
  150 + this.getAll()
  151 +
  152 + },
  153 + methods: {
  154 + addgzd(row) {
  155 + this.detailsinfo = row
  156 + this.onaction = '2'
  157 + },
  158 + details(row) {
  159 + this.detailsinfo = row
  160 + this.onaction = '3'
  161 + },
  162 + biangeng(row) {
  163 + alert(`合同变更 - 店铺ID: ${row.id}`);
  164 + },
  165 + xuyue(row) {
  166 + alert(`合同续约 - 店铺ID: ${row.id}`);
  167 + },
  168 + zhongzhi(row) {
  169 + alert(`合同终止 - 店铺ID: ${row.id}`);
  170 + },
  171 + async getAll() {
  172 + const res = await changeContractInformationqueryByPage(this.pagequery)
  173 + this.tableData = res.data.content
  174 + this.total = res.data.totalElements
  175 + },
  176 + removeonaction(e) {
  177 + console.error(e)
  178 + this.onaction = e
  179 + },
  180 + handleCurrentChange(val) {
  181 + this.pagequery.pageNumber = val-1
  182 + this.getAll()
  183 + },
  184 + handleSizeChange(val) {
  185 + this.pagequery.pageSize = val
  186 + },
  187 + // 查询按钮
  188 + async onSubmit() {
  189 + this.pagequery.pageNumber = 0
  190 + this.getAll()
  191 + },
  192 + //重置按钮
  193 + resetting() {
  194 + this.pagequery = {
  195 + pageNumber: 0,
  196 + pageSize: 10,
  197 + contractName: '',
  198 + dataStatus:'1',
  199 + },
  200 + this.getAll()
  201 + },
  202 + }
  203 +
  204 + }
  205 +</script>
  206 +
  207 +<style scoped>
  208 + .el-table {
  209 + /* height: calc(100vh - 330px); */
  210 + }
  211 +
  212 + .zhuti {
  213 + padding: 0 20px 20px 20px;
  214 + min-height: calc(100vh - 50px - 20px);
  215 + background-color: #Fff;
  216 +
  217 + }
  218 +
  219 + .chengeXia {
  220 + border-bottom: 6px solid #3F9B6A;
  221 + padding-bottom: 4px;
  222 + color: #3F9B6A;
  223 + }
  224 +
  225 + /* /deep/ .el-form-item__content {
  226 + line-height: 0;
  227 + } */
  228 +
  229 + .tableBtn {
  230 + display: inline-block;
  231 + margin-right: 10px;
  232 + color: #ACACAC;
  233 + }
  234 +
  235 + .formSearch {
  236 + display: flex;
  237 + width: 100%;
  238 + font-size: 14px;
  239 + justify-content: space-between;
  240 + }
  241 +
  242 + .greens {
  243 + color: #3F9B6A;
  244 + }
  245 +
  246 + /deep/ .el-table__row {
  247 + font-size: 14px;
  248 + color: #000000e6;
  249 + height: 42px;
  250 + }
  251 +
  252 + .fenye {
  253 + margin-top: 20px;
  254 + display: flex;
  255 + justify-content: space-between;
  256 + }
  257 +
  258 + /deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
  259 + background-color: #3F9B6A;
  260 + }
  261 +
  262 +
  263 +
  264 + .el-col {
  265 + border-radius: 4px;
  266 + }
  267 +
  268 + .bg-purple-dark {
  269 + background: #99a9bf;
  270 + }
  271 +
  272 + .bg-purple {
  273 + background: #d3dce6;
  274 + }
  275 +
  276 + .bg-purple-light {
  277 + background: #e5e9f2;
  278 + }
  279 +
  280 + .grid-content {
  281 + border-radius: 4px;
  282 + min-height: 36px;
  283 + }
  284 +
  285 + .row-bg {
  286 + padding: 10px 0;
  287 + background-color: #f9fafc;
  288 + }
  289 +
  290 + /deep/ .bg-purple[data-v-0e3fe4ec] {
  291 + background: #fff;
  292 + height: 50px;
  293 + }
  294 +
  295 + /deep/ .bg-purple[data-v-3bebae82] {
  296 + background: #fff;
  297 + height: 50px;
  298 + }
  299 +
  300 + ::v-deep .bg-purple {
  301 + background: #fff;
  302 + height: 50px;
  303 + }
  304 +
  305 + /deep/ .el-form--label-top .el-form-item__label {
  306 + padding: 0;
  307 + }
  308 +
  309 + ::v-deep .el-dialog__wrapper {
  310 + .el-dialog__header {
  311 + background-color: #fff;
  312 + }
  313 + }
  314 +
  315 +
  316 +
  317 + .dialog-footer {
  318 + display: flex;
  319 + justify-content: flex-end;
  320 + border-top: solid rgba(209, 209, 209, 0.2) 2px;
  321 + padding-top: 20px;
  322 + }
  323 +
  324 +
  325 +
  326 +
  327 + .el-select-dropdown__item.selected {
  328 + color: #3F9B6A;
  329 + }
  330 +
  331 + ::v-deep .el-dialog__title {
  332 + color: #000;
  333 + }
  334 +
  335 + ::v-deep .el-dialog__wrapper {
  336 +
  337 + .dialog_css {
  338 + margin-right: 12px;
  339 + margin-top: 61px !important;
  340 +
  341 + }
  342 +
  343 + .diaslog_zhong {
  344 + margin-left: 222px;
  345 + margin-top: 61px !important;
  346 + }
  347 +
  348 + }
  349 +
  350 + /deep/ .el-table_1_column_8 .hetong {
  351 + color: #7DBB9A;
  352 + text-decoration: underline;
  353 + }
  354 +
  355 + /deep/ .first-column-bg {
  356 + background-color: #FAFAFA !important;
  357 + }
  358 +
  359 + .el-table tr {
  360 + height: 56px;
  361 + }
  362 +
  363 + ::v-deep .table3 {
  364 + .el-table__empty-block {
  365 + display: none;
  366 + }
  367 + }
  368 +
  369 + ::v-deep .textarea {
  370 + width: 85%;
  371 +
  372 + .el-textarea__inner {
  373 + width: 100%;
  374 + }
  375 + }
  376 +
  377 + ::v-deep .el-button--mini {
  378 + padding: 7px 10px;
  379 + }
  380 +
  381 + ::v-deep .pass_input {
  382 + width: 100%;
  383 +
  384 + .el-input__inner {
  385 + border: none;
  386 + padding: 0;
  387 + }
  388 + }
  389 +
  390 + ::v-deep .pass_select {
  391 + width: 100%;
  392 +
  393 + .el-input__inner {
  394 + border: none;
  395 + padding: 0;
  396 + }
  397 +
  398 + .el-icon-arrow-up:before {
  399 + content: ''
  400 + }
  401 +
  402 + }
  403 +
  404 + /deep/ .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
  405 + background-color: #fff;
  406 + }
  407 +</style>
  408 +<style lang="scss" scoped>
  409 + ::v-deep .el-dialog__body {
  410 + padding: 0 0 !important;
  411 + }
  412 +
  413 + ::v-deep .buttonHover:hover {
  414 + color: #3f9b6a !important;
  415 + border-color: #c5e1d2 !important;
  416 + background-color: #ecf5f0 !important;
  417 + outline: none;
  418 + }
  419 +</style>
... ...
admin-web-master/src/views/shopRental/rentTermination/index.vue
... ... @@ -10,11 +10,19 @@
10 10 <!-- 搜索 -->
11 11 <div class="formSearch">
12 12 <el-form :inline="true" :model="pagequery">
13   - <el-form-item label="合同名称">
  13 + <!-- <el-form-item label="合同名称">
14 14 <el-input v-model="pagequery.contractName" placeholder="请输入" style="width:168px;" />
15 15 </el-form-item>
  16 + <el-form-item label="合同状态" prop="status">
  17 + <el-select v-model="pagequery.status" clearable placeholder="请选择" style="width: 168px;margin-right: 15px">
  18 + <el-option label="使用中" value="1"></el-option>
  19 + <el-option label="往期合同" value="2"></el-option>
  20 + <el-option label="已终止" value="3"></el-option>
  21 +
  22 + </el-select>
  23 + </el-form-item> -->
16 24 </el-form>
17   -
  25 +
18 26 <div>
19 27 <el-button @click="onSubmit" style="background-color: #3F9B6A;color: #fff">查询
20 28 </el-button>
... ... @@ -23,62 +31,63 @@
23 31 </el-button>
24 32 </div>
25 33 </div>
26   - <!-- <div style="margin-bottom: 20px;">
27   - <el-button @click="removeonaction('2')" style="background-color: #3F9B6A;color: #fff;padding:8px 15px;"
28   - icon="el-icon-circle-plus-outline">新增</el-button>
29   - <el-button @click="" style="background-color: #3F9B6A;color: #fff">批量导入</el-button>
30   - </div> -->
  34 + <div style="margin-bottom: 20px;">
  35 + </div>
31 36 <!-- 表格 -->
32   -
33 37 <el-table :data="tableData"
34 38 :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}">
35 39 <el-table-column label="承租人名称">
36 40 <template slot-scope="scope">
37 41 {{scope.row.cereContractInformation.tenantName}}
38   -
39 42 </template>
40 43 </el-table-column>
41 44 <el-table-column label="租赁类型">
42 45 <template slot-scope="scope">
43 46 {{scope.row.cereContractInformation.contractType}}
44   -
45 47 </template>
46 48 </el-table-column>
47 49 <el-table-column label="手机号">
48 50 <template slot-scope="scope">
49 51 {{scope.row.cereContractInformation.tenantTelephone}}
50   -
51 52 </template>
52 53 </el-table-column>
53 54 <el-table-column label="资源名称">
54 55 <template slot-scope="scope">
55   - {{scope.row.cereContractInformation.tenantTelephone}}
56   -
  56 + {{scope.row.cereContractInformation.cereBasicInformationShop.shopName || scope.row.cereContractInformation.cereAdvertisingInformation.advertisingName || scope.row.cereContractInformation.cereBasicInformationVenue.venueName}}
57 57 </template>
58 58 </el-table-column>
59 59 <el-table-column label="租赁起止时间">
60 60 <template slot-scope="scope">
61 61 {{scope.row.cereContractInformation.contractSigningDate}}至{{scope.row.cereContractInformation.contractTerminationDate}}
62   -
63 62 </template>
64 63 </el-table-column>
65 64 <el-table-column label="申请时间">
66 65 <template slot-scope="scope">
67 66 {{scope.row.createTime}}
68   -
69 67 </template>
70 68 </el-table-column>
71   - <el-table-column label="操作" fixed="right">
  69 + <el-table-column prop="status" label="状态">
  70 + <template slot-scope="scope">
  71 + <span v-if='scope.row.status == 1'>待审核</span>
  72 + <span v-else-if='scope.row.status == 2'>已同意</span>
  73 + <span v-else-if='scope.row.status == 3'>已拒绝</span>
  74 + <span v-else>待发起</span>
  75 + </template>
  76 + </el-table-column>
  77 + <el-table-column label="操作" min-width="150" fixed="right">
72 78 <template slot-scope="scope">
73   - <div @click="details(scope.row)" class="tableBtn greens">查看</div>
74   - <div @click="addgzd(scope.row)" class="tableBtn greens">生成退租告知单</div>
  79 + <div @click="details(scope.row,'1')" class="tableBtn greens">查看</div>
  80 + <div v-if='scope.row.status == 2' @click="addgzd(scope.row)" class="tableBtn greens">生成退租告知单</div>
  81 + <div v-if='scope.row.status == 1 && scope.row.isInterior == 1' @click="details(scope.row,'2')" class="tableBtn greens">审核</div>
  82 + <div v-if="scope.row.status == null || scope.row.status == '0'" @click="remove(scope.row)" class="tableBtn greens">内部审核</div>
  83 + <div v-if="scope.row.status == null || scope.row.status == '0'" @click="openOAitem(scope.row)" class="tableBtn greens">OA审核</div>
75 84 </template>
76 85 </el-table-column>
77 86 </el-table>
78 87 <div style="display: flex;justify-content: space-between;" class="bom">
79 88 <div style="font-size: 14px;">共 <span style="color: #3F9B6A;">{{total}}</span> 项数据</div>
80   - <el-pagination :current-page="pagequery.pageNumber+1" :page-sizes="[10, 20, 50, 100]" :page-size="10" background
81   - small layout="prev, pager, next" :total="total" @size-change="handleSizeChange"
  89 + <el-pagination :current-page="pagequery.pageNumber+1" :page-sizes="[10, 20, 50, 100]" :page-size="10"
  90 + background small layout="prev, pager, next" :total="total" @size-change="handleSizeChange"
82 91 @current-change="handleCurrentChange">
83 92 </el-pagination>
84 93 </div>
... ... @@ -108,7 +117,7 @@
108 117 style="color:#000000e6">查看</span></div>
109 118 </div>
110 119 <div>
111   - <busCha :info="detailsinfo" @removeonaction="removeonaction"></busCha>
  120 + <busCha :issp="issp" :info="detailsinfo.cereContractInformation" :newinfo="detailsinfo" @removeonaction="removeonaction"></busCha>
112 121 </div>
113 122 <!-- <div>
114 123 <el-button class="buttonHover"
... ... @@ -116,57 +125,305 @@
116 125 @click="removeonaction('1')">返回</el-button>
117 126 </div> -->
118 127 </div>
  128 + <div class="zhuti" v-if="onaction == '4'">
  129 + <div style="height:58px;line-height:58px;">
  130 + <div style="color:#0006"> <span>退租决算管理</span> <span style="padding:0 5px;">></span> <span
  131 + style="color:#000000e6">{{contractChangeReason}}</span></div>
  132 + </div>
  133 +
  134 + <div style="padding: 20px 20px 20px 0;">
  135 + <!-- <addremove :info="detailsinfo" :contractChangeReason="contractChangeReason" @removeonaction="removeonaction">
  136 + </addremove> -->
  137 + <add :info="detailsinfo" :contractChangeReason="contractChangeReason" @removeonaction="removeonaction"></add>
  138 + </div>
  139 + </div>
  140 + <el-dialog :visible.sync="openoa" title="OA" width="65%" append-to-body center :close-on-click-modal="false"
  141 + :close-on-press-escape="false" :show-close="false">
  142 + <el-form v-if="openoa" style="padding-right: 50px;padding-top: 20px;" :model="ruleForm" :rules="rulesoa" ref="oaForm" label-width="130px" class="demo-ruleForm">
  143 + <el-form-item label="审核人" prop="reviewers">
  144 + <el-select v-model="ruleForm.reviewers" placeholder="请选择" style="width: 100%;">
  145 + <el-option label="陈阳" value="1858710592190291968"></el-option>
  146 + </el-select>
  147 + </el-form-item>
  148 +
  149 + </el-form>
  150 + <div style="display: flex; justify-content: flex-end; align-items: center;padding: 20px 50px;">
  151 + <el-button @click="openoa =false" class="buttonHover"
  152 + style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;">取消</el-button>
  153 + <el-button @click="OA" style="background-color: #3F9B6A;color: #fff;">确定</el-button>
  154 + </div>
  155 + </el-dialog>
119 156 </div>
120 157  
121 158  
122 159 </template>
123 160  
124 161 <script>
  162 + import {
  163 + changeContractInformationqueryByPage,changeContractInformationedit,generalBySurrenderTenancy
  164 + } from '@/api/newly.js'
  165 + import {
  166 + contractGetAllnew,
  167 + edit,
  168 + editById
  169 + } from '@/api/manage.js'
  170 + import add from './add'
  171 + import addremove from '@/components/add/addremoveht.vue'
  172 + import busCha from '@/components/buscha/busChanew'
125 173 import {
126   - changeContractInformationqueryByPage,
  174 + cereContractInformation
  175 + } from '@/api/commodityLease.js'
  176 + import {
  177 + modifyResourceStatus,general
127 178 } from '@/api/newly.js'
128   - import add from './add'
129   - import busCha from '../../../components/buscha/busCha'
  179 + import axios from 'axios'
130 180 export default {
131 181 data() {
132 182 return {
133   - detailsinfo:{},
  183 + issp:'1',
  184 + rulesoa: {
  185 + reviewers: [{
  186 + required: true,
  187 + message: '请选择审核人',
  188 + trigger: 'blur'
  189 + }, ],
  190 + },
  191 + ruleForm:{
  192 + reviewers:""
  193 + },
  194 + openoa:false,
  195 + contractChangeReason: '',
  196 + detailsinfo: {},
134 197 pagequery: {
  198 + // status:'1',
135 199 pageNumber: 0,
136 200 pageSize: 10,
137   - contractName: '',
138   - dataStatus:'1',
  201 + contractType:'0',
  202 + contractName: ''
139 203 },
140 204 tableData: [],
141 205 total: 0,
142 206 onaction: '1',
143   - info:{}
  207 + formInline: {},
  208 + oainfo:{}
144 209 }
145 210 },
146 211 components: {
147   - add,busCha
  212 + add,
  213 + busCha,
  214 + addremove
148 215 },
149 216 created() {
150 217 this.getAll()
151   -
152 218 },
153 219 methods: {
154 220 addgzd(row) {
155 221 this.detailsinfo = row
156 222 this.onaction = '2'
157 223 },
158   - details(row) {
159   - this.detailsinfo = row
160   - this.onaction = '3'
  224 + remove(row) {
  225 + let that = this
  226 + this.$confirm('是否确定内部审核吗?', '提示', {
  227 + confirmButtonText: '确定',
  228 + cancelButtonText: '取消',
  229 + type: 'warning'
  230 + }).then(() => {
  231 + changeContractInformationedit({
  232 + ...row,
  233 + isInterior:'1',
  234 + status: '1',
  235 + }).then(res => {
  236 + console.error(res)
  237 + if (res.code == 200) {
  238 + this.$message({
  239 + message: '处理成功',
  240 + type: 'success'
  241 + })
  242 + this.resetting()
  243 +
  244 + } else {
  245 + this.$message({
  246 + message: res.msg,
  247 + type: 'error'
  248 + })
  249 + }
  250 +
  251 + })
  252 + })
161 253 },
162   - biangeng(row) {
163   - alert(`合同变更 - 店铺ID: ${row.id}`);
  254 + openOAitem(row){
  255 + this.oainfo = row
  256 + this.ruleForm.reviewers = ''
  257 + this.openoa = true
164 258 },
165   - xuyue(row) {
166   - alert(`合同续约 - 店铺ID: ${row.id}`);
  259 + downloadBase64File(base64String, fileName, mimeType) {
  260 + try {
  261 + // 将 Base64 字符串解码为二进制数据
  262 + const byteCharacters = atob(base64String);
  263 + const byteNumbers = new Array(byteCharacters.length);
  264 + for (let i = 0; i < byteCharacters.length; i++) {
  265 + byteNumbers[i] = byteCharacters.charCodeAt(i);
  266 + }
  267 + const byteArray = new Uint8Array(byteNumbers);
  268 +
  269 + // 创建 Blob 对象
  270 + const blob = new Blob([byteArray], { type: mimeType });
  271 +
  272 + // 生成下载链接并触发下载
  273 + const url = window.URL.createObjectURL(blob);
  274 + const link = document.createElement('a');
  275 + link.href = url;
  276 + link.setAttribute('download', fileName); // 设置下载文件名
  277 + document.body.appendChild(link);
  278 + link.click();
  279 +
  280 + // 清理生成的 URL 对象
  281 + window.URL.revokeObjectURL(url);
  282 + document.body.removeChild(link);
  283 +
  284 + console.log('文件下载成功:', fileName);
  285 + } catch (error) {
  286 + console.error('文件下载失败:', error);
  287 + }
167 288 },
168   - zhongzhi(row) {
169   - alert(`合同终止 - 店铺ID: ${row.id}`);
  289 + async OA(){
  290 + // console.error(row)
  291 + let row = this.oainfo
  292 + await this.$refs.oaForm.validate((valid) => {
  293 +
  294 + })
  295 + if(!this.ruleForm.reviewers) {
  296 + return
  297 + }
  298 + const loading = this.$loading({
  299 + fullscreen: true
  300 + })
  301 + this.openoa = false
  302 + const response = await axios({
  303 + method: 'get',
  304 + url: this.$baseURL + row.cereContractInformation.appendicesContract, // 文件 URL
  305 + responseType: 'arraybuffer' // 指定响应类型为二进制数据
  306 + });
  307 + const file = new File([response.data], 'filename.txt', { type: 'text/plain' });
  308 + let fd = new FormData();
  309 + fd.append('files', file);
  310 + fd.append('reviewers', this.ruleForm.reviewers);
  311 + fd.append('fileNames', '合同.docx');
  312 + fd.append('title', `${row.cereContractInformation.contractName}退租审批`);
  313 + fd.append('changeContractInformationId', row.id);
  314 + // fd.append('sponsor', userData.user.id);
  315 + fd.append('sponsor', 11);
  316 + console.log(fd);
  317 +
  318 + generalBySurrenderTenancy(fd).then(res => {
  319 + console.log(res);
  320 + let data = JSON.parse(res.data)
  321 + if(data.code == '0'){
  322 + this.$message({
  323 + type: 'success',
  324 + message: '发起成功'
  325 + })
  326 + loading.close();
  327 + this.resetting()
  328 + } else {
  329 + this.$message({
  330 + type: 'error',
  331 + message: data.message
  332 + })
  333 + }
  334 + })
  335 +
  336 +
  337 + },
  338 + gettime() {
  339 + // 获取当前时间
  340 + let currentTime = new Date();
  341 +
  342 + // 获取年份
  343 + let year = currentTime.getFullYear();
  344 +
  345 + // 获取月份(注意月份是从0开始计数的,所以需要加1)
  346 + let month = currentTime.getMonth() + 1;
  347 +
  348 + // 获取日期
  349 + let day = currentTime.getDate();
  350 +
  351 + // 获取小时
  352 + let hours = currentTime.getHours();
  353 +
  354 + // 获取分钟
  355 + let minutes = currentTime.getMinutes();
  356 +
  357 + // 获取秒数
  358 + let seconds = currentTime.getSeconds();
  359 +
  360 + // 获取毫秒数
  361 + let milliseconds = currentTime.getMilliseconds();
  362 +
  363 + // 格式化时间为 YYYY-MM-DD
  364 + let formattedDate = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
  365 +
  366 + // 格式化时间为 HH:MM:SS
  367 + let formattedTime =
  368 + `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
  369 +
  370 + // 格式化时间为 YYYY-MM-DD HH:MM:SS
  371 + let formattedDateTime = `${formattedDate} ${formattedTime}`;
  372 + return formattedDateTime
  373 +
  374 + },
  375 + removeinfozz(row, e) {
  376 + let that = this
  377 + this.$confirm('确定要终止合同吗?', '提示', {
  378 + confirmButtonText: '确定',
  379 + cancelButtonText: '取消',
  380 + type: 'warning'
  381 + }).then(() => {
  382 + cereContractInformation({
  383 + ...row,
  384 + contractChangeReason: e,
  385 + status: '3',
  386 + originalContractCode: row.contractNumber,
  387 + updateDate: that.gettime(),
  388 + createDate: that.gettime(),
  389 + contractChangeTime: that.gettime(),
  390 + updateUser:localStorage.getItem('roleName')
  391 + }).then(res => {
  392 + console.error(res)
  393 + if (res.code == 200) {
  394 + this.$message({
  395 + message: '终止成功',
  396 + type: 'success'
  397 + })
  398 + let c1 = row.shopNumber
  399 + modifyResourceStatus({
  400 + resourcesId: c1,
  401 + status:"0"
  402 + }).then(res => {
  403 + console.error(res)
  404 + })
  405 + // this.$emit('removeonaction', '1')
  406 + this.getAll()
  407 + } else {
  408 + this.$message({
  409 + message: res.msg,
  410 + type: 'error'
  411 + })
  412 + }
  413 +
  414 + })
  415 + })
  416 + },
  417 + details(row,e) {
  418 + this.issp = e
  419 + this.detailsinfo = row
  420 + this.onaction = '3'
  421 + },
  422 + removeinfo(row, e) {
  423 + this.contractChangeReason = e
  424 + // console.error(this.contractChangeReason)
  425 + this.detailsinfo = row
  426 + this.onaction = '4'
170 427 },
171 428 async getAll() {
172 429 const res = await changeContractInformationqueryByPage(this.pagequery)
... ... @@ -176,9 +433,11 @@
176 433 removeonaction(e) {
177 434 console.error(e)
178 435 this.onaction = e
  436 + this.pagequery.pageNumber = 0
  437 + this.getAll()
179 438 },
180 439 handleCurrentChange(val) {
181   - this.pagequery.pageNumber = val-1
  440 + this.pagequery.pageNumber = val - 1
182 441 this.getAll()
183 442 },
184 443 handleSizeChange(val) {
... ... @@ -194,8 +453,9 @@
194 453 this.pagequery = {
195 454 pageNumber: 0,
196 455 pageSize: 10,
197   - contractName: '',
198   - dataStatus:'1',
  456 + status:'',
  457 + contractType:'0',
  458 + contractName: ''
199 459 },
200 460 this.getAll()
201 461 },
... ... @@ -410,10 +670,5 @@
410 670 padding: 0 0 !important;
411 671 }
412 672  
413   - ::v-deep .buttonHover:hover {
414   - color: #3f9b6a !important;
415   - border-color: #c5e1d2 !important;
416   - background-color: #ecf5f0 !important;
417   - outline: none;
418   - }
  673 +
419 674 </style>
... ...
lvdao-miniapp/pages/propertyPay/propertyPayList/propertyPayList.vue
... ... @@ -45,7 +45,7 @@
45 45 </view>
46 46 <view class="info-item">
47 47 <text style="margin-right: 20rpx;">单价:¥{{item.itemStandard}}</text>
48   - <text>费率:{{item.cheapRate}}%</text>
  48 + <text>费率:{{item.cheapRate || 0}}%</text>
49 49 </view>
50 50 </view>
51 51 </view>
... ... @@ -437,7 +437,7 @@
437 437 this.recordList = res.data.data.detailsVOList.map(item => {
438 438 item.isxl = true
439 439 item.isshowxz = false
440   - item.detailsVOList = item.detailsVOList.map(item1 => {
  440 + item.detailsVOList = item.itemDetailsVOList.map(item1 => {
441 441 item1.isshowxz = false
442 442 return item1
443 443 })
... ...
lvdao-miniapp/pagesA/myZiyuan/myZiDetailsnew.vue
... ... @@ -179,8 +179,9 @@
179 179 :custom-style="hoverStyle" hover-class="none" :plain="true">添加我的店铺信息</u-button></view>
180 180 <view class="page-footer" v-if="record.dataStatus =='1' ">
181 181 <u-button style="background-color: #DFE0E4; flex: 1; margin: 0 10px;"
182   - @click="getQuit('/pagesA/myZiyuan/myZiyuanQuit')">申请退租</u-button>
183   - <u-button type="success" style="flex: 1; margin: 0 10px;" @click="xuShow = true">申请续租</u-button>
  182 + @click="getQuit('/pagesA/myZiyuan/myZiyuanQuit','0')">申请退租</u-button>
  183 + <!-- <u-button type="success" style="flex: 1; margin: 0 10px;" @click="xuShow = true">申请续租</u-button> -->
  184 + <u-button type="success" style="flex: 1; margin: 0 10px;" @click="getQuit('/pagesA/myZiyuan/myZiyuanQuit','1')">申请续租</u-button>
184 185 <u-button type="success" style="flex: 1; margin: 0 10px;" @click="xiuMsg(2)"
185 186 v-if="btnShow == false&&mapType == '商铺'">修改资料</u-button>
186 187 </view>
... ... @@ -277,9 +278,9 @@
277 278  
278 279 },
279 280 methods: {
280   - getQuit(urls) {
  281 + getQuit(urls,type) {
281 282 uni.navigateTo({
282   - url: urls + `?ids=${this.heData.id}`
  283 + url: urls + `?ids=${this.heData.id}` + `&type=${type}`
283 284 })
284 285 },
285 286 xufirm() {
... ...
lvdao-miniapp/pagesA/myZiyuan/myZiyuanQuit.vue
1 1 <template>
2 2 <view class="page">
3 3  
4   - <view class="add-list">
  4 + <view class="add-list" >
5 5 <u-form labelPosition="left" :model="ruleForm" ref="uForm" :labelWidth="250">
6 6 <u-form-item label="*申请原因" prop="reasonForApplication" borderBottom>
7 7 </u-form-item>
... ... @@ -10,7 +10,7 @@
10 10 </view>
11 11 <view class="add-list">
12 12 <u-form labelPosition="left" :model="ruleForm" ref="uForm" :labelWidth="250">
13   - <u-form-item label="*申请退租时间" prop="applicationTime" borderBottom>
  13 + <u-form-item label="*申请时间" prop="applicationTime" borderBottom>
14 14 <u-input v-model="ruleForm.applicationTime" type="select" @click="busStartshow = true"
15 15 placeholder="请选择" :custom-style="selStyle" />
16 16 <u-picker mode="time" v-model="busStartshow" :params="params" @confirm="busStTimeChange"></u-picker>
... ... @@ -59,6 +59,9 @@
59 59 if (option.ids) {
60 60 this.ruleForm.contractId = Number(option.ids)
61 61 }
  62 + if (option.type) {
  63 + this.ruleForm.contractType = option.type
  64 + }
62 65 },
63 66 onShow() {},
64 67 methods: {
... ... @@ -79,29 +82,40 @@
79 82 icon: 'none',
80 83 title: '请输入申请原因'
81 84 });
82   - return;
  85 + return false;
83 86 }
84 87 if (!this.ruleForm.applicationTime) {
85 88 uni.showToast({
86 89 icon: 'none',
87 90 title: '请选择退租申请时间'
88 91 });
89   - return;
  92 + return false;
90 93 }
91   -
  94 + return true;
92 95 },
93 96 go() {
94 97 this.ruleForm.createUser = uni.getStorageSync('user').phone
95 98 this.ruleForm.createTime = this.getCurrentTime()
96   - this.chek()
  99 + let c1 = this.chek()
  100 + if(!c1) {
  101 + return
  102 + }
97 103 this.$http.sendRequest('/changeContractInformation/add', 'POST', this.ruleForm, 1).then(res => {
98   - uni.showToast({
99   - title: '提交成功',
100   - icon: 'none',
101   - });
102   - uni.switchTab({
103   - url: '/pages/my/my'
104   - });
  104 +
  105 + if(res.data.code == '200') {
  106 + uni.showToast({
  107 + title: '提交成功',
  108 + icon: 'none',
  109 + });
  110 + setTimeout(()=>{
  111 + uni.navigateBack()
  112 + },1000)
  113 + } else {
  114 + uni.showToast({
  115 + title: res.data.message,
  116 + icon: 'none',
  117 + });
  118 + }
105 119  
106 120 })
107 121 },
... ...
lvdao-miniapp/utils/request.js
... ... @@ -21,7 +21,7 @@ const sendRequest = (url, method = &#39;GET&#39;, data = {}, baseUrl,contentType) =&gt; {
21 21 // bases = 'https://zhgw.028wlkj.com:20443/cdwlMall/meserver/admin-server' + url;
22 22 // bases = 'https://jy.scjysm.asia:18086/cdwlMall/meserver/admin-server' + url;
23 23  
24   - bases = 'http://128.10.249.23:9003'+ url;
  24 + bases = 'http://128.10.249.8:9003'+ url;
25 25 // bases = 'https://zhld.028wlkj.com:49008/cdwlMall/admin-server' + url;
26 26  
27 27 // bases = c1 + 'cdwlMall/meserver/admin-server' + url;
... ... @@ -30,8 +30,8 @@ const sendRequest = (url, method = &#39;GET&#39;, data = {}, baseUrl,contentType) =&gt; {
30 30 // bases = 'https://jy.scjysm.asia:18086/cdwlMall/meserver/api' + url;
31 31 // bases = 'https://zhgw.028wlkj.com:20443/cdwlMall/meserver/api' + url;
32 32 // bases = 'http://128.10.249.22:9003:9007' + url;
33   - bases = 'http://128.10.249.23:9007' + url;
34   - // bases = c1 + 'cdwlMall/meserver/api' + url;
  33 + // bases = 'http://128.10.249.23:9007' + url;
  34 + bases = c1 + 'cdwlMall/meserver/api' + url;
35 35  
36 36 }else{
37 37 // bases = 'http://128.10.249.22:9004' + url;
... ... @@ -39,9 +39,9 @@ const sendRequest = (url, method = &#39;GET&#39;, data = {}, baseUrl,contentType) =&gt; {
39 39 // bases = 'http://172.16.61.123/cdwlMall/business-server' + url;
40 40 // bases = 'https://jy.scjysm.asia:18086/cdwlMall/business-server' + url;
41 41 // bases = 'https://zhgw.028wlkj.com:20443/cdwlMall/business-server' + url;
42   - bases = 'http://128.10.249.23:9004' + url;
  42 + // bases = 'http://128.10.249.23:9004' + url;
43 43 // bases = 'https://zhld.028wlkj.com:49008/cdwlMall/business-server' + url;
44   - // bases = c1 + 'cdwlMall/business-server' + url;
  44 + bases = c1 + 'cdwlMall/business-server' + url;
45 45  
46 46 }
47 47 var token = uni.getStorageSync('token') || '';
... ...