|
@@ -1,1657 +0,0 @@
|
|
|
-<template>
|
|
|
- <zj-page-container>
|
|
|
- <zj-page-fill class="neibuview">
|
|
|
- <zj-form-container ref="formRef" v-if="formData.orderType" :form-data="formData">
|
|
|
- <zj-form-module
|
|
|
- :title="`费用结算-${{ INSTALL: '安装', REPAIR: '维修' }[formData.orderType]}`"
|
|
|
- :form-data="formData"
|
|
|
- :form-items="repairInfo"
|
|
|
- />
|
|
|
- </zj-form-container>
|
|
|
- <el-empty v-else description="暂时没有结算信息"></el-empty>
|
|
|
- </zj-page-fill>
|
|
|
- <div v-if="formData.settleStatus == 'YWG'" style="box-sizing: border-box; padding: 16px">
|
|
|
- <el-button type="primary" size="mini" @click="queding">确定结算</el-button>
|
|
|
- </div>
|
|
|
- <div v-else style="box-sizing: border-box; padding: 16px">
|
|
|
- <el-button v-if="showbtn" type="danger" size="mini" @click="itemOrderBaseSettleNormReset">重新结算</el-button>
|
|
|
- </div>
|
|
|
- </zj-page-container>
|
|
|
-</template>
|
|
|
-
|
|
|
-<script>
|
|
|
-import { required } from '@/components/template/rules_verify.js'
|
|
|
-import { listPageV2 } from '@/api/workOrder/settlementStandardInstall'
|
|
|
-import { listPageV2 as listPageV2Repair } from '@/api/workOrder/settlementStandardRepair'
|
|
|
-import {
|
|
|
- orderBaseSettleNormDetail,
|
|
|
- orderBaseSettleNormConfirm,
|
|
|
- settleNormInstallQuery,
|
|
|
- settleNormOtherQuery,
|
|
|
- orderBaseSettleNormReset
|
|
|
-} from '@/api/workOrderPool.js'
|
|
|
-import { EventBus } from '@/utils/eventBus'
|
|
|
-export default {
|
|
|
- props: {
|
|
|
- id: {
|
|
|
- type: [String, Number],
|
|
|
- default: null
|
|
|
- }
|
|
|
- },
|
|
|
- data() {
|
|
|
- return {
|
|
|
- gonglv: [],
|
|
|
- gonglr: [],
|
|
|
- classifyList: [],
|
|
|
- otherList: [],
|
|
|
- formData: {},
|
|
|
- showbtn: false
|
|
|
- }
|
|
|
- },
|
|
|
- computed: {
|
|
|
- // 产品信息
|
|
|
- productInfoColumns() {
|
|
|
- return [
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '工单来源',
|
|
|
- prop: 'orderChannelText'
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '产品品牌',
|
|
|
- prop: 'brand'
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '产品大类',
|
|
|
- prop: 'mainName'
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '产品小类',
|
|
|
- prop: 'smallName'
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '产品机型',
|
|
|
- prop: 'goodsName'
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '数量',
|
|
|
- prop: 'orderNum'
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- // 师傅信息
|
|
|
- masterInfoColumns() {
|
|
|
- return [
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '工程师名称',
|
|
|
- prop: 'workerName'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr" style="padding:0 6px;display:flex;align-items:center;">
|
|
|
- {this.formData?.normList[row.pfuqinid]?.workerList?.[row.zijideid]?.[column.columnAttributes.prop]}
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '联系电话',
|
|
|
- prop: 'workerMobile',
|
|
|
- width: '140px'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr" style="padding:0 6px;display:flex;align-items:center;">
|
|
|
- {this.formData?.normList[row.pfuqinid]?.workerList?.[row.zijideid]?.[column.columnAttributes.prop]}
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算费用',
|
|
|
- prop: 'settleAmount'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item
|
|
|
- label=""
|
|
|
- label-width="0px"
|
|
|
- prop={`normList.${row.pfuqinid}.workerList.${row.zijideid}.${column.columnAttributes.prop}`}
|
|
|
- rules={required}
|
|
|
- >
|
|
|
- <el-input
|
|
|
- type="number"
|
|
|
- disabled={
|
|
|
- !this.formData.normList[row.pfuqinid].bianji ||
|
|
|
- this.formData?.normList[row.pfuqinid]?.workerList?.[row.zijideid]?.['poolStatus'] == 'YES'
|
|
|
- }
|
|
|
- value={
|
|
|
- this.formData?.normList[row.pfuqinid]?.workerList?.[row.zijideid]?.[column.columnAttributes.prop]
|
|
|
- }
|
|
|
- onInput={val => {
|
|
|
- // var num = 0
|
|
|
- // this.formData?.normList[row.pfuqinid]?.workerList.map((item, in_dex) => {
|
|
|
- // if (in_dex !== row.zijideid) {
|
|
|
- // num += Number(item.settleAmount)
|
|
|
- // }
|
|
|
- // })
|
|
|
- // // 最大
|
|
|
- // var maxNum = Number(this.formData.normList[row.pfuqinid]["settleAmount"]) - num
|
|
|
- // this.formData.normList[row.pfuqinid].workerList[row.zijideid][column.columnAttributes.prop] = Number(val) > maxNum ? maxNum : Number(val)
|
|
|
- this.formData.normList[row.pfuqinid].workerList[row.zijideid][column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- placeholder="请输入内容"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '确认人',
|
|
|
- prop: 'confirmBy'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr" style="padding:0 6px;display:flex;align-items:center;">
|
|
|
- {this.formData?.normList[row.pfuqinid]?.workerList?.[row.zijideid]?.[column.columnAttributes.prop]}
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '确认时间',
|
|
|
- prop: 'confirmTime'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr" style="padding:0 6px;display:flex;align-items:center;">
|
|
|
- {this.formData?.normList[row.pfuqinid]?.workerList?.[row.zijideid]?.[column.columnAttributes.prop]}
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '汇总状态',
|
|
|
- prop: 'poolStatus'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr" style="padding:0 6px;display:flex;align-items:center;">
|
|
|
- {
|
|
|
- { NO: '未汇总', YES: '已汇总' }[
|
|
|
- this.formData?.normList[row.pfuqinid]?.workerList?.[row.zijideid]?.[column.columnAttributes.prop]
|
|
|
- ]
|
|
|
- }
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '操作',
|
|
|
- prop: '',
|
|
|
- fixed: 'right',
|
|
|
- width: '100px'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.formData.settleStatus == 'YWG' ||
|
|
|
- (this.formData.settleStatus == 'YJS' &&
|
|
|
- this.formData?.normList[row.pfuqinid]?.workerList.find(item => item.poolStatus == 'NO')) ? (
|
|
|
- <div class="redbordererr" style="padding:0 6px;display:flex;align-items:center;">
|
|
|
- {this.formData.normList[row.pfuqinid].bianji ? (
|
|
|
- <el-button
|
|
|
- type="text"
|
|
|
- onClick={() => {
|
|
|
- var yjsje = [
|
|
|
- 0,
|
|
|
- 0,
|
|
|
- 0,
|
|
|
- this.formData?.normList[row.pfuqinid]?.workerList
|
|
|
- .filter(item => item.poolStatus == 'YES')
|
|
|
- .map(item => item.settleAmount)
|
|
|
- ].reduce(function (prev, curr, idx, arr) {
|
|
|
- return prev + curr
|
|
|
- })
|
|
|
- var nou = this.formData?.normList[row.pfuqinid]?.workerList.filter(
|
|
|
- item => item.poolStatus == 'NO'
|
|
|
- )
|
|
|
- var qian = (
|
|
|
- (((Number(this.formData?.normList[row.pfuqinid]['settleAmount']) - yjsje) / nou.length) * 100) /
|
|
|
- 100
|
|
|
- ).toFixed(2)
|
|
|
- var rongyu = (
|
|
|
- Number(this.formData?.normList[row.pfuqinid]['settleAmount']) -
|
|
|
- yjsje -
|
|
|
- qian * nou.length
|
|
|
- ).toFixed(2)
|
|
|
- nou.map((item, index) => {
|
|
|
- if (index === 0) {
|
|
|
- item.settleAmount = (Number(qian) + Number(rongyu)).toFixed(2)
|
|
|
- } else {
|
|
|
- item.settleAmount = qian
|
|
|
- }
|
|
|
- })
|
|
|
- }}
|
|
|
- >
|
|
|
- 平分费用
|
|
|
- </el-button>
|
|
|
- ) : null}
|
|
|
- {this.formData.normList[row.pfuqinid].bianji ? (
|
|
|
- <el-button
|
|
|
- type="text"
|
|
|
- onClick={() => {
|
|
|
- var item = this.formData.normList[row.pfuqinid]
|
|
|
- if (
|
|
|
- [0, 0, 0, ...item.workerList.map(val => Number(val.settleAmount))].reduce(function (
|
|
|
- prev,
|
|
|
- curr,
|
|
|
- idx,
|
|
|
- arr
|
|
|
- ) {
|
|
|
- return prev + curr
|
|
|
- }) == Number(item.settleAmount)
|
|
|
- ) {
|
|
|
- this.formData.normList[row.pfuqinid].bianji = false
|
|
|
- } else {
|
|
|
- this.$message.warning(
|
|
|
- `费用信息-${item.channelText}-${item.parentCategoryName}-${item.categoryName}-${item.label}:合计结算总金额与总金额不等`
|
|
|
- )
|
|
|
- }
|
|
|
- }}
|
|
|
- >
|
|
|
- 确定
|
|
|
- </el-button>
|
|
|
- ) : null}
|
|
|
- {!this.formData.normList[row.pfuqinid].bianji ? (
|
|
|
- <el-button
|
|
|
- type="text"
|
|
|
- onClick={() => {
|
|
|
- this.formData.normList[row.pfuqinid].bianji = true
|
|
|
- }}
|
|
|
- >
|
|
|
- 修改
|
|
|
- </el-button>
|
|
|
- ) : null}
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- masterInfoColumnsOther() {
|
|
|
- return [
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '工程师名称',
|
|
|
- prop: 'workerName'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr" style="padding:0 6px;display:flex;align-items:center;">
|
|
|
- {this.formData?.otherNormList[row.pfuqinid]?.workerList?.[row.zijideid]?.[column.columnAttributes.prop]}
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '联系电话',
|
|
|
- prop: 'workerMobile',
|
|
|
- width: '140px'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr" style="padding:0 6px;display:flex;align-items:center;">
|
|
|
- {this.formData?.otherNormList[row.pfuqinid]?.workerList?.[row.zijideid]?.[column.columnAttributes.prop]}
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算费用',
|
|
|
- prop: 'settleAmount'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item
|
|
|
- label=""
|
|
|
- label-width="0px"
|
|
|
- prop={`otherNormList.${row.pfuqinid}.workerList.${row.zijideid}.${column.columnAttributes.prop}`}
|
|
|
- rules={required}
|
|
|
- >
|
|
|
- <el-input
|
|
|
- type="number"
|
|
|
- disabled={
|
|
|
- !this.formData.otherNormList[row.pfuqinid].bianji ||
|
|
|
- this.formData?.otherNormList[row.pfuqinid]?.workerList?.[row.zijideid]?.['poolStatus'] == 'YES'
|
|
|
- }
|
|
|
- value={
|
|
|
- this.formData?.otherNormList[row.pfuqinid]?.workerList?.[row.zijideid]?.[
|
|
|
- column.columnAttributes.prop
|
|
|
- ]
|
|
|
- }
|
|
|
- onInput={val => {
|
|
|
- // var num = 0
|
|
|
- // this.formData?.otherNormList[row.pfuqinid]?.workerList.map((item, in_dex) => {
|
|
|
- // if (in_dex !== row.zijideid) {
|
|
|
- // num += Number(item.settleAmount)
|
|
|
- // }
|
|
|
- // })
|
|
|
- // // 最大
|
|
|
- // var maxNum = Number(this.formData.otherNormList[row.pfuqinid]["settleAmount"]) - num
|
|
|
- // this.formData.otherNormList[row.pfuqinid].workerList[row.zijideid][column.columnAttributes.prop] = Number(val) > maxNum ? maxNum : Number(val)
|
|
|
- this.formData.otherNormList[row.pfuqinid].workerList[row.zijideid][column.columnAttributes.prop] =
|
|
|
- val
|
|
|
- }}
|
|
|
- placeholder="请输入内容"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '确认人',
|
|
|
- prop: 'confirmBy'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr" style="padding:0 6px;display:flex;align-items:center;">
|
|
|
- {this.formData?.otherNormList[row.pfuqinid]?.workerList?.[row.zijideid]?.[column.columnAttributes.prop]}
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '确认时间',
|
|
|
- prop: 'confirmTime'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr" style="padding:0 6px;display:flex;align-items:center;">
|
|
|
- {this.formData?.otherNormList[row.pfuqinid]?.workerList?.[row.zijideid]?.[column.columnAttributes.prop]}
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '汇总状态',
|
|
|
- prop: 'poolStatus'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return (
|
|
|
- <div class="redbordererr" style="padding:0 6px;display:flex;align-items:center;">
|
|
|
- {
|
|
|
- { NO: '未汇总', YES: '已汇总' }[
|
|
|
- this.formData?.otherNormList[row.pfuqinid]?.workerList?.[row.zijideid]?.[
|
|
|
- column.columnAttributes.prop
|
|
|
- ]
|
|
|
- ]
|
|
|
- }
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '操作',
|
|
|
- prop: '',
|
|
|
- fixed: 'right',
|
|
|
- width: '100px'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.formData.settleStatus == 'YWG' ||
|
|
|
- (this.formData.settleStatus == 'YJS' &&
|
|
|
- this.formData?.otherNormList[row.pfuqinid]?.workerList.find(item => item.poolStatus == 'NO')) ? (
|
|
|
- <div class="redbordererr" style="padding:0 6px;display:flex;align-items:center;">
|
|
|
- {this.formData.otherNormList[row.pfuqinid].bianji ? (
|
|
|
- <el-button
|
|
|
- type="text"
|
|
|
- onClick={() => {
|
|
|
- var yjsje = [
|
|
|
- 0,
|
|
|
- 0,
|
|
|
- 0,
|
|
|
- this.formData?.otherNormList[row.pfuqinid]?.workerList
|
|
|
- .filter(item => item.poolStatus == 'YES')
|
|
|
- .map(item => item.settleAmount)
|
|
|
- ].reduce(function (prev, curr, idx, arr) {
|
|
|
- return prev + curr
|
|
|
- })
|
|
|
- var nou = this.formData?.otherNormList[row.pfuqinid]?.workerList.filter(
|
|
|
- item => item.poolStatus == 'NO'
|
|
|
- )
|
|
|
- var qian = (
|
|
|
- (((Number(this.formData?.otherNormList[row.pfuqinid]['settleAmount']) - yjsje) / nou.length) *
|
|
|
- 100) /
|
|
|
- 100
|
|
|
- ).toFixed(2)
|
|
|
- var rongyu = (
|
|
|
- Number(this.formData?.otherNormList[row.pfuqinid]['settleAmount']) -
|
|
|
- yjsje -
|
|
|
- qian * nou.length
|
|
|
- ).toFixed(2)
|
|
|
- nou.map((item, index) => {
|
|
|
- if (index === 0) {
|
|
|
- item.settleAmount = (Number(qian) + Number(rongyu)).toFixed(2)
|
|
|
- } else {
|
|
|
- item.settleAmount = qian
|
|
|
- }
|
|
|
- })
|
|
|
- }}
|
|
|
- >
|
|
|
- 平分费用
|
|
|
- </el-button>
|
|
|
- ) : null}
|
|
|
- {this.formData.otherNormList[row.pfuqinid].bianji ? (
|
|
|
- <el-button
|
|
|
- type="text"
|
|
|
- onClick={() => {
|
|
|
- var item = this.formData.otherNormList[row.pfuqinid]
|
|
|
- if (
|
|
|
- [0, 0, 0, ...item.workerList.map(val => Number(val.settleAmount))].reduce(function (
|
|
|
- prev,
|
|
|
- curr,
|
|
|
- idx,
|
|
|
- arr
|
|
|
- ) {
|
|
|
- return prev + curr
|
|
|
- }) == Number(item.settleAmount)
|
|
|
- ) {
|
|
|
- this.formData.otherNormList[row.pfuqinid].bianji = false
|
|
|
- } else {
|
|
|
- this.$message.warning(
|
|
|
- `其他费用信息-${item.channelText}-${item.type}-${item.label}:合计结算总金额与总金额不等`
|
|
|
- )
|
|
|
- }
|
|
|
- }}
|
|
|
- >
|
|
|
- 确定
|
|
|
- </el-button>
|
|
|
- ) : null}
|
|
|
- {!this.formData.otherNormList[row.pfuqinid].bianji ? (
|
|
|
- <el-button
|
|
|
- type="text"
|
|
|
- onClick={() => {
|
|
|
- this.formData.otherNormList[row.pfuqinid].bianji = true
|
|
|
- }}
|
|
|
- >
|
|
|
- 修改
|
|
|
- </el-button>
|
|
|
- ) : null}
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- classifyColumns() {
|
|
|
- return [
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '工单类型',
|
|
|
- prop: 'typeName'
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算工单来源',
|
|
|
- prop: 'channelId',
|
|
|
- width: '110'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item
|
|
|
- label=""
|
|
|
- label-width="0px"
|
|
|
- prop={`normList.${index}.${column.columnAttributes.prop}`}
|
|
|
- rules={required}
|
|
|
- >
|
|
|
- <el-select
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- onChange={val => {
|
|
|
- row.parentCategoryId = ''
|
|
|
- row.parentCategoryName = ''
|
|
|
- row.categoryId = ''
|
|
|
- row.categoryName = ''
|
|
|
- row.label = ''
|
|
|
- row.normAmount = ''
|
|
|
- row.repairAmount = ''
|
|
|
- row.settleNormId = ''
|
|
|
- if (val) {
|
|
|
- var data = this.classifyListChuLi('orderChannelId', 'orderChannelText').find(
|
|
|
- item => item.value == val
|
|
|
- )
|
|
|
- row.channelText = data.label
|
|
|
- } else {
|
|
|
- row.channelText = ''
|
|
|
- }
|
|
|
- }}
|
|
|
- placeholder="请选择"
|
|
|
- >
|
|
|
- {this.classifyListChuLi('orderChannelId', 'orderChannelText').map((item, index_) => (
|
|
|
- <el-option key={index_} label={item.label} value={item.value}></el-option>
|
|
|
- ))}
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算产品大类',
|
|
|
- prop: 'parentCategoryId',
|
|
|
- width: '110'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item
|
|
|
- label=""
|
|
|
- label-width="0px"
|
|
|
- prop={`normList.${index}.${column.columnAttributes.prop}`}
|
|
|
- rules={required}
|
|
|
- >
|
|
|
- <el-select
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- onChange={val => {
|
|
|
- row.categoryId = ''
|
|
|
- row.categoryName = ''
|
|
|
- row.label = ''
|
|
|
- row.normAmount = ''
|
|
|
- row.repairAmount = ''
|
|
|
- row.settleNormId = ''
|
|
|
- if (val) {
|
|
|
- var data = this.classifyListChuLi(
|
|
|
- 'parentCategoryId',
|
|
|
- 'parentCategoryName',
|
|
|
- item => item.orderChannelId == row.channelId
|
|
|
- ).find(item => item.value == val)
|
|
|
- row.parentCategoryName = data.label
|
|
|
- } else {
|
|
|
- row.parentCategoryName = ''
|
|
|
- }
|
|
|
- }}
|
|
|
- placeholder="请选择"
|
|
|
- >
|
|
|
- {this.classifyListChuLi(
|
|
|
- 'parentCategoryId',
|
|
|
- 'parentCategoryName',
|
|
|
- item => item.orderChannelId == row.channelId
|
|
|
- ).map((item, index_) => (
|
|
|
- <el-option key={index_} label={item.label} value={item.value}></el-option>
|
|
|
- ))}
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算产品小类',
|
|
|
- prop: 'categoryId',
|
|
|
- width: '110'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item
|
|
|
- label=""
|
|
|
- label-width="0px"
|
|
|
- prop={`normList.${index}.${column.columnAttributes.prop}`}
|
|
|
- rules={required}
|
|
|
- >
|
|
|
- <el-select
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- onChange={val => {
|
|
|
- row.label = ''
|
|
|
- row.normAmount = ''
|
|
|
- row.repairAmount = ''
|
|
|
- row.settleNormId = ''
|
|
|
- if (val) {
|
|
|
- var data = this.classifyListChuLi(
|
|
|
- 'categoryId',
|
|
|
- 'categoryName',
|
|
|
- item => item.orderChannelId == row.channelId && item.parentCategoryId == row.parentCategoryId
|
|
|
- ).find(item => item.value == val)
|
|
|
- row.categoryName = data.label
|
|
|
- } else {
|
|
|
- row.categoryName = ''
|
|
|
- }
|
|
|
- }}
|
|
|
- placeholder="请选择"
|
|
|
- >
|
|
|
- {this.classifyListChuLi(
|
|
|
- 'categoryId',
|
|
|
- 'categoryName',
|
|
|
- item => item.orderChannelId == row.channelId && item.parentCategoryId == row.parentCategoryId
|
|
|
- ).map((item, index_) => (
|
|
|
- <el-option key={index_} label={item.label} value={item.value}></el-option>
|
|
|
- ))}
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- normColumns() {
|
|
|
- return [
|
|
|
- ...this.productInfoColumns,
|
|
|
- ...this.classifyColumns,
|
|
|
- ...(() => {
|
|
|
- if (this.formData.orderType == 'INSTALL') {
|
|
|
- return [
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算功率',
|
|
|
- prop: 'label'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item
|
|
|
- label=""
|
|
|
- label-width="0px"
|
|
|
- prop={`normList.${index}.${column.columnAttributes.prop}`}
|
|
|
- rules={required}
|
|
|
- >
|
|
|
- <el-select
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- onChange={val => {
|
|
|
- if (val) {
|
|
|
- var data = this.getflList(this.gonglv, row).find(item => item.label == val)
|
|
|
- row.normAmount = data.normAmount
|
|
|
- row.settleNormId = data.id
|
|
|
- } else {
|
|
|
- row.normAmount = ''
|
|
|
- row.settleNormId = ''
|
|
|
- }
|
|
|
- }}
|
|
|
- placeholder="请选择"
|
|
|
- >
|
|
|
- {this.getflList(this.gonglv, row).map((item, index_) => (
|
|
|
- <el-option key={index_} label={item.label} value={item.label}></el-option>
|
|
|
- ))}
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算标准(元/套)',
|
|
|
- prop: 'normAmount'
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算数量',
|
|
|
- prop: 'settleNum'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item
|
|
|
- label=""
|
|
|
- label-width="0px"
|
|
|
- prop={`normList.${index}.${column.columnAttributes.prop}`}
|
|
|
- rules={required}
|
|
|
- >
|
|
|
- <el-input
|
|
|
- type="number"
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- placeholder="请输入内容"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算金额(元)',
|
|
|
- prop: 'settleAmount'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- row.settleAmount = ((Number(row.normAmount || 0) * Number(row.settleNum || 0) * 100) / 100).toFixed(2)
|
|
|
- return this.panfuan(row) ? <div class="redbordererr">{row.settleAmount}</div> : null
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- return []
|
|
|
- })(),
|
|
|
- ...(() => {
|
|
|
- if (this.formData.orderType == 'REPAIR') {
|
|
|
- return [
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '质保类型',
|
|
|
- prop: 'label'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item
|
|
|
- label=""
|
|
|
- label-width="0px"
|
|
|
- prop={`normList.${index}.${column.columnAttributes.prop}`}
|
|
|
- rules={required}
|
|
|
- >
|
|
|
- <el-select
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- onChange={val => {
|
|
|
- if (val) {
|
|
|
- var data = this.getflList(this.gonglr, row).find(item => item.label == val)
|
|
|
- row.repairAmount = data.repairAmount
|
|
|
- row.normAmount = data.normAmount
|
|
|
- row.settleNormId = data.id
|
|
|
- } else {
|
|
|
- row.repairAmount = ''
|
|
|
- row.normAmount = ''
|
|
|
- row.settleNormId = ''
|
|
|
- }
|
|
|
- }}
|
|
|
- placeholder="请选择"
|
|
|
- >
|
|
|
- {this.getflList(this.gonglr, row).map((item, index_) => (
|
|
|
- <el-option
|
|
|
- key={index_}
|
|
|
- label={{ INSIDE: '保内', OUT: '保外' }[item.label]}
|
|
|
- value={item.label}
|
|
|
- ></el-option>
|
|
|
- ))}
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '上门费(元/单)',
|
|
|
- prop: 'repairAmount',
|
|
|
- width: '110'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item
|
|
|
- label=""
|
|
|
- label-width="0px"
|
|
|
- prop={`normList.${index}.${column.columnAttributes.prop}`}
|
|
|
- rules={required}
|
|
|
- >
|
|
|
- <el-input
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- type="number"
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- placeholder="请输入内容"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '维修费结算比例%',
|
|
|
- prop: 'normAmount',
|
|
|
- width: '110'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? <div class="redbordererr">{row[column.columnAttributes.prop]}%</div> : null
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '维修费用结算',
|
|
|
- prop: 'repairNormAmount',
|
|
|
- width: '110'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item
|
|
|
- label=""
|
|
|
- label-width="0px"
|
|
|
- prop={`normList.${index}.${column.columnAttributes.prop}`}
|
|
|
- rules={required}
|
|
|
- >
|
|
|
- <el-input
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- type="number"
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- placeholder="请输入内容"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算数量',
|
|
|
- prop: 'settleNum'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item
|
|
|
- label=""
|
|
|
- label-width="0px"
|
|
|
- prop={`normList.${index}.${column.columnAttributes.prop}`}
|
|
|
- rules={required}
|
|
|
- >
|
|
|
- <el-input
|
|
|
- type="number"
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- placeholder="请输入内容"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算金额(元)',
|
|
|
- prop: 'settleAmount'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- row.settleAmount = (
|
|
|
- ((Number(row.repairAmount || 0) +
|
|
|
- (Number(row.normAmount || 0) / 100) *
|
|
|
- Number(row.repairNormAmount || 0) *
|
|
|
- Number(row.settleNum || 0)) *
|
|
|
- 100) /
|
|
|
- 100
|
|
|
- ).toFixed(2)
|
|
|
- return this.panfuan(row) ? <div class="redbordererr">{row.settleAmount}</div> : null
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- return []
|
|
|
- })(),
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '备注',
|
|
|
- prop: 'remark'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item label="" label-width="0px">
|
|
|
- <el-input
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- placeholder="请输入内容"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- },
|
|
|
- ...this.masterInfoColumns
|
|
|
- ]
|
|
|
- },
|
|
|
- otherclassifyColumns() {
|
|
|
- return [
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算工单来源',
|
|
|
- prop: 'channelId',
|
|
|
- width: '110'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item
|
|
|
- label=""
|
|
|
- label-width="0px"
|
|
|
- prop={`normList.${index}.${column.columnAttributes.prop}`}
|
|
|
- rules={required}
|
|
|
- >
|
|
|
- <el-select
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- onChange={val => {
|
|
|
- row.type = ''
|
|
|
- row.label = ''
|
|
|
- row.normAmount = ''
|
|
|
- row.settleNormId = ''
|
|
|
- row.settleNum = ''
|
|
|
- if (val) {
|
|
|
- var data = this.otherListChuLi('orderChannelId', 'orderChannelText').find(
|
|
|
- item => item.value == val
|
|
|
- )
|
|
|
- row.channelText = data.label
|
|
|
- } else {
|
|
|
- row.channelText = ''
|
|
|
- }
|
|
|
- }}
|
|
|
- placeholder="请选择"
|
|
|
- >
|
|
|
- {this.otherListChuLi('orderChannelId', 'orderChannelText').map((item, index_) => (
|
|
|
- <el-option key={index_} label={item.label} value={item.value}></el-option>
|
|
|
- ))}
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '费用类型',
|
|
|
- prop: 'type'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item label="" label-width="0px">
|
|
|
- <el-select
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- onChange={val => {
|
|
|
- row.label = ''
|
|
|
- row.normAmount = ''
|
|
|
- row.settleNormId = ''
|
|
|
- row.settleNum = ''
|
|
|
- }}
|
|
|
- placeholder="请选择"
|
|
|
- >
|
|
|
- {this.otherListChuLi('type', 'typeName', item => item.orderChannelId == row.channelId).map(
|
|
|
- (item, index_) => (
|
|
|
- <el-option key={index_} label={item.label} value={item.value}></el-option>
|
|
|
- )
|
|
|
- )}
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '规格',
|
|
|
- prop: 'label'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item label="" label-width="0px">
|
|
|
- <el-select
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- onChange={val => {
|
|
|
- row.settleNum = ''
|
|
|
- if (val) {
|
|
|
- var data = this.otherListChuLi(
|
|
|
- 'label',
|
|
|
- 'label',
|
|
|
- item => {
|
|
|
- return item.orderChannelId == row.channelId && item.type == row.type
|
|
|
- },
|
|
|
- 'normAmount',
|
|
|
- 'id'
|
|
|
- ).find(item => item.label == val)
|
|
|
- row.normAmount = data.normAmount
|
|
|
- row.settleNormId = data.id
|
|
|
- } else {
|
|
|
- row.normAmount = ''
|
|
|
- row.settleNormId = ''
|
|
|
- }
|
|
|
- }}
|
|
|
- placeholder="请选择"
|
|
|
- >
|
|
|
- {this.otherListChuLi(
|
|
|
- 'label',
|
|
|
- 'label',
|
|
|
- item => item.orderChannelId == row.channelId && item.type == row.type
|
|
|
- ).map((item, index_) => (
|
|
|
- <el-option key={index_} label={item.label} value={item.value}></el-option>
|
|
|
- ))}
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- otherColumns() {
|
|
|
- return [
|
|
|
- ...this.productInfoColumns,
|
|
|
- ...this.otherclassifyColumns,
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '单价(元/套)',
|
|
|
- prop: 'normAmount'
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '数量',
|
|
|
- prop: 'settleNum'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item label="" label-width="0px">
|
|
|
- <el-input
|
|
|
- type="number"
|
|
|
- disabled={!row.bianji || row.normAmount ? this.formData.settleStatus != 'YWG' : true}
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- placeholder="请输入内容"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算金额(元)',
|
|
|
- prop: 'settleAmount'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- row.settleAmount = ((Number(row.normAmount || 0) * Number(row.settleNum || 0) * 100) / 100).toFixed(2)
|
|
|
- return this.panfuan(row) ? <div class="redbordererr">{row.settleAmount}</div> : null
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '备注',
|
|
|
- prop: 'remark'
|
|
|
- },
|
|
|
- render: (h, { row, column, index }) => {
|
|
|
- return this.panfuan(row) ? (
|
|
|
- <div class="redbordererr">
|
|
|
- <el-form-item label="" label-width="0px">
|
|
|
- <el-input
|
|
|
- disabled={!row.bianji || this.formData.settleStatus != 'YWG'}
|
|
|
- value={row[column.columnAttributes.prop]}
|
|
|
- onInput={val => {
|
|
|
- row[column.columnAttributes.prop] = val
|
|
|
- }}
|
|
|
- placeholder="请输入内容"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- ) : null
|
|
|
- }
|
|
|
- },
|
|
|
- ...this.masterInfoColumnsOther
|
|
|
- ]
|
|
|
- },
|
|
|
- // 师傅汇总
|
|
|
- shiFuHuiZongColumns() {
|
|
|
- return [
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '工程师名称',
|
|
|
- prop: 'workerName'
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '联系电话',
|
|
|
- prop: 'workerMobile'
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '费用结算总金额',
|
|
|
- prop: 'zonjine'
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- columnAttributes: {
|
|
|
- label: '结算总金额',
|
|
|
- prop: 'settleAmount'
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- repairInfo() {
|
|
|
- return [
|
|
|
- {
|
|
|
- name: 'slot-component',
|
|
|
- md: 6,
|
|
|
- attributes: { disabled: true },
|
|
|
- formItemAttributes: { label: '网点名称', prop: 'websitName' },
|
|
|
- render: (h, { props, onInput }) => {
|
|
|
- var { formData } = props
|
|
|
- return (
|
|
|
- <el-input
|
|
|
- value={`${formData.websitName || ''}`}
|
|
|
- disabled={true}
|
|
|
- size="mini"
|
|
|
- placeholder="请输入"
|
|
|
- ></el-input>
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'el-input',
|
|
|
- md: 6,
|
|
|
- attributes: { disabled: true },
|
|
|
- formItemAttributes: { label: '工程师', prop: 'workerName' }
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'el-input',
|
|
|
- md: 6,
|
|
|
- attributes: { disabled: true },
|
|
|
- formItemAttributes: { label: '联系电话', prop: 'mobile' }
|
|
|
- },
|
|
|
- {
|
|
|
- name: 'el-input',
|
|
|
- md: 6,
|
|
|
- attributes: { disabled: true },
|
|
|
- formItemAttributes: { label: '身份证', prop: 'idcard' }
|
|
|
- },
|
|
|
- {
|
|
|
- md: 24,
|
|
|
- name: 'slot-component',
|
|
|
- formItemAttributes: {
|
|
|
- label: '费用结算',
|
|
|
- prop: 'normList'
|
|
|
- },
|
|
|
- render: (h, { props, onInput }) => {
|
|
|
- var { formData } = props
|
|
|
- return (
|
|
|
- <zj-table
|
|
|
- columns={this.normColumns}
|
|
|
- table-data={formData.normList}
|
|
|
- tableAttributes={{
|
|
|
- 'span-method': ({ row, column, rowIndex, columnIndex }) => {
|
|
|
- if (columnIndex === this.normColumns.length - 1) {
|
|
|
- if (row.zijideid == 0) {
|
|
|
- return {
|
|
|
- rowspan: formData.normList[row.pfuqinid].workerList.length,
|
|
|
- colspan: 1
|
|
|
- }
|
|
|
- } else {
|
|
|
- return {
|
|
|
- rowspan: 0,
|
|
|
- colspan: 0
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }}
|
|
|
- />
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- md: 24,
|
|
|
- name: 'slot-component',
|
|
|
- formItemAttributes: {
|
|
|
- label: '其他费用结算',
|
|
|
- prop: 'otherNormList'
|
|
|
- },
|
|
|
- render: (h, { props, onInput }) => {
|
|
|
- var { formData } = props
|
|
|
- return (
|
|
|
- <zj-table
|
|
|
- columns={this.otherColumns}
|
|
|
- table-data={formData.otherNormList}
|
|
|
- tableAttributes={{
|
|
|
- 'span-method': ({ row, column, rowIndex, columnIndex }) => {
|
|
|
- if (columnIndex === this.otherColumns.length - 1) {
|
|
|
- if (row.zijideid == 0) {
|
|
|
- return {
|
|
|
- rowspan: formData.otherNormList[row.pfuqinid].workerList.length,
|
|
|
- colspan: 1
|
|
|
- }
|
|
|
- } else {
|
|
|
- return {
|
|
|
- rowspan: 0,
|
|
|
- colspan: 0
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }}
|
|
|
- />
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- md: 24,
|
|
|
- name: 'slot-component',
|
|
|
- formItemAttributes: {
|
|
|
- label: '师傅结算费用汇总',
|
|
|
- prop: 'otherNormList'
|
|
|
- },
|
|
|
- render: (h, { props, onInput }) => {
|
|
|
- var { formData } = props
|
|
|
-
|
|
|
- return (
|
|
|
- <zj-table
|
|
|
- columns={this.shiFuHuiZongColumns}
|
|
|
- table-data={this.zongbiaoheji}
|
|
|
- tableAttributes={{
|
|
|
- 'span-method': ({ row, column, rowIndex, columnIndex }) => {
|
|
|
- if (columnIndex === 2) {
|
|
|
- if (rowIndex == 0) {
|
|
|
- return {
|
|
|
- rowspan: this.zongbiaoheji.length,
|
|
|
- colspan: 1
|
|
|
- }
|
|
|
- } else {
|
|
|
- return {
|
|
|
- rowspan: 0,
|
|
|
- colspan: 0
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }}
|
|
|
- />
|
|
|
- )
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- zongbiaoheji() {
|
|
|
- var workers = {}
|
|
|
- var zonjine = 0
|
|
|
- this.formData.normList.map(item => {
|
|
|
- zonjine += Number(item.settleAmount) || 0
|
|
|
- item?.workerList?.map(data => {
|
|
|
- if (!workers[data.workerId]) {
|
|
|
- workers[data.workerId] = JSON.parse(JSON.stringify(data))
|
|
|
- } else {
|
|
|
- workers[data.workerId].settleAmount = (
|
|
|
- ((Number(workers[data.workerId].settleAmount) + Number(data.settleAmount)) * 100) /
|
|
|
- 100
|
|
|
- ).toFixed(2)
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
- this.formData.otherNormList.map(item => {
|
|
|
- zonjine += Number(item.settleAmount) || 0
|
|
|
- item?.workerList?.map(data => {
|
|
|
- if (!workers[data.workerId]) {
|
|
|
- workers[data.workerId] = JSON.parse(JSON.stringify(data))
|
|
|
- } else {
|
|
|
- workers[data.workerId].settleAmount = (
|
|
|
- ((Number(workers[data.workerId].settleAmount) + Number(data.settleAmount)) * 100) /
|
|
|
- 100
|
|
|
- ).toFixed(2)
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
- return Object.keys(workers).map(key => {
|
|
|
- workers[key].zonjine = ((zonjine * 100) / 100).toFixed(2)
|
|
|
- return workers[key]
|
|
|
- })
|
|
|
- }
|
|
|
- },
|
|
|
- watch: {
|
|
|
- id: {
|
|
|
- handler(newVal, oldVal) {
|
|
|
- this.init()
|
|
|
- },
|
|
|
- deep: true,
|
|
|
- immediate: true
|
|
|
- }
|
|
|
- },
|
|
|
- methods: {
|
|
|
- panfuan(item) {
|
|
|
- if (!!item.id) {
|
|
|
- return true
|
|
|
- } else {
|
|
|
- return false
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- // 产品类型过滤筛选
|
|
|
- classifyListChuLi(value, label, func, ...keys) {
|
|
|
- var obj = {}
|
|
|
- this.classifyList.map(item => {
|
|
|
- if (func && !func(item)) {
|
|
|
- return
|
|
|
- }
|
|
|
- obj[item[value]] = {
|
|
|
- label: item[label]
|
|
|
- }
|
|
|
- for (var key of keys) {
|
|
|
- obj[item[value]][key] = item[key]
|
|
|
- }
|
|
|
- })
|
|
|
- return Object.keys(obj).map(value => {
|
|
|
- return {
|
|
|
- value: value,
|
|
|
- ...obj[value]
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- // 其他类型筛选
|
|
|
- otherListChuLi(value, label, func, ...keys) {
|
|
|
- var obj = {}
|
|
|
- this.otherList.map(item => {
|
|
|
- if (func && !func(item)) {
|
|
|
- return
|
|
|
- }
|
|
|
- obj[item[value]] = {
|
|
|
- label: item[label]
|
|
|
- }
|
|
|
- for (var key of keys) {
|
|
|
- obj[item[value]][key] = item[key]
|
|
|
- }
|
|
|
- })
|
|
|
- return Object.keys(obj).map(value => {
|
|
|
- return {
|
|
|
- value: value,
|
|
|
- ...obj[value]
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- getflList(list = [], row = {}) {
|
|
|
- return list.filter(
|
|
|
- item =>
|
|
|
- item.type == row.type && item.parentCategoryId == row.parentCategoryId && item.categoryId == row.categoryId
|
|
|
- // &&
|
|
|
- // !~this.formData.normList.map(v => `${v.type}_${v.parentCategoryId}_${v.categoryId}_${v.label}`).filter(v => (
|
|
|
- // v != `${row.type}_${row.parentCategoryId}_${row.categoryId}_${row.label}`
|
|
|
- // )).indexOf(`${item.type}_${item.parentCategoryId}_${item.categoryId}_${item.label}`)
|
|
|
- )
|
|
|
- },
|
|
|
-
|
|
|
- queding() {
|
|
|
- this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
|
|
|
- if (valid) {
|
|
|
- try {
|
|
|
- this.formData.normList
|
|
|
- .filter(item => !!item.id)
|
|
|
- .map(item => {
|
|
|
- if (
|
|
|
- [0, 0, 0, ...item.workerList.map(val => Number(val.settleAmount))].reduce(function (
|
|
|
- prev,
|
|
|
- curr,
|
|
|
- idx,
|
|
|
- arr
|
|
|
- ) {
|
|
|
- return prev + curr
|
|
|
- }) !== Number(item.settleAmount)
|
|
|
- ) {
|
|
|
- throw new Error(
|
|
|
- `费用信息-${item.channelText}-${item.parentCategoryName}-${item.categoryName}-${item.label}:合计结算总金额与总金额不等`
|
|
|
- )
|
|
|
- }
|
|
|
- })
|
|
|
- this.formData.otherNormList
|
|
|
- .filter(item => !!item.id)
|
|
|
- .map(item => {
|
|
|
- if (
|
|
|
- [0, 0, 0, ...item.workerList.map(val => Number(val.settleAmount))].reduce(function (
|
|
|
- prev,
|
|
|
- curr,
|
|
|
- idx,
|
|
|
- arr
|
|
|
- ) {
|
|
|
- return prev + curr
|
|
|
- }) !== Number(item.settleAmount)
|
|
|
- ) {
|
|
|
- throw new Error(
|
|
|
- `其他费用信息-${item.channelText}-${item.type}-${item.label}:合计结算总金额与总金额不等`
|
|
|
- )
|
|
|
- }
|
|
|
- })
|
|
|
- } catch (err) {
|
|
|
- this.$message.warning(err.message)
|
|
|
- return
|
|
|
- }
|
|
|
- orderBaseSettleNormConfirm({
|
|
|
- ...this.formData,
|
|
|
- normList: this.formData.normList.filter(item => !!item.id),
|
|
|
- otherNormList: this.formData.otherNormList.filter(item => !!item.id)
|
|
|
- }).then(res => {
|
|
|
- this.$message({
|
|
|
- type: 'success',
|
|
|
- message: '结算成功'
|
|
|
- })
|
|
|
- // 结算成功后跳转列表
|
|
|
- EventBus.$emit('handleOrderClone')
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- itemOrderBaseSettleNormReset() {
|
|
|
- try {
|
|
|
- this.formData.normList
|
|
|
- .filter(item => !!item.id)
|
|
|
- .map(item => {
|
|
|
- if (
|
|
|
- [0, 0, 0, ...item.workerList.map(val => Number(val.settleAmount))].reduce(function (
|
|
|
- prev,
|
|
|
- curr,
|
|
|
- idx,
|
|
|
- arr
|
|
|
- ) {
|
|
|
- return prev + curr
|
|
|
- }) !== Number(item.settleAmount)
|
|
|
- ) {
|
|
|
- throw new Error(
|
|
|
- `费用信息-${item.channelText}-${item.parentCategoryName}-${item.categoryName}-${item.label}:合计结算总金额与总金额不等`
|
|
|
- )
|
|
|
- }
|
|
|
- })
|
|
|
- this.formData.otherNormList
|
|
|
- .filter(item => !!item.id)
|
|
|
- .map(item => {
|
|
|
- if (
|
|
|
- [0, 0, 0, ...item.workerList.map(val => Number(val.settleAmount))].reduce(function (
|
|
|
- prev,
|
|
|
- curr,
|
|
|
- idx,
|
|
|
- arr
|
|
|
- ) {
|
|
|
- return prev + curr
|
|
|
- }) !== Number(item.settleAmount)
|
|
|
- ) {
|
|
|
- throw new Error(`其他费用信息-${item.channelText}-${item.type}-${item.label}:合计结算总金额与总金额不等`)
|
|
|
- }
|
|
|
- })
|
|
|
- } catch (err) {
|
|
|
- this.$message.warning(err.message)
|
|
|
- return
|
|
|
- }
|
|
|
- orderBaseSettleNormReset({
|
|
|
- ...this.formData,
|
|
|
- normList: this.formData.normList.filter(item => !!item.id),
|
|
|
- otherNormList: this.formData.otherNormList.filter(item => !!item.id)
|
|
|
- }).then(res => {
|
|
|
- this.$message({
|
|
|
- type: 'success',
|
|
|
- message: '结算成功'
|
|
|
- })
|
|
|
- // 结算成功后跳转列表
|
|
|
- EventBus.$emit('handleOrderClone')
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- init() {
|
|
|
- if (this.id) {
|
|
|
- orderBaseSettleNormDetail({
|
|
|
- id: this.id
|
|
|
- }).then(res => {
|
|
|
- var orderChannelId
|
|
|
- var normList = []
|
|
|
- var pfuqinid = 0
|
|
|
- res.data.normList.map((item, index) => {
|
|
|
- if (!orderChannelId) {
|
|
|
- orderChannelId = item.orderChannelId
|
|
|
- }
|
|
|
- item.settleNum = item.settleNum || ''
|
|
|
- normList.push({
|
|
|
- ...item,
|
|
|
- pfuqinid: pfuqinid,
|
|
|
- zijideid: 0,
|
|
|
- bianji: res.data.settleStatus == 'YJS' ? false : true
|
|
|
- })
|
|
|
- item.workerList.map((resdata, ind_) => {
|
|
|
- if (resdata.poolStatus === 'NO') {
|
|
|
- this.showbtn = true
|
|
|
- }
|
|
|
- if (ind_ !== 0) {
|
|
|
- normList.push({ pfuqinid: pfuqinid, zijideid: ind_ })
|
|
|
- }
|
|
|
- if (ind_ == item.workerList.length - 1) {
|
|
|
- pfuqinid += ind_ + 1
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
- var otherNormList = []
|
|
|
- var qtpfuqinid = 0
|
|
|
- res.data.otherNormList.map((item, index) => {
|
|
|
- item.settleNum = item.settleNum || ''
|
|
|
- otherNormList.push({
|
|
|
- ...item,
|
|
|
- pfuqinid: qtpfuqinid,
|
|
|
- zijideid: 0,
|
|
|
- bianji: res.data.settleStatus == 'YJS' ? false : true
|
|
|
- })
|
|
|
- item.workerList.map((resdata, ind_) => {
|
|
|
- if (resdata.poolStatus === 'NO') {
|
|
|
- this.showbtn = true
|
|
|
- }
|
|
|
- if (ind_ !== 0) {
|
|
|
- otherNormList.push({ pfuqinid: qtpfuqinid, zijideid: ind_ })
|
|
|
- }
|
|
|
- if (ind_ == item.workerList.length - 1) {
|
|
|
- qtpfuqinid += ind_ + 1
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
- this.formData = res.data ? { ...res.data, normList, otherNormList } : {}
|
|
|
- // -------------------------------------------------------------------
|
|
|
- if (this.formData.orderType == 'INSTALL') {
|
|
|
- // 安装单请求
|
|
|
- listPageV2({ pageNum: 1, pageSize: -1 }).then(res => {
|
|
|
- this.gonglv = res.data.records
|
|
|
- })
|
|
|
- } else if (this.formData.orderType == 'REPAIR') {
|
|
|
- // 维修单请求
|
|
|
- listPageV2Repair({ pageNum: 1, pageSize: -1 }).then(res => {
|
|
|
- this.gonglr = res.data.records
|
|
|
- })
|
|
|
- }
|
|
|
- settleNormInstallQuery({
|
|
|
- settleNormType: this.formData.orderType,
|
|
|
- type: this.formData.orderSmallType
|
|
|
- }).then(res => {
|
|
|
- this.classifyList = res.data
|
|
|
- })
|
|
|
- settleNormOtherQuery().then(res => {
|
|
|
- this.otherList = res.data
|
|
|
- })
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-</script>
|
|
|
-
|
|
|
-<style lang="scss" scoped>
|
|
|
-.neibuview {
|
|
|
- box-sizing: border-box;
|
|
|
- padding-left: 16px;
|
|
|
-
|
|
|
- ::v-deep & > .zj-page-fill-scroll {
|
|
|
- box-sizing: border-box;
|
|
|
- padding-right: 16px;
|
|
|
-
|
|
|
- & > div:nth-child(1) {
|
|
|
- margin-top: 20px;
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-</style>
|