• 打印当前页面,关闭当前页面


    window.print()打印
    window.close()关闭
     
    <template>
    <div class="lookDetail" style="page-break-after: always;page-break-before:always;">
    <br />
    <div v-if="!printPage" style="margin-left:1120px">
    <Button type="warning" v-if="this.$store.state.user.permissionList['报销单详情'].operationVOS.expense_list"
    @click="exportDetails()" style="margin-right: 5px;">导出</Button>
    <Button type="primary" v-if="this.$store.state.user.permissionList['报销单详情'].operationVOS.expense_list"
    @click="print()">打印</Button>
    </div>
    <br />
    <div style="780px;margin: 0 auto;">

    <h2 class="title">样衣报销明细表</h2>
    <Table :columns="columns" highlight-row :data="listData" size="default" ref="table" border>
    </Table>

    <div style="text-align:right;margin-top:10px">

    <span>日期:</span>

    <span style="margin-right:15px;">{{default_date}}</span>
    <span>制表人:</span>
    <span>{{default_name}}</span>

    </div>
    </div>
    <br />
    <br />
    <br />
    <br />
    <Modal v-model="modal" title="更改报销金额">
    <input type="text" v-model="changeReimbursement" autofocus="autofocus" placeholder="请输入更改金额..." style="padding-left: 3px;"/>
    <div slot="footer">
    <Button type="text" size="large" @click="modalCancel">取消</Button>
    <Button type="primary" size="large" @click="modalOk">确定</Button>
    </div>
    </Modal>
    </div>
    </template>
    <script>
    import imgUpload from '@/view/components/imgUpload.vue'
    import Expense from '@/api/expense.js'
    import axios from 'axios'
    export default {
    components: {
    imgUpload
    },
    data() {
    return {
    modal:false,
    printPage: false,
    id: this.$route.query.id,
    listData: [],
    default_date: '',
    default_name: '',
    imgUrl: [],
    num:'',
    changeReimbursement:'',
    columns: [
    {
    type: 'index',
    title: '序号',
    align: 'center',
    35,
    height: 70,
    },
    {
    title: '样衣图片',
    key: 'imgUrl',
    align: 'center',
    100,
    render: (h, params) => {
    return h('img', {
    attrs: {
    class: 'sampleImg',
    src: this.listData[params.index].imgSrc
    }
    })
    }
    },
    {
    title: '样衣编码',
    key: 'sampleDressCode',
    align: 'center',
    102,
    render:(h,params)=>{
    return h('div',{
    style: {
    color: 'red',
    cursor: 'pointer'
    },
    on: {
    'click': (event) => {
    // this.$router.push('/sample_manage/detail/'+params.row.sampleDressId)
    let url = '/sample_manage/detail/' + params.row.sampleDressId
    this.$router.push({ path: url})
    }
    }
    },params.row.sampleDressCode)
    },
    }, {
    title: '样衣名称',
    key: 'sampleDressName',
    align: 'center',
    75
    }, {
    title: '品类',
    key: 'inventoryCategory',
    align: 'center',
    50
    }, {
    title: '来源类型',
    key: 'serverType',
    align: 'center',
    65,
    render: (h, params) => {
    switch (params.row.styleDipartite) {
    case 1:
    return h('div', {}, '供款')
    break;
    case 2:
    return h('div', {}, '采购')
    break;
    case 3:
    return h('div', {}, '自主')
    break;
    case 4:
    return h('div', {}, '自研')
    break;

    default:
    break;
    }
    }
    }, {
    title: '款式来源',
    key: 'styleSource',
    align: 'center',
    70
    }, {
    title: '渠道来源',
    key: 'channelSource ',
    align: 'center',
    70,
    render: (h, params) => {
    switch (params.row.channelSource) {
    case 1:
    return h('div', {}, '供款公司')
    break;
    case 2:
    return h('div', {}, '外采样衣')
    break;
    case 3:
    return h('div', {}, '市场批发')
    break;
    case 4:
    return h('div', {}, '看图打样')
    break;
    case 5:
    return h('div', {}, '库存')
    case 6:
    return h('div', {}, '技术部')
    default:
    break;
    }
    }
    }, {
    title: '采购价格',
    key: 'purchasePrice',
    align: 'center',
    50
    }, {
    title: '件数',
    key: 'quantity',
    align: 'center',
    50
    }, {
    title: '报销金额',
    key: 'reimbursement',
    align: 'center',
    50,
    render:(h,params)=>{
    return h('div',{
    style:{
    color:'#2D8cF0',
    cursor:'pointer'
    },
    on:{
    click:()=>{
    if(params.row.sampleDressCode === '合计'){
    this.$Message.warning('不能更改合计总价')
    }else{
    this.modal=true
    this.changeReimbursement=''
    this.sampleDressId = params.row.sampleDressId
    }
    }
    }
    },params.row.reimbursement)
    }
    }, {
    title: '备注',
    key: 'updateDate',
    align: 'center',
    60
    }
    ],

    }
    },
    created() {
    this.printPage = this.$route.name === 'lookDetail' ? false : true
    this.getList(this.id)
    },
    methods: {

    getList(id) {
    Expense.getDetailList(id).then(data => {
    //计算合计
    // let sun = 0
    // let sun1 = 0
    let total = data
    // total.forEach(ele => {
    // sun = sun + ele.quantity
    // sun1 = sun1 + ele.reimbursement
    // })
    this.listData = data
    let num = 0
    this.listData.forEach(ele => {
    if (ele.imgUrl) {
    num++
    axios({
    url: `/file/views/${ele.imgUrl}`,
    methods: 'get',
    responseType: 'blob',
    }).then((data) => {
    let blob = data.data;
    let src = window.URL.createObjectURL(blob)
    // ele.imgSrc = src
    this.$set(ele,'imgSrc',src)
    // console.log(data)
    num--
    })
    }
    })
    let interval = setInterval(()=>{
    if(num === 0 && this.$route.name !== 'lookDetail'){
    clearInterval(interval)
    setTimeout(() => {
    window.print()
    },500)
    }else if(num === 0){
    clearInterval(interval)
    }
    },500)
     
    // this.listData.push({
    // sampleDressCode: '合计',
    // quantity: sun,
    // reimbursement: sun1,
    // })
    if (this.listData.length > 0) {
    this.default_date = this.listData[0].createDate
    this.default_name = this.listData[0].createName
    }
    })
    },
    // 打印
    print() {
    // window.open('#/print-expense/'+this.id+'?isp=true' + (D?'&detail=true':''))
    window.open(`#/print-lookDetail?id=${this.id}`)
    },
    //明细导出
    exportDetails(){
    this.$axios({
    url:'findSampleFormPrintExport/'+this.id,
    method:'get',
    responseType: 'blob',
    }).then((data)=>{
    console.log('明细导出')
    const url = window.URL.createObjectURL(data.data)
    const a = document.createElement('a')
    a.href = url
    a.download = '样衣报销明细表.xls'
    document.body.appendChild(a)
    a.click()
    window.URL.revokeObjectURL(url)
    document.body.removeChild(a)
    })
    },
    modalCancel(){
    this.modal=false
    },
    modalOk(){
    let amount= {
    expenseAccountId:this.id,
    dressBaseList:[{
    purchasePrice:this.changeReimbursement,
    sampleDressId:this.sampleDressId
    }]
    }
    if(this.changeReimbursement == ''){
    this.$Message.warning('输入价格不能为空')
    }else{
    Expense.updateAmount(amount).then(data => {
    this.$Message.success('更改价格成功!');
    this.modal=false
    this.getList(this.id)
    })
    }
    },
    }
    }
    </script>

    <style lang="less" media="print">
    .lookDetail {

    /* 重置taber样式 */
    .ivu-table-wrapper {
    border: none
    }

    .ivu-table table {
    /* border: 1px solid #ccc */
    }

    .ivu-table th,
    .ivu-table td {
    border: 1px solid #ddd;
    }

    .ivu-table:after {
    background-color: transparent
    }

    .ivu-table:before {
    background-color: transparent
    }

    /* 编辑表格 */
    .title {
    778px;
    height: 45px;
    text-align: center;
    line-height: 45px;
    border: 1px solid #ccc;
    }

    .ivu-table-cell {
    padding: 0px
    }

    .ivu-table-column-center {
    .ivu-table-cell {
    .sampleImg {
    80px;
    height: 80px;
    padding-top: 5px;
    }
    }

    }

    .ivu-table-tbody tr:last-child img {
    display: none;
    }
    }
    </style>
  • 相关阅读:
    WebAssembly学习(四):AssemblyScript
    Ramda
    React—生命周期
    网络拓扑图
    手机端的meta信息
    面试题
    Bootstrap路径导航
    Bootstrap 分页翻页
    Bootstrap栅格系统
    Bootstrap 屏幕类型
  • 原文地址:https://www.cnblogs.com/wssdx/p/11351024.html
Copyright © 2020-2023  润新知