From bc37d685c4d41c0e6ad4955f96a828b9222bb108 Mon Sep 17 00:00:00 2001 From: wuxw <928255095@qq.com> Date: Wed, 25 Jun 2025 01:01:21 +0800 Subject: [PATCH] 开发完成合同功能 --- src/api/contract/addContractApi.js | 193 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/contract/contractChangeDetailApi.js | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/contract/contractChangeManageApi.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/contract/contractManageApi.js | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/contract/contractPartyaManageApi.js | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/contract/contractTypeManageApi.js | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/contract/contractTypeSpecManageApi.js | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/contract/expirationContractManageApi.js | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/api/contract/newContractManageApi.js | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/contract/printContractApi.js | 21 +++++++++++++++++++++ src/components/contract/ChooseContract.vue | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/ContractChangeAssets.vue | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/ContractChangeLease.vue | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/ContractChangeMainBody.vue | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/StopContract.vue | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/addContractPartya.vue | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/addContractType.vue | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/addContractTypeSpec.vue | 220 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/addTemplateView.vue | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/deleteContract.vue | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/deleteContractChangePlan.vue | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/deleteContractPartya.vue | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/deleteContractType.vue | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/deleteContractTypeSpec.vue | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/editContract.vue | 376 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/editContractPartya.vue | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/editContractType.vue | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/editContractTypeSpec.vue | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/orgTreeShow.vue | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/purchaseApprovers.vue | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/searchOwner.vue | 196 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/searchRoom.vue | 230 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/contract/selectStaff.vue | 193 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/i18n/contractI18n.js | 37 +++++++++++++++++++++++++++++++++++++ src/i18n/index.js | 3 +++ src/router/contractRouter.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/router/index.js | 13 ++++++++++--- src/views/contract/addContractLang.js | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/addContractList.vue | 447 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/contractChangeDetailLang.js | 194 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/contractChangeDetailList.vue | 303 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/contractChangeManageLang.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/contractChangeManageList.vue | 212 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/contractManageLang.js | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/contractManageList.vue | 264 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/contractPartyaManageLang.js | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/contractPartyaManageList.vue | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/contractTypeManageLang.js | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/contractTypeManageList.vue | 222 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/contractTypeSpecManageLang.js | 184 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/contractTypeSpecManageList.vue | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/expirationContractManageLang.js | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/expirationContractManageList.vue | 197 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/newContractManageLang.js | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/newContractManageList.vue | 221 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/contract/printContractLang.js | 18 ++++++++++++++++++ src/views/contract/printContractList.vue | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 57 files changed, 8009 insertions(+), 3 deletions(-) create mode 100644 src/api/contract/addContractApi.js create mode 100644 src/api/contract/contractChangeDetailApi.js create mode 100644 src/api/contract/contractChangeManageApi.js create mode 100644 src/api/contract/contractManageApi.js create mode 100644 src/api/contract/contractPartyaManageApi.js create mode 100644 src/api/contract/contractTypeManageApi.js create mode 100644 src/api/contract/contractTypeSpecManageApi.js create mode 100644 src/api/contract/expirationContractManageApi.js create mode 100644 src/api/contract/newContractManageApi.js create mode 100644 src/api/contract/printContractApi.js create mode 100644 src/components/contract/ChooseContract.vue create mode 100644 src/components/contract/ContractChangeAssets.vue create mode 100644 src/components/contract/ContractChangeLease.vue create mode 100644 src/components/contract/ContractChangeMainBody.vue create mode 100644 src/components/contract/StopContract.vue create mode 100644 src/components/contract/addContractPartya.vue create mode 100644 src/components/contract/addContractType.vue create mode 100644 src/components/contract/addContractTypeSpec.vue create mode 100644 src/components/contract/addTemplateView.vue create mode 100644 src/components/contract/deleteContract.vue create mode 100644 src/components/contract/deleteContractChangePlan.vue create mode 100644 src/components/contract/deleteContractPartya.vue create mode 100644 src/components/contract/deleteContractType.vue create mode 100644 src/components/contract/deleteContractTypeSpec.vue create mode 100644 src/components/contract/editContract.vue create mode 100644 src/components/contract/editContractPartya.vue create mode 100644 src/components/contract/editContractType.vue create mode 100644 src/components/contract/editContractTypeSpec.vue create mode 100644 src/components/contract/orgTreeShow.vue create mode 100644 src/components/contract/purchaseApprovers.vue create mode 100644 src/components/contract/searchOwner.vue create mode 100644 src/components/contract/searchRoom.vue create mode 100644 src/components/contract/selectStaff.vue create mode 100644 src/i18n/contractI18n.js create mode 100644 src/router/contractRouter.js create mode 100644 src/views/contract/addContractLang.js create mode 100644 src/views/contract/addContractList.vue create mode 100644 src/views/contract/contractChangeDetailLang.js create mode 100644 src/views/contract/contractChangeDetailList.vue create mode 100644 src/views/contract/contractChangeManageLang.js create mode 100644 src/views/contract/contractChangeManageList.vue create mode 100644 src/views/contract/contractManageLang.js create mode 100644 src/views/contract/contractManageList.vue create mode 100644 src/views/contract/contractPartyaManageLang.js create mode 100644 src/views/contract/contractPartyaManageList.vue create mode 100644 src/views/contract/contractTypeManageLang.js create mode 100644 src/views/contract/contractTypeManageList.vue create mode 100644 src/views/contract/contractTypeSpecManageLang.js create mode 100644 src/views/contract/contractTypeSpecManageList.vue create mode 100644 src/views/contract/expirationContractManageLang.js create mode 100644 src/views/contract/expirationContractManageList.vue create mode 100644 src/views/contract/newContractManageLang.js create mode 100644 src/views/contract/newContractManageList.vue create mode 100644 src/views/contract/printContractLang.js create mode 100644 src/views/contract/printContractList.vue diff --git a/src/api/contract/addContractApi.js b/src/api/contract/addContractApi.js new file mode 100644 index 0000000..f2c7484 --- /dev/null +++ b/src/api/contract/addContractApi.js @@ -0,0 +1,193 @@ +import request from '@/utils/request' + +// 保存合同信息 +export function saveContract(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/saveContract', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询合同类型 +export function queryContractType(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractType', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询合同甲方信息 +export function queryContractPartya(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contractPartya/queryContractPartya', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询合同类型规格 +export function queryContractTypeSpec(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractTypeSpec', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询合同关联房屋 +export function queryContractRoom(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractRoom', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取第一个审批人 +export function getFirstStaff(params) { + return new Promise((resolve, reject) => { + request({ + url: '/workflow/getFirstStaff', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询员工信息 +export function queryStaffInfos(params) { + return new Promise((resolve, reject) => { + request({ + url: '/query.staff.infos', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询组织树 +export function listOrgTree(params) { + return new Promise((resolve, reject) => { + request({ + url: '/org.listOrgTree', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询房屋信息 +export function queryRooms(params) { + return new Promise((resolve, reject) => { + request({ + url: '/room.queryRooms', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询已售房屋 +export function queryRoomsWithSell(params) { + return new Promise((resolve, reject) => { + request({ + url: '/room.queryRoomsWithSell', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询未售房屋 +export function queryRoomsWithOutSell(params) { + return new Promise((resolve, reject) => { + request({ + url: '/room.queryRoomsWithOutSell', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询业主信息 +export function queryOwners(params) { + return new Promise((resolve, reject) => { + request({ + url: '/owner.queryOwners', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/contract/contractChangeDetailApi.js b/src/api/contract/contractChangeDetailApi.js new file mode 100644 index 0000000..b73f053 --- /dev/null +++ b/src/api/contract/contractChangeDetailApi.js @@ -0,0 +1,110 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询合同列表 +export function queryContract(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContract', + method: 'get', + params + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询房间信息 +export function queryRooms(params, url = '/room.queryRooms') { + params.communityId = getCommunityId() + return new Promise((resolve, reject) => { + request({ + url: url, + method: 'get', + params + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询合同关联房间 +export function queryContractRoom(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractRoom', + method: 'get', + params + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询组织树 +export function listOrgTree(params) { + params.communityId = getCommunityId() + return new Promise((resolve, reject) => { + request({ + url: '/org.listOrgTree', + method: 'get', + params + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询员工信息 +export function queryStaffInfos(params) { + return new Promise((resolve, reject) => { + request({ + url: '/query.staff.infos', + method: 'get', + params + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取审批人 +export function getFirstStaff(params) { + params.communityId = getCommunityId() + return new Promise((resolve, reject) => { + request({ + url: '/workflow/getFirstStaff', + method: 'get', + params + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 保存合同变更计划 +export function saveContractChangePlan(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/saveContractChangePlan', + method: 'post', + data + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/contract/contractChangeManageApi.js b/src/api/contract/contractChangeManageApi.js new file mode 100644 index 0000000..c3fa88d --- /dev/null +++ b/src/api/contract/contractChangeManageApi.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +/** + * 查询合同变更计划列表 + * @param {Object} params 查询参数 + * @returns {Promise} 返回Promise对象 + */ +export function queryContractChangePlan(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractChangePlan', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 查询合同类型列表 + * @param {Object} params 查询参数 + * @returns {Promise} 返回Promise对象 + */ +export function queryContractType(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractType', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 删除合同变更计划 + * @param {Object} data 删除数据 + * @returns {Promise} 返回Promise对象 + */ +export function deleteContractChangePlan(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/deleteContractChangePlan', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/contract/contractManageApi.js b/src/api/contract/contractManageApi.js new file mode 100644 index 0000000..4f04259 --- /dev/null +++ b/src/api/contract/contractManageApi.js @@ -0,0 +1,133 @@ +import request from '@/utils/request' + +// 查询合同列表 +export function queryContract(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContract', + method: 'get', + params + }).then(response => { + const res = response.data + resolve({ + data: res.data, + total: res.total + }) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询合同类型 +export function queryContractType(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractType', + method: 'get', + params + }).then(response => { + const res = response.data + resolve({ + data: res.data + }) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询合同类型规格 +export function queryContractTypeSpec(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractTypeSpec', + method: 'get', + params + }).then(response => { + const res = response.data + resolve({ + data: res.data + }) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询合同文件 +export function queryContractFile(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contractFile/queryContractFile', + method: 'get', + params + }).then(response => { + const res = response.data + resolve({ + data: res.data + }) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新合同 +export function updateContract(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/updateContract', + method: 'post', + data + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg)) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 删除合同 +export function deleteContract(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/deleteContract', + method: 'post', + data + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg)) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 上传合同文件 +export function uploadContactFile(data) { + return new Promise((resolve, reject) => { + request({ + url: '/uploadContactFile', + method: 'post', + data, + headers: { + 'Content-Type': 'multipart/form-data' + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/contract/contractPartyaManageApi.js b/src/api/contract/contractPartyaManageApi.js new file mode 100644 index 0000000..cf6ab79 --- /dev/null +++ b/src/api/contract/contractPartyaManageApi.js @@ -0,0 +1,78 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询合同甲方列表 +export function queryContractPartya(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contractPartya/queryContractPartya', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加合同甲方 +export function saveContractPartya(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contractPartya/saveContractPartya', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 修改合同甲方 +export function updateContractPartya(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contractPartya/updateContractPartya', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除合同甲方 +export function deleteContractPartya(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contractPartya/deleteContractPartya', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/contract/contractTypeManageApi.js b/src/api/contract/contractTypeManageApi.js new file mode 100644 index 0000000..5bf7cff --- /dev/null +++ b/src/api/contract/contractTypeManageApi.js @@ -0,0 +1,129 @@ +import request from '@/utils/request' + +// 查询合同类型列表 +export function queryContractType(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractType', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加合同类型 +export function saveContractType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/saveContractType', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 修改合同类型 +export function updateContractType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/updateContractType', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除合同类型 +export function deleteContractType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/deleteContractType', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询合同类型模板 +export function queryContractTypeTemplate(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractTypeTemplate', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 保存合同类型模板 +export function saveContractTypeTemplate(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/saveContractTypeTemplate', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新合同类型模板 +export function updateContractTypeTemplate(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/updateContractTypeTemplate', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 打印合同模板 +export function printContractTemplate(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/printContractTemplate', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/contract/contractTypeSpecManageApi.js b/src/api/contract/contractTypeSpecManageApi.js new file mode 100644 index 0000000..4fc510e --- /dev/null +++ b/src/api/contract/contractTypeSpecManageApi.js @@ -0,0 +1,78 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询合同类型规格列表 +export function queryContractTypeSpec(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractTypeSpec', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加合同类型规格 +export function saveContractTypeSpec(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/saveContractTypeSpec', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 修改合同类型规格 +export function updateContractTypeSpec(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/updateContractTypeSpec', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除合同类型规格 +export function deleteContractTypeSpec(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/deleteContractTypeSpec', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/contract/expirationContractManageApi.js b/src/api/contract/expirationContractManageApi.js new file mode 100644 index 0000000..ff09d10 --- /dev/null +++ b/src/api/contract/expirationContractManageApi.js @@ -0,0 +1,49 @@ +import request from '@/utils/request' + +// 查询合同列表 +export function queryContract(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContract', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询合同类型 +export function queryContractType(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractType', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 终止合同 +export function stopContract(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/stopContract', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/contract/newContractManageApi.js b/src/api/contract/newContractManageApi.js new file mode 100644 index 0000000..6780c49 --- /dev/null +++ b/src/api/contract/newContractManageApi.js @@ -0,0 +1,100 @@ +import request from '@/utils/request' + +// 查询合同列表 +export function getContractList(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContract', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询合同类型列表 +export function getContractTypeList(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractType', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询合同规格 +export function getContractTypeSpec(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/queryContractTypeSpec', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新合同信息 +export function updateContract(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/updateContract', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除合同 +export function deleteContract(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/deleteContract', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 上传合同文件 +export function uploadContractFile(data) { + return new Promise((resolve, reject) => { + request({ + url: '/contractFile/uploadContactFile', + method: 'post', + data, + headers: { + 'Content-Type': 'multipart/form-data' + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/contract/printContractApi.js b/src/api/contract/printContractApi.js new file mode 100644 index 0000000..1cbe53c --- /dev/null +++ b/src/api/contract/printContractApi.js @@ -0,0 +1,21 @@ +import request from '@/utils/request' + +/** + * 获取合同打印模板 + * @param {Object} params 请求参数 + * @returns {Promise} Promise对象 + */ +export function getPrintContractTemplate(params) { + return new Promise((resolve, reject) => { + request({ + url: '/contract/printContractTemplate', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/components/contract/ChooseContract.vue b/src/components/contract/ChooseContract.vue new file mode 100644 index 0000000..257bab9 --- /dev/null +++ b/src/components/contract/ChooseContract.vue @@ -0,0 +1,126 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/ContractChangeAssets.vue b/src/components/contract/ContractChangeAssets.vue new file mode 100644 index 0000000..2b8e522 --- /dev/null +++ b/src/components/contract/ContractChangeAssets.vue @@ -0,0 +1,118 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/ContractChangeLease.vue b/src/components/contract/ContractChangeLease.vue new file mode 100644 index 0000000..e054aa8 --- /dev/null +++ b/src/components/contract/ContractChangeLease.vue @@ -0,0 +1,64 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/ContractChangeMainBody.vue b/src/components/contract/ContractChangeMainBody.vue new file mode 100644 index 0000000..d6a40e9 --- /dev/null +++ b/src/components/contract/ContractChangeMainBody.vue @@ -0,0 +1,120 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/StopContract.vue b/src/components/contract/StopContract.vue new file mode 100644 index 0000000..51c841e --- /dev/null +++ b/src/components/contract/StopContract.vue @@ -0,0 +1,58 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/addContractPartya.vue b/src/components/contract/addContractPartya.vue new file mode 100644 index 0000000..aed31df --- /dev/null +++ b/src/components/contract/addContractPartya.vue @@ -0,0 +1,130 @@ + + + \ No newline at end of file diff --git a/src/components/contract/addContractType.vue b/src/components/contract/addContractType.vue new file mode 100644 index 0000000..db86430 --- /dev/null +++ b/src/components/contract/addContractType.vue @@ -0,0 +1,147 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/addContractTypeSpec.vue b/src/components/contract/addContractTypeSpec.vue new file mode 100644 index 0000000..4e70a4e --- /dev/null +++ b/src/components/contract/addContractTypeSpec.vue @@ -0,0 +1,220 @@ + + + \ No newline at end of file diff --git a/src/components/contract/addTemplateView.vue b/src/components/contract/addTemplateView.vue new file mode 100644 index 0000000..a5418ef --- /dev/null +++ b/src/components/contract/addTemplateView.vue @@ -0,0 +1,159 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/deleteContract.vue b/src/components/contract/deleteContract.vue new file mode 100644 index 0000000..9b542b8 --- /dev/null +++ b/src/components/contract/deleteContract.vue @@ -0,0 +1,55 @@ + + + \ No newline at end of file diff --git a/src/components/contract/deleteContractChangePlan.vue b/src/components/contract/deleteContractChangePlan.vue new file mode 100644 index 0000000..5ad921c --- /dev/null +++ b/src/components/contract/deleteContractChangePlan.vue @@ -0,0 +1,70 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/deleteContractPartya.vue b/src/components/contract/deleteContractPartya.vue new file mode 100644 index 0000000..875a217 --- /dev/null +++ b/src/components/contract/deleteContractPartya.vue @@ -0,0 +1,71 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/deleteContractType.vue b/src/components/contract/deleteContractType.vue new file mode 100644 index 0000000..5719e5a --- /dev/null +++ b/src/components/contract/deleteContractType.vue @@ -0,0 +1,85 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/deleteContractTypeSpec.vue b/src/components/contract/deleteContractTypeSpec.vue new file mode 100644 index 0000000..b127033 --- /dev/null +++ b/src/components/contract/deleteContractTypeSpec.vue @@ -0,0 +1,63 @@ + + + \ No newline at end of file diff --git a/src/components/contract/editContract.vue b/src/components/contract/editContract.vue new file mode 100644 index 0000000..1e48cf0 --- /dev/null +++ b/src/components/contract/editContract.vue @@ -0,0 +1,376 @@ + + + \ No newline at end of file diff --git a/src/components/contract/editContractPartya.vue b/src/components/contract/editContractPartya.vue new file mode 100644 index 0000000..19979c6 --- /dev/null +++ b/src/components/contract/editContractPartya.vue @@ -0,0 +1,138 @@ + + + \ No newline at end of file diff --git a/src/components/contract/editContractType.vue b/src/components/contract/editContractType.vue new file mode 100644 index 0000000..d36bbb8 --- /dev/null +++ b/src/components/contract/editContractType.vue @@ -0,0 +1,158 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/editContractTypeSpec.vue b/src/components/contract/editContractTypeSpec.vue new file mode 100644 index 0000000..815003f --- /dev/null +++ b/src/components/contract/editContractTypeSpec.vue @@ -0,0 +1,223 @@ + + + \ No newline at end of file diff --git a/src/components/contract/orgTreeShow.vue b/src/components/contract/orgTreeShow.vue new file mode 100644 index 0000000..7ba2ade --- /dev/null +++ b/src/components/contract/orgTreeShow.vue @@ -0,0 +1,83 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/purchaseApprovers.vue b/src/components/contract/purchaseApprovers.vue new file mode 100644 index 0000000..a8dd959 --- /dev/null +++ b/src/components/contract/purchaseApprovers.vue @@ -0,0 +1,131 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/searchOwner.vue b/src/components/contract/searchOwner.vue new file mode 100644 index 0000000..b4216d3 --- /dev/null +++ b/src/components/contract/searchOwner.vue @@ -0,0 +1,196 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/searchRoom.vue b/src/components/contract/searchRoom.vue new file mode 100644 index 0000000..0d72d6e --- /dev/null +++ b/src/components/contract/searchRoom.vue @@ -0,0 +1,230 @@ + + + + + \ No newline at end of file diff --git a/src/components/contract/selectStaff.vue b/src/components/contract/selectStaff.vue new file mode 100644 index 0000000..b390859 --- /dev/null +++ b/src/components/contract/selectStaff.vue @@ -0,0 +1,193 @@ + + + + + \ No newline at end of file diff --git a/src/i18n/contractI18n.js b/src/i18n/contractI18n.js new file mode 100644 index 0000000..870198c --- /dev/null +++ b/src/i18n/contractI18n.js @@ -0,0 +1,37 @@ +import { messages as contractTypeManageMessages } from '../views/contract/contractTypeManageLang' +import { messages as contractTypeSpecManageMessages } from '../views/contract/contractTypeSpecManageLang' +import { messages as contractPartyaManageMessages } from '../views/contract/contractPartyaManageLang' +import { messages as newContractManageMessages } from '../views/contract/newContractManageLang' +import { messages as printContractMessages } from '../views/contract/printContractLang' +import { messages as addContractMessages } from '../views/contract/addContractLang' +import { messages as contractManageMessages } from '../views/contract/contractManageLang' +import { messages as contractChangeManageMessages } from '../views/contract/contractChangeManageLang' +import { messages as contractChangeDetailMessages } from '../views/contract/contractChangeDetailLang' +import { messages as expirationContractManageMessages } from '../views/contract/expirationContractManageLang' + +export const messages ={ + en:{ + ...contractTypeManageMessages.en, + ...contractTypeSpecManageMessages.en, + ...contractPartyaManageMessages.en, + ...newContractManageMessages.en, + ...printContractMessages.en, + ...addContractMessages.en, + ...contractManageMessages.en, + ...contractChangeManageMessages.en, + ...contractChangeDetailMessages.en, + ...expirationContractManageMessages.en, + }, + zh:{ + ...contractTypeManageMessages.zh, + ...contractTypeSpecManageMessages.zh, + ...contractPartyaManageMessages.zh, + ...newContractManageMessages.zh, + ...printContractMessages.zh, + ...addContractMessages.zh, + ...contractManageMessages.zh, + ...contractChangeManageMessages.zh, + ...contractChangeDetailMessages.zh, + ...expirationContractManageMessages.zh, + } +} \ No newline at end of file diff --git a/src/i18n/index.js b/src/i18n/index.js index 84067dd..480f01b 100644 --- a/src/i18n/index.js +++ b/src/i18n/index.js @@ -207,6 +207,7 @@ import { messages as printEquipmentAccountLabelMessages } from '../views/resourc import {messages as inspectioni18n} from './inspectionI18n' import {messages as machineI18n} from './machineI18n' import {messages as oaI18n} from './oaI18n' +import {messages as contractI18n} from './contractI18n' Vue.use(VueI18n) @@ -418,6 +419,7 @@ const messages = { ...inspectioni18n.en, ...machineI18n.en, ...oaI18n.en, + ...contractI18n.en, }, zh: { ...loginMessages.zh, @@ -625,6 +627,7 @@ const messages = { ...inspectioni18n.zh, ...machineI18n.zh, ...oaI18n.zh, + ...contractI18n.zh, } } diff --git a/src/router/contractRouter.js b/src/router/contractRouter.js new file mode 100644 index 0000000..8619be2 --- /dev/null +++ b/src/router/contractRouter.js @@ -0,0 +1,47 @@ +export default [ + { + path: '/pages/admin/contractTypeManage', + name: '/pages/admin/contractTypeManage', + component: () => import('@/views/contract/contractTypeManageList.vue') + }, + { + path: '/views/contract/contractTypeSpecManage', + name: '/views/contract/contractTypeSpecManage', + component: () => import('@/views/contract/contractTypeSpecManageList.vue') + }, + { + path: '/pages/admin/contractPartyaManage', + name: '/pages/admin/contractPartyaManage', + component: () => import('@/views/contract/contractPartyaManageList.vue') + }, + { + path: '/pages/admin/newContractManage', + name: '/pages/admin/newContractManage', + component: () => import('@/views/contract/newContractManageList.vue') + }, + { + path: '/views/contract/addContract', + name: '/views/contract/addContract', + component: () => import('@/views/contract/addContractList.vue') + }, + { + path: '/pages/admin/contractManage', + name: '/pages/admin/contractManage', + component: () => import('@/views/contract/contractManageList.vue') + }, + { + path: '/pages/admin/contractChangeManage', + name: '/pages/admin/contractChangeManage', + component: () => import('@/views/contract/contractChangeManageList.vue') + }, + { + path: '/views/contract/contractChangeDetail', + name: '/views/contract/contractChangeDetail', + component: () => import('@/views/contract/contractChangeDetailList.vue') + }, + { + path: '/pages/admin/expirationContractManage', + name: '/pages/admin/expirationContractManage', + component: () => import('@/views/contract/expirationContractManageList.vue') + }, +] \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js index 2962268..ed4ca21 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -6,6 +6,7 @@ import printEquipmentAccountLabel from '@/views/resource/printEquipmentAccountLa import inspectionRouter from './inspectionRouter' import machineRouter from './machineRouter' import oaRouter from './oaRouter' +import contractRouter from './contractRouter' Vue.use(VueRouter) @@ -928,6 +929,7 @@ const routes = [ ...inspectionRouter, ...machineRouter, ...oaRouter, + ...contractRouter, // 其他子路由可以在这里添加 ] }, @@ -956,10 +958,15 @@ const routes = [ component: () => import('@/views/oa/printQuestionAnswerDetailList.vue') }, { - path:'/views/oa/printOwnerVoting', - name:'/views/oa/printOwnerVoting', + path: '/views/oa/printOwnerVoting', + name: '/views/oa/printOwnerVoting', component: () => import('@/views/oa/printOwnerVotingList.vue') - }, + }, + { + path: '/views/contract/printContract', + name: '/views/contract/printContract', + component: () => import('@/views/contract/printContractList.vue') + }, ] const router = new VueRouter({ diff --git a/src/views/contract/addContractLang.js b/src/views/contract/addContractLang.js new file mode 100644 index 0000000..824e303 --- /dev/null +++ b/src/views/contract/addContractLang.js @@ -0,0 +1,158 @@ +export const messages = { + en: { + contract: { + renewContract: 'Renew Contract', + draftContract: 'Draft Contract', + parentContractName: 'Parent Contract Name', + parentContractCode: 'Parent Contract Code', + parentContractStatus: 'Parent Contract Status', + contractName: 'Contract Name', + requiredContractName: 'Required, please fill in contract name', + contractCode: 'Contract Code', + requiredContractCode: 'Required, please fill in contract code', + contractType: 'Contract Type', + requiredContractType: 'Required, please select contract type', + partyA: 'Party A', + requiredPartyA: 'Required, please select Party A', + partyAContact: 'Party A Contact', + partyAPhone: 'Party A Phone', + partyB: 'Party B', + partyBContact: 'Party B Contact', + partyBPhone: 'Party B Phone', + operator: 'Operator', + operatorPhone: 'Operator Phone', + contractAmount: 'Contract Amount', + startTime: 'Start Time', + requiredStartTime: 'Required, please fill in start time', + endTime: 'End Time', + requiredEndTime: 'Required, please fill in end time', + signingTime: 'Signing Time', + requiredSigningTime: 'Required, please fill in signing time', + contractAttachments: 'Contract Attachments', + addAttachment: 'Add Attachment', + attachment: 'Attachment', + deleteAttachment: 'Delete Attachment', + relatedRooms: 'Related Rooms', + add: 'Add', + room: 'Room', + owner: 'Owner', + phone: 'Phone', + builtUpArea: 'Built-up Area', + squareMeter: 'Square Meter', + roomStatus: 'Room Status', + select: 'Select', + approverInfo: 'Approver Information', + organization: 'Organization', + requiredOrganization: 'Required, please fill in organization', + staff: 'Staff', + requiredStaff: 'Required, please fill in staff', + requiredNextHandler: 'Required, please select next handler', + selectStaff: 'Select Staff', + orgInfo: 'Organization Information', + staffInfo: 'Staff Information', + submitter: 'Submitter', + dynamicAssign: 'Dynamic Assign', + selectRoom: 'Select Room', + inputBuildingNum: 'Input building number', + inputRoomNum: 'Input room number', + roomId: 'Room ID', + buildingNum: 'Building Number', + building: 'Building', + unitNum: 'Unit Number', + unit: 'Unit', + roomNum: 'Room Number', + floor: 'Floor', + floorUnit: 'Floor', + selectOwner: 'Select Owner', + inputRoomFullNum: 'Input room full number (Building-Unit-Room)', + inputOwnerName: 'Input owner name', + ownerId: 'Owner ID', + name: 'Name', + personType: 'Person Type', + personRole: 'Person Role', + idCard: 'ID Card', + contact: 'Contact', + submitSuccess: 'Submit successfully', + invalidFileType: 'Operation failed, please upload image or PDF format files', + required: 'Required' + } + }, + zh: { + contract: { + renewContract: '续签合同', + draftContract: '起草合同', + parentContractName: '父合同名称', + parentContractCode: '父合同编号', + parentContractStatus: '父合同状态', + contractName: '合同名称', + requiredContractName: '必填,请填写合同名称', + contractCode: '合同编号', + requiredContractCode: '必填,请填写合同编号', + contractType: '合同类型', + requiredContractType: '必填,请选择合同类型', + partyA: '甲方', + requiredPartyA: '必填,请选择甲方', + partyAContact: '甲方联系人', + partyAPhone: '甲方联系电话', + partyB: '乙方', + partyBContact: '乙方联系人', + partyBPhone: '乙方联系电话', + operator: '经办人', + operatorPhone: '联系电话', + contractAmount: '合同金额', + startTime: '开始时间', + requiredStartTime: '必填,请填写开始时间', + endTime: '结束时间', + requiredEndTime: '必填,请填写结束时间', + signingTime: '签订时间', + requiredSigningTime: '必填,请填写签订时间', + contractAttachments: '合同附件', + addAttachment: '添加附件', + attachment: '附件', + deleteAttachment: '删除附件', + relatedRooms: '关联房屋', + add: '添加', + room: '房屋', + owner: '业主', + phone: '电话', + builtUpArea: '建筑面积', + squareMeter: '平方米', + roomStatus: '房屋状态', + select: '选择', + approverInfo: '审批人信息', + organization: '所属组织', + requiredOrganization: '必填,请填写所属组织', + staff: '员工', + requiredStaff: '必填,请填写所属员工', + requiredNextHandler: '必填,请选择下一处理人', + selectStaff: '选择员工', + orgInfo: '组织信息', + staffInfo: '员工信息', + submitter: '提交者', + dynamicAssign: '动态指定', + selectRoom: '选择房屋', + inputBuildingNum: '输入小区楼编号', + inputRoomNum: '输入房屋编号', + roomId: '房屋ID', + buildingNum: '楼栋编号', + building: '号楼', + unitNum: '单元编号', + unit: '单元', + roomNum: '房屋编号', + floor: '楼层', + floorUnit: '层', + selectOwner: '选择业主', + inputRoomFullNum: '输入房屋编号(楼栋-单元-房屋)', + inputOwnerName: '输入业主名称', + ownerId: '业主编号', + name: '名称', + personType: '人员类型', + personRole: '人员角色', + idCard: '证件号', + contact: '联系方式', + submitSuccess: '提交成功', + invalidFileType: '操作失败,请上传图片、PDF格式的文件', + required: '必填' + } + } +} \ No newline at end of file diff --git a/src/views/contract/addContractList.vue b/src/views/contract/addContractList.vue new file mode 100644 index 0000000..0eed952 --- /dev/null +++ b/src/views/contract/addContractList.vue @@ -0,0 +1,447 @@ + + + + + \ No newline at end of file diff --git a/src/views/contract/contractChangeDetailLang.js b/src/views/contract/contractChangeDetailLang.js new file mode 100644 index 0000000..4d4e498 --- /dev/null +++ b/src/views/contract/contractChangeDetailLang.js @@ -0,0 +1,194 @@ +export const messages = { + en: { + contractChangeDetail: { + contractInfo: 'Contract Information', + selectContract: 'Select Contract', + contractName: 'Contract Name', + contractCode: 'Contract Code', + contractType: 'Contract Type', + partyA: 'Party A', + partyB: 'Party B', + aContacts: 'Party A Contact', + bContacts: 'Party B Contact', + aLink: 'Party A Phone', + bLink: 'Party B Phone', + operator: 'Operator', + operatorLink: 'Operator Phone', + amount: 'Amount', + startTime: 'Start Time', + endTime: 'End Time', + signingTime: 'Signing Time', + changeRemark: 'Change Remark', + changeRemarkPlaceholder: 'Required, please fill in the change remark', + changeRemarkRequired: 'Change remark is required' + }, + contractChangeMainBody: { + title: 'Main Body Change', + contractName: 'Contract Name', + contractNamePlaceholder: 'Required, please fill in contract name', + partyA: 'Party A', + partyAPlaceholder: 'Required, please fill in Party A', + aContacts: 'Party A Contact', + aContactsPlaceholder: 'Required, please fill in Party A contact', + aLink: 'Party A Phone', + aLinkPlaceholder: 'Required, please fill in Party A phone', + partyB: 'Party B', + partyBPlaceholder: 'Required, please fill in Party B', + bContacts: 'Party B Contact', + bContactsPlaceholder: 'Required, please fill in Party B contact', + bLink: 'Party B Phone', + bLinkPlaceholder: 'Required, please fill in Party B phone' + }, + contractChangeLease: { + title: 'Lease Adjustment', + startTime: 'Start Time', + startTimePlaceholder: 'Required, please select start time', + endTime: 'End Time', + endTimePlaceholder: 'Required, please select end time' + }, + contractChangeAssets: { + title: 'Related Rooms', + room: 'Room', + owner: 'Owner', + phone: 'Phone', + area: 'Area', + status: 'Status', + squareMeters: 'Square Meters', + confirmDelete: 'Are you sure to delete this room?' + }, + searchRoom: { + title: 'Select Room', + buildingNo: 'Building No', + buildingNoPlaceholder: 'Input building number', + roomNo: 'Room No', + roomNoPlaceholder: 'Input room number', + roomId: 'Room ID', + building: 'Building', + unit: 'Unit', + room: 'Room', + floorUnit: 'Floor' + }, + purchaseApprovers: { + title: 'Approver Information', + orgName: 'Organization', + staffName: 'Staff', + orgPlaceholder: 'Required, please fill in organization', + staffPlaceholder: 'Required, please select staff', + staffRequired: 'Staff is required', + staffNameRequired: 'Staff name is required' + }, + selectStaff: { + title: 'Select Staff', + orgInfo: 'Organization Information', + staffInfo: 'Staff Information', + submitter: 'Submitter', + dynamicAssign: 'Dynamic Assignment' + }, + chooseContract: { + title: 'Select Contract', + searchPlaceholder: 'Input contract name', + contractName: 'Contract Name', + contractCode: 'Contract Code', + contractType: 'Contract Type', + partyA: 'Party A', + partyB: 'Party B', + signingTime: 'Signing Time' + } + }, + zh: { + contractChangeDetail: { + contractInfo: '合同信息', + selectContract: '选择合同', + contractName: '合同名称', + contractCode: '合同编号', + contractType: '合同类型', + partyA: '甲方', + partyB: '乙方', + aContacts: '甲方联系人', + bContacts: '乙方联系人', + aLink: '甲方联系电话', + bLink: '乙方联系电话', + operator: '经办人', + operatorLink: '联系电话', + amount: '合同金额', + startTime: '开始时间', + endTime: '结束时间', + signingTime: '签订时间', + changeRemark: '变更说明', + changeRemarkPlaceholder: '必填,请填写变更说明', + changeRemarkRequired: '变更说明不能为空' + }, + contractChangeMainBody: { + title: '主体变更', + contractName: '合同名称', + contractNamePlaceholder: '必填,请填写合同名称', + partyA: '甲方', + partyAPlaceholder: '必填,请填写甲方', + aContacts: '甲方联系人', + aContactsPlaceholder: '必填,请填写甲方联系人', + aLink: '甲方联系电话', + aLinkPlaceholder: '必填,请填写甲方联系电话', + partyB: '乙方', + partyBPlaceholder: '必填,请填写乙方', + bContacts: '乙方联系人', + bContactsPlaceholder: '必填,请填写乙方联系人', + bLink: '乙方联系电话', + bLinkPlaceholder: '必填,请填写乙方联系电话' + }, + contractChangeLease: { + title: '租期调整', + startTime: '开始时间', + startTimePlaceholder: '必填,请选择开始时间', + endTime: '结束时间', + endTimePlaceholder: '必填,请选择结束时间' + }, + contractChangeAssets: { + title: '关联房屋', + room: '房屋', + owner: '业主', + phone: '电话', + area: '建筑面积', + status: '房屋状态', + squareMeters: '平方米', + confirmDelete: '确定删除该房屋吗?' + }, + searchRoom: { + title: '选择房屋', + buildingNo: '楼栋编号', + buildingNoPlaceholder: '输入楼栋编号', + roomNo: '房屋编号', + roomNoPlaceholder: '输入房屋编号', + roomId: '房屋ID', + building: '号楼', + unit: '单元', + room: '室', + floorUnit: '层' + }, + purchaseApprovers: { + title: '审批人信息', + orgName: '所属组织', + staffName: '员工', + orgPlaceholder: '必填,请填写所属组织', + staffPlaceholder: '必填,请选择员工', + staffRequired: '员工不能为空', + staffNameRequired: '员工名称不能为空' + }, + selectStaff: { + title: '选择员工', + orgInfo: '组织信息', + staffInfo: '员工信息', + submitter: '提交者', + dynamicAssign: '动态指定' + }, + chooseContract: { + title: '选择合同信息', + searchPlaceholder: '输入合同信息名称', + contractName: '合同名称', + contractCode: '合同编号', + contractType: '合同类型', + partyA: '甲方', + partyB: '乙方', + signingTime: '签订时间' + } + } +} \ No newline at end of file diff --git a/src/views/contract/contractChangeDetailList.vue b/src/views/contract/contractChangeDetailList.vue new file mode 100644 index 0000000..319ee4c --- /dev/null +++ b/src/views/contract/contractChangeDetailList.vue @@ -0,0 +1,303 @@ + + + + + \ No newline at end of file diff --git a/src/views/contract/contractChangeManageLang.js b/src/views/contract/contractChangeManageLang.js new file mode 100644 index 0000000..e0825a8 --- /dev/null +++ b/src/views/contract/contractChangeManageLang.js @@ -0,0 +1,74 @@ +export const messages = { + en: { + contractChangeManage: { + search: { + title: 'Search Conditions', + contractName: 'Please enter contract name', + contractCode: 'Please enter contract code', + contractType: 'Please select contract type' + }, + list: { + title: 'Contract Change Information', + mainBodyChange: 'Main Body Change', + leaseAdjustment: 'Lease Adjustment', + assetsChange: 'Assets Change' + }, + table: { + contractName: 'Contract Name', + contractCode: 'Contract Code', + contractType: 'Contract Type', + partyA: 'Party A', + partyB: 'Party B', + changeType: 'Change Type', + changePerson: 'Change Person', + applyTime: 'Apply Time', + remark: 'Remark', + state: 'State' + }, + note: 'Note: Please set up the contract change process in System Management > Process Management before using this function', + fetchError: 'Failed to get contract change list' + }, + deleteContractChangePlan: { + title: 'Confirm Operation', + confirmText: 'Are you sure to delete the contract change information?', + deleteSuccess: 'Delete successfully', + deleteError: 'Failed to delete contract change' + } + }, + zh: { + contractChangeManage: { + search: { + title: '查询条件', + contractName: '请输入合同名称', + contractCode: '请输入合同编号', + contractType: '请选择合同类型' + }, + list: { + title: '合同变更信息', + mainBodyChange: '主体变更', + leaseAdjustment: '租期调整', + assetsChange: '资产变更' + }, + table: { + contractName: '合同名称', + contractCode: '合同编号', + contractType: '合同类型', + partyA: '甲方', + partyB: '乙方', + changeType: '变更类型', + changePerson: '变更人', + applyTime: '申请时间', + remark: '说明', + state: '状态' + }, + note: '注意:此功能使用前请先到系统管理>流程管理中设置合同变更流程', + fetchError: '获取合同变更列表失败' + }, + deleteContractChangePlan: { + title: '请确认您的操作', + confirmText: '确定删除合同变更信息?', + deleteSuccess: '删除成功', + deleteError: '删除合同变更失败' + } + } +} \ No newline at end of file diff --git a/src/views/contract/contractChangeManageList.vue b/src/views/contract/contractChangeManageList.vue new file mode 100644 index 0000000..0aae92e --- /dev/null +++ b/src/views/contract/contractChangeManageList.vue @@ -0,0 +1,212 @@ + + + + + \ No newline at end of file diff --git a/src/views/contract/contractManageLang.js b/src/views/contract/contractManageLang.js new file mode 100644 index 0000000..96b1875 --- /dev/null +++ b/src/views/contract/contractManageLang.js @@ -0,0 +1,188 @@ +export const messages = { + en: { + contractManage: { + search: { + title: 'Search Conditions', + hide: 'Hide', + more: 'More', + search: 'Search', + reset: 'Reset' + }, + list: { + title: 'Contract Information' + }, + contractNamePlaceholder: 'Please enter contract name', + contractCodePlaceholder: 'Please enter contract number', + contractTypePlaceholder: 'Please select contract type', + partyBPlaceholder: 'Please enter party B', + startTimePlaceholder: 'Please enter start time', + endTimePlaceholder: 'Please enter end time', + parentContractCodePlaceholder: 'Please enter parent contract number', + fetchError: 'Failed to fetch contract data', + table: { + contractName: 'Contract Name', + contractCode: 'Contract Number', + parentContractCode: 'Parent Contract Number', + contractType: 'Contract Type', + operator: 'Operator', + amount: 'Contract Amount', + partyB: 'Party B', + validityPeriod: 'Validity Period', + createTime: 'Creation Time', + status: 'Status', + operation: 'Operation' + }, + operation: { + fee: 'Fee', + view: 'View', + print: 'Print', + delete: 'Delete' + }, + edit: { + title: 'Edit Contract', + contractName: 'Contract Name', + contractNamePlaceholder: 'Required, please enter contract name', + contractCode: 'Contract Number', + contractCodePlaceholder: 'Required, please enter contract number', + contractType: 'Contract Type', + contractTypePlaceholder: 'Required, please select contract type', + partyA: 'Party A', + partyAPlaceholder: 'Required, please enter party A', + aContacts: 'Party A Contact', + aContactsPlaceholder: 'Required, please enter party A contact', + aLink: 'Party A Contact Phone', + aLinkPlaceholder: 'Required, please enter party A contact phone', + partyB: 'Party B', + partyBPlaceholder: 'Required, please enter party B', + bContacts: 'Party B Contact', + bContactsPlaceholder: 'Required, please enter party B contact', + bLink: 'Party B Contact Phone', + bLinkPlaceholder: 'Required, please enter party B contact phone', + operator: 'Operator', + operatorPlaceholder: 'Required, please enter operator', + operatorLink: 'Contact Phone', + operatorLinkPlaceholder: 'Required, please enter contact phone', + amount: 'Contract Amount', + amountPlaceholder: 'Optional, please enter contract amount', + startTime: 'Start Time', + startTimePlaceholder: 'Required, please enter start time', + endTime: 'End Time', + endTimePlaceholder: 'Required, please enter end time', + signingTime: 'Signing Time', + signingTimePlaceholder: 'Required, please enter signing time', + contractFiles: 'Contract Attachments', + addFile: 'Add Attachment', + fileIndex: 'No.{index}', + deleteFile: 'Delete Attachment', + cancel: 'Cancel', + save: 'Save', + saveSuccess: 'Contract saved successfully', + saveError: 'Failed to save contract', + fileTypeError: 'Only PNG, PDF, JPG files are allowed', + uploadSuccess: 'File uploaded successfully', + uploadError: 'Failed to upload file' + }, + delete: { + title: 'Confirm Operation', + confirmMessage: 'Are you sure to delete this contract?', + cancel: 'Cancel', + confirm: 'Confirm', + success: 'Contract deleted successfully', + error: 'Failed to delete contract' + } + } + }, + zh: { + contractManage: { + search: { + title: '查询条件', + hide: '隐藏', + more: '更多', + search: '查询', + reset: '重置' + }, + list: { + title: '合同信息' + }, + contractNamePlaceholder: '请输入合同名称', + contractCodePlaceholder: '请输入合同编号', + contractTypePlaceholder: '请选择合同类型', + partyBPlaceholder: '请输入合同乙方', + startTimePlaceholder: '请输入起草开始时间', + endTimePlaceholder: '请输入起草结束时间', + parentContractCodePlaceholder: '请输入父合同编号', + fetchError: '获取合同数据失败', + table: { + contractName: '合同名称', + contractCode: '合同编号', + parentContractCode: '父合同编号', + contractType: '合同类型', + operator: '经办人', + amount: '合同金额', + partyB: '合同乙方', + validityPeriod: '有效期', + createTime: '起草时间', + status: '状态', + operation: '操作' + }, + operation: { + fee: '费用', + view: '查看', + print: '打印', + delete: '删除' + }, + edit: { + title: '编辑合同', + contractName: '合同名称', + contractNamePlaceholder: '必填,请填写合同名称', + contractCode: '合同编号', + contractCodePlaceholder: '必填,请填写合同编号', + contractType: '合同类型', + contractTypePlaceholder: '必填,请选择合同类型', + partyA: '甲方', + partyAPlaceholder: '必填,请填写甲方', + aContacts: '甲方联系人', + aContactsPlaceholder: '必填,请填写甲方联系人', + aLink: '甲方联系电话', + aLinkPlaceholder: '必填,请填写甲方联系电话', + partyB: '乙方', + partyBPlaceholder: '必填,请填写乙方', + bContacts: '乙方联系人', + bContactsPlaceholder: '必填,请填写乙方联系人', + bLink: '乙方联系电话', + bLinkPlaceholder: '必填,请填写乙方联系电话', + operator: '经办人', + operatorPlaceholder: '必填,请填写经办人', + operatorLink: '联系电话', + operatorLinkPlaceholder: '必填,请填写联系电话', + amount: '合同金额', + amountPlaceholder: '选填,请填写合同金额', + startTime: '开始时间', + startTimePlaceholder: '必填,请填写开始时间', + endTime: '结束时间', + endTimePlaceholder: '必填,请填写结束时间', + signingTime: '签订时间', + signingTimePlaceholder: '必填,请填写签订时间', + contractFiles: '合同附件', + addFile: '添加附件', + fileIndex: '第{index}个', + deleteFile: '删除附件', + cancel: '取消', + save: '保存', + saveSuccess: '合同保存成功', + saveError: '合同保存失败', + fileTypeError: '仅支持PNG、PDF、JPG格式文件', + uploadSuccess: '文件上传成功', + uploadError: '文件上传失败' + }, + delete: { + title: '请确认您的操作', + confirmMessage: '确定删除合同信息', + cancel: '点错了', + confirm: '确认删除', + success: '合同删除成功', + error: '合同删除失败' + } + } + } +} \ No newline at end of file diff --git a/src/views/contract/contractManageList.vue b/src/views/contract/contractManageList.vue new file mode 100644 index 0000000..c1f5362 --- /dev/null +++ b/src/views/contract/contractManageList.vue @@ -0,0 +1,264 @@ + + + + + \ No newline at end of file diff --git a/src/views/contract/contractPartyaManageLang.js b/src/views/contract/contractPartyaManageLang.js new file mode 100644 index 0000000..6b4e384 --- /dev/null +++ b/src/views/contract/contractPartyaManageLang.js @@ -0,0 +1,94 @@ +export const messages = { + en: { + contractPartyaManage: { + search: { + title: 'Search Conditions', + partyA: 'Party A', + aContacts: 'Party A Contact', + aLink: 'Contact Phone' + }, + list: { + title: 'Contract Party A' + }, + table: { + partyA: 'Party A', + aContacts: 'Party A Contact', + aLink: 'Contact Phone' + }, + form: { + partyA: 'Party A', + partyAPlaceholder: 'Please enter Party A', + aContacts: 'Party A Contact', + aContactsPlaceholder: 'Please enter Party A Contact', + aLink: 'Contact Phone', + aLinkPlaceholder: 'Please enter Contact Phone' + }, + validate: { + partyARequired: 'Party A is required', + partyAMaxLength: 'Party A is too long', + aContactsRequired: 'Party A Contact is required', + aContactsMaxLength: 'Party A Contact cannot exceed 64 characters', + aLinkRequired: 'Contact Phone is required', + aLinkFormat: 'Invalid Contact Phone format', + partyaIdRequired: 'Party A ID is required' + }, + add: { + title: 'Add Party A' + }, + edit: { + title: 'Edit Party A' + }, + delete: { + title: 'Confirm Operation', + confirmText: 'Are you sure to delete this Party A?' + }, + fetchError: 'Failed to fetch Party A data' + } + }, + zh: { + contractPartyaManage: { + search: { + title: '查询条件', + partyA: '甲方', + aContacts: '甲方联系人', + aLink: '联系电话' + }, + list: { + title: '合同甲方' + }, + table: { + partyA: '甲方', + aContacts: '甲方联系人', + aLink: '联系电话' + }, + form: { + partyA: '甲方', + partyAPlaceholder: '请输入甲方', + aContacts: '甲方联系人', + aContactsPlaceholder: '请输入甲方联系人', + aLink: '联系电话', + aLinkPlaceholder: '请输入联系电话' + }, + validate: { + partyARequired: '甲方不能为空', + partyAMaxLength: '甲方太长', + aContactsRequired: '甲方联系人不能为空', + aContactsMaxLength: '甲方联系人不能超过64个字符', + aLinkRequired: '联系电话不能为空', + aLinkFormat: '联系电话格式错误', + partyaIdRequired: '甲方编号不能为空' + }, + add: { + title: '添加甲方' + }, + edit: { + title: '修改甲方' + }, + delete: { + title: '请确认您的操作', + confirmText: '确定删除合同甲方吗?' + }, + fetchError: '获取甲方数据失败' + } + } +} \ No newline at end of file diff --git a/src/views/contract/contractPartyaManageList.vue b/src/views/contract/contractPartyaManageList.vue new file mode 100644 index 0000000..aaf65dd --- /dev/null +++ b/src/views/contract/contractPartyaManageList.vue @@ -0,0 +1,176 @@ + + + + + \ No newline at end of file diff --git a/src/views/contract/contractTypeManageLang.js b/src/views/contract/contractTypeManageLang.js new file mode 100644 index 0000000..5926848 --- /dev/null +++ b/src/views/contract/contractTypeManageLang.js @@ -0,0 +1,118 @@ +export const messages = { + en: { + contractTypeManage: { + search: { + title: 'Search Conditions', + typeNamePlaceholder: 'Please enter type name', + auditPlaceholder: 'Please select audit status' + }, + list: { + title: 'Contract Types', + setAudit: 'Set Auditor' + }, + table: { + typeName: 'Type Name', + audit: 'Audit Status', + remark: 'Description', + createTime: 'Create Time', + specInfo: 'Spec Info', + template: 'Template' + }, + add: { + title: 'Add Contract Type', + typeName: 'Type Name', + typeNamePlaceholder: 'Required, please enter type name', + audit: 'Audit Status', + auditPlaceholder: 'Please select audit status', + remark: 'Description', + remarkPlaceholder: 'Optional, please enter description' + }, + edit: { + title: 'Edit Contract Type', + typeName: 'Type Name', + typeNamePlaceholder: 'Required, please enter type name', + audit: 'Audit Status', + auditPlaceholder: 'Please select audit status', + remark: 'Description', + remarkPlaceholder: 'Optional, please enter description' + }, + delete: { + title: 'Confirm Operation', + confirmText: 'Are you sure to delete this contract type?' + }, + template: { + title: 'Contract Template', + content: 'Template Content', + placeholder: 'Required, please enter contract template' + }, + validate: { + contractTypeIdRequired: 'Contract type ID is required', + typeNameRequired: 'Type name is required', + typeNameMaxLength: 'Type name cannot exceed 64 characters', + auditRequired: 'Audit status is required', + remarkMaxLength: 'Description cannot exceed 200 characters', + contentRequired: 'Template content is required', + contractTypeRequired: 'Contract type is required' + }, + fetchError: 'Failed to fetch contract types' + } + }, + zh: { + contractTypeManage: { + search: { + title: '查询条件', + typeNamePlaceholder: '请输入类型名称', + auditPlaceholder: '请选择审核状态' + }, + list: { + title: '合同类型', + setAudit: '设置审核人员' + }, + table: { + typeName: '类型名称', + audit: '是否审核', + remark: '描述', + createTime: '创建时间', + specInfo: '扩展信息', + template: '合同模板' + }, + add: { + title: '添加合同类型', + typeName: '类型名称', + typeNamePlaceholder: '必填,请填写类型名称', + audit: '是否审核', + auditPlaceholder: '请选择审核状态', + remark: '描述', + remarkPlaceholder: '选填,请填写描述' + }, + edit: { + title: '修改合同类型', + typeName: '类型名称', + typeNamePlaceholder: '必填,请填写类型名称', + audit: '是否审核', + auditPlaceholder: '请选择审核状态', + remark: '描述', + remarkPlaceholder: '选填,请填写描述' + }, + delete: { + title: '请确认您的操作', + confirmText: '确定删除该合同类型吗?' + }, + template: { + title: '合同模板', + content: '模板内容', + placeholder: '必填,请输入合同模板' + }, + validate: { + contractTypeIdRequired: '合同类型ID不能为空', + typeNameRequired: '类型名称不能为空', + typeNameMaxLength: '类型名称不能超过64个字符', + auditRequired: '审核状态不能为空', + remarkMaxLength: '描述不能超过200个字符', + contentRequired: '模板内容必填', + contractTypeRequired: '合同类型不能为空' + }, + fetchError: '获取合同类型失败' + } + } +} \ No newline at end of file diff --git a/src/views/contract/contractTypeManageList.vue b/src/views/contract/contractTypeManageList.vue new file mode 100644 index 0000000..38079f1 --- /dev/null +++ b/src/views/contract/contractTypeManageList.vue @@ -0,0 +1,222 @@ + + + + + \ No newline at end of file diff --git a/src/views/contract/contractTypeSpecManageLang.js b/src/views/contract/contractTypeSpecManageLang.js new file mode 100644 index 0000000..9f03fe2 --- /dev/null +++ b/src/views/contract/contractTypeSpecManageLang.js @@ -0,0 +1,184 @@ +export const messages = { + en: { + contractTypeSpecManage: { + search: { + title: 'Search Conditions', + specCd: 'Spec ID', + specName: 'Spec Name', + specShow: 'Spec Display', + all: 'All', + yes: 'Yes', + no: 'No' + }, + table: { + title: 'Contract Extension Information', + specCd: 'Spec ID', + specName: 'Spec Name', + required: 'Required', + specShow: 'Display', + specValueType: 'Value Type', + specType: 'Spec Type', + listShow: 'Query Display', + operation: 'Operation' + }, + add: { + title: 'Add', + specName: 'Spec Name', + specNamePlaceholder: 'Required, please enter spec name', + specHoldplace: 'Description', + specHoldplacePlaceholder: 'Optional, please enter description', + required: 'Required', + requiredPlaceholder: 'Required, please select required', + specShow: 'Display', + specShowPlaceholder: 'Required, please select display', + specValueType: 'Value Type', + specValueTypePlaceholder: 'Required, please select value type', + specType: 'Spec Type', + specTypePlaceholder: 'Required, please select spec type', + listShow: 'Query Display', + listShowPlaceholder: 'Required, please select query display', + success: 'Add successfully', + error: 'Add failed' + }, + edit: { + title: 'Edit', + specName: 'Spec Name', + specNamePlaceholder: 'Required, please enter spec name', + specHoldplace: 'Description', + specHoldplacePlaceholder: 'Optional, please enter description', + required: 'Required', + requiredPlaceholder: 'Required, please select required', + specShow: 'Display', + specShowPlaceholder: 'Required, please select display', + specValueType: 'Value Type', + specValueTypePlaceholder: 'Required, please select value type', + specType: 'Spec Type', + specTypePlaceholder: 'Required, please select spec type', + listShow: 'Query Display', + listShowPlaceholder: 'Required, please select query display', + success: 'Edit successfully', + error: 'Edit failed' + }, + delete: { + title: 'Confirm Operation', + confirmText: 'Are you sure to delete this contract type spec?', + success: 'Delete successfully', + error: 'Delete failed' + }, + specValueType: { + string: 'String', + integer: 'Integer', + amount: 'Amount', + date: 'Date', + time: 'Time' + }, + specType: { + input: 'Input', + select: 'Select' + }, + validate: { + specNameRequired: 'Spec name is required', + specNameMaxLength: 'Spec name is too long', + specHoldplaceMaxLength: 'Description is too long', + requiredRequired: 'Required is required', + specShowRequired: 'Display is required', + specValueTypeRequired: 'Value type is required', + specTypeRequired: 'Spec type is required', + listShowRequired: 'Query display is required', + specCdRequired: 'Spec is required' + }, + fetchError: 'Failed to fetch data' + } + }, + zh: { + contractTypeSpecManage: { + search: { + title: '查询条件', + specCd: '规格ID', + specName: '规格名称', + specShow: '规格是否显示', + all: '全部', + yes: '是', + no: '否' + }, + table: { + title: '合同扩展信息', + specCd: '规格ID', + specName: '规格名称', + required: '必填', + specShow: '规格是否展示', + specValueType: '值类型', + specType: '规格类型', + listShow: '查询显示', + operation: '操作' + }, + add: { + title: '添加', + specName: '规格名称', + specNamePlaceholder: '必填,请填写规格名称', + specHoldplace: '说明', + specHoldplacePlaceholder: '选填,请填写说明', + required: '必填', + requiredPlaceholder: '必填,请选择必填', + specShow: '展示', + specShowPlaceholder: '必填,请选择展示', + specValueType: '值类型', + specValueTypePlaceholder: '必填,请选择值类型', + specType: '规格类型', + specTypePlaceholder: '必填,请选择规格类型', + listShow: '查询显示', + listShowPlaceholder: '必填,请选择查询显示', + success: '添加成功', + error: '添加失败' + }, + edit: { + title: '修改', + specName: '规格名称', + specNamePlaceholder: '必填,请填写规格名称', + specHoldplace: '说明', + specHoldplacePlaceholder: '选填,请填写说明', + required: '必填', + requiredPlaceholder: '必填,请选择必填', + specShow: '展示', + specShowPlaceholder: '必填,请选择展示', + specValueType: '值类型', + specValueTypePlaceholder: '必填,请选择值类型', + specType: '规格类型', + specTypePlaceholder: '必填,请选择规格类型', + listShow: '查询显示', + listShowPlaceholder: '必填,请选择查询显示', + success: '修改成功', + error: '修改失败' + }, + delete: { + title: '请确认您的操作', + confirmText: '确定删除合同类型属性?', + success: '删除成功', + error: '删除失败' + }, + specValueType: { + string: '字符串', + integer: '整数', + amount: '金额', + date: '日期', + time: '时间' + }, + specType: { + input: '文本框', + select: '选择框' + }, + validate: { + specNameRequired: '规格名称不能为空', + specNameMaxLength: '规格名称太长', + specHoldplaceMaxLength: '说明不能超过500位', + requiredRequired: '必填不能为空', + specShowRequired: '展示不能为空', + specValueTypeRequired: '值类型不能为空', + specTypeRequired: '规格类型不能为空', + listShowRequired: '查询显示不能为空', + specCdRequired: '规格不能为空' + }, + fetchError: '获取数据失败' + } + } +} \ No newline at end of file diff --git a/src/views/contract/contractTypeSpecManageList.vue b/src/views/contract/contractTypeSpecManageList.vue new file mode 100644 index 0000000..3d9f045 --- /dev/null +++ b/src/views/contract/contractTypeSpecManageList.vue @@ -0,0 +1,223 @@ + + + + + \ No newline at end of file diff --git a/src/views/contract/expirationContractManageLang.js b/src/views/contract/expirationContractManageLang.js new file mode 100644 index 0000000..d21bea7 --- /dev/null +++ b/src/views/contract/expirationContractManageLang.js @@ -0,0 +1,90 @@ +export const messages = { + en: { + expirationContractManage: { + search: { + title: 'Search Conditions', + contractNameLike: 'Please enter contract name', + contractCode: 'Please enter contract code', + contractType: 'Please select contract type' + }, + list: { + title: 'Expiration Contracts' + }, + table: { + contractName: 'Contract Name', + contractCode: 'Contract Code', + contractType: 'Contract Type', + partyA: 'Party A', + partyB: 'Party B', + operator: 'Operator', + amount: 'Amount', + startTime: 'Start Time', + endTime: 'End Time', + status: 'Status' + }, + button: { + renew: 'Renew', + stop: 'Stop' + }, + fetchError: 'Failed to fetch contract data' + }, + stopContract: { + dialog: { + title: 'Confirm Operation', + content: 'Are you sure to stop this contract? It cannot be restarted after stopping!' + }, + button: { + cancel: 'Cancel', + confirm: 'Confirm Stop' + }, + message: { + success: 'Contract stopped successfully', + error: 'Failed to stop contract' + } + } + }, + zh: { + expirationContractManage: { + search: { + title: '查询条件', + contractNameLike: '请输入合同名称', + contractCode: '请输入合同编号', + contractType: '请选择合同类型' + }, + list: { + title: '到期合同' + }, + table: { + contractName: '合同名称', + contractCode: '合同编号', + contractType: '合同类型', + partyA: '甲方', + partyB: '乙方', + operator: '经办人', + amount: '合同金额', + startTime: '开始时间', + endTime: '结束时间', + status: '状态' + }, + button: { + renew: '续签', + stop: '终止' + }, + fetchError: '获取合同数据失败' + }, + stopContract: { + dialog: { + title: '确认操作', + content: '确定要终止此合同吗?终止后将无法重新启动!' + }, + button: { + cancel: '取消', + confirm: '确认终止' + }, + message: { + success: '合同终止成功', + error: '合同终止失败' + } + } + } +} \ No newline at end of file diff --git a/src/views/contract/expirationContractManageList.vue b/src/views/contract/expirationContractManageList.vue new file mode 100644 index 0000000..78b8e4b --- /dev/null +++ b/src/views/contract/expirationContractManageList.vue @@ -0,0 +1,197 @@ + + + + + \ No newline at end of file diff --git a/src/views/contract/newContractManageLang.js b/src/views/contract/newContractManageLang.js new file mode 100644 index 0000000..19a0d13 --- /dev/null +++ b/src/views/contract/newContractManageLang.js @@ -0,0 +1,202 @@ +export const messages = { + en: { + newContractManage: { + search: { + title: 'Search Conditions', + contractNamePlaceholder: 'Please enter contract name', + contractCodePlaceholder: 'Please enter contract code', + contractTypePlaceholder: 'Please select contract type' + }, + list: { + title: 'Draft Contract Information', + draft: 'Draft', + note: 'Note: Please go to System Management > Process Management to set up contract application renewal before using this function' + }, + table: { + contractName: 'Contract Name', + contractCode: 'Contract Code', + parentContractCode: 'Parent Contract Code', + contractType: 'Contract Type', + operator: 'Operator', + amount: 'Contract Amount', + startTime: 'Start Time', + endTime: 'End Time', + state: 'Status' + }, + edit: { + title: 'Edit Contract', + contractName: 'Contract Name', + contractNamePlaceholder: 'Required, please fill in contract name', + contractCode: 'Contract Code', + contractCodePlaceholder: 'Required, please fill in contract code', + contractType: 'Contract Type', + contractTypePlaceholder: 'Required, please select contract type', + partyA: 'Party A', + partyAPlaceholder: 'Required, please fill in Party A', + partyB: 'Party B', + partyBPlaceholder: 'Required, please fill in Party B', + aContacts: 'Party A Contact', + aContactsPlaceholder: 'Required, please fill in Party A contact', + bContacts: 'Party B Contact', + bContactsPlaceholder: 'Required, please fill in Party B contact', + aLink: 'Party A Phone', + aLinkPlaceholder: 'Required, please fill in Party A phone', + bLink: 'Party B Phone', + bLinkPlaceholder: 'Required, please fill in Party B phone', + operator: 'Operator', + operatorPlaceholder: 'Required, please fill in operator', + operatorLink: 'Operator Phone', + operatorLinkPlaceholder: 'Required, please fill in operator phone', + amount: 'Contract Amount', + amountPlaceholder: 'Optional, please fill in contract amount', + startTime: 'Start Time', + startTimePlaceholder: 'Required, please fill in start time', + endTime: 'End Time', + endTimePlaceholder: 'Required, please fill in end time', + signingTime: 'Signing Time', + signingTimePlaceholder: 'Required, please fill in signing time', + contractFile: 'Contract Attachment', + addFile: 'Add Attachment', + upload: 'Upload', + deleteFile: 'Delete', + fileIndex: 'No.{index}' + }, + delete: { + title: 'Confirm Operation', + confirmText: 'Are you sure to delete the contract information?', + success: 'Delete successfully', + error: 'Delete failed' + }, + validate: { + contractNameRequired: 'Contract name cannot be empty', + contractNameMaxLength: 'Contract name cannot exceed 200 characters', + contractCodeRequired: 'Contract code cannot be empty', + contractCodeMaxLength: 'Contract code cannot exceed 30 characters', + contractTypeRequired: 'Contract type cannot be empty', + partyARequired: 'Party A cannot be empty', + partyAMaxLength: 'Party A name is too long', + partyBRequired: 'Party B cannot be empty', + partyBMaxLength: 'Party B name is too long', + aContactsRequired: 'Party A contact cannot be empty', + aContactsMaxLength: 'Party A contact length exceeds 64 characters', + bContactsRequired: 'Party B contact cannot be empty', + bContactsMaxLength: 'Party B contact length exceeds 64 characters', + aLinkRequired: 'Party A phone cannot be empty', + bLinkRequired: 'Party B phone cannot be empty', + operatorRequired: 'Operator cannot be empty', + operatorMaxLength: 'Operator exceeds 64 characters', + operatorLinkRequired: 'Operator phone cannot be empty', + amountFormat: 'Contract amount format error, such as 1.50', + startTimeRequired: 'Start time cannot be empty', + endTimeRequired: 'End time cannot be empty', + signingTimeRequired: 'Signing time cannot be empty', + fileTypeError: 'Operation failed, please upload image or PDF format file' + }, + uploadSuccess: 'Upload successfully', + uploadError: 'Upload failed', + updateSuccess: 'Update successfully', + updateError: 'Update failed', + fetchError: 'Failed to fetch contract data' + } + }, + zh: { + newContractManage: { + search: { + title: '查询条件', + contractNamePlaceholder: '请输入合同名称', + contractCodePlaceholder: '请输入合同编号', + contractTypePlaceholder: '请选择合同类型' + }, + list: { + title: '起草合同信息', + draft: '起草', + note: '注意:此功能使用前请先到系统管理>流程管理中设置合同申请续签' + }, + table: { + contractName: '合同名称', + contractCode: '合同编号', + parentContractCode: '父合同编号', + contractType: '合同类型', + operator: '经办人', + amount: '合同金额', + startTime: '开始时间', + endTime: '结束时间', + state: '状态' + }, + edit: { + title: '编辑合同', + contractName: '合同名称', + contractNamePlaceholder: '必填,请填写合同名称', + contractCode: '合同编号', + contractCodePlaceholder: '必填,请填写合同编号', + contractType: '合同类型', + contractTypePlaceholder: '必填,请选择合同类型', + partyA: '甲方', + partyAPlaceholder: '必填,请填写甲方', + partyB: '乙方', + partyBPlaceholder: '必填,请填写乙方', + aContacts: '甲方联系人', + aContactsPlaceholder: '必填,请填写甲方联系人', + bContacts: '乙方联系人', + bContactsPlaceholder: '必填,请填写乙方联系人', + aLink: '甲方联系电话', + aLinkPlaceholder: '必填,请填写甲方联系电话', + bLink: '乙方联系电话', + bLinkPlaceholder: '必填,请填写乙方联系电话', + operator: '经办人', + operatorPlaceholder: '必填,请填写经办人', + operatorLink: '联系电话', + operatorLinkPlaceholder: '必填,请填写联系电话', + amount: '合同金额', + amountPlaceholder: '选填,请填写合同金额', + startTime: '开始时间', + startTimePlaceholder: '必填,请填写开始时间', + endTime: '结束时间', + endTimePlaceholder: '必填,请填写结束时间', + signingTime: '签订时间', + signingTimePlaceholder: '必填,请填写签订时间', + contractFile: '合同附件', + addFile: '添加附件', + upload: '上传', + deleteFile: '删除', + fileIndex: '第{index}个' + }, + delete: { + title: '请确认您的操作', + confirmText: '确定删除合同信息', + success: '删除成功', + error: '删除失败' + }, + validate: { + contractNameRequired: '合同名称不能为空', + contractNameMaxLength: '合同名称不能超过200位', + contractCodeRequired: '合同编号不能为空', + contractCodeMaxLength: '合同编号错误', + contractTypeRequired: '合同类型不能为空', + partyARequired: '甲方不能为空', + partyAMaxLength: '甲方名称太长', + partyBRequired: '乙方不能为空', + partyBMaxLength: '乙方名称太长', + aContactsRequired: '甲方联系人不能为空', + aContactsMaxLength: '甲方联系人长度超过64位', + bContactsRequired: '乙方联系人不能为空', + bContactsMaxLength: '乙方联系人长度超过64位', + aLinkRequired: '甲方联系电话不能为空', + bLinkRequired: '乙方联系电话不能为空', + operatorRequired: '经办人不能为空', + operatorMaxLength: '经办人超过64位', + operatorLinkRequired: '联系电话不能为空', + amountFormat: '合同金额格式错误,如1.50', + startTimeRequired: '开始时间不能为空', + endTimeRequired: '结束时间不能为空', + signingTimeRequired: '签订时间不能为空', + fileTypeError: '操作失败,请上传图片、PDF格式的文件' + }, + uploadSuccess: '上传成功', + uploadError: '上传失败', + updateSuccess: '修改成功', + updateError: '修改失败', + fetchError: '获取合同数据失败' + } + } +} \ No newline at end of file diff --git a/src/views/contract/newContractManageList.vue b/src/views/contract/newContractManageList.vue new file mode 100644 index 0000000..b074f86 --- /dev/null +++ b/src/views/contract/newContractManageList.vue @@ -0,0 +1,221 @@ + + + + + \ No newline at end of file diff --git a/src/views/contract/printContractLang.js b/src/views/contract/printContractLang.js new file mode 100644 index 0000000..a6b1b80 --- /dev/null +++ b/src/views/contract/printContractLang.js @@ -0,0 +1,18 @@ +export const messages = { + en: { + printContract: { + title: 'Contract Print', + print: 'Print', + close: 'Close', + noTemplate: 'This contract does not have a template set, please set it in the contract template under the contract type' + } + }, + zh: { + printContract: { + title: '合同打印', + print: '打印', + close: '关闭', + noTemplate: '此合同未设置合同模板,请到合同类型下的合同模板中设置' + } + } +} \ No newline at end of file diff --git a/src/views/contract/printContractList.vue b/src/views/contract/printContractList.vue new file mode 100644 index 0000000..9f6c907 --- /dev/null +++ b/src/views/contract/printContractList.vue @@ -0,0 +1,161 @@ + + + + + \ No newline at end of file -- libgit2 0.21.4