MrShi
2024-03-08 d2bc6e096f0806b78ea92d4b90a21d3627d406c7
company/src/components/business/OperaTaxesWindow.vue
@@ -1,7 +1,7 @@
<template>
    <GlobalWindow
        :title="title"
        width="50%"
        width="60%"
        submitText="返回修改"
        :visible.sync="visible"
        :confirm-working="isWorking"
@@ -9,49 +9,55 @@
    >
        <div class="info">
            <div class="info_label">
                <span>企业详情(已申请)</span>
              <span v-if="model.status === 0">企业详情(待处理)</span>
              <span v-if="model.status === 1">企业详情(已开票)</span>
              <span v-if="model.status === 2">企业详情(平台撤回)</span>
              <span v-if="model.status === 3">企业详情(已冲红)</span>
            </div>
            <div class="info_list">
                <div class="info_list_item">
                    <div class="info_list_item_label">开票名称:</div>
                    <div class="info_list_item_val">安徽格力人力资源有限公司</div>
                    <div class="info_list_item_val">{{ model.companyName}}</div>
                </div>
                <div class="info_list_item">
                    <div class="info_list_item_label">纳税人识别号:</div>
                    <div class="info_list_item_val">913418210000000000</div>
                    <div class="info_list_item_val">{{ model.taxCode }}</div>
                </div>
                <div class="info_list_item">
                    <div class="info_list_item_label">开户行:</div>
                    <div class="info_list_item_val">安徽农村商业银行股份有限公司合肥支行</div>
                    <div class="info_list_item_val">{{ model.taxBank }}</div>
                </div>
                <div class="info_list_item">
                    <div class="info_list_item_label">账号:</div>
                    <div class="info_list_item_val">
                        20010355666666600000000
                      {{ model.taxAccount }}
                    </div>
                </div>
                <div class="info_list_item" style="width: 100%;">
                    <div class="info_list_item_label">地址、电话:</div>
                    <div class="info_list_item_val">安徽省合肥市经济技术开发区莲花路以东、石门路以南莲花路1#     0551-63450845</div>
                    <div class="info_list_item_val">{{ model.taxAddr }}</div>
                </div>
                <div class="info_list_item" style="width: 100%;">
                    <div class="info_list_item_label">接收方式:</div>
                    <div class="info_list_item_val">电子发票</div>
                    <div v-if="model.type === 0" class="info_list_item_val">电子发票</div>
                    <div v-if="model.type === 1" class="info_list_item_val">纸质发票</div>
                </div>
                <div class="info_list_item" style="width: 100%;">
                    <div class="info_list_item_label">接收地址:</div>
                    <div class="info_list_item_val">111122223333@qq.com</div>
                    <div class="info_list_item_val">{{ model.addr }}</div>
                </div>
                <div class="info_list_item" style="width: 100%;">
                    <div class="info_list_item_label">开票金额:</div>
                    <div class="info_list_item_val" style="color:rgba(249, 86, 1, 0.996078431372549);">2000.00</div>
                </div>
<!--                <div class="info_list_item" style="width: 100%;">-->
<!--                    <div class="info_list_item_label">开票金额:</div>-->
<!--                    <div class="info_list_item_val" style="color:rgba(249, 86, 1, 0.996078431372549);">{{ model.price }}</div>-->
<!--                </div>-->
            </div>
<!--            show-summary-->
<!--            :summary-method="getSummaries1"-->
            <el-table
                v-if="model.applyType ==0"
                :data="tableData"
                border
                show-summary
                :summary-method="getSummaries"
                style="width: 100%; margin-bottom: 20px;">
                <el-table-column
                    label="序号"
@@ -63,84 +69,296 @@
                </el-table-column>
                <el-table-column
                    align="center"
                    prop="code"
                    prop="solutionName"
                    label="保险方案">
                </el-table-column>
                <el-table-column
                    align="center"
                    prop="code"
                    prop="applyCode"
                    label="保单号">
                </el-table-column>
<!--                <el-table-column-->
<!--                    align="center"-->
<!--                    prop="fee"-->
<!--                    label="金额">-->
<!--                  <template slot-scope="{row}">-->
<!--                    <span  style="color:rgba(249, 86, 1, 0.996078431372549);">{{row.fee}}</span>-->
<!--                  </template>-->
<!--                </el-table-column>-->
            </el-table>
