Commit eb48bd862a6c3ea82aa27db6efab060d0de82206

Authored by wuxw
1 parent 9cd53a9f

合同功能测试完成

src/api/resource/contractChangeDetailsApi.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +// 获取合同变更详情
  4 +export function getContractChangeDetails(params) {
  5 + return new Promise((resolve, reject) => {
  6 + request({
  7 + url: '/contract/queryContractChangePlanDetail',
  8 + method: 'get',
  9 + params
  10 + }).then(response => {
  11 + const res = response.data
  12 + resolve(res)
  13 + }).catch(error => {
  14 + reject(error)
  15 + })
  16 + })
  17 +}
  18 +
  19 +// 获取审核用户列表
  20 +export function getAuditUsers(params) {
  21 + return new Promise((resolve, reject) => {
  22 + request({
  23 + url: 'workflow.listWorkflowAuditInfo',
  24 + method: 'get',
  25 + params
  26 + }).then(response => {
  27 + const res = response.data
  28 + resolve(res)
  29 + }).catch(error => {
  30 + reject(error)
  31 + })
  32 + })
  33 +}
0 34 \ No newline at end of file
... ...
src/components/contract/ContractChangeLease.vue
... ... @@ -7,7 +7,7 @@
7 7 <el-row :gutter="20">
8 8 <el-col :span="24">
9 9 <el-form-item :label="$t('contractChangeLease.startTime')" required>
10   - <el-date-picker v-model="contractChangeLeaseInfo.startTime" type="datetime"
  10 + <el-date-picker v-model="contractChangeLeaseInfo.startTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
11 11 :placeholder="$t('contractChangeLease.startTimePlaceholder')" style="width: 100%"></el-date-picker>
12 12 </el-form-item>
13 13 </el-col>
... ... @@ -16,7 +16,7 @@
16 16 <el-row :gutter="20">
17 17 <el-col :span="24">
18 18 <el-form-item :label="$t('contractChangeLease.endTime')" required>
19   - <el-date-picker v-model="contractChangeLeaseInfo.endTime" type="datetime"
  19 + <el-date-picker v-model="contractChangeLeaseInfo.endTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
20 20 :placeholder="$t('contractChangeLease.endTimePlaceholder')" style="width: 100%"></el-date-picker>
21 21 </el-form-item>
22 22 </el-col>
... ...
src/components/contract/addTemplateView.vue
1 1 <template>
2 2 <el-dialog :title="$t('contractTypeManage.template.title')" :visible.sync="visible" width="80%" @close="handleClose">
3   - <el-card>
4   - <div class="attr-buttons">
5   - <el-button v-for="(item, index) in contractTypeAttrs" :key="index" type="primary" size="small"
6   - @click="insertAttrs(item)">
7   - {{ item }}
8   - </el-button>
9   - </div>
10   -
11   - <el-form label-width="120px">
12   - <el-form-item :label="$t('contractTypeManage.template.content')">
13   - <div class="editor-container">
14   - <el-input type="textarea" :rows="15" v-model="context"
15   - :placeholder="$t('contractTypeManage.template.placeholder')" />
16   - </div>
17   - </el-form-item>
18   - </el-form>
19   - </el-card>
  3 + <div class="attr-buttons">
  4 + <el-button v-for="(item, index) in contractTypeAttrs" :key="index" type="primary" size="small"
  5 + @click="insertAttrs(item)">
  6 + {{ item }}
  7 + </el-button>
  8 + </div>
20 9  
  10 + <el-form label-width="120px">
  11 + <el-form-item :label="$t('contractTypeManage.template.content')">
  12 + <div class="editor-container">
  13 + <el-input type="textarea" :rows="15" v-model="context"
  14 + :placeholder="$t('contractTypeManage.template.placeholder')" />
  15 + </div>
  16 + </el-form-item>
  17 + </el-form>
21 18 <div slot="footer" class="dialog-footer">
22 19 <el-button @click="visible = false">
23 20 {{ $t('common.cancel') }}
... ... @@ -30,7 +27,7 @@
30 27 </template>
31 28  
32 29 <script>
33   -import { saveContractTypeTemplate, updateContractTypeTemplate, queryContractTypeTemplate,printContractTemplate } from '@/api/contract/contractTypeManageApi'
  30 +import { saveContractTypeTemplate, updateContractTypeTemplate, queryContractTypeTemplate, printContractTemplate } from '@/api/contract/contractTypeManageApi'
34 31  
35 32 export default {
36 33 name: 'AddTemplateView',
... ... @@ -41,7 +38,7 @@ export default {
41 38 context: '',
42 39 templateId: '',
43 40 contractTypeAttrs: [],
44   - contractTypeSpec:[]
  41 + contractTypeSpec: []
45 42 }
46 43 },
47 44 methods: {
... ...
src/i18n/contractI18n.js
... ... @@ -9,6 +9,7 @@ import { messages as contractChangeManageMessages } from &#39;../views/contract/cont
9 9 import { messages as contractChangeDetailMessages } from '../views/contract/contractChangeDetailLang'
10 10 import { messages as expirationContractManageMessages } from '../views/contract/expirationContractManageLang'
11 11 import { messages as contractDetailMessages } from '../views/contract/contractDetailLang.js'
  12 +import { messages as contractChangeDetailsMessages } from '../views/contract/contractChangeDetailsLang'
12 13  
13 14 export const messages ={
14 15 en:{
... ... @@ -23,6 +24,7 @@ export const messages ={
23 24 ...contractChangeDetailMessages.en,
24 25 ...expirationContractManageMessages.en,
25 26 ...contractDetailMessages.en,
  27 + ...contractChangeDetailsMessages.en,
26 28 },
27 29 zh:{
28 30 ...contractTypeManageMessages.zh,
... ... @@ -36,5 +38,6 @@ export const messages ={
36 38 ...contractChangeDetailMessages.zh,
37 39 ...expirationContractManageMessages.zh,
38 40 ...contractDetailMessages.zh,
  41 + ...contractChangeDetailsMessages.zh,
39 42 }
40 43 }
41 44 \ No newline at end of file
... ...
src/router/contractRouter.js
... ... @@ -49,4 +49,9 @@ export default [
49 49 name: '/views/contract/contractDetail',
50 50 component: () => import('@/views/contract/contractDetail.vue')
51 51 },
  52 + {
  53 + path: '/views/contract/contractChangeDetails',
  54 + name: '/views/contract/contractChangeDetails',
  55 + component: () => import('@/views/contract/contractChangeDetailsList.vue')
  56 + },
52 57 ]
53 58 \ No newline at end of file
... ...
src/views/contract/contractChangeDetailList.vue
... ... @@ -113,11 +113,11 @@
113 113  
114 114 <!-- 租期调整 -->
115 115 <contract-change-lease v-show="contractChangeDetailInfo.param === 'contractChangeLease'" ref="contractChangeLease"
116   - @changeNotify="handlerMainBody" />
  116 + @changeNotify="handlerMainBody" />
117 117  
118 118 <!-- 资产调整 -->
119   - <contract-change-assets v-show="contractChangeDetailInfo.param === 'contractChangeAssets'" ref="contractChangeAssets"
120   - @changeNotify="handlerMainBody" />
  119 + <contract-change-assets v-show="contractChangeDetailInfo.param === 'contractChangeAssets'"
  120 + ref="contractChangeAssets" @changeNotify="handlerMainBody" />
121 121  
122 122 <el-card class="box-card">
123 123 <div slot="header" class="flex justify-between">
... ... @@ -243,9 +243,9 @@ export default {
243 243 this.$router.go(-1)
244 244 },
245 245 handlerMainBody(item) {
246   - const changeRemark = this.newContract.changeRemark
  246 + // const changeRemark = this.newContract.changeRemark
247 247 this.newContract = JSON.parse(JSON.stringify(this.contractChangeDetailInfo))
248   - this.newContract.changeRemark = changeRemark
  248 + // this.newContract.changeRemark = changeRemark
249 249 if (item['rooms']) {
250 250 this.newContract.rooms = item.rooms
251 251 }
... ...
src/views/contract/contractChangeDetailsLang.js 0 → 100644
  1 +export const messages = {
  2 + en: {
  3 + contractChangeDetails: {
  4 + contract: 'Contract',
  5 + afterChange: 'After Change',
  6 + beforeChange: 'Before Change',
  7 + contractName: 'Contract Name',
  8 + contractCode: 'Contract Code',
  9 + contractType: 'Contract Type',
  10 + partyA: 'Party A',
  11 + partyAContacts: 'Party A Contacts',
  12 + partyALink: 'Party A Phone',
  13 + partyB: 'Party B',
  14 + partyBContacts: 'Party B Contacts',
  15 + partyBLink: 'Party B Phone',
  16 + operator: 'Operator',
  17 + operatorLink: 'Operator Phone',
  18 + amount: 'Amount',
  19 + startTime: 'Start Time',
  20 + endTime: 'End Time',
  21 + signingTime: 'Signing Time',
  22 + workflow: 'Workflow',
  23 + serialNumber: 'No.',
  24 + handler: 'Handler',
  25 + status: 'Status',
  26 + processTime: 'Process Time',
  27 + timeConsuming: 'Time Consuming',
  28 + opinion: 'Opinion'
  29 + }
  30 + },
  31 + zh: {
  32 + contractChangeDetails: {
  33 + contract: '合同',
  34 + afterChange: '变更后',
  35 + beforeChange: '变更前',
  36 + contractName: '合同名称',
  37 + contractCode: '合同编号',
  38 + contractType: '合同类型',
  39 + partyA: '甲方',
  40 + partyAContacts: '甲方联系人',
  41 + partyALink: '甲方联系电话',
  42 + partyB: '乙方',
  43 + partyBContacts: '乙方联系人',
  44 + partyBLink: '乙方联系电话',
  45 + operator: '经办人',
  46 + operatorLink: '联系电话',
  47 + amount: '合同金额',
  48 + startTime: '开始时间',
  49 + endTime: '结束时间',
  50 + signingTime: '签订时间',
  51 + workflow: '工单流转',
  52 + serialNumber: '序号',
  53 + handler: '处理人',
  54 + status: '状态',
  55 + processTime: '处理时间',
  56 + timeConsuming: '耗时',
  57 + opinion: '意见'
  58 + }
  59 + }
  60 +}
0 61 \ No newline at end of file
... ...
src/views/contract/contractChangeDetailsList.vue 0 → 100644
  1 +<template>
  2 + <div class="contract-change-details-container">
  3 + <el-row v-for="(contractChangeDetailInfo,index) in contractChangeDetailsInfo.contractDetails" :key="index" class="mb-20">
  4 + <el-col :span="24">
  5 + <el-card class="box-card">
  6 + <div slot="header" class="flex justify-between">
  7 + <span>
  8 + <span>{{ $t('contractChangeDetails.contract') }}</span>
  9 + {{contractChangeDetailInfo.operate == 'ADD'?$t('contractChangeDetails.afterChange'):$t('contractChangeDetails.beforeChange')}}
  10 + {{contractChangeDetailInfo.operate == 'ADD'?'('+contractChangeDetailInfo.planTypeName+')':''}}
  11 + </span>
  12 + <div class="card-header-right" v-if="index == 0">
  13 + <el-button type="primary" size="small" style="margin-right:10px;" @click="_goBack()">
  14 + <i class="el-icon-close"></i>{{ $t('common.back') }}
  15 + </el-button>
  16 + </div>
  17 + </div>
  18 + <div class="text item">
  19 + <el-row :gutter="20">
  20 + <el-col :span="8">
  21 + <div class="form-group">
  22 + <label class="el-form-item__label">
  23 + <span>{{ $t('contractChangeDetails.contractName') }}</span>:
  24 + </label>
  25 + <label class="el-form-item__content">{{contractChangeDetailInfo.contractName}}</label>
  26 + </div>
  27 + </el-col>
  28 + <el-col :span="8">
  29 + <div class="form-group">
  30 + <label class="el-form-item__label">
  31 + <span>{{ $t('contractChangeDetails.contractCode') }}</span>:
  32 + </label>
  33 + <label class="el-form-item__content">{{contractChangeDetailInfo.contractCode}}</label>
  34 + </div>
  35 + </el-col>
  36 + <el-col :span="8">
  37 + <div class="form-group">
  38 + <label class="el-form-item__label">
  39 + <span>{{ $t('contractChangeDetails.contractType') }}</span>:
  40 + </label>
  41 + <label class="el-form-item__content">{{contractChangeDetailInfo.contractType}}</label>
  42 + </div>
  43 + </el-col>
  44 + </el-row>
  45 + <el-row :gutter="20">
  46 + <el-col :span="8">
  47 + <div class="form-group">
  48 + <label class="el-form-item__label">
  49 + <span>{{ $t('contractChangeDetails.partyA') }}</span>:
  50 + </label>
  51 + <label class="el-form-item__content">{{contractChangeDetailInfo.partyA}}</label>
  52 + </div>
  53 + </el-col>
  54 + <el-col :span="8">
  55 + <div class="form-group">
  56 + <label class="el-form-item__label">
  57 + <span>{{ $t('contractChangeDetails.partyAContacts') }}</span>:
  58 + </label>
  59 + <label class="el-form-item__content">{{contractChangeDetailInfo.aContacts}}</label>
  60 + </div>
  61 + </el-col>
  62 + <el-col :span="8">
  63 + <div class="form-group">
  64 + <label class="el-form-item__label">
  65 + <span>{{ $t('contractChangeDetails.partyALink') }}</span>:
  66 + </label>
  67 + <label class="el-form-item__content">{{contractChangeDetailInfo.aLink}}</label>
  68 + </div>
  69 + </el-col>
  70 + </el-row>
  71 + <el-row :gutter="20">
  72 + <el-col :span="8">
  73 + <div class="form-group">
  74 + <label class="el-form-item__label">
  75 + <span>{{ $t('contractChangeDetails.partyB') }}</span>:
  76 + </label>
  77 + <label class="el-form-item__content">{{contractChangeDetailInfo.partyB}}</label>
  78 + </div>
  79 + </el-col>
  80 + <el-col :span="8">
  81 + <div class="form-group">
  82 + <label class="el-form-item__label">
  83 + <span>{{ $t('contractChangeDetails.partyBContacts') }}</span>:
  84 + </label>
  85 + <label class="el-form-item__content">{{contractChangeDetailInfo.bContacts}}</label>
  86 + </div>
  87 + </el-col>
  88 + <el-col :span="8">
  89 + <div class="form-group">
  90 + <label class="el-form-item__label">
  91 + <span>{{ $t('contractChangeDetails.partyBLink') }}</span>:
  92 + </label>
  93 + <label class="el-form-item__content">{{contractChangeDetailInfo.bLink}}</label>
  94 + </div>
  95 + </el-col>
  96 + </el-row>
  97 + <el-row :gutter="20">
  98 + <el-col :span="8">
  99 + <div class="form-group">
  100 + <label class="el-form-item__label">
  101 + <span>{{ $t('contractChangeDetails.operator') }}</span>:
  102 + </label>
  103 + <label class="el-form-item__content">{{contractChangeDetailInfo.operator}}</label>
  104 + </div>
  105 + </el-col>
  106 + <el-col :span="8">
  107 + <div class="form-group">
  108 + <label class="el-form-item__label">
  109 + <span>{{ $t('contractChangeDetails.operatorLink') }}</span>:
  110 + </label>
  111 + <label class="el-form-item__content">{{contractChangeDetailInfo.operatorLink}}</label>
  112 + </div>
  113 + </el-col>
  114 + <el-col :span="8">
  115 + <div class="form-group">
  116 + <label class="el-form-item__label">
  117 + <span>{{ $t('contractChangeDetails.amount') }}</span>:
  118 + </label>
  119 + <label class="el-form-item__content">{{contractChangeDetailInfo.amount}}</label>
  120 + </div>
  121 + </el-col>
  122 + </el-row>
  123 + <el-row :gutter="20">
  124 + <el-col :span="8">
  125 + <div class="form-group">
  126 + <label class="el-form-item__label">
  127 + <span>{{ $t('contractChangeDetails.startTime') }}</span>:
  128 + </label>
  129 + <label class="el-form-item__content">{{contractChangeDetailInfo.startTime}}</label>
  130 + </div>
  131 + </el-col>
  132 + <el-col :span="8">
  133 + <div class="form-group">
  134 + <label class="el-form-item__label">
  135 + <span>{{ $t('contractChangeDetails.endTime') }}</span>:
  136 + </label>
  137 + <label class="el-form-item__content">{{contractChangeDetailInfo.endTime}}</label>
  138 + </div>
  139 + </el-col>
  140 + <el-col :span="8">
  141 + <div class="form-group">
  142 + <label class="el-form-item__label">
  143 + <span>{{ $t('contractChangeDetails.signingTime') }}</span>:
  144 + </label>
  145 + <label class="el-form-item__content">{{contractChangeDetailInfo.signingTime}}</label>
  146 + </div>
  147 + </el-col>
  148 + </el-row>
  149 + </div>
  150 + </el-card>
  151 + </el-col>
  152 + </el-row>
  153 +
  154 + <el-row class="mb-20">
  155 + <el-col :span="24">
  156 + <el-card class="box-card">
  157 + <div slot="header" class="clearfix">
  158 + <h5>
  159 + <span>{{ $t('contractChangeDetails.workflow') }}</span>
  160 + </h5>
  161 + </div>
  162 + <div class="text item">
  163 + <el-table :data="contractChangeDetailsInfo.auditUsers" border style="width: 100%">
  164 + <el-table-column prop="index" :label="$t('contractChangeDetails.serialNumber')" width="80" align="center">
  165 + <template slot-scope="scope">
  166 + {{scope.$index + 1}}
  167 + </template>
  168 + </el-table-column>
  169 + <el-table-column prop="userName" :label="$t('contractChangeDetails.handler')" align="center">
  170 + <template slot-scope="scope">
  171 + {{scope.row.userName || scope.row.auditName}}
  172 + </template>
  173 + </el-table-column>
  174 + <el-table-column prop="stateName" :label="$t('contractChangeDetails.status')" align="center"></el-table-column>
  175 + <el-table-column prop="auditTime" :label="$t('contractChangeDetails.processTime')" align="center"></el-table-column>
  176 + <el-table-column prop="duration" :label="$t('contractChangeDetails.timeConsuming')" align="center"></el-table-column>
  177 + <el-table-column prop="message" :label="$t('contractChangeDetails.opinion')" align="center"></el-table-column>
  178 + </el-table>
  179 + </div>
  180 + </el-card>
  181 + </el-col>
  182 + </el-row>
  183 + </div>
  184 +</template>
  185 +
  186 +<script>
  187 +import { getContractChangeDetails, getAuditUsers } from '@/api/resource/contractChangeDetailsApi'
  188 +import { getCommunityId } from '@/api/community/communityApi'
  189 +
  190 +export default {
  191 + name: 'ContractChangeDetailsList',
  192 + data() {
  193 + return {
  194 + contractChangeDetailsInfo: {
  195 + contractDetails: [],
  196 + auditUsers: [],
  197 + planId: ''
  198 + },
  199 + communityId: ''
  200 + }
  201 + },
  202 + created() {
  203 + this.communityId = getCommunityId()
  204 + this.contractChangeDetailsInfo.planId = this.$route.query.planId
  205 + this._listContractDetails()
  206 + this._loadAuditUser()
  207 + },
  208 + methods: {
  209 + async _listContractDetails() {
  210 + try {
  211 + const param = {
  212 + page: 1,
  213 + row: 10,
  214 + planId: this.contractChangeDetailsInfo.planId
  215 + }
  216 + const { data } = await getContractChangeDetails(param)
  217 + data.sort((_child, _newChild) => {
  218 + return _newChild.operate.charCodeAt(0) - _child.operate.charCodeAt(0)
  219 + })
  220 + this.contractChangeDetailsInfo.contractDetails = data
  221 + } catch (error) {
  222 + console.error('请求合同详情失败:', error)
  223 + }
  224 + },
  225 + async _loadAuditUser() {
  226 + try {
  227 + const param = {
  228 + businessKey: this.contractChangeDetailsInfo.planId,
  229 + communityId: this.communityId
  230 + }
  231 + const { data } = await getAuditUsers(param)
  232 + this.contractChangeDetailsInfo.auditUsers = data
  233 + } catch (error) {
  234 + console.error('请求审核用户失败:', error)
  235 + }
  236 + },
  237 + _goBack() {
  238 + this.$router.go(-1)
  239 + }
  240 + }
  241 +}
  242 +</script>
  243 +
  244 +<style lang="scss" scoped>
  245 +.contract-change-details-container {
  246 + padding: 20px;
  247 +
  248 +
  249 +
  250 + .el-card {
  251 + margin-bottom: 20px;
  252 +
  253 + .clearfix {
  254 + display: flex;
  255 + justify-content: space-between;
  256 + align-items: center;
  257 + }
  258 +
  259 + .card-header-right {
  260 + display: flex;
  261 + align-items: center;
  262 + }
  263 + }
  264 +
  265 + .form-group {
  266 + margin-bottom: 15px;
  267 + text-align: left;
  268 + }
  269 +
  270 + .el-table {
  271 + margin-top: 20px;
  272 + }
  273 +}
  274 +</style>
0 275 \ No newline at end of file
... ...
src/views/contract/contractChangeManageList.vue
... ... @@ -166,7 +166,7 @@ export default {
166 166 this.$router.push(`/views/contract/contractChangeDetail?param=${type}`)
167 167 },
168 168 handleToDetails(row) {
169   - this.$router.push(`/views/contract/contractChangeDetail?planId=${row.planId}`)
  169 + this.$router.push(`/views/contract/contractChangeDetails?planId=${row.planId}`)
170 170 },
171 171 handleOpenDeleteDialog(row) {
172 172 this.$refs.deleteDialog.open(row)
... ...
src/views/contract/contractTypeManageList.vue
1 1 <template>
2 2 <div class="contract-type-manage-container">
3 3 <!-- 查询条件 -->
4   - <el-card class="search-card">
  4 + <el-card class="search-card">
5 5 <div slot="header" class="flex justify-between">
6 6 <span>{{ $t('contractTypeManage.search.title') }}</span>
7 7 </div>
... ... @@ -30,7 +30,7 @@
30 30 </el-card>
31 31  
32 32 <!-- 合同类型列表 -->
33   - <el-card class="list-card">
  33 + <el-card class="list-card">
34 34 <div slot="header" class="flex justify-between">
35 35 <span>{{ $t('contractTypeManage.list.title') }}</span>
36 36 <div style="float: right;">
... ... @@ -87,7 +87,7 @@ import { getCommunityId } from &#39;@/api/community/communityApi&#39;
87 87 import {
88 88 queryContractType,
89 89 //queryContractTypeTemplate,
90   -
  90 +
91 91 } from '@/api/contract/contractTypeManageApi'
92 92 import AddTemplateView from '@/components/contract/addTemplateView'
93 93 import AddContractType from '@/components/contract/addContractType'
... ... @@ -181,10 +181,10 @@ export default {
181 181 _toAuditPage() {
182 182 this.$router.push('/pages/property/workflowManage?tab=流程管理')
183 183 },
184   -
  184 +
185 185 _openContractTemplate(row) {
186 186 this.componentShow = ''
187   - this.$refs.addTemplateView.open(row)
  187 + this.$refs.addTemplateView.open(row)
188 188  
189 189 },
190 190 handleSizeChange(val) {
... ...
src/views/fee/contractCreateFeeList.vue
... ... @@ -163,13 +163,13 @@ export default {
163 163 },
164 164 handleViewDetail(row) {
165 165 this.$router.push({
166   - path: '/common/contractApplyDetail',
  166 + path: '/views/contract/contractChangeDetail',
167 167 query: { contractId: row.contractId }
168 168 })
169 169 },
170 170 handleViewFee(row) {
171 171 this.$router.push({
172   - path: '/contract/contractDetail',
  172 + path: '/views/contract/contractDetail',
173 173 query: {
174 174 contractId: row.contractId,
175 175 contractCode: row.contractCode
... ...