Commit c104a84f90303a5575d84910e119c613ad0dac8c

Authored by wuxw
1 parent e87263d7

工作办理 待办功能测试完成

src/api/contract/contractApplyAuditHistoryOrdersApi.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +/**
  4 + * 查询合同历史任务列表
  5 + * @param {Object} params 查询参数
  6 + * @param {number} params.page 当前页码
  7 + * @param {number} params.row 每页显示条数
  8 + * @param {string} [params.AuditOrdersId] 审核订单ID
  9 + * @param {string} [params.userName] 用户名
  10 + * @param {string} [params.auditLink] 审核环节
  11 + * @returns {Promise} 包含合同历史任务数据的Promise对象
  12 + */
  13 +export function queryContractHistoryTask(params) {
  14 + return new Promise((resolve, reject) => {
  15 + request({
  16 + url: '/contract/queryContractHistoryTask',
  17 + method: 'get',
  18 + params
  19 + }).then(response => {
  20 + const res = response.data
  21 + resolve(res)
  22 + }).catch(error => {
  23 + reject(error)
  24 + })
  25 + })
  26 +}
  27 +
  28 +/**
  29 + * 提交合同审核
  30 + * @param {Object} data 审核数据
  31 + * @param {number} data.state 审核状态 (1100: 同意, 1200: 拒绝)
  32 + * @param {string} data.remark 审核备注
  33 + * @param {string} data.contractId 合同ID
  34 + * @returns {Promise} 包含审核结果的Promise对象
  35 + */
  36 +export function submitContractAudit(data) {
  37 + return new Promise((resolve, reject) => {
  38 + request({
  39 + url: '/contract/submitContractAudit',
  40 + method: 'post',
  41 + data
  42 + }).then(response => {
  43 + const res = response.data
  44 + resolve(res)
  45 + }).catch(error => {
  46 + reject(error)
  47 + })
  48 + })
  49 +}
  50 +
  51 +/**
  52 + * 获取合同详情
  53 + * @param {string} contractId 合同ID
  54 + * @returns {Promise} 包含合同详情的Promise对象
  55 + */
  56 +export function getContractDetail(contractId) {
  57 + return new Promise((resolve, reject) => {
  58 + request({
  59 + url: '/contract/getContractDetail',
  60 + method: 'get',
  61 + params: { contractId }
  62 + }).then(response => {
  63 + const res = response.data
  64 + resolve(res)
  65 + }).catch(error => {
  66 + reject(error)
  67 + })
  68 + })
  69 +}
0 70 \ No newline at end of file
... ...
src/api/contract/contractChangeAuditHistoryOrdersApi.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +/**
  4 + * 查询合同变更历史任务
  5 + * @param {Object} params 查询参数
  6 + * @returns {Promise} Promise对象
  7 + */
  8 +export function queryContractChangeHistoryTask(params) {
  9 + return new Promise((resolve, reject) => {
  10 + request({
  11 + url: '/contract/queryContractChangeHistoryTask',
  12 + method: 'get',
  13 + params
  14 + }).then(response => {
  15 + const res = response.data
  16 + resolve(res)
  17 + }).catch(error => {
  18 + reject(error)
  19 + })
  20 + })
  21 +}
0 22 \ No newline at end of file
... ...
src/api/oa/doHistoryComplaintsApi.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +/**
  4 + * 获取历史投诉单列表
  5 + * @param {Object} params 查询参数
  6 + * @returns {Promise}
  7 + */
  8 +export function listAuditHistoryComplaints(params) {
  9 + return new Promise((resolve, reject) => {
  10 + request({
  11 + url: '/auditUser.listAuditHistoryComplaints',
  12 + method: 'get',
  13 + params
  14 + }).then(response => {
  15 + const res = response.data
  16 + resolve(res)
  17 + }).catch(error => {
  18 + reject(error)
  19 + })
  20 + })
  21 +}
0 22 \ No newline at end of file
... ...
src/api/oa/visitFinishApi.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +// 查询已完成访客订单
  4 +export function queryFinishVisit(params) {
  5 + return new Promise((resolve, reject) => {
  6 + request({
  7 + url: '/visit.queryFinishVisit',
  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 +}
0 18 \ No newline at end of file
... ...
src/api/resource/allocationStorehouseHistoryAuditOrdersApi.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +/**
  4 + * 获取调拨已办单列表
  5 + * @param {Object} params 查询参数
  6 + * @returns {Promise} 返回Promise对象
  7 + */
  8 +export function listAllocationStoreHisAuditOrders(params) {
  9 + return new Promise((resolve, reject) => {
  10 + request({
  11 + url: '/resourceStore.listAllocationStoreHisAuditOrders',
  12 + method: 'get',
  13 + params
  14 + }).then(response => {
  15 + const res = response.data
  16 + resolve(res)
  17 + }).catch(error => {
  18 + reject(error)
  19 + })
  20 + })
  21 +}
0 22 \ No newline at end of file
... ...
src/api/resource/itemReleaseFinishApi.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +import { getCommunityId } from '@/api/community/communityApi'
  3 +
  4 +// 查询已办放行单列表
  5 +export function queryFinishItemRelease(params) {
  6 + return new Promise((resolve, reject) => {
  7 + const communityId = getCommunityId()
  8 + request({
  9 + url: '/itemRelease.queryFinishItemRelease',
  10 + method: 'get',
  11 + params: {
  12 + ...params,
  13 + communityId
  14 + }
  15 + }).then(response => {
  16 + const res = response.data
  17 + resolve(res)
  18 + }).catch(error => {
  19 + reject(error)
  20 + })
  21 + })
  22 +}
  23 +
  24 +// 查询放行物品列表
  25 +export function listItemReleaseRes(params) {
  26 + return new Promise((resolve, reject) => {
  27 + const communityId = getCommunityId()
  28 + request({
  29 + url: '/itemRelease.listItemReleaseRes',
  30 + method: 'get',
  31 + params: {
  32 + ...params,
  33 + communityId
  34 + }
  35 + }).then(response => {
  36 + const res = response.data
  37 + resolve(res)
  38 + }).catch(error => {
  39 + reject(error)
  40 + })
  41 + })
  42 +}
0 43 \ No newline at end of file
... ...
src/api/resource/myAuditHistoryOrdersApi.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +/**
  4 + * 获取审核历史订单列表
  5 + * @param {Object} params 查询参数
  6 + * @returns {Promise} 返回Promise对象
  7 + */
  8 +export function listAuditHistoryOrders(params) {
  9 + return new Promise((resolve, reject) => {
  10 + request({
  11 + url: '/auditUser.listAuditHistoryOrders',
  12 + method: 'get',
  13 + params
  14 + }).then(response => {
  15 + const res = response.data
  16 + resolve(res)
  17 + }).catch(error => {
  18 + reject(error)
  19 + })
  20 + })
  21 +}
0 22 \ No newline at end of file
... ...
src/api/resource/myItemOutAuditHistoryOrdersApi.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +
  3 +/**
  4 + * 获取领用已办单列表
  5 + * @param {Object} params 查询参数
  6 + * @returns {Promise} 请求Promise
  7 + */
  8 +export function listItemOutAuditHistoryOrders(params) {
  9 + return new Promise((resolve, reject) => {
  10 + request({
  11 + url: '/auditUser.listItemOutAuditHistoryOrders',
  12 + method: 'get',
  13 + params
  14 + }).then(response => {
  15 + const res = response.data
  16 + resolve(res)
  17 + }).catch(error => {
  18 + reject(error)
  19 + })
  20 + })
  21 +}
0 22 \ No newline at end of file
... ...
src/i18n/contractI18n.js
... ... @@ -12,6 +12,8 @@ import { messages as contractDetailMessages } from '../views/contract/contractDe
12 12 import { messages as contractChangeDetailsMessages } from '../views/contract/contractChangeDetailsLang'
13 13 import { messages as contractApplyAuditOrdersMessages } from '../views/contract/contractApplyAuditOrdersLang'
14 14 import { messages as contractChangeAuditOrdersMessages } from '../views/contract/contractChangeAuditOrdersLang.js'
  15 +import { messages as contractApplyAuditHistoryOrdersMessages } from '../views/contract/contractApplyAuditHistoryOrdersLang'
  16 +import { messages as contractChangeAuditHistoryOrdersMessages } from '../views/contract/contractChangeAuditHistoryOrdersLang'
15 17  
16 18 export const messages ={
17 19 en:{
... ... @@ -29,6 +31,8 @@ export const messages ={
29 31 ...contractChangeDetailsMessages.en,
30 32 ...contractApplyAuditOrdersMessages.en,
31 33 ...contractChangeAuditOrdersMessages.en,
  34 + ...contractApplyAuditHistoryOrdersMessages.en,
  35 + ...contractChangeAuditHistoryOrdersMessages.en,
32 36 },
33 37 zh:{
34 38 ...contractTypeManageMessages.zh,
... ... @@ -45,5 +49,7 @@ export const messages ={
45 49 ...contractChangeDetailsMessages.zh,
46 50 ...contractApplyAuditOrdersMessages.zh,
47 51 ...contractChangeAuditOrdersMessages.zh,
  52 + ...contractApplyAuditHistoryOrdersMessages.zh,
  53 + ...contractChangeAuditHistoryOrdersMessages.zh,
48 54 }
49 55 }
50 56 \ No newline at end of file
... ...
src/i18n/oaI18n.js
... ... @@ -53,6 +53,9 @@ import { messages as simplifyNotepadManageMessages } from '../views/oa/simplifyN
53 53 import { messages as uodoComplaintsMessages } from '../views/oa/uodoComplaintsLang'
54 54 import { messages as complaintDetailMessages } from '../views/oa/complaintDetailLang'
55 55 import { messages as visitUndoMessages } from '../views/oa/visitUndoLang'
  56 +import { messages as doHistoryComplaintsMessages } from '../views/oa/doHistoryComplaintsLang'
  57 +import { messages as myAuditHistoryOrdersMessages } from '../views/resource/myAuditHistoryOrdersLang'
  58 +import { messages as visitFinishMessages } from '../views/oa/visitFinishLang'
56 59  
57 60  
58 61 export const messages ={
... ... @@ -111,6 +114,9 @@ export const messages ={
111 114 ...uodoComplaintsMessages.en,
112 115 ...complaintDetailMessages.en,
113 116 ...visitUndoMessages.en,
  117 + ...doHistoryComplaintsMessages.en,
  118 + ...myAuditHistoryOrdersMessages.en,
  119 + ...visitFinishMessages.en,
114 120 },
115 121 zh:{
116 122 ...activitiesTypeManageMessages.zh,
... ... @@ -167,5 +173,8 @@ export const messages ={
167 173 ...uodoComplaintsMessages.zh,
168 174 ...complaintDetailMessages.zh,
169 175 ...visitUndoMessages.zh,
  176 + ...doHistoryComplaintsMessages.zh,
  177 + ...myAuditHistoryOrdersMessages.zh,
  178 + ...visitFinishMessages.zh,
170 179 }
171 180 }
172 181 \ No newline at end of file
... ...
src/i18n/resourceI18n.js
... ... @@ -40,6 +40,9 @@ import { messages as allocationStorehouseAuditOrdersMessages } from '../views/re
40 40 import { messages as editAllocationStorehouseApplyMessages } from '../views/resource/editAllocationStorehouseApplyLang'
41 41 import { messages as allocationStorehouseEnterMessages } from '../views/resource/allocationStorehouseEnterLang'
42 42 import { messages as itemReleaseUndoMessages } from '../views/resource/itemReleaseUndoLang'
  43 +import { messages as myItemOutAuditHistoryOrdersMessages } from '../views/resource/myItemOutAuditHistoryOrdersLang'
  44 +import { messages as allocationStorehouseHistoryAuditOrdersMessages } from '../views/resource/allocationStorehouseHistoryAuditOrdersLang'
  45 +import { messages as itemReleaseFinishMessages } from '../views/resource/itemReleaseFinishLang'
43 46  
44 47 export const messages = {
45 48 en: {
... ... @@ -83,6 +86,9 @@ export const messages = {
83 86 ...editAllocationStorehouseApplyMessages.en,
84 87 ...allocationStorehouseEnterMessages.en,
85 88 ...itemReleaseUndoMessages.en,
  89 + ...myItemOutAuditHistoryOrdersMessages.en,
  90 + ...allocationStorehouseHistoryAuditOrdersMessages.en,
  91 + ...itemReleaseFinishMessages.en,
86 92 },
87 93 zh: {
88 94 ...resourceAuditFlowMessages.zh,
... ... @@ -125,5 +131,8 @@ export const messages = {
125 131 ...editAllocationStorehouseApplyMessages.zh,
126 132 ...allocationStorehouseEnterMessages.zh,
127 133 ...itemReleaseUndoMessages.zh,
  134 + ...myItemOutAuditHistoryOrdersMessages.zh,
  135 + ...allocationStorehouseHistoryAuditOrdersMessages.zh,
  136 + ...itemReleaseFinishMessages.zh,
128 137 }
129 138 }
130 139 \ No newline at end of file
... ...
src/router/contractRouter.js
... ... @@ -64,4 +64,14 @@ export default [
64 64 name: '/pages/admin/contractChangeAuditOrders',
65 65 component: () => import('@/views/contract/contractChangeAuditOrdersList.vue')
66 66 },
  67 + {
  68 + path: '/pages/admin/contractApplyAuditHistoryOrders',
  69 + name: '/pages/admin/contractApplyAuditHistoryOrders',
  70 + component: () => import('@/views/contract/contractApplyAuditHistoryOrdersList.vue')
  71 + },
  72 + {
  73 + path:'/pages/admin/contractChangeAuditHistoryOrders',
  74 + name:'/pages/admin/contractChangeAuditHistoryOrders',
  75 + component: () => import('@/views/contract/contractChangeAuditHistoryOrdersList.vue')
  76 + },
67 77 ]
68 78 \ No newline at end of file
... ...
src/router/oaRouter.js
... ... @@ -254,4 +254,19 @@ export default [
254 254 name: '/pages/property/visitUndo',
255 255 component: () => import('@/views/oa/visitUndoList.vue')
256 256 },
  257 + {
  258 + path: '/pages/complaint/doHistoryComplaints',
  259 + name: '/pages/complaint/doHistoryComplaints',
  260 + component: () => import('@/views/oa/doHistoryComplaintsList.vue')
  261 + },
  262 + {
  263 + path: '/pages/admin/myAuditHistoryOrders',
  264 + name: '/pages/admin/myAuditHistoryOrders',
  265 + component: () => import('@/views/resource/myAuditHistoryOrdersList.vue')
  266 + },
  267 + {
  268 + path:'/pages/property/visitFinish',
  269 + name:'/pages/property/visitFinish',
  270 + component: () => import('@/views/oa/visitFinishList.vue')
  271 + },
257 272 ]
258 273 \ No newline at end of file
... ...
src/router/resourceRouter.js
... ... @@ -190,5 +190,20 @@ export default [
190 190 name: '/pages/property/itemReleaseUndo',
191 191 component: () => import('@/views/resource/itemReleaseUndoList.vue')
192 192 },
  193 + {
  194 + path: '/pages/admin/myItemOutAuditHistoryOrders',
  195 + name: '/pages/admin/myItemOutAuditHistoryOrders',
  196 + component: () => import('@/views/resource/myItemOutAuditHistoryOrdersList.vue')
  197 + },
  198 + {
  199 + path: '/pages/admin/allocationStorehouseHistoryAuditOrders',
  200 + name: '/pages/admin/allocationStorehouseHistoryAuditOrders',
  201 + component: () => import('@/views/resource/allocationStorehouseHistoryAuditOrdersList.vue')
  202 + },
  203 + {
  204 + path: '/pages/property/itemReleaseFinish',
  205 + name: '/pages/property/itemReleaseFinish',
  206 + component: () => import('@/views/resource/itemReleaseFinishList.vue')
  207 + },
193 208  
194 209 ]
195 210 \ No newline at end of file
... ...
src/views/contract/contractApplyAuditHistoryOrdersLang.js 0 → 100644
  1 +export const messages = {
  2 + en: {
  3 + contractApplyAuditHistoryOrders: {
  4 + title: 'Draft Completed Orders',
  5 + contractCode: 'Contract Number',
  6 + contractName: 'Contract Name',
  7 + contractType: 'Contract Type',
  8 + contractStatus: 'Contract Status',
  9 + createTime: 'Create Time',
  10 + operation: 'Operation',
  11 + view: 'View',
  12 + fetchError: 'Failed to fetch contract history orders'
  13 + }
  14 + },
  15 + zh: {
  16 + contractApplyAuditHistoryOrders: {
  17 + title: '起草已办单',
  18 + contractCode: '合同编号',
  19 + contractName: '合同名称',
  20 + contractType: '合同类型',
  21 + contractStatus: '合同状态',
  22 + createTime: '创建时间',
  23 + operation: '操作',
  24 + view: '查看',
  25 + fetchError: '获取合同历史订单失败'
  26 + }
  27 + }
  28 +}
0 29 \ No newline at end of file
... ...
src/views/contract/contractApplyAuditHistoryOrdersList.vue 0 → 100644
  1 +<template>
  2 + <div class="contract-apply-audit-history-orders-container animated fadeInRight">
  3 + <el-card class="box-card">
  4 + <div slot="header" class="flex justify-between">
  5 + <span>{{ $t('contractApplyAuditHistoryOrders.title') }}</span>
  6 + </div>
  7 +
  8 + <el-table v-loading="loading" :data="contractApplyAuditOrdersInfo.contractApplyAuditOrders" border
  9 + style="width: 100%">
  10 + <el-table-column prop="contractCode" :label="$t('contractApplyAuditHistoryOrders.contractCode')"
  11 + align="center" />
  12 + <el-table-column prop="contractName" :label="$t('contractApplyAuditHistoryOrders.contractName')"
  13 + align="center" />
  14 + <el-table-column prop="contractTypeName" :label="$t('contractApplyAuditHistoryOrders.contractType')"
  15 + align="center" />
  16 + <el-table-column prop="stateName" :label="$t('contractApplyAuditHistoryOrders.contractStatus')"
  17 + align="center" />
  18 + <el-table-column prop="signingTime" :label="$t('contractApplyAuditHistoryOrders.createTime')" align="center" />
  19 + <el-table-column :label="$t('contractApplyAuditHistoryOrders.operation')" align="center" width="150">
  20 + <template slot-scope="scope">
  21 + <el-button size="mini" type="primary" @click="_openDetailPurchaseApplyModel(scope.row)">
  22 + {{ $t('contractApplyAuditHistoryOrders.view') }}
  23 + </el-button>
  24 + </template>
  25 + </el-table-column>
  26 + </el-table>
  27 +
  28 + <el-pagination :current-page.sync="page.current" :page-sizes="[10, 20, 30, 50]" :page-size="page.size"
  29 + :total="page.total" layout="total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
  30 + @current-change="handleCurrentChange" />
  31 + </el-card>
  32 +
  33 + <!-- <audit-component ref="auditComponent" @notifyAudit="_auditOrderInfo" /> -->
  34 + </div>
  35 +</template>
  36 +
  37 +<script>
  38 +import { queryContractHistoryTask } from '@/api/contract/contractApplyAuditHistoryOrdersApi'
  39 +// import AuditComponent from '@/components/contract/audit'
  40 +
  41 +export default {
  42 + name: 'ContractApplyAuditHistoryOrdersList',
  43 + components: {
  44 + //AuditComponent
  45 + },
  46 + data() {
  47 + return {
  48 + loading: false,
  49 + contractApplyAuditOrdersInfo: {
  50 + contractApplyAuditOrders: [],
  51 + conditions: {
  52 + AuditOrdersId: '',
  53 + userName: '',
  54 + auditLink: ''
  55 + }
  56 + },
  57 + page: {
  58 + current: 1,
  59 + size: 10,
  60 + total: 0
  61 + }
  62 + }
  63 + },
  64 + created() {
  65 + this._listAuditOrders(this.page.current, this.page.size)
  66 + },
  67 + methods: {
  68 + async _listAuditOrders(page, size) {
  69 + try {
  70 + this.loading = true
  71 + const params = {
  72 + page,
  73 + row: size,
  74 + ...this.contractApplyAuditOrdersInfo.conditions
  75 + }
  76 + const { data, total } = await queryContractHistoryTask(params)
  77 + this.contractApplyAuditOrdersInfo.contractApplyAuditOrders = data
  78 + this.page.total = total
  79 + } catch (error) {
  80 + this.$message.error(this.$t('contractApplyAuditHistoryOrders.fetchError'))
  81 + } finally {
  82 + this.loading = false
  83 + }
  84 + },
  85 + _openDetailPurchaseApplyModel(auditOrder) {
  86 + this.$router.push({
  87 + path: '/pages/common/contractApplyDetail',
  88 + query: { contractId: auditOrder.contractId }
  89 + })
  90 + },
  91 + _openAuditOrderModel(auditOrder) {
  92 + this.contractApplyAuditOrdersInfo.orderInfo = auditOrder
  93 + this.$refs.auditComponent.open()
  94 + },
  95 + _auditOrderInfo(auditInfo) {
  96 + // 处理审核信息
  97 + console.log(auditInfo)
  98 + },
  99 + handleSizeChange(val) {
  100 + this.page.size = val
  101 + this._listAuditOrders(this.page.current, val)
  102 + },
  103 + handleCurrentChange(val) {
  104 + this._listAuditOrders(val, this.page.size)
  105 + }
  106 + }
  107 +}
  108 +</script>
  109 +
  110 +<style lang="scss" scoped>
  111 +.contract-apply-audit-history-orders-container {
  112 + padding: 20px;
  113 +
  114 + .box-card {
  115 + margin-bottom: 20px;
  116 + }
  117 +
  118 + .el-pagination {
  119 + margin-top: 20px;
  120 + text-align: right;
  121 + }
  122 +}
  123 +</style>
0 124 \ No newline at end of file
... ...
src/views/contract/contractChangeAuditHistoryOrdersLang.js 0 → 100644
  1 +export const messages = {
  2 + en: {
  3 + contractChangeAuditHistoryOrders: {
  4 + title: 'Change Processed Orders',
  5 + contractCode: 'Contract Number',
  6 + contractName: 'Contract Name',
  7 + contractTypeName: 'Contract Type',
  8 + stateName: 'Contract Status',
  9 + createTime: 'Creation Time',
  10 + operation: 'Operation',
  11 + view: 'View',
  12 + fetchError: 'Failed to fetch contract change history'
  13 + }
  14 + },
  15 + zh: {
  16 + contractChangeAuditHistoryOrders: {
  17 + title: '变更已办单',
  18 + contractCode: '合同编号',
  19 + contractName: '合同名称',
  20 + contractTypeName: '合同类型',
  21 + stateName: '合同状态',
  22 + createTime: '创建时间',
  23 + operation: '操作',
  24 + view: '查看',
  25 + fetchError: '获取合同变更历史失败'
  26 + }
  27 + }
  28 +}
0 29 \ No newline at end of file
... ...
src/views/contract/contractChangeAuditHistoryOrdersList.vue 0 → 100644
  1 +<template>
  2 + <div class="contract-change-audit-history-orders-container animated fadeInRight">
  3 + <el-row>
  4 + <el-col :span="24">
  5 + <el-card class="box-card">
  6 + <div slot="header" class="flex justify-between">
  7 + <span>{{ $t('contractChangeAuditHistoryOrders.title') }}</span>
  8 + </div>
  9 + <div class="table-wrapper">
  10 + <el-table v-loading="loading" :data="tableData" border style="width: 100%">
  11 + <el-table-column prop="contractCode" :label="$t('contractChangeAuditHistoryOrders.contractCode')"
  12 + align="center" />
  13 + <el-table-column prop="contractName" :label="$t('contractChangeAuditHistoryOrders.contractName')"
  14 + align="center" />
  15 + <el-table-column prop="contractTypeName" :label="$t('contractChangeAuditHistoryOrders.contractTypeName')"
  16 + align="center" />
  17 + <el-table-column prop="stateName" :label="$t('contractChangeAuditHistoryOrders.stateName')"
  18 + align="center" />
  19 + <el-table-column prop="createTime" :label="$t('contractChangeAuditHistoryOrders.createTime')"
  20 + align="center" />
  21 + <el-table-column :label="$t('contractChangeAuditHistoryOrders.operation')" align="center" width="150">
  22 + <template slot-scope="scope">
  23 + <el-button size="mini" type="primary" @click="handleViewDetail(scope.row)">
  24 + {{ $t('contractChangeAuditHistoryOrders.view') }}
  25 + </el-button>
  26 + </template>
  27 + </el-table-column>
  28 + </el-table>
  29 +
  30 + <el-pagination :current-page.sync="page.current" :page-sizes="[10, 20, 30, 50]" :page-size="page.size"
  31 + :total="page.total" layout="total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
  32 + @current-change="handleCurrentChange" />
  33 + </div>
  34 + </el-card>
  35 + </el-col>
  36 + </el-row>
  37 + </div>
  38 +</template>
  39 +
  40 +<script>
  41 +import { queryContractChangeHistoryTask } from '@/api/contract/contractChangeAuditHistoryOrdersApi'
  42 +
  43 +export default {
  44 + name: 'ContractChangeAuditHistoryOrdersList',
  45 + data() {
  46 + return {
  47 + loading: false,
  48 + tableData: [],
  49 + page: {
  50 + current: 1,
  51 + size: 10,
  52 + total: 0
  53 + },
  54 + conditions: {
  55 + AuditOrdersId: '',
  56 + userName: '',
  57 + auditLink: ''
  58 + }
  59 + }
  60 + },
  61 + created() {
  62 + this.getList()
  63 + },
  64 + methods: {
  65 + async getList() {
  66 + try {
  67 + this.loading = true
  68 + const params = {
  69 + page: this.page.current,
  70 + row: this.page.size,
  71 + ...this.conditions
  72 + }
  73 + const { data, total } = await queryContractChangeHistoryTask(params)
  74 + this.tableData = data
  75 + this.page.total = total
  76 + } catch (error) {
  77 + this.$message.error(this.$t('contractChangeAuditHistoryOrders.fetchError'))
  78 + } finally {
  79 + this.loading = false
  80 + }
  81 + },
  82 + handleSizeChange(val) {
  83 + this.page.size = val
  84 + this.getList()
  85 + },
  86 + handleCurrentChange(val) {
  87 + this.page.current = val
  88 + this.getList()
  89 + },
  90 + handleViewDetail(row) {
  91 + this.$router.push({
  92 + path: '/pages/admin/contractChangeDetails',
  93 + query: { planId: row.planId }
  94 + })
  95 + }
  96 + }
  97 +}
  98 +</script>
  99 +
  100 +<style lang="scss" scoped>
  101 +.contract-change-audit-history-orders-container {
  102 + padding: 20px;
  103 +
  104 + .box-card {
  105 + margin-bottom: 20px;
  106 + }
  107 +
  108 + .table-wrapper {
  109 + margin-top: 20px;
  110 + }
  111 +
  112 + .el-pagination {
  113 + margin-top: 20px;
  114 + text-align: right;
  115 + }
  116 +}
  117 +</style>
0 118 \ No newline at end of file
... ...
src/views/oa/doHistoryComplaintsLang.js 0 → 100644
  1 +export const messages = {
  2 + en: {
  3 + doHistoryComplaints: {
  4 + title: 'Pending Complaint Orders',
  5 + back: 'Back',
  6 + refresh: 'Refresh',
  7 + orderId: 'Order ID',
  8 + complaintType: 'Complaint Type',
  9 + house: 'House',
  10 + complainer: 'Complainer',
  11 + complaintPhone: 'Complaint Phone',
  12 + complaintStatus: 'Complaint Status',
  13 + createTime: 'Create Time',
  14 + operation: 'Operation',
  15 + detail: 'Detail',
  16 + fetchError: 'Failed to fetch complaint data'
  17 + }
  18 + },
  19 + zh: {
  20 + doHistoryComplaints: {
  21 + title: '待办投诉单',
  22 + back: '返回',
  23 + refresh: '刷新',
  24 + orderId: '订单编号',
  25 + complaintType: '投诉类型',
  26 + house: '房屋',
  27 + complainer: '投诉人',
  28 + complaintPhone: '投诉电话',
  29 + complaintStatus: '投诉状态',
  30 + createTime: '创建时间',
  31 + operation: '操作',
  32 + detail: '详情',
  33 + fetchError: '获取投诉数据失败'
  34 + }
  35 + }
  36 +}
0 37 \ No newline at end of file
... ...
src/views/oa/doHistoryComplaintsList.vue 0 → 100644
  1 +<template>
  2 + <div class="do-history-complaints-container animated fadeInRight">
  3 + <el-card class="box-card">
  4 + <div slot="header" class="flex justify-between">
  5 + <span>{{ $t('doHistoryComplaints.title') }}</span>
  6 + <div class="card-header-actions">
  7 + <el-button size="small" @click="handleGoBack">{{ $t('doHistoryComplaints.back') }}</el-button>
  8 + <el-button type="primary" size="small" @click="queryAuditOrders">{{ $t('doHistoryComplaints.refresh')
  9 + }}</el-button>
  10 + </div>
  11 + </div>
  12 +
  13 + <el-table v-loading="loading" :data="tableData" border style="width: 100%">
  14 + <el-table-column prop="complaintId" :label="$t('doHistoryComplaints.orderId')" align="center" />
  15 + <el-table-column prop="typeName" :label="$t('doHistoryComplaints.complaintType')" align="center" />
  16 + <el-table-column prop="roomName" :label="$t('doHistoryComplaints.house')" align="center" />
  17 + <el-table-column prop="complaintName" :label="$t('doHistoryComplaints.complainer')" align="center" />
  18 + <el-table-column prop="tel" :label="$t('doHistoryComplaints.complaintPhone')" align="center" />
  19 + <el-table-column prop="stateName" :label="$t('doHistoryComplaints.complaintStatus')" align="center" />
  20 + <el-table-column prop="createTime" :label="$t('doHistoryComplaints.createTime')" align="center" />
  21 + <el-table-column :label="$t('doHistoryComplaints.operation')" align="center" width="120">
  22 + <template slot-scope="scope">
  23 + <el-button size="mini" @click="openComplaintDetail(scope.row)">
  24 + {{ $t('doHistoryComplaints.detail') }}
  25 + </el-button>
  26 + </template>
  27 + </el-table-column>
  28 + </el-table>
  29 +
  30 + <el-pagination :current-page="pagination.current" :page-sizes="[10, 20, 30, 50]" :page-size="pagination.size"
  31 + layout="total, sizes, prev, pager, next, jumper" :total="pagination.total" @size-change="handleSizeChange"
  32 + @current-change="handleCurrentChange" />
  33 + </el-card>
  34 + </div>
  35 +</template>
  36 +
  37 +<script>
  38 +import { listAuditHistoryComplaints } from '@/api/oa/doHistoryComplaintsApi'
  39 +import { getCommunityId } from '@/api/community/communityApi'
  40 +
  41 +export default {
  42 + name: 'DoHistoryComplaintsList',
  43 + data() {
  44 + return {
  45 + loading: false,
  46 + tableData: [],
  47 + pagination: {
  48 + current: 1,
  49 + size: 10,
  50 + total: 0
  51 + },
  52 + communityId: ''
  53 + }
  54 + },
  55 + created() {
  56 + this.communityId = getCommunityId()
  57 + this.getList()
  58 + },
  59 + methods: {
  60 + async getList() {
  61 + try {
  62 + this.loading = true
  63 + const params = {
  64 + page: this.pagination.current,
  65 + row: this.pagination.size,
  66 + communityId: this.communityId
  67 + }
  68 + const { data, total } = await listAuditHistoryComplaints(params)
  69 + this.tableData = data
  70 + this.pagination.total = total
  71 + } catch (error) {
  72 + this.$message.error(this.$t('doHistoryComplaints.fetchError'))
  73 + } finally {
  74 + this.loading = false
  75 + }
  76 + },
  77 + queryAuditOrders() {
  78 + this.pagination.current = 1
  79 + this.getList()
  80 + },
  81 + handleGoBack() {
  82 + this.$router.go(-1)
  83 + },
  84 + openComplaintDetail(complaint) {
  85 + this.$router.push({
  86 + path: '/pages/complaint/complaintDetail',
  87 + query: { complaintId: complaint.complaintId }
  88 + })
  89 + },
  90 + handleSizeChange(val) {
  91 + this.pagination.size = val
  92 + this.getList()
  93 + },
  94 + handleCurrentChange(val) {
  95 + this.pagination.current = val
  96 + this.getList()
  97 + }
  98 + }
  99 +}
  100 +</script>
  101 +
  102 +<style lang="scss" scoped>
  103 +.do-history-complaints-container {
  104 + padding: 20px;
  105 +
  106 + .box-card {
  107 + margin-bottom: 20px;
  108 + }
  109 +
  110 + .card-header-actions {
  111 + float: right;
  112 + display: flex;
  113 + gap: 10px;
  114 + }
  115 +
  116 + .el-pagination {
  117 + margin-top: 20px;
  118 + text-align: right;
  119 + }
  120 +}
  121 +</style>
0 122 \ No newline at end of file
... ...
src/views/oa/visitFinishLang.js 0 → 100644
  1 +export const messages = {
  2 + en: {
  3 + visitFinish: {
  4 + title: 'Visitor Finished Orders',
  5 + back: 'Back',
  6 + refresh: 'Refresh',
  7 + visitorId: 'Visitor ID',
  8 + visitor: 'Visitor',
  9 + ownerName: 'Owner Name',
  10 + visitReason: 'Visit Reason/Type',
  11 + carNumber: 'Car Number',
  12 + entourage: 'Entourage',
  13 + createTime: 'Create Time',
  14 + visitTime: 'Visit/Departure Time',
  15 + status: 'Status',
  16 + operation: 'Operation',
  17 + detail: 'Detail',
  18 + male: 'Male',
  19 + female: 'Female',
  20 + happyEvent: 'Happy Event',
  21 + funeral: 'Funeral',
  22 + other: 'Other',
  23 + fetchError: 'Failed to fetch visitor data'
  24 + }
  25 + },
  26 + zh: {
  27 + visitFinish: {
  28 + title: '访客已办单',
  29 + back: '返回',
  30 + refresh: '刷新',
  31 + visitorId: '访客ID',
  32 + visitor: '访客',
  33 + ownerName: '业主姓名',
  34 + visitReason: '来访事由/类型',
  35 + carNumber: '车牌号',
  36 + entourage: '随行人数',
  37 + createTime: '创建时间',
  38 + visitTime: '来访/离开时间',
  39 + status: '状态',
  40 + operation: '操作',
  41 + detail: '详情',
  42 + male: '男',
  43 + female: '女',
  44 + happyEvent: '喜事',
  45 + funeral: '白事',
  46 + other: '其他',
  47 + fetchError: '获取访客数据失败'
  48 + }
  49 + }
  50 +}
0 51 \ No newline at end of file
... ...
src/views/oa/visitFinishList.vue 0 → 100644
  1 +<template>
  2 + <div class="animated fadeInRight ecommerce">
  3 + <el-row>
  4 + <el-col :span="24">
  5 + <el-card>
  6 + <div slot="header" class="flex justify-between">
  7 + <span>{{ $t('visitFinish.title') }}</span>
  8 + <div class="ibox-tools" style="float: right;">
  9 + <el-button size="small" @click="goBack">{{ $t('visitFinish.back') }}</el-button>
  10 + <el-button type="primary" size="small" @click="_queryFinishOrdersMethod">{{ $t('visitFinish.refresh')
  11 + }}</el-button>
  12 + </div>
  13 + </div>
  14 +
  15 + <el-table v-loading="loading" :data="visitFinishInfo.finishs" border style="width: 100%">
  16 + <el-table-column prop="vId" :label="$t('visitFinish.visitorId')" align="center" width="120">
  17 + </el-table-column>
  18 + <el-table-column :label="$t('visitFinish.visitor')" align="center">
  19 + <template slot-scope="scope">
  20 + {{ scope.row.vName }}({{ scope.row.phoneNumber }})/{{ scope.row.visitGender == '0' ? $t('visitFinish.male') : $t('visitFinish.female') }}
  21 + </template>
  22 + </el-table-column>
  23 + <el-table-column prop="ownerName" :label="$t('visitFinish.ownerName')" align="center">
  24 + </el-table-column>
  25 + <el-table-column :label="$t('visitFinish.visitReason')" align="center">
  26 + <template slot-scope="scope">
  27 + {{ scope.row.visitCase }}({{ scope.row.reasonType == 0 ? $t('visitFinish.happyEvent') :
  28 + scope.row.reasonType == 1 ? $t('visitFinish.funeral') :
  29 + scope.row.reasonType == 2 ? $t('visitFinish.other') : '-' }})
  30 + </template>
  31 + </el-table-column>
  32 + <el-table-column prop="carNum" :label="$t('visitFinish.carNumber')" align="center">
  33 + </el-table-column>
  34 + <el-table-column prop="entourage" :label="$t('visitFinish.entourage')" align="center">
  35 + </el-table-column>
  36 + <el-table-column prop="createTime" :label="$t('visitFinish.createTime')" align="center">
  37 + </el-table-column>
  38 + <el-table-column :label="$t('visitFinish.visitTime')" align="center">
  39 + <template slot-scope="scope">
  40 + {{ scope.row.visitTime }}<br />{{ scope.row.departureTime }}
  41 + </template>
  42 + </el-table-column>
  43 + <el-table-column prop="stateName" :label="$t('visitFinish.status')" align="center">
  44 + </el-table-column>
  45 + <el-table-column :label="$t('visitFinish.operation')" align="center" width="120">
  46 + <template slot-scope="scope">
  47 + <el-button size="mini" @click="_openDetail(scope.row)">{{ $t('visitFinish.detail') }}
  48 + </el-button>
  49 + </template>
  50 + </el-table-column>
  51 + </el-table>
  52 +
  53 + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
  54 + :current-page="page.current" :page-sizes="[10, 20, 30, 50]" :page-size="page.size"
  55 + layout="total, sizes, prev, pager, next, jumper" :total="page.total">
  56 + </el-pagination>
  57 + </el-card>
  58 + </el-col>
  59 + </el-row>
  60 + </div>
  61 +</template>
  62 +
  63 +<script>
  64 +import { queryFinishVisit } from '@/api/oa/visitFinishApi'
  65 +
  66 +export default {
  67 + name: 'VisitFinishList',
  68 + data() {
  69 + return {
  70 + loading: false,
  71 + visitFinishInfo: {
  72 + finishs: [],
  73 + conditions: {
  74 + vId: '',
  75 + userName: '',
  76 + auditLink: ''
  77 + }
  78 + },
  79 + page: {
  80 + current: 1,
  81 + size: 10,
  82 + total: 0
  83 + }
  84 + }
  85 + },
  86 + created() {
  87 + this._listFinishOrders(this.page.current, this.page.size)
  88 + },
  89 + methods: {
  90 + async _listFinishOrders(page, size) {
  91 + try {
  92 + this.loading = true
  93 + const params = {
  94 + page: page,
  95 + row: size,
  96 + ...this.visitFinishInfo.conditions
  97 + }
  98 + const { data, total } = await queryFinishVisit(params)
  99 + this.visitFinishInfo.finishs = data
  100 + this.page.total = total
  101 + } catch (error) {
  102 + this.$message.error(this.$t('visitFinish.fetchError'))
  103 + } finally {
  104 + this.loading = false
  105 + }
  106 + },
  107 + _queryFinishOrdersMethod() {
  108 + this.page.current = 1
  109 + this._listFinishOrders(this.page.current, this.page.size)
  110 + },
  111 + _openDetail(item) {
  112 + this.$router.push({
  113 + path: '/pages/property/visitDetail',
  114 + query: {
  115 + vId: item.vId,
  116 + flowId: item.flowId
  117 + }
  118 + })
  119 + },
  120 + goBack() {
  121 + this.$router.go(-1)
  122 + },
  123 + handleSizeChange(val) {
  124 + this.page.size = val
  125 + this._listFinishOrders(this.page.current, val)
  126 + },
  127 + handleCurrentChange(val) {
  128 + this.page.current = val
  129 + this._listFinishOrders(val, this.page.size)
  130 + }
  131 + }
  132 +}
  133 +</script>
  134 +
  135 +<style scoped>
  136 +.ibox-tools {
  137 + display: inline-block;
  138 + float: right;
  139 + margin-top: 0;
  140 + position: relative;
  141 + padding: 0;
  142 +}
  143 +
  144 +.clearfix:before,
  145 +.clearfix:after {
  146 + display: table;
  147 + content: "";
  148 +}
  149 +
  150 +.clearfix:after {
  151 + clear: both
  152 +}
  153 +</style>
0 154 \ No newline at end of file
... ...
src/views/resource/allocationStorehouseHistoryAuditOrdersLang.js 0 → 100644
  1 +export const messages = {
  2 + en: {
  3 + allocationStorehouseHistoryAuditOrders: {
  4 + title: 'Allocation History Audit Orders',
  5 + back: 'Back',
  6 + refresh: 'Refresh',
  7 + allocationNumber: 'Allocation Number',
  8 + allocationCount: 'Allocation Count',
  9 + applicant: 'Applicant',
  10 + status: 'Status',
  11 + time: 'Time',
  12 + operation: 'Operation',
  13 + detail: 'Detail',
  14 + fetchError: 'Failed to fetch allocation history audit orders'
  15 + }
  16 + },
  17 + zh: {
  18 + allocationStorehouseHistoryAuditOrders: {
  19 + title: '调拨已办单',
  20 + back: '返回',
  21 + refresh: '刷新',
  22 + allocationNumber: '调拨编号',
  23 + allocationCount: '调拨数量',
  24 + applicant: '申请人',
  25 + status: '状态',
  26 + time: '时间',
  27 + operation: '操作',
  28 + detail: '详情',
  29 + fetchError: '获取调拨已办单失败'
  30 + }
  31 + }
  32 +}
0 33 \ No newline at end of file
... ...
src/views/resource/allocationStorehouseHistoryAuditOrdersList.vue 0 → 100644
  1 +<template>
  2 + <div class="allocation-storehouse-history-audit-orders-container animated fadeInRight">
  3 + <el-card class="box-card">
  4 + <div slot="header" class="flex justify-between">
  5 + <span>{{ $t('allocationStorehouseHistoryAuditOrders.title') }}</span>
  6 + <div class="header-buttons">
  7 + <el-button type="primary" size="small" @click="goBack">
  8 + <i class="el-icon-close"></i>
  9 + {{ $t('allocationStorehouseHistoryAuditOrders.back') }}
  10 + </el-button>
  11 + <el-button type="primary" size="small" @click="queryAuditOrders">
  12 + <i class="el-icon-refresh"></i>
  13 + {{ $t('allocationStorehouseHistoryAuditOrders.refresh') }}
  14 + </el-button>
  15 + </div>
  16 + </div>
  17 +
  18 + <el-table
  19 + v-loading="loading"
  20 + :data="auditOrders"
  21 + border
  22 + style="width: 100%"
  23 + class="table-wrapper"
  24 + >
  25 + <el-table-column
  26 + prop="applyId"
  27 + :label="$t('allocationStorehouseHistoryAuditOrders.allocationNumber')"
  28 + align="center"
  29 + />
  30 + <el-table-column
  31 + prop="applyCount"
  32 + :label="$t('allocationStorehouseHistoryAuditOrders.allocationCount')"
  33 + align="center"
  34 + />
  35 + <el-table-column
  36 + prop="startUserName"
  37 + :label="$t('allocationStorehouseHistoryAuditOrders.applicant')"
  38 + align="center"
  39 + />
  40 + <el-table-column
  41 + prop="stateName"
  42 + :label="$t('allocationStorehouseHistoryAuditOrders.status')"
  43 + align="center"
  44 + />
  45 + <el-table-column
  46 + prop="createTime"
  47 + :label="$t('allocationStorehouseHistoryAuditOrders.time')"
  48 + align="center"
  49 + />
  50 + <el-table-column
  51 + :label="$t('allocationStorehouseHistoryAuditOrders.operation')"
  52 + align="center"
  53 + width="120"
  54 + >
  55 + <template slot-scope="scope">
  56 + <el-button
  57 + type="text"
  58 + size="small"
  59 + @click="toDetail(scope.row)"
  60 + >
  61 + {{ $t('allocationStorehouseHistoryAuditOrders.detail') }}
  62 + </el-button>
  63 + </template>
  64 + </el-table-column>
  65 + </el-table>
  66 +
  67 + <el-pagination
  68 + :current-page.sync="page.current"
  69 + :page-sizes="[10, 20, 30, 50]"
  70 + :page-size="page.size"
  71 + :total="page.total"
  72 + layout="total, sizes, prev, pager, next, jumper"
  73 + @size-change="handleSizeChange"
  74 + @current-change="handleCurrentChange"
  75 + class="pagination-wrapper"
  76 + />
  77 + </el-card>
  78 + </div>
  79 +</template>
  80 +
  81 +<script>
  82 +import { listAllocationStoreHisAuditOrders } from '@/api/resource/allocationStorehouseHistoryAuditOrdersApi'
  83 +import { getCommunityId } from '@/api/community/communityApi'
  84 +
  85 +export default {
  86 + name: 'AllocationStorehouseHistoryAuditOrdersList',
  87 + data() {
  88 + return {
  89 + loading: false,
  90 + auditOrders: [],
  91 + page: {
  92 + current: 1,
  93 + size: 10,
  94 + total: 0
  95 + },
  96 + conditions: {
  97 + auditOrdersId: '',
  98 + userName: '',
  99 + auditLink: ''
  100 + },
  101 + communityId: ''
  102 + }
  103 + },
  104 + created() {
  105 + this.communityId = getCommunityId()
  106 + this.listAuditOrders()
  107 + },
  108 + methods: {
  109 + async listAuditOrders() {
  110 + try {
  111 + this.loading = true
  112 + const params = {
  113 + page: this.page.current,
  114 + row: this.page.size,
  115 + communityId: this.communityId,
  116 + ...this.conditions
  117 + }
  118 + const { data, total } = await listAllocationStoreHisAuditOrders(params)
  119 + this.auditOrders = data
  120 + this.page.total = total
  121 + } catch (error) {
  122 + this.$message.error(this.$t('allocationStorehouseHistoryAuditOrders.fetchError'))
  123 + } finally {
  124 + this.loading = false
  125 + }
  126 + },
  127 + queryAuditOrders() {
  128 + this.page.current = 1
  129 + this.listAuditOrders()
  130 + },
  131 + toDetail(item) {
  132 + this.$router.push({
  133 + path: '/pages/common/allocationStorehouseDetail',
  134 + query: { applyId: item.applyId }
  135 + })
  136 + },
  137 + goBack() {
  138 + this.$router.go(-1)
  139 + },
  140 + handleSizeChange(val) {
  141 + this.page.size = val
  142 + this.listAuditOrders()
  143 + },
  144 + handleCurrentChange(val) {
  145 + this.page.current = val
  146 + this.listAuditOrders()
  147 + }
  148 + }
  149 +}
  150 +</script>
  151 +
  152 +<style lang="scss" scoped>
  153 +.allocation-storehouse-history-audit-orders-container {
  154 + padding: 20px;
  155 +
  156 + .box-card {
  157 + margin-bottom: 20px;
  158 + }
  159 +
  160 + .header-buttons {
  161 + float: right;
  162 + margin-top: -5px;
  163 + }
  164 +
  165 + .table-wrapper {
  166 + margin-top: 20px;
  167 + }
  168 +
  169 + .pagination-wrapper {
  170 + margin-top: 20px;
  171 + text-align: right;
  172 + }
  173 +}
  174 +</style>
0 175 \ No newline at end of file
... ...
src/views/resource/itemReleaseFinishLang.js 0 → 100644
  1 +export const messages = {
  2 + en: {
  3 + itemReleaseFinish: {
  4 + title: 'Finished Release Orders',
  5 + back: 'Back',
  6 + refresh: 'Refresh',
  7 + orderNo: 'Order No',
  8 + releaseType: 'Release Type',
  9 + applyUnit: 'Apply Unit',
  10 + applicant: 'Applicant',
  11 + idCard: 'ID Card',
  12 + phone: 'Phone',
  13 + passTime: 'Pass Time',
  14 + items: 'Items',
  15 + viewItems: 'View Items',
  16 + status: 'Status',
  17 + plateNo: 'Plate No',
  18 + none: 'None',
  19 + operation: 'Operation',
  20 + detail: 'Detail',
  21 + fetchError: 'Failed to fetch data'
  22 + },
  23 + },
  24 + zh: {
  25 + itemReleaseFinish: {
  26 + title: '放行已办单',
  27 + back: '返回',
  28 + refresh: '刷新',
  29 + orderNo: '单号',
  30 + releaseType: '放行类型',
  31 + applyUnit: '申请单位',
  32 + applicant: '申请人',
  33 + idCard: '身份证',
  34 + phone: '手机号',
  35 + passTime: '通行时间',
  36 + items: '物品',
  37 + viewItems: '查看物品',
  38 + status: '状态',
  39 + plateNo: '车牌号',
  40 + none: '无',
  41 + operation: '操作',
  42 + detail: '详情',
  43 + fetchError: '获取数据失败'
  44 + },
  45 + }
  46 +}
0 47 \ No newline at end of file
... ...
src/views/resource/itemReleaseFinishList.vue 0 → 100644
  1 +<template>
  2 + <div class="animated fadeInRight ecommerce">
  3 + <el-row>
  4 + <el-col :span="24">
  5 + <el-card>
  6 + <div slot="header" class="flex justify-between">
  7 + <span>{{ $t('itemReleaseFinish.title') }}</span>
  8 + <div style="float: right;">
  9 + <el-button size="small" @click="goBack()">
  10 + {{ $t('itemReleaseFinish.back') }}
  11 + </el-button>
  12 + <el-button type="primary" size="small" @click="_queryUndoOrdersMethod()">
  13 + {{ $t('itemReleaseFinish.refresh') }}
  14 + </el-button>
  15 + </div>
  16 + </div>
  17 +
  18 + <el-table :data="itemReleaseFinishInfo.finishs" border style="width: 100%" v-loading="loading">
  19 + <el-table-column prop="irId" :label="$t('itemReleaseFinish.orderNo')" align="center" />
  20 + <el-table-column prop="typeName" :label="$t('itemReleaseFinish.releaseType')" align="center" />
  21 + <el-table-column prop="applyCompany" :label="$t('itemReleaseFinish.applyUnit')" align="center" />
  22 + <el-table-column prop="applyPerson" :label="$t('itemReleaseFinish.applicant')" align="center" />
  23 + <el-table-column prop="idCard" :label="$t('itemReleaseFinish.idCard')" align="center" />
  24 + <el-table-column prop="applyTel" :label="$t('itemReleaseFinish.phone')" align="center" />
  25 + <el-table-column prop="passTime" :label="$t('itemReleaseFinish.passTime')" align="center" />
  26 + <el-table-column :label="$t('itemReleaseFinish.items')" align="center">
  27 + <template slot-scope="scope">
  28 + {{ scope.row.amount }}(<el-link type="primary" @click="viewResName(scope.row)">
  29 + {{ $t('itemReleaseFinish.viewItems') }}
  30 + </el-link>)
  31 + </template>
  32 + </el-table-column>
  33 + <el-table-column prop="stateName" :label="$t('itemReleaseFinish.status')" align="center" />
  34 + <el-table-column prop="carNum" :label="$t('itemReleaseFinish.plateNo')" align="center">
  35 + <template slot-scope="scope">
  36 + {{ scope.row.carNum || $t('itemReleaseFinish.none') }}
  37 + </template>
  38 + </el-table-column>
  39 + <el-table-column :label="$t('itemReleaseFinish.operation')" align="center" width="120">
  40 + <template slot-scope="scope">
  41 + <el-button size="mini" @click="_openDetail(scope.row)">
  42 + {{ $t('itemReleaseFinish.detail') }}
  43 + </el-button>
  44 + </template>
  45 + </el-table-column>
  46 + </el-table>
  47 +
  48 + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
  49 + :current-page="page.current" :page-sizes="[10, 20, 30, 50]" :page-size="page.size"
  50 + layout="total, sizes, prev, pager, next, jumper" :total="page.total" style="margin-top: 20px;" />
  51 + </el-card>
  52 + </el-col>
  53 + </el-row>
  54 +
  55 + <view-item-release-res ref="viewItemReleaseRes" />
  56 + </div>
  57 +</template>
  58 +
  59 +<script>
  60 +import { queryFinishItemRelease } from '@/api/resource/itemReleaseFinishApi'
  61 +import ViewItemReleaseRes from '@/components/work/viewItemReleaseRes'
  62 +import { getCommunityId } from '@/api/community/communityApi'
  63 +
  64 +export default {
  65 + name: 'ItemReleaseFinishList',
  66 + components: {
  67 + ViewItemReleaseRes
  68 + },
  69 + data() {
  70 + return {
  71 + loading: false,
  72 + itemReleaseFinishInfo: {
  73 + finishs: [],
  74 + conditions: {
  75 + irId: '',
  76 + userName: '',
  77 + auditLink: ''
  78 + }
  79 + },
  80 + page: {
  81 + current: 1,
  82 + size: 10,
  83 + total: 0
  84 + },
  85 + communityId: ''
  86 + }
  87 + },
  88 + created() {
  89 + this.communityId = getCommunityId()
  90 + this._listUndoOrders(this.page.current, this.page.size)
  91 + },
  92 + methods: {
  93 + async _listUndoOrders(page, size) {
  94 + try {
  95 + this.loading = true
  96 + const params = {
  97 + page,
  98 + row: size,
  99 + communityId: this.communityId,
  100 + ...this.itemReleaseFinishInfo.conditions
  101 + }
  102 + const { data, total } = await queryFinishItemRelease(params)
  103 + this.itemReleaseFinishInfo.finishs = data
  104 + this.page.total = total
  105 + } catch (error) {
  106 + this.$message.error(this.$t('itemReleaseFinish.fetchError'))
  107 + } finally {
  108 + this.loading = false
  109 + }
  110 + },
  111 + _queryUndoOrdersMethod() {
  112 + this.page.current = 1
  113 + this._listUndoOrders(this.page.current, this.page.size)
  114 + },
  115 + _openDetail(item) {
  116 + this.$router.push({
  117 + path: '/views/work/itemReleaseDetail',
  118 + query: {
  119 + irId: item.irId,
  120 + flowId: item.flowId
  121 + }
  122 + })
  123 + },
  124 + viewResName(item) {
  125 + this.$refs.viewItemReleaseRes.open(item)
  126 + },
  127 + handleSizeChange(val) {
  128 + this.page.size = val
  129 + this._listUndoOrders(this.page.current, val)
  130 + },
  131 + handleCurrentChange(val) {
  132 + this.page.current = val
  133 + this._listUndoOrders(val, this.page.size)
  134 + }
  135 + }
  136 +}
  137 +</script>
  138 +
  139 +<style scoped>
  140 +.ecommerce {
  141 + padding: 20px;
  142 +}
  143 +</style>
0 144 \ No newline at end of file
... ...
src/views/resource/myAuditHistoryOrdersLang.js 0 → 100644
  1 +export const messages = {
  2 + en: {
  3 + myAuditHistoryOrders: {
  4 + title: 'Purchase History Orders',
  5 + back: 'Back',
  6 + refresh: 'Refresh',
  7 + orderNumber: 'Order Number',
  8 + orderType: 'Order Type',
  9 + orderStatus: 'Order Status',
  10 + applicant: 'Applicant',
  11 + createTime: 'Create Time',
  12 + operation: 'Operation',
  13 + view: 'View'
  14 + }
  15 + },
  16 + zh: {
  17 + myAuditHistoryOrders: {
  18 + title: '采购已办单',
  19 + back: '返回',
  20 + refresh: '刷新',
  21 + orderNumber: '订单号',
  22 + orderType: '订单类型',
  23 + orderStatus: '订单状态',
  24 + applicant: '申请人',
  25 + createTime: '创建时间',
  26 + operation: '操作',
  27 + view: '查看'
  28 + }
  29 + }
  30 +}
0 31 \ No newline at end of file
... ...
src/views/resource/myAuditHistoryOrdersList.vue 0 → 100644
  1 +<template>
  2 + <div class="my-audit-history-orders animated fadeInRight">
  3 + <el-card class="box-card">
  4 + <div slot="header" class="flex justify-between">
  5 + <span>{{ $t('myAuditHistoryOrders.title') }}</span>
  6 + <div class="header-buttons">
  7 + <el-button type="primary" size="small" @click="goBack()">
  8 + <i class="el-icon-close"></i>
  9 + {{ $t('myAuditHistoryOrders.back') }}
  10 + </el-button>
  11 + <el-button type="primary" size="small" @click="_queryHistory">
  12 + <i class="el-icon-refresh"></i>
  13 + {{ $t('myAuditHistoryOrders.refresh') }}
  14 + </el-button>
  15 + </div>
  16 + </div>
  17 +
  18 + <el-table :data="auditOrderHistorysInfo.auditOrderHistorys" border style="width: 100%" v-loading="loading">
  19 + <el-table-column prop="applyOrderId" :label="$t('myAuditHistoryOrders.orderNumber')" align="center" />
  20 + <el-table-column prop="resOrderTypeName" :label="$t('myAuditHistoryOrders.orderType')" align="center" />
  21 + <el-table-column prop="stateName" :label="$t('myAuditHistoryOrders.orderStatus')" align="center" />
  22 + <el-table-column prop="userName" :label="$t('myAuditHistoryOrders.applicant')" align="center" />
  23 + <el-table-column prop="createTime" :label="$t('myAuditHistoryOrders.createTime')" align="center" />
  24 + <el-table-column :label="$t('myAuditHistoryOrders.operation')" align="center" width="150">
  25 + <template slot-scope="scope">
  26 + <el-button size="mini" @click="_openDetailPurchaseApplyModel(scope.row)">
  27 + {{ $t('myAuditHistoryOrders.view') }}
  28 + </el-button>
  29 + </template>
  30 + </el-table-column>
  31 + </el-table>
  32 +
  33 + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
  34 + :page-sizes="[10, 20, 30, 50]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper"
  35 + :total="auditOrderHistorysInfo.total" class="pagination" />
  36 + </el-card>
  37 + </div>
  38 +</template>
  39 +
  40 +<script>
  41 +import { listAuditHistoryOrders } from '@/api/resource/myAuditHistoryOrdersApi'
  42 +
  43 +export default {
  44 + name: 'MyAuditHistoryOrdersList',
  45 + data() {
  46 + return {
  47 + loading: false,
  48 + currentPage: 1,
  49 + pageSize: 10,
  50 + auditOrderHistorysInfo: {
  51 + auditOrderHistorys: [],
  52 + total: 0,
  53 + conditions: {
  54 + userName: '',
  55 + auditLink: ''
  56 + }
  57 + }
  58 + }
  59 + },
  60 + created() {
  61 + this._listAuditOrderHistorys(this.currentPage, this.pageSize)
  62 + },
  63 + methods: {
  64 + async _listAuditOrderHistorys(page, size) {
  65 + try {
  66 + this.loading = true
  67 + const params = {
  68 + page: page,
  69 + row: size,
  70 + ...this.auditOrderHistorysInfo.conditions
  71 + }
  72 + const { data, total } = await listAuditHistoryOrders(params)
  73 + this.auditOrderHistorysInfo.auditOrderHistorys = data
  74 + this.auditOrderHistorysInfo.total = total
  75 + } catch (error) {
  76 + console.error('获取审核历史订单失败:', error)
  77 + } finally {
  78 + this.loading = false
  79 + }
  80 + },
  81 + _queryHistory() {
  82 + this.currentPage = 1
  83 + this._listAuditOrderHistorys(this.currentPage, this.pageSize)
  84 + },
  85 + _openDetailPurchaseApplyModel(purchaseApply) {
  86 + this.$router.push({
  87 + path: '/pages/common/purchaseApplyDetail',
  88 + query: {
  89 + applyOrderId: purchaseApply.applyOrderId,
  90 + resOrderType: purchaseApply.resOrderType
  91 + }
  92 + })
  93 + },
  94 + handleSizeChange(val) {
  95 + this.pageSize = val
  96 + this._listAuditOrderHistorys(this.currentPage, this.pageSize)
  97 + },
  98 + handleCurrentChange(val) {
  99 + this.currentPage = val
  100 + this._listAuditOrderHistorys(this.currentPage, this.pageSize)
  101 + },
  102 + goBack() {
  103 + this.$router.go(-1)
  104 + }
  105 + }
  106 +}
  107 +</script>
  108 +
  109 +<style lang="scss" scoped>
  110 +.my-audit-history-orders {
  111 + padding: 20px;
  112 +
  113 + .box-card {
  114 + margin-bottom: 20px;
  115 + }
  116 +
  117 + .header-buttons {
  118 + float: right;
  119 + }
  120 +
  121 + .pagination {
  122 + margin-top: 20px;
  123 + text-align: right;
  124 + }
  125 +
  126 + .el-table {
  127 + margin-top: 20px;
  128 + }
  129 +}
  130 +</style>
0 131 \ No newline at end of file
... ...
src/views/resource/myItemOutAuditHistoryOrdersLang.js 0 → 100644
  1 +export const messages = {
  2 + en: {
  3 + myItemOutAuditHistoryOrders: {
  4 + title: 'Item Out Audit History Orders',
  5 + orderId: 'Order ID',
  6 + orderType: 'Order Type',
  7 + orderStatus: 'Order Status',
  8 + applicant: 'Applicant',
  9 + createTime: 'Create Time',
  10 + operation: 'Operation',
  11 + view: 'View',
  12 + back: 'Back',
  13 + refresh: 'Refresh'
  14 + }
  15 + },
  16 + zh: {
  17 + myItemOutAuditHistoryOrders: {
  18 + title: '领用已办单',
  19 + orderId: '订单号',
  20 + orderType: '订单类型',
  21 + orderStatus: '订单状态',
  22 + applicant: '申请人',
  23 + createTime: '创建时间',
  24 + operation: '操作',
  25 + view: '查看',
  26 + back: '返回',
  27 + refresh: '刷新'
  28 + }
  29 + }
  30 +}
0 31 \ No newline at end of file
... ...
src/views/resource/myItemOutAuditHistoryOrdersList.vue 0 → 100644
  1 +<template>
  2 + <div class="animated fadeInRight ecommerce">
  3 + <el-row>
  4 + <el-col :span="24">
  5 + <el-card class="box-card">
  6 + <div slot="header" class="flex justify-between">
  7 + <span>{{ $t('myItemOutAuditHistoryOrders.title') }}</span>
  8 + <div class="ibox-tools" style="float: right;">
  9 + <el-button type="primary" size="small" @click="goBack()">
  10 + <i class="el-icon-close"></i>
  11 + {{ $t('myItemOutAuditHistoryOrders.back') }}
  12 + </el-button>
  13 + <el-button type="primary" size="small" @click="_queryHistory()">
  14 + <i class="el-icon-refresh"></i>
  15 + {{ $t('myItemOutAuditHistoryOrders.refresh') }}
  16 + </el-button>
  17 + </div>
  18 + </div>
  19 + <div class="ibox-content">
  20 + <el-table
  21 + :data="auditOrderHistorysInfo.auditOrderHistorys"
  22 + border
  23 + style="width: 100%"
  24 + >
  25 + <el-table-column
  26 + prop="applyOrderId"
  27 + :label="$t('myItemOutAuditHistoryOrders.orderId')"
  28 + align="center"
  29 + />
  30 + <el-table-column
  31 + prop="resOrderTypeName"
  32 + :label="$t('myItemOutAuditHistoryOrders.orderType')"
  33 + align="center"
  34 + />
  35 + <el-table-column
  36 + prop="stateName"
  37 + :label="$t('myItemOutAuditHistoryOrders.orderStatus')"
  38 + align="center"
  39 + />
  40 + <el-table-column
  41 + prop="userName"
  42 + :label="$t('myItemOutAuditHistoryOrders.applicant')"
  43 + align="center"
  44 + />
  45 + <el-table-column
  46 + prop="createTime"
  47 + :label="$t('myItemOutAuditHistoryOrders.createTime')"
  48 + align="center"
  49 + />
  50 + <el-table-column
  51 + :label="$t('myItemOutAuditHistoryOrders.operation')"
  52 + align="center"
  53 + >
  54 + <template slot-scope="scope">
  55 + <el-button
  56 + size="mini"
  57 + @click="_openDetailPurchaseApplyModel(scope.row)"
  58 + >
  59 + {{ $t('myItemOutAuditHistoryOrders.view') }}
  60 + </el-button>
  61 + </template>
  62 + </el-table-column>
  63 + </el-table>
  64 + <el-pagination
  65 + :current-page.sync="currentPage"
  66 + :page-size="pageSize"
  67 + :total="auditOrderHistorysInfo.total"
  68 + layout="total, prev, pager, next, jumper"
  69 + @current-change="handlePageChange"
  70 + />
  71 + </div>
  72 + </el-card>
  73 + </el-col>
  74 + </el-row>
  75 + </div>
  76 +</template>
  77 +
  78 +<script>
  79 +import { listItemOutAuditHistoryOrders } from '@/api/resource/myItemOutAuditHistoryOrdersApi'
  80 +import { getCommunityId } from '@/api/community/communityApi'
  81 +
  82 +export default {
  83 + name: 'MyItemOutAuditHistoryOrdersList',
  84 + data() {
  85 + return {
  86 + auditOrderHistorysInfo: {
  87 + auditOrderHistorys: [],
  88 + total: 0,
  89 + records: 1,
  90 + moreCondition: false,
  91 + userName: '',
  92 + conditions: {
  93 + AuditOrderHistorysId: '',
  94 + userName: '',
  95 + auditLink: '',
  96 + page: 1,
  97 + row: 10
  98 + },
  99 + orderInfo: ''
  100 + },
  101 + currentPage: 1,
  102 + pageSize: 10,
  103 + communityId: ''
  104 + }
  105 + },
  106 + created() {
  107 + this.communityId = getCommunityId()
  108 + this._listAuditOrderHistorys(this.currentPage, this.pageSize)
  109 + },
  110 + methods: {
  111 + async _listAuditOrderHistorys(page, rows) {
  112 + try {
  113 + this.auditOrderHistorysInfo.conditions.page = page
  114 + this.auditOrderHistorysInfo.conditions.row = rows
  115 + this.auditOrderHistorysInfo.conditions.communityId = this.communityId
  116 +
  117 + const { data, total } = await listItemOutAuditHistoryOrders(
  118 + this.auditOrderHistorysInfo.conditions
  119 + )
  120 + this.auditOrderHistorysInfo.auditOrderHistorys = data
  121 + this.auditOrderHistorysInfo.total = total
  122 + } catch (error) {
  123 + console.error('Failed to fetch audit history orders:', error)
  124 + }
  125 + },
  126 + _queryHistory() {
  127 + this.currentPage = 1
  128 + this._listAuditOrderHistorys(this.currentPage, this.pageSize)
  129 + },
  130 + _openDetailPurchaseApplyModel(purchaseApply) {
  131 + this.$router.push({
  132 + path: '/pages/common/purchaseApplyDetail',
  133 + query: {
  134 + applyOrderId: purchaseApply.applyOrderId,
  135 + resOrderType: purchaseApply.resOrderType
  136 + }
  137 + })
  138 + },
  139 + handlePageChange(currentPage) {
  140 + this.currentPage = currentPage
  141 + this._listAuditOrderHistorys(currentPage, this.pageSize)
  142 + },
  143 + goBack() {
  144 + this.$router.go(-1)
  145 + }
  146 + }
  147 +}
  148 +</script>
  149 +
  150 +<style scoped>
  151 +.ibox-tools {
  152 + display: inline-block;
  153 + float: right;
  154 + margin-top: 0;
  155 + position: relative;
  156 + padding: 0;
  157 +}
  158 +.clearfix:before,
  159 +.clearfix:after {
  160 + display: table;
  161 + content: "";
  162 +}
  163 +.clearfix:after {
  164 + clear: both;
  165 +}
  166 +.box-card {
  167 + margin-bottom: 20px;
  168 +}
  169 +</style>
0 170 \ No newline at end of file
... ...