<!--            show-summary-->
<!--            :summary-method="getSummaries"-->
          <el-table
            v-if="model.applyType ==1"
            :data="tableData1"
            border
            style="width: 100%; margin-bottom: 20px;">
            <el-table-column
                label="保单"
                align="center"
                width="80">
              <template slot-scope="scope">
                <span>{{scope.$index + 1}}</span>
              </template>
            </el-table-column>
            <el-table-column
                align="center"
                prop="solutionName"
                label="保险方案">
            </el-table-column>
            <el-table-column
                v-if="model.applyType == 1"
                align="center"
                prop="applyCode"
                label="保单号">
            </el-table-column>
            <el-table-column
                align="center"
                label="批单号">
                <template slot-scope="{row}">
                    <span>{{row.changApplyCode ? row.changApplyCode : '-'}}</span>
                </template>
            </el-table-column>
<!--            <el-table-column-->
<!--                align="center"-->
<!--                prop="fee"-->
<!--                label="金额">-->
<!--              <template slot-scope="{row}">-->
<!--                <span  style="color:rgba(249, 86, 1, 0.996078431372549);">{{row.fee}}</span>-->
<!--              </template>-->
<!--            </el-table-column>-->
          </el-table>
<!--            show-summary-->
<!--            :summary-method="getSummaries"-->
            <el-table
                v-if="model.applyType == 1"
                :data="tableData2"
                border
                style="width: 100%; margin-bottom: 20px;">
                <el-table-column
                    label="冲红单"
                    align="center"
                    width="80">
                    <template slot-scope="scope">
                        <span>{{scope.$index + 1}}</span>
                    </template>
                </el-table-column>
                <el-table-column
                    align="center"
                    prop="code"
                    prop="solutionName"
                    label="保险方案">
                </el-table-column>
                <el-table-column
                    align="center"
                    prop="taxDoneCode"
                    label="发票号">
                </el-table-column>
                <el-table-column
                    align="center"
                    prop="taxCreateDate"
                    label="申请开票时间">
                </el-table-column>
                <el-table-column
                    align="center"
                    prop="code"
                    label="金额">
                </el-table-column>
<!--                <el-table-column-->
<!--                    align="center"-->
<!--                    prop="fee"-->
<!--                    label="发票金额">-->
<!--                  <template slot-scope="{row}">-->
<!--                    <span  style="color:rgba(249, 86, 1, 0.996078431372549);">{{row.fee}}</span>-->
<!--                  </template>-->
<!--                </el-table-column>-->
            </el-table>
        </div>
        <span style="font-size: 14px;" v-if="model.status === 2">退回原因:{{model.cancelInfo}} 开票员-{{model.cancelUserId}} {{model.cancelUserName}}</span>
      <el-dialog
          title="上传发票"
          :visible.sync="visible1"
          width="500px"
          style="margin-top: 150px"
          :show-close="false"
          append-to-body
          :close-on-click-modal="false"
          center>
        <div class="form">
          <div class="form_item">
            <div class="form_item_val">
              <el-form :model="form" ref="form" :rules="rules" style="width: 100%;">
                <el-form-item label="填写退回说明:":inline="true"  prop="backInfo">
                  <el-input   v-model="form.backInfo" type="textarea"  placeholder="请输入" />
                </el-form-item>
              </el-form>
            </div>
          </div>
          </div>
        <span slot="footer" class="dialog-footer">
                <el-button @click="visible1 = false">取 消</el-button>
                <el-button type="primary" @click="backDo()">提 交</el-button>
            </span>
      </el-dialog>
      <template v-slot:footer>
        <el-button v-if="userInfo.type !== 1 && model.status ==0 && !visible1" type="danger" @click="visible1 = true">退回申请</el-button>
        <el-button @click="visible = false">取消</el-button>
      </template>
    </GlobalWindow>
</template>
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    export default {
        name: 'OperaCompanyWindow',
        extends: BaseOpera,
        components: { GlobalWindow },
        data () {
            return {
                // 表单数据
                form: {
                    id: null
                },
                // 验证规则
                rules: {},
              tableData:[]
            }
        },
        created () {
            this.config({
                api: '/business/taxes',
                'field.id': 'id'
            })
        },
        methods: {
            getSummaries(param) {
                const { columns, data } = param;
                const sums = [];
                columns.forEach((column, index) => {
                    if (index === 0) {
                        sums[index] = '合计';
                        return;
                    } else {
                        if (index == 9||index==10||index==11||index==12) {
                            const values = data.map(item => Number(item[column.property]));
                            if (!values.every(value => isNaN(value))) {
                                sums[index] = values.reduce((prev, curr) => {
                                    const value = Number(curr);
                                    if (!isNaN(value)) {
                                        return prev + curr;
                                    } else {
                                        return prev;
                                    }
                                }, 0);
                            }
                        }
                    }
                });
                return sums;
            }
        }
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { getDetail,backApply } from '@/api/business/taxes'
import { mapState } from 'vuex'
export default {
  name: 'OperaCompanyWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // 表单数据
      model: {},
      visible1:false,
      form: {
        id: null,
        backInfo:''
      },
      rules: {
        backInfo: [
          { required: true, message: '请输入退回说明' }
        ],
      },
      tableData: [],
      tableData1: [],
      tableData2: []
    }
  },
    computed: {
      ...mapState(['userInfo'])
    },
  created () {
    this.config({
      api: '/business/taxes',
      'field.id': 'id'
    })
  },
  methods: {
    open (title, target) {
      this.title = title
      this.visible = true
      this.visible1 = false
      this.form.backInfo=''
      this.model = {}
      this.tableData = []
      this.tableData1 = []
      this.tableData2 = []
      this.model = target
      this.form.id = target.id
      this.getDetails()
    },
    backDo(){
      this.$refs.form.validate((valid) => {
        if (!valid) {
          return
        }
        this.isWorking = true
        backApply(this.form)
            .then(response => {
              this.visible1 = false
              this.getDetails()
              this.$emit('success')
            }).catch(err => {
          this.$tip.apiFailed(err)
        }).finally(() => {
          this.isWorking = false
        })
      })
    },
    getDetails  () {
      getDetail(this.model.id).then(res => {
        this.model = res
        if (res.applyType == 0) {
          this.tableData=(res.applyList)
        } else {
            console.log(res.applyList)
            console.log(res.delTaxList)
          this.tableData1=(res.applyList)
          this.tableData2=(res.delTaxList)
        }
      }).catch(err => {
      })
    },
    getSummaries1 (param) {
        const { columns, data } = param
        const sums = []
        columns.forEach((column, index) => {
            if (index === 0) {
                sums[index] = '合计'
            } else {
                if (index == 3) {
                    const values = data.map(item => Number(item[column.property]))
                    if (!values.every(value => isNaN(value))) {
                        sums[index] = values.reduce((prev, curr) => {
                            const value = Number(curr)
                            if (!isNaN(value)) {
                                return prev + curr
                            } else {
                                return prev
                            }
                        }, 0)
                    }
                }
            }
        })
        return  sums
    },
    getSummaries (param) {
      const { columns, data } = param
      const sums = []
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = '合计'
        } else {
          if (index == 4) {
            const values = data.map(item => Number(item[column.property]))
            if (!values.every(value => isNaN(value))) {
              sums[index] = values.reduce((prev, curr) => {
                const value = Number(curr)
                if (!isNaN(value)) {
                  return prev + curr
                } else {
                  return prev
                }
              }, 0)
            }
          }
        }
      })
      return  sums
    }
  }
}
</script>
<style lang="scss" scoped>
    ::v-deep .el-table__footer-wrapper tbody td {
      cursor: pointer;
      text-align: center;
      &:nth-child(5) {
        color:rgba(249, 86, 1, 0.996078431372549);
      }
    }
    /*   ::v-deep .el-table__header-wrapper   th:first-child .cell{
          color:rgba(249, 86, 1, 0.996078431372549) !important
       }
       ::v-deep  table:first-of-type th:first-child .cell{
            //color:rgba(249, 86, 1, 0.996078431372549) !important
       }
       ::v-deep   .el-table--border th:first-child .cell {
         &:nth-child(2) {
           color:rgba(249, 86, 1, 0.996078431372549);
         }
       }*/
    .info {
        width: 100%;
        .info_label {
@@ -150,7 +368,7 @@
            justify-content: space-between;
            margin-bottom: 20px;
            span {
                font-size: 18px;
                font-size: 14px;
                font-weight: 500;
                color: #000000;
            }
@@ -158,15 +376,16 @@
        .info_list {
            width: 100%;
            display: flex;
            align-items: center;
            align-items: left;
            flex-wrap: wrap;
            .info_list_item {
                width: 50%;
                display: flex;
                align-items: start;
                font-size: 14px;
                margin-bottom: 20px;
                .info_list_item_label {
                    width: 150px;
                    width: 100px;
                    flex-shrink: 0;
                }
                .info_list_item_val {
@@ -188,4 +407,41 @@
            }
        }
    }
    .form {
      width: 100%;
      display: flex;
      flex-direction: column;
      .form_item {
        width: 100%;
        display: flex;
        align-items: center;
        margin-bottom: 20px;
        &:last-child {
          margin-bottom: 0 !important;
        }
        .form_item_label {
          width: 100px;
          flex-shrink: 0;
          font-size: 14px;
          color: black;
        }
        .form_item_val {
          flex: 1;
          min-height: 35px;
          display: flex;
          align-items: center;
          input {
            width: 100%;
            height: 100%;
            font-size: 14px;
            color: black;
            padding: 5px 10px;
            outline: none;
            box-sizing: border-box;
            border: 1px solid #ececec;
          }
        }
      }
    }
</style>