<template>
|
<div>
|
<TableList
|
:list="records"
|
:pageInfo="pageInfo"
|
:header="tableHeader"
|
:loading="loading"
|
title="历史邮寄信息"
|
@doAction="doAction"
|
@handleCurrentChange="handleCurrentChange"
|
@handleSizeChange="handleSizeChange"
|
></TableList>
|
|
<el-dialog
|
:visible.sync="isShowDialog"
|
custom-class="comm-dialog"
|
:modal-append-to-body="false"
|
width="850px"
|
>
|
<ContractMailUpdate
|
:info="tempRecord"
|
@close="isShowDialog = false"
|
:isShow="isShowDialog"
|
@doAction="doPopupAction"
|
></ContractMailUpdate>
|
</el-dialog>
|
<Dialog
|
v-model="isShowSucc"
|
icon="succ"
|
iconText="提交成功"
|
:close="false"
|
:buttons="[{text: '确定', type: 'primary'}]"
|
@handleClick="sureSucc"
|
></Dialog>
|
</div>
|
</template>
|
<script>
|
// 历史邮寄信息
|
import Dialog from '../Dialog'
|
import { mailHistoryList } from '@comprehensive/serve/public'
|
import TableList from '../TableList'
|
import ContractMailUpdate from '../ContractMailUpdate'
|
import { historyMailHeader } from '@comprehensive/utils/tableHeaders'
|
|
const recordButtons = [
|
{
|
label: '修改',
|
id: 0,
|
prop: 'updateButton'
|
},
|
{
|
label: '复制收件人信息',
|
id: 1,
|
prop: 'copyButton'
|
}
|
]
|
|
export default {
|
props: {
|
info: {
|
type: Object,
|
default: () => ({})
|
}
|
},
|
components: {
|
TableList,
|
ContractMailUpdate,
|
Dialog
|
},
|
data() {
|
return {
|
records: [],
|
loading: false,
|
isShowDialog: false,
|
isShowSucc: false,
|
tempRecord: {},
|
pageInfo: {
|
currentPage: 1,
|
pageSize: 10,
|
total: 0
|
},
|
tableHeader: [...historyMailHeader]
|
}
|
},
|
created() {
|
this.init()
|
},
|
methods: {
|
init() {
|
this.pageInfo = {
|
currentPage: 1,
|
pageSize: 10,
|
total: 0
|
}
|
this.getList()
|
},
|
|
async getList() {
|
this.loading = true
|
const { pageInfo, info } = this
|
const isEdit = info.edit === 'Y'
|
const { applySerialNo } = this.$route.query
|
const res = await mailHistoryList({
|
applySerialNo: applySerialNo,
|
...pageInfo
|
})
|
this.loading = false
|
const { records, total } = res.result
|
this.records = records.map(item => {
|
const tempButtons = recordButtons.filter(({ prop }) =>
|
prop === 'updateButton'
|
? item[prop] === '1' && isEdit
|
: item[prop] === '1'
|
)
|
return { ...item, buttons: [...tempButtons] }
|
})
|
this.pageInfo.total = total
|
},
|
|
// 修改翻页条数
|
handleSizeChange(val) {
|
this.pageInfo.pageSize = val
|
this.getList()
|
},
|
|
// 修改翻页数
|
handleCurrentChange(val) {
|
this.pageInfo.currentPage = val
|
this.getList()
|
},
|
|
sureSucc() {
|
this.isShowSucc = false
|
this.handleCurrentChange(1)
|
},
|
|
// 表格按钮事件处理
|
doAction(item, record, buttonItem) {
|
const { prop } = buttonItem
|
this.tempRecord = { ...record }
|
// 修改
|
if (prop === 'updateButton') {
|
this.isShowDialog = true
|
}
|
|
// 复制收件人信息
|
if (prop === 'copyButton') {
|
// 复制收件人信息格式:【收件人名称+空格+收件人电话+空格+收件人省+收件人市+收件人区+收件人街道楼房号】,
|
this.toCopy()
|
}
|
},
|
|
doPopupAction(type) {
|
if (type === 'close') {
|
this.isShowDialog = false
|
}
|
if (type === 'succ') {
|
this.isShowDialog = false
|
this.isShowSucc = true
|
}
|
},
|
|
toCopy() {
|
const { tempRecord } = this
|
const keys = ['recipient', 'phone', 'adress']
|
const str = keys.reduce(
|
(pre, curr) => `${pre ? pre + ' ' : ''}${tempRecord[curr]}`,
|
''
|
)
|
this.$copyText(str)
|
},
|
|
/**
|
* 拷贝字符串到剪切板
|
* @param {string} text 待拷贝文本
|
*/
|
$copyText(text, isTip = true, tipText = '拷贝成功!') {
|
return new Promise((resolve, reject) => {
|
const failedMsg = '拷贝失败!'
|
const textarea = document.createElement('textarea')
|
textarea.style.position = 'fixed'
|
textarea.style.top = 0
|
textarea.style.left = 0
|
textarea.style.border = 'none'
|
textarea.style.outline = 'none'
|
textarea.style.resize = 'none'
|
textarea.style.background = 'transparent'
|
textarea.style.color = 'transparent'
|
|
textarea.value = `${text}`
|
document.body.appendChild(textarea)
|
textarea.select()
|
try {
|
const isSucc = document.execCommand('copy')
|
document.body.removeChild(textarea)
|
if (isSucc) {
|
if (isTip) {
|
this.$message.info(tipText)
|
}
|
resolve()
|
} else {
|
if (isTip) {
|
this.$message.warning(failedMsg)
|
}
|
reject(new Error(failedMsg))
|
}
|
} catch (err) {
|
document.body.removeChild(textarea)
|
if (isTip) {
|
this.$message.warning(failedMsg)
|
}
|
reject(err)
|
}
|
})
|
}
|
}
|
// watch: {
|
// serialNo() {
|
// this.init()
|
// }
|
// }
|
}
|
</script>
|
|
<style lang="postcss" scoped>
|
.form-section {
|
display: flex;
|
align-items: baseline;
|
& .search {
|
margin: 10px 0 0 50px;
|
padding: 0;
|
}
|
}
|
</style>
|