|
|
|
<template>
|
|
|
|
<div class="app-container">
|
|
|
|
<div v-show="viewState == 1">
|
|
|
|
<div class="tab-header webtop">
|
|
|
|
<div>{{ viewTitle }}</div>
|
|
|
|
<div>
|
|
|
|
<el-button type="primary" size="small" :disabled="submitdisabled" @click="selectCustomer()" v-show="formobj.nodeName == '登记'">选择客户</el-button>
|
|
|
|
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate()">保存</el-button>
|
|
|
|
<el-button type="primary" size="small" :disabled="submitdisabled" @click="submit()" v-show="formobj.nodeName !== '结算'">提交</el-button>
|
|
|
|
<el-button type="primary" size="small" :disabled="submitdisabled" @click="toSendBack" v-show="formobj.nodeName !== '结算' && formobj.nodeName !== '登记' && formobj.nodeName !== '出厂'">退回</el-button>
|
|
|
|
<el-button type="primary" size="small" :disabled="submitdisabled" @click="confirmCLF()" v-show="formobj.nodeName == '结算' && formobj.subject == '保内'">确认材料费</el-button>
|
|
|
|
<el-button type="primary" size="small" :disabled="submitdisabled" @click="toPrintSettle()" v-show="formobj.nodeName == '结算' && formobj.subject == '保外'">打印结算单</el-button>
|
|
|
|
<el-button type="primary" size="small" :disabled="submitdisabled" @click="settleAccounts()" v-show="formobj.nodeName == '结算'">结算</el-button>
|
|
|
|
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="listconadd">
|
|
|
|
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
|
|
|
|
<el-row style="border-top: 1px solid #e0e3eb">
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">制单人</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">制单部门</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ formobj.deptName }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">制单日期</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ formobj.createDate }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty"><span class="icon">*</span>工单类型</div>
|
|
|
|
<el-form-item prop="billType">
|
|
|
|
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.billType" placeholder="请选择" @change="billTypeChange" clearable filterable>
|
|
|
|
<el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty"><span class="icon">*</span>科目</div>
|
|
|
|
<el-form-item prop="subject">
|
|
|
|
<el-select class="addinputInfo" :disabled="formobj.sitemVos.length > 0 || formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.subject" placeholder="请选择" @change="changeSubject" clearable filterable>
|
|
|
|
<el-option v-for="item in subject_list" :key="item.subjectSid" :label="item.subject" :value="item.subject"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">索赔厂家</div>
|
|
|
|
<el-form-item>
|
|
|
|
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.claimManufacturer" placeholder="请选择" @change="changeClaimManufacturer" clearable filterable>
|
|
|
|
<el-option v-for="item in claimManufacturer_list" :key="item.sid" :label="item.claiManuName" :value="item.claiManuName"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty"><span class="icon">*</span>是否外出</div>
|
|
|
|
<el-form-item prop="isGoOut">
|
|
|
|
<el-radio-group class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.isGoOut">
|
|
|
|
<el-radio label="1">是</el-radio>
|
|
|
|
<el-radio label="0">否</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">进厂时间</div>
|
|
|
|
<el-form-item><el-date-picker class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.entryTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="选择日期" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty"><span class="icon">*</span>预计完工</div>
|
|
|
|
<el-form-item prop="estimatedFinishTime"><el-date-picker class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.estimatedFinishTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="选择日期" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty"><span class="icon">*</span>服务顾问</div>
|
|
|
|
<el-form-item prop="waitorName">
|
|
|
|
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.waitorName" placeholder="请选择" @change="waitorChange" clearable filterable>
|
|
|
|
<el-option v-for="item in user_list" :key="item.sid" :label="item.name" :value="item.name"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">班组</div>
|
|
|
|
<el-form-item>
|
|
|
|
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.groupName" placeholder="请选择" @change="groupChange" clearable filterable>
|
|
|
|
<el-option v-for="item in group_list" :key="item.groupSid" :label="item.groupName" :value="item.groupName"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">主修人</div>
|
|
|
|
<el-form-item>
|
|
|
|
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.mainRepairers" placeholder="请选择" clearable filterable>
|
|
|
|
<el-option v-for="item in mainRepairersChange_list" :key="item.memberSid" :label="item.memberName" :value="item.memberName"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">备注(打印)</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.printRemarks" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">备注</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.remarks" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty"><span class="icon">*</span>特殊标志</div>
|
|
|
|
<el-form-item prop="isSpecialSign">
|
|
|
|
<el-radio-group class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.isSpecialSign">
|
|
|
|
<el-radio label="1">有</el-radio>
|
|
|
|
<el-radio label="0">无</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-collapse v-model="activeNames">
|
|
|
|
<el-collapse-item title="客户信息" name="1">
|
|
|
|
<el-row style="border-top: 1px solid #e0e3eb">
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty"><span class="icon">*</span>客户</div>
|
|
|
|
<el-form-item prop="customerName"><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">联系电话</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ formobj.mobile }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">客户来源</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ formobj.customerSource }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">车牌号</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ formobj.vehMark }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">车架号</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ formobj.vinNo }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">车型</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ formobj.vehModel }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">行驶里程(Km)</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.mileage" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">油量(L)</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.oil" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">当前里程(Km)</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.currentMileage" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-collapse-item>
|
|
|
|
<el-collapse-item title="对接人信息" name="2">
|
|
|
|
<el-row style="border-top: 1px solid #e0e3eb">
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">对接人姓名</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ formobj.dockingPeople }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="16">
|
|
|
|
<div class="span-sty">对接人电话</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ formobj.dockingPhone }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-collapse-item>
|
|
|
|
<el-collapse-item title="保险信息" name="3">
|
|
|
|
<el-row style="border-top: 1px solid #e0e3eb">
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">责任划分</div>
|
|
|
|
<el-form-item>
|
|
|
|
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.insuranceVo.responsibility" placeholder="请选择" @change="responsibilityChange" clearable filterable>
|
|
|
|
<el-option v-for="item in responsibility_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">责任比例</div>
|
|
|
|
<el-form-item>
|
|
|
|
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.insuranceVo.responsibilityRatio" placeholder="请选择" @change="responsibilityRatioChange" clearable filterable>
|
|
|
|
<el-option v-for="item in responsibilityRatio_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">是否存在人伤</div>
|
|
|
|
<el-form-item>
|
|
|
|
<el-radio-group class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.insuranceVo.isPersonInjuries">
|
|
|
|
<el-radio label="1">是</el-radio>
|
|
|
|
<el-radio label="0">否</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-table :key="insuranceKey" :data="formobj.insuranceVo.insuranceList" :index="index" border style="width: 100%">
|
|
|
|
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
|
|
|
|
<div v-if="formobj.nodeName !== '维修' && formobj.nodeName !== '结算' && formobj.nodeName !== '出厂'">
|
|
|
|
<el-table-column align="center" width="80">
|
|
|
|
<template slot="header" slot-scope="scope">
|
|
|
|
<i class="add-btn-icon el-icon-plus" style="color: red;font-size:20px" @click="insuranceAdd(scope.row)"></i>
|
|
|
|
</template>
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<i class="el-icon-delete" @click="insuranceDelete(scope.$index)"></i>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</div>
|
|
|
|
<el-table-column label="使用保险方" align="center" min-width="150">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-select :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.useInsurerKey" placeholder="请选择" @change="useInsurerChange($event, scope.row)" clearable filterable>
|
|
|
|
<el-option v-for="item in useInsurer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column label="使用险种" align="center" min-width="150">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-select :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.insuranceTypeKey" placeholder="请选择" @change="insuranceTypeChange($event, scope.row)" clearable filterable>
|
|
|
|
<el-option v-for="item in insuranceType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" label="保险公司" align="center" min-width="150">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-select v-model="scope.row.insuranceCompanyKey" placeholder="请选择" @change="insuranceCompanyChange($event, scope.row)" clearable filterable>
|
|
|
|
<el-option v-for="item in insuranceCompany_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column label="报案号" align="center" min-width="180">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-input :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.claimBillNo" clearable placeholder="" />
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column label="勘察员及电话" align="center" min-width="220">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-input :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.investigator" clearable placeholder="" />
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column label="定损员及电话" align="center" min-width="220">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-input :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.lossAdjuster" clearable placeholder="" />
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table>
|
|
|
|
</el-collapse-item>
|
|
|
|
<el-collapse-item title="发票信息" name="4">
|
|
|
|
<el-row style="border-top: 1px solid #e0e3eb">
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">是否开发票</div>
|
|
|
|
<el-form-item>
|
|
|
|
<el-radio-group class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.invoiceVo.isInvoicing">
|
|
|
|
<el-radio label="1">是</el-radio>
|
|
|
|
<el-radio label="0">否</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">发票类型</div>
|
|
|
|
<el-form-item>
|
|
|
|
<el-select class="addinputInfo" :disabled="formobj.invoiceVo.isInvoicing != '1' || formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.invoiceVo.invoiceType" placeholder="请选择" @change="invoiceTypeChange" clearable filterable>
|
|
|
|
<el-option v-for="item in invoiceType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">开票单位</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.invoiceVo.isInvoicing != '1' || formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.invoiceVo.invoiceCompany" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-collapse-item>
|
|
|
|
</el-collapse>
|
|
|
|
<div class="title">服务项目</div>
|
|
|
|
<el-table :key="serviceKey" :data="formobj.sitemVos" :index="index" border style="width: 100%">
|
|
|
|
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
|
|
|
|
<div v-if="formobj.nodeName !== '结算' && formobj.nodeName !== '出厂'">
|
|
|
|
<el-table-column align="center" width="80">
|
|
|
|
<template slot="header" slot-scope="scope">
|
|
|
|
<i class="add-btn-icon el-icon-plus" style="color: red;font-size:20px" @click="serviceAdd(scope.row)"></i>
|
|
|
|
</template>
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<i class="el-icon-delete" @click="serviceDelete(scope.$index)"></i>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column label="服务项目" align="center" width="200">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-popover placement="right" width="600" trigger="click">
|
|
|
|
<div>
|
|
|
|
<el-table :data="serviceData" v-loading="serviceLoading" highlight-current-row @current-change="serviceCurrentChange($event, scope.row)">
|
|
|
|
<el-table-column fixed prop="sitemName" label="项目名称" align="center" width="130" />
|
|
|
|
<el-table-column prop="serviceType" label="工种" align="center" />
|
|
|
|
<el-table-column prop="hourPrice" label="工时单价" align="center" />
|
|
|
|
<el-table-column prop="hours" label="工时数" align="center" />
|
|
|
|
<el-table-column prop="price" label="销售价" align="center" />
|
|
|
|
</el-table>
|
|
|
|
<el-pagination :page.sync="serviceQuery.current" :page-size="serviceQuery.size" layout="total, pager" :total="serviceQuery.total" />
|
|
|
|
</div>
|
|
|
|
<el-input slot="reference" v-model="scope.row.serviceItem" @input="serviceInput(scope.row.serviceItem)" clearable placeholder="项目名称、拼音"/>
|
|
|
|
</el-popover>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</div>
|
|
|
|
<el-table-column v-else prop="serviceItem" label="项目名称" align="center" width="200" />
|
|
|
|
<el-table-column prop="serviceType" label="工种" align="center" width="150" />
|
|
|
|
<el-table-column label="维修人" width="300" align="center">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-select v-model="scope.row.staffList" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" placeholder="请选择" @change="userChange(scope.row, scope.row.staffList)" clearable filterable multiple>
|
|
|
|
<el-option v-for="item in user_list" :key="item.sid" :label="item.name" :value="item.sid"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="examineHourPrice" label="工时提成" align="center" width="150" />
|
|
|
|
<el-table-column prop="hourPrice" label="工时单价" align="center" width="150" />
|
|
|
|
<el-table-column prop="hours" label="工时数" align="center" width="150" />
|
|
|
|
<el-table-column prop="price" label="销售价" align="center" width="150" />
|
|
|
|
<el-table-column label="折扣" align="center" width="100">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-input @input="computeYHAndXSJE(scope.row)" :disabled="formobj.nodeName !== '结算'" v-model="scope.row.discount" @keyup.native="scope.row.discount = getNumber(scope.row.discount, 2)" clearable placeholder="" />
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="discountAmount" label="优惠" align="center" width="150" />
|
|
|
|
<el-table-column prop="amount" label="金额" align="center" width="150" />
|
|
|
|
<el-table-column label="备注" align="center" min-width="300">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-input v-model="scope.row.remarks" clearable placeholder="" />
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table>
|
|
|
|
<div class="title">商品<span class="icon" v-show="formobj.nodeName == '竣工'">(竣工岗位职责:核对出库商品及数量是否与服务项目相符)</span></div>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="24">
|
|
|
|
<div class="span-sty span-sty-one" style="width: 300px;!important;">前台登记时对商品要求备注</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo-one" :disabled="formobj.nodeName !== '登记'" style="width: 70%" v-model="formobj.registerRemarks" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-table :key="tableKey" :data="formobj.goodsDetailsVos" :index="index" border style="width: 100%">
|
|
|
|
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
|
|
|
|
<el-table-column prop="goodsSpuName" label="商品名称" width="100" align="center" />
|
|
|
|
<el-table-column prop="goodsSkuCode" label="图号" width="100" align="center" />
|
|
|
|
<el-table-column prop="goodsSkuOwnSpec" label="规格" width="100" align="center" />
|
|
|
|
<el-table-column prop="unit" label="单位" width="100" align="center" />
|
|
|
|
<el-table-column prop="warehouseName" label="仓库" width="100" align="center" />
|
|
|
|
<el-table-column prop="warehouseRackCode" label="库位" width="100" align="center" />
|
|
|
|
<el-table-column prop="price" label="销售价" align="center" width="150" />
|
|
|
|
<el-table-column prop="count" label="数量" width="100" align="center" />
|
|
|
|
<el-table-column label="折扣" align="center" width="100">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-input @input="computeYHAndJE(scope.row)" :disabled="formobj.nodeName !== '结算'" v-model="scope.row.discount" @keyup.native="scope.row.discount = getNumber(scope.row.discount, 2)" clearable placeholder="" />
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="discountAmount" label="优惠" width="100" align="center" />
|
|
|
|
<el-table-column prop="amount" label="金额" width="100" align="center" />
|
|
|
|
<el-table-column label="备注" align="center" min-width="300">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-input v-model="scope.row.remarks" clearable placeholder="" />
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table>
|
|
|
|
<div class="title">附加项目</div>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">外出费(元)</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="formobj.outAmount = getNumber(formobj.outAmount, 2)" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.outAmount" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="16">
|
|
|
|
<div class="span-sty">备注</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.outRemarks" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">厂家补助(元)</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="formobj.subsidyAmount = getNumber(formobj.subsidyAmount, 2)" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.subsidyAmount" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="16">
|
|
|
|
<div class="span-sty">备注</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.subsidyRemarks" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">施救费(元)</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="formobj.rescueAmount = getNumber(formobj.rescueAmount, 2)" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.rescueAmount" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">备注</div>
|
|
|
|
<el-form-item>
|
|
|
|
<div>
|
|
|
|
<el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.rescueRemarks" clearable placeholder="" />
|
|
|
|
</div>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div>
|
|
|
|
<el-upload
|
|
|
|
class="upload-demo"
|
|
|
|
name="file"
|
|
|
|
:action="updateAction"
|
|
|
|
:limit="10"
|
|
|
|
:on-success="handleSuccess"
|
|
|
|
:on-remove="handleRemove"
|
|
|
|
:headers="headers"
|
|
|
|
:file-list="fileList">
|
|
|
|
<el-button size="small" type="primary">点击上传</el-button>
|
|
|
|
</el-upload>
|
|
|
|
</div>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-table :key="subjoinKey" :data="formobj.aitemVos" :index="index" border style="width: 100%">
|
|
|
|
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
|
|
|
|
<div v-if="formobj.nodeName !== '结算' && formobj.nodeName !== '出厂'">
|
|
|
|
<el-table-column align="center" width="80">
|
|
|
|
<template slot="header" slot-scope="scope">
|
|
|
|
<i class="add-btn-icon el-icon-plus" style="color: red;font-size:20px" @click="subjoinAdd(scope.row)"></i>
|
|
|
|
</template>
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<i class="el-icon-delete" @click="subjoinDelete(scope.$index)"></i>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column label="其它附加项目" align="center" width="200">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-popover placement="right" width="500" trigger="click">
|
|
|
|
<div>
|
|
|
|
<el-table :data="subjoinData" v-loading="subjoinLoading" highlight-current-row @current-change="subjoinCurrentChange($event, scope.row)">
|
|
|
|
<el-table-column fixed prop="aitemName" label="项目名称" align="center" />
|
|
|
|
<el-table-column prop="aitemCode" label="拼音缩写" align="center" />
|
|
|
|
<el-table-column prop="price" label="销售金额" align="center" />
|
|
|
|
</el-table>
|
|
|
|
<el-pagination :page.sync="subjoinQuery.current" :page-size="subjoinQuery.size" layout="total, pager" :total="subjoinQuery.total" />
|
|
|
|
</div>
|
|
|
|
<el-input slot="reference" v-model="scope.row.aitemName" @input="subjoinInput(scope.row.aitemName)" clearable placeholder="项目名称、拼音"/>
|
|
|
|
</el-popover>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</div>
|
|
|
|
<el-table-column v-else prop="aitemName" label="其它附加项目" align="center" width="200" />
|
|
|
|
<el-table-column label="销售价" align="center" width="150">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-input :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.price" @keyup.native="scope.row.price = getNumber(scope.row.price, 2)" clearable placeholder="" />
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column label="备注" align="center" min-width="200">
|
|
|
|
<template slot-scope="scope">
|
|
|
|
<el-input :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.remarks" clearable placeholder="" />
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="24">
|
|
|
|
<div class="span-sty" style="border-right: 0px">应收合计:</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ ysTotal }} = 工时费:{{ gsfTotal }} + 材料费:{{ clfTotal }} + 附加费:{{ fjfTotal }} + 税额:0</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="24">
|
|
|
|
<div class="span-sty" style="border-right: 0px">实收合计:</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ ssTotal }} = 应收合计:{{ ysTotal }} - 优惠:{{ yhTotal }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-form>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- 选择客户 -->
|
|
|
|
<selectCustomer v-show="viewState == 2" ref="divCus" @backData="backData" @doback="resetState"/>
|
|
|
|
<!-- 结算 -->
|
|
|
|
<el-dialog :visible.sync="settleVisible" width="70%">
|
|
|
|
<el-form ref="formobj" :model="formobj" :rules="rules" class="formaddcopy02">
|
|
|
|
<el-row style="border-top: 1px solid #e0e3eb">
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty"><span class="icon">*</span>付款人姓名</div>
|
|
|
|
<el-form-item prop="settleVo.payerName"><el-input class="addinputInfo addinputw" v-model="formobj.settleVo.payerName" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">付款人编号</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.settleVo.payerNo" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">应收金额</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ ysTotal }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">订金抵扣</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="formobj.settleVo.depositdeductAmount = getNumber(formobj.settleVo.depositdeductAmount, 2)" v-model="formobj.settleVo.depositdeductAmount" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty"><span class="icon">*</span>结算方式</div>
|
|
|
|
<el-form-item prop="settleVo.settleValue">
|
|
|
|
<el-select class="addinputInfo" v-model="formobj.settleVo.settleValue" placeholder="请选择" @change="settleChange" clearable filterable>
|
|
|
|
<el-option v-for="item in settle_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty"><span class="icon">*</span>结算金额</div>
|
|
|
|
<el-form-item prop="settleVo.settleAmount"><el-input class="addinputInfo addinputw" @keyup.native="formobj.settleVo.settleAmount = getNumber(formobj.settleVo.settleAmount, 2)" v-model="formobj.settleVo.settleAmount" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">其他结算方式</div>
|
|
|
|
<el-form-item>
|
|
|
|
<el-select class="addinputInfo" v-model="formobj.settleVo.otherSettleValue" placeholder="请选择" @change="otherSettleChange" clearable filterable>
|
|
|
|
<el-option v-for="item in otherSettle_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">其他结算金额</div>
|
|
|
|
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="formobj.settleVo.otherSettleAmount = getNumber(formobj.settleVo.otherSettleAmount, 2)" v-model="formobj.settleVo.otherSettleAmount" clearable placeholder="" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
|
|
<div class="span-sty">欠款金额</div>
|
|
|
|
<el-form-item><span class="addinputInfo">{{ qkjeTotal }}</span></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="24">
|
|
|
|
<div class="span-sty"><span class="icon">*</span>结算时间</div>
|
|
|
|
<el-form-item prop="settleVo.settleTime"><el-date-picker class="addinputInfo addinputw" v-model="formobj.settleVo.settleTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期" /></el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-form>
|
|
|
|
<div style="text-align:center;margin-top: 20px;">
|
|
|
|
<el-button type="primary" size="mini" @click="confirm">确 定</el-button>
|
|
|
|
<el-button type="info " size="mini" @click="settleVisible = false">取 消</el-button>
|
|
|
|
</div>
|
|
|
|
</el-dialog>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import req from '@/api/operation/repairbill'
|
|
|
|
import additionitem from '@/api/basicinformation/additionitem'
|
|
|
|
import { selAllByOrgSidPath, selSubjectInfo, getGroupList, typeValues, getListByUseOrgSid, getServiceItemListPage } from '@/api/Common/dictcommons'
|
|
|
|
import selectCustomer from '@/components/publicPage/selectCustomer'
|
|
|
|
import { getStorage } from '@/utils/auth'
|
|
|
|
|
|
|
|
export default {
|
|
|
|
name: 'RepairBillAdd',
|
|
|
|
components: {
|
|
|
|
selectCustomer
|
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
viewTitle: '',
|
|
|
|
viewState: 1,
|
|
|
|
submitdisabled: false,
|
|
|
|
updateAction: process.env.VUE_APP_BASE_API + '/portal/file/upload',
|
|
|
|
fileList: [],
|
|
|
|
headers: {
|
|
|
|
token: window.sessionStorage.getItem('token')
|
|
|
|
},
|
|
|
|
user_list: [], // 服务顾问
|
|
|
|
subject_list: [], // 科目
|
|
|
|
claimManufacturer_list: [], // 索赔厂家
|
|
|
|
group_list: [], // 班组
|
|
|
|
mainRepairersChange_list: [], // 主修人
|
|
|
|
settleVisible: false, // 结算弹框
|
|
|
|
billType_list: [], // 单据类型
|
|
|
|
responsibility_list: [], // 责任划分
|
|
|
|
responsibilityRatio_list: [], // 对方险种
|
|
|
|
useInsurer_list: [], // 使用保险方
|
|
|
|
insuranceType_list: [], // 使用险种
|
|
|
|
insuranceCompany_list: [], // 保险公司
|
|
|
|
invoiceType_list: [], // 发票类型
|
|
|
|
settle_list: [], // 结算方式
|
|
|
|
otherSettle_list: [], // 其他结算方式
|
|
|
|
activeNames: '1',
|
|
|
|
tableKey: 0,
|
|
|
|
index: 0,
|
|
|
|
// service服务
|
|
|
|
serviceKey: 1,
|
|
|
|
serviceLoading: false,
|
|
|
|
serviceQuery: {
|
|
|
|
current: 1,
|
|
|
|
size: 2,
|
|
|
|
total: 0,
|
|
|
|
params: {
|
|
|
|
sitemName: '',
|
|
|
|
useOrgSid: '',
|
|
|
|
subject: ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
serviceData: [],
|
|
|
|
// subjoin附加项目
|
|
|
|
subjoinKey: 2,
|
|
|
|
subjoinLoading: false,
|
|
|
|
subjoinQuery: {
|
|
|
|
current: 1,
|
|
|
|
size: 2,
|
|
|
|
total: 0,
|
|
|
|
params: {
|
|
|
|
aitemName: '',
|
|
|
|
orgPath: ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
subjoinData: [],
|
|
|
|
// insurance保险信息
|
|
|
|
insuranceKey: 3,
|
|
|
|
formobj: {
|
|
|
|
sid: '',
|
|
|
|
registerRemarks: '',
|
|
|
|
billNo: '',
|
|
|
|
createByName: '',
|
|
|
|
createBySid: '',
|
|
|
|
deptName: '',
|
|
|
|
deptSid: '',
|
|
|
|
createDate: '',
|
|
|
|
billTypeKey: '',
|
|
|
|
billType: '',
|
|
|
|
subjectSid: '',
|
|
|
|
subject: '',
|
|
|
|
claimManufacturerSid: '',
|
|
|
|
claimManufacturer: '',
|
|
|
|
isGoOut: '',
|
|
|
|
estimatedFinishTime: '',
|
|
|
|
entryTime: '',
|
|
|
|
nodeName: '',
|
|
|
|
waitorName: '',
|
|
|
|
waitorSid: '',
|
|
|
|
groupSid: '',
|
|
|
|
groupName: '',
|
|
|
|
mainRepairers: '',
|
|
|
|
printRemarks: '',
|
|
|
|
remarks: '',
|
|
|
|
isSpecialSign: '',
|
|
|
|
discountAmount: '',
|
|
|
|
coupon: '',
|
|
|
|
scoreDeduct: '',
|
|
|
|
nodeTime: '',
|
|
|
|
outDoorState: '',
|
|
|
|
outDoorTime: '',
|
|
|
|
customerSid: '',
|
|
|
|
customerName: '',
|
|
|
|
mobile: '',
|
|
|
|
customerOrg: '',
|
|
|
|
customerSource: '',
|
|
|
|
memberCardSid: '',
|
|
|
|
memberCarNumber: '',
|
|
|
|
vehMark: '',
|
|
|
|
vinNo: '',
|
|
|
|
vehModel: '',
|
|
|
|
mileage: '',
|
|
|
|
oil: '',
|
|
|
|
currentMileage: '',
|
|
|
|
dockingPeopleSid: '',
|
|
|
|
dockingPeople: '',
|
|
|
|
dockingPhone: '',
|
|
|
|
invoiceVo: {
|
|
|
|
isInvoicing: '',
|
|
|
|
invoiceType: '',
|
|
|
|
invoiceTypeKey: '',
|
|
|
|
invoiceCompanySid: '',
|
|
|
|
invoiceCompany: ''
|
|
|
|
},
|
|
|
|
insuranceVo: {
|
|
|
|
responsibility: '',
|
|
|
|
responsibilityKey: '',
|
|
|
|
isPersonInjuries: '',
|
|
|
|
responsibilityRatioKey: '',
|
|
|
|
responsibilityRatio: '',
|
|
|
|
insuranceList: []
|
|
|
|
},
|
|
|
|
sitemVos: [],
|
|
|
|
aitemVos: [],
|
|
|
|
goodsDetailsVos: [],
|
|
|
|
operatorSid: '',
|
|
|
|
nodeCode: '',
|
|
|
|
settleVo: {
|
|
|
|
payerNo: '',
|
|
|
|
payerName: '',
|
|
|
|
receivableAmount: '',
|
|
|
|
depositdeductAmount: '',
|
|
|
|
settleKey: '',
|
|
|
|
settleValue: '',
|
|
|
|
settleAmount: '',
|
|
|
|
otherSettleKey: '',
|
|
|
|
otherSettleValue: '',
|
|
|
|
debts: '',
|
|
|
|
settleTime: '',
|
|
|
|
otherSettleAmount: ''
|
|
|
|
},
|
|
|
|
showReSettleBtn: true,
|
|
|
|
hourAmount: '',
|
|
|
|
otherAmount: '',
|
|
|
|
goodsAmount: '',
|
|
|
|
addAmount: '',
|
|
|
|
taxAmount: '',
|
|
|
|
outAmount: '',
|
|
|
|
subsidyAmount: '',
|
|
|
|
rescueAmount: '',
|
|
|
|
actualAmount: '',
|
|
|
|
receivableAmount: '',
|
|
|
|
subsidyRemarks: '',
|
|
|
|
rescueRemarks: '',
|
|
|
|
outRemarks: '',
|
|
|
|
fileName: [],
|
|
|
|
operator: '',
|
|
|
|
useOrgSid: '',
|
|
|
|
createOrgSid: ''
|
|
|
|
},
|
|
|
|
rules: {
|
|
|
|
billType: [{ required: true, message: '工单类型不能为空', trigger: 'change' }],
|
|
|
|
isGoOut: [{ required: true, message: '是否外出不能为空', trigger: 'change' }],
|
|
|
|
subject: [{ required: true, message: '科目不能为空', trigger: 'change' }],
|
|
|
|
estimatedFinishTime: [{ required: true, message: '预计完工不能为空', trigger: 'change' }],
|
|
|
|
waitorName: [{ required: true, message: '服务顾问不能为空', trigger: 'change' }],
|
|
|
|
isSpecialSign: [{ required: true, message: '特殊标志不能为空', trigger: 'change' }],
|
|
|
|
customerName: [{ required: true, message: '客户信息不能为空', trigger: 'change' }],
|
|
|
|
'settleVo.payerName': [{ required: true, message: '付款人姓名不能为空', trigger: 'blur' }],
|
|
|
|
'settleVo.settleValue': [{ required: true, message: '结算方式不能为空', trigger: 'change' }],
|
|
|
|
'settleVo.settleAmount': [{ required: true, message: '结算金额不能为空', trigger: 'blur' }],
|
|
|
|
'settleVo.settleTime': [{ required: true, message: '结算时间不能为空', trigger: 'blur' }]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
// 计算工时费 = 服务项目列表中所有销售价之和
|
|
|
|
gsfTotal() {
|
|
|
|
let gsf = '0'
|
|
|
|
if (this.formobj.sitemVos.length > 0) {
|
|
|
|
this.formobj.sitemVos.forEach((e) => {
|
|
|
|
if (e.serviceItem !== '') {
|
|
|
|
gsf = Math.round((parseFloat(gsf) + parseFloat(e.price !== '' ? e.price : '0')) * 100) / 100
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
return gsf
|
|
|
|
},
|
|
|
|
// 计算材料费 = 商品列表中所有销售价 * 数量的和
|
|
|
|
clfTotal() {
|
|
|
|
let clf = '0'
|
|
|
|
if (this.formobj.goodsDetailsVos.length > 0) {
|
|
|
|
this.formobj.goodsDetailsVos.forEach((e) => {
|
|
|
|
if (e.goodsSpuName !== '') {
|
|
|
|
clf = Math.round((parseFloat(clf) + (parseFloat(e.price !== '' ? e.price : '0') * parseFloat(e.count !== '' ? e.count : '0'))) * 100) / 100
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
return clf
|
|
|
|
},
|
|
|
|
// 计算附加费 == 外出费 + 厂家补助 + 施救费 + 附加项目列表中所有销售价之和
|
|
|
|
fjfTotal() {
|
|
|
|
let fjf = '0'
|
|
|
|
fjf = parseFloat(this.formobj.outAmount !== '' ? this.formobj.outAmount : '0') + parseFloat(this.formobj.subsidyAmount !== '' ? this.formobj.subsidyAmount : '0') + parseFloat(this.formobj.rescueAmount !== '' ? this.formobj.rescueAmount : '0')
|
|
|
|
if (this.formobj.aitemVos.length > 0) {
|
|
|
|
this.formobj.aitemVos.forEach((e) => {
|
|
|
|
if (e.aitemName !== '') {
|
|
|
|
fjf = Math.round((parseFloat(fjf) + parseFloat(e.price !== '' ? e.price : '0')) * 100) / 100
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
return fjf
|
|
|
|
},
|
|
|
|
// 计算应收合计 = 工时费 + 材料费 + 附加费 + 税额
|
|
|
|
ysTotal() {
|
|
|
|
let ys = '0'
|
|
|
|
ys = Math.round((parseFloat(ys) + parseFloat(this.gsfTotal) + parseFloat(this.clfTotal) + parseFloat(this.fjfTotal)) * 100) / 100
|
|
|
|
return ys
|
|
|
|
},
|
|
|
|
// 优惠 = 服务项目列表中的所有优惠之和 + 商品列表中所有优惠之和
|
|
|
|
yhTotal() {
|
|
|
|
let yh = '0'
|
|
|
|
if (this.formobj.sitemVos.length > 0) {
|
|
|
|
this.formobj.sitemVos.forEach((e) => {
|
|
|
|
if (e.serviceItem !== '') {
|
|
|
|
yh = Math.round((parseFloat(yh) + parseFloat(e.discountAmount !== '' ? e.discountAmount : '0')) * 100) / 100
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
if (this.formobj.goodsDetailsVos.length > 0) {
|
|
|
|
this.formobj.goodsDetailsVos.forEach((e) => {
|
|
|
|
if (e.goodsSpuName !== '') {
|
|
|
|
yh = Math.round((parseFloat(yh) + parseFloat(e.discountAmount !== '' ? e.discountAmount : '0')) * 100) / 100
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
return yh
|
|
|
|
},
|
|
|
|
// 计算实收合计 = 应收合计 - 优惠
|
|
|
|
ssTotal() {
|
|
|
|
let ysje = '0'
|
|
|
|
ysje = Math.round((parseFloat(ysje) + parseFloat(this.ysTotal) - parseFloat(this.yhTotal)) * 100) / 100
|
|
|
|
return ysje
|
|
|
|
},
|
|
|
|
// 结算页面中计算欠款金额 = 应付金额 - 订金抵扣 - 结算金额 - 其他结算金额
|
|
|
|
qkjeTotal() {
|
|
|
|
let qkje = '0'
|
|
|
|
// qkje = Math.round((parseFloat(this.ysjeTotal) - parseFloat(this.formobj.settleVo.depositdeductAmount !== '' ? this.formobj.settleVo.depositdeductAmount : '0') - parseFloat(this.formobj.settleVo.settleAmount !== '' ? this.formobj.settleVo.settleAmount : '0') - parseFloat(this.formobj.settleVo.otherSettleAmount !== '' ? this.formobj.settleVo.otherSettleAmount : '0')) * 100) / 100
|
|
|
|
return qkje
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
init() {
|
|
|
|
typeValues({ type: 'billType' }).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.billType_list = res.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
typeValues({ type: 'responsibility' }).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.responsibility_list = res.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
typeValues({ type: 'responsibilityRatio' }).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.responsibilityRatio_list = res.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
typeValues({ type: 'useInsurer' }).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.useInsurer_list = res.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
typeValues({ type: 'insuranceType' }).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.insuranceType_list = res.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
typeValues({ type: 'insuranceCompany' }).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.insuranceCompany_list = res.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
typeValues({ type: 'billingType' }).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.invoiceType_list = res.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
typeValues({ type: 'settle' }).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.settle_list = res.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
typeValues({ type: 'otherSettle' }).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.otherSettle_list = res.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
selSubjectInfo({ useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }).then((resp) => {
|
|
|
|
if (resp.success) {
|
|
|
|
this.subject_list = resp.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
getGroupList({ useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }).then((resp) => {
|
|
|
|
if (resp.success) {
|
|
|
|
this.group_list = resp.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
getListByUseOrgSid({ useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }).then((resp) => {
|
|
|
|
if (resp.success) {
|
|
|
|
this.claimManufacturer_list = resp.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
selAllByOrgSidPath({ orgSidPath: window.sessionStorage.getItem('defaultOrgPath') }).then((resp) => {
|
|
|
|
if (resp.success) {
|
|
|
|
this.user_list = resp.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
getNumber(val, limit) {
|
|
|
|
val = val.replace(/[^0-9.]/g, '') // 保留数字
|
|
|
|
val = val.replace(/^00/, '0.') // 开头不能有两个0
|
|
|
|
val = val.replace(/^\./g, '0.') // 开头为小数点转换为0.
|
|
|
|
val = val.replace(/\.{2,}/g, '.') // 两个以上的小数点转换成一个
|
|
|
|
val = val.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.'); // 只保留一个小数点
|
|
|
|
/^0\d+/.test(val) ? val = val.slice(1) : '' // 两位以上数字开头不能为0
|
|
|
|
const str = '^(\\d+)\\.(\\d{' + limit + '}).*$'
|
|
|
|
const reg = new RegExp(str)
|
|
|
|
if (limit === 0) {
|
|
|
|
// 不需要小数点
|
|
|
|
val = val.replace(reg, '$1')
|
|
|
|
} else {
|
|
|
|
// 通过正则保留小数点后指定的位数
|
|
|
|
val = val.replace(reg, '$1.$2')
|
|
|
|
}
|
|
|
|
return val
|
|
|
|
},
|
|
|
|
showAdd() {
|
|
|
|
this.viewTitle = '【新增】维修单'
|
|
|
|
this.$nextTick(() => {
|
|
|
|
this.$refs['form_obj'].clearValidate()
|
|
|
|
})
|
|
|
|
this.init()
|
|
|
|
this.formobj.orgPath = window.sessionStorage.getItem('defaultOrgPath')
|
|
|
|
this.formobj.createByName = window.sessionStorage.getItem('name')
|
|
|
|
this.formobj.createBySid = window.sessionStorage.getItem('userSid')
|
|
|
|
this.formobj.deptName = window.sessionStorage.getItem('defaultOrgPathName').substring(window.sessionStorage.getItem('defaultOrgPathName').lastIndexOf('/') + 1)
|
|
|
|
this.formobj.deptSid = window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1)
|
|
|
|
var nowDate = new Date()
|
|
|
|
var date = {
|
|
|
|
year: nowDate.getFullYear(),
|
|
|
|
month: nowDate.getMonth() + 1,
|
|
|
|
day: nowDate.getDate()
|
|
|
|
}
|
|
|
|
this.formobj.createDate = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day)
|
|
|
|
this.formobj.isGoOut = '0'
|
|
|
|
this.formobj.nodeCode = '1'
|
|
|
|
this.formobj.nodeName = '登记'
|
|
|
|
},
|
|
|
|
showEdit(sid) {
|
|
|
|
this.viewTitle = '【编辑】维修单'
|
|
|
|
this.$nextTick(() => {
|
|
|
|
this.$refs['form_obj'].clearValidate()
|
|
|
|
})
|
|
|
|
this.init()
|
|
|
|
req.fetchBySid(sid).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.formobj = res.data
|
|
|
|
if (this.formobj.fileName.length > 0) {
|
|
|
|
this.fileList = this.formobj.fileName
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
selectCustomer() {
|
|
|
|
this.viewState = 2
|
|
|
|
this.$refs['divCus'].showData(this.formobj.deptSid, this.formobj.billType)
|
|
|
|
},
|
|
|
|
backData(value) {
|
|
|
|
this.viewState = 1
|
|
|
|
value = JSON.parse(JSON.stringify(value))
|
|
|
|
this.formobj.customerName = value.name
|
|
|
|
this.formobj.customerSid = value.sid
|
|
|
|
this.formobj.mobile = value.mobile
|
|
|
|
this.formobj.vehMark = value.vehMark
|
|
|
|
this.formobj.vinNo = value.vinNo
|
|
|
|
this.formobj.vehModel = value.vehModel
|
|
|
|
},
|
|
|
|
billTypeChange(value) {
|
|
|
|
const choose = this.billType_list.filter((item) => item.dictValue === value)
|
|
|
|
if (choose.length > 0 && choose !== null) {
|
|
|
|
this.formobj.billTypeKey = choose[0].dictKey
|
|
|
|
} else {
|
|
|
|
this.formobj.billTypeKey = ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
changeSubject(value) {
|
|
|
|
const choose = this.subject_list.filter((item) => item.subject === value)
|
|
|
|
if (choose.length > 0 && choose !== null) {
|
|
|
|
this.formobj.subjectSid = choose[0].subjectSid
|
|
|
|
} else {
|
|
|
|
this.formobj.subjectSid = ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
changeClaimManufacturer(value) {
|
|
|
|
const choose = this.claimManufacturer_list.filter((item) => item.claiManuName === value)
|
|
|
|
if (choose.length > 0 && choose !== null) {
|
|
|
|
this.formobj.claimManufacturerSid = choose[0].sid
|
|
|
|
} else {
|
|
|
|
this.formobj.claimManufacturerSid = ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
waitorChange(value) {
|
|
|
|
const choose = this.user_list.filter((item) => item.name === value)
|
|
|
|
if (choose.length > 0 && choose !== null) {
|
|
|
|
this.formobj.waitorSid = choose[0].sid
|
|
|
|
} else {
|
|
|
|
this.formobj.waitorSid = ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
groupChange(value) {
|
|
|
|
const choose = this.group_list.filter((item) => item.groupName === value)
|
|
|
|
if (choose.length > 0 && choose !== null) {
|
|
|
|
this.formobj.groupSid = choose[0].groupSid
|
|
|
|
this.mainRepairersChange_list = choose[0].members
|
|
|
|
} else {
|
|
|
|
this.formobj.groupSid = ''
|
|
|
|
this.mainRepairersChange_list = []
|
|
|
|
this.formobj.mainRepairers = ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
responsibilityChange(value) {
|
|
|
|
const choose = this.responsibility_list.filter((item) => item.dictValue === value)
|
|
|
|
if (choose.length > 0 && choose !== null) {
|
|
|
|
this.formobj.insuranceVo.responsibilityKey = choose[0].dictKey
|
|
|
|
} else {
|
|
|
|
this.formobj.insuranceVo.responsibilityKey = ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
responsibilityRatioChange(value) {
|
|
|
|
const choose = this.responsibilityRatio_list.filter((item) => item.dictValue === value)
|
|
|
|
if (choose.length > 0 && choose !== null) {
|
|
|
|
this.formobj.insuranceVo.responsibilityRatioKey = choose[0].dictKey
|
|
|
|
} else {
|
|
|
|
this.formobj.insuranceVo.responsibilityRatioKey = ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
insuranceAdd() {
|
|
|
|
this.formobj.insuranceVo.insuranceList.push({
|
|
|
|
useInsurerKey: '',
|
|
|
|
useInsurer: '',
|
|
|
|
insuranceTypeKey: '',
|
|
|
|
insuranceType: '',
|
|
|
|
insuranceCompanyKey: '',
|
|
|
|
insuranceCompany: '',
|
|
|
|
claimBillNo: '',
|
|
|
|
investigator: '',
|
|
|
|
lossAdjuster: ''
|
|
|
|
})
|
|
|
|
},
|
|
|
|
useInsurerChange(value, row) {
|
|
|
|
const choose = this.useInsurer_list.filter((item) => item.dictKey === value)
|
|
|
|
if (choose !== null && choose.length > 0) {
|
|
|
|
row.useInsurer = choose[0].dictValue
|
|
|
|
} else {
|
|
|
|
row.useInsurer = ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
insuranceTypeChange(value, row) {
|
|
|
|
const choose = this.insuranceType_list.filter((item) => item.dictKey === value)
|
|
|
|
if (choose !== null && choose.length > 0) {
|
|
|
|
row.insuranceType = choose[0].dictValue
|
|
|
|
} else {
|
|
|
|
row.insuranceType = ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
insuranceCompanyChange(value, row) {
|
|
|
|
const choose = this.insuranceCompany_list.filter((item) => item.dictKey === value)
|
|
|
|
if (choose !== null && choose.length > 0) {
|
|
|
|
row.insuranceCompany = choose[0].dictValue
|
|
|
|
} else {
|
|
|
|
row.insuranceCompany = ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
insuranceDelete(index) {
|
|
|
|
this.formobj.insuranceVo.insuranceList.splice(index, 1)
|
|
|
|
},
|
|
|
|
invoiceTypeChange(value) {
|
|
|
|
const choose = this.invoiceType_list.filter((item) => item.dictValue === value)
|
|
|
|
if (choose.length > 0 && choose !== null) {
|
|
|
|
this.formobj.invoiceVo.invoiceTypeKey = choose[0].dictKey
|
|
|
|
} else {
|
|
|
|
this.formobj.invoiceVo.invoiceTypeKey = ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
serviceAdd() {
|
|
|
|
this.formobj.sitemVos.push({
|
|
|
|
serviceItemSid: '',
|
|
|
|
serviceItem: '',
|
|
|
|
serviceTypeSid: '',
|
|
|
|
serviceType: '',
|
|
|
|
subjectSid: '',
|
|
|
|
subject: '',
|
|
|
|
examineHourPrice: '',
|
|
|
|
hourPrice: '',
|
|
|
|
hours: '',
|
|
|
|
price: '',
|
|
|
|
discount: '',
|
|
|
|
discountAmount: '',
|
|
|
|
amount: '',
|
|
|
|
remarks: '',
|
|
|
|
repairerName: '',
|
|
|
|
staffList: [],
|
|
|
|
staffNameList: []
|
|
|
|
})
|
|
|
|
},
|
|
|
|
serviceInput(value) {
|
|
|
|
this.serviceQuery.params.useOrgSid = this.formobj.deptSid
|
|
|
|
this.serviceQuery.params.sitemName = value
|
|
|
|
this.serviceQuery.params.subject = this.formobj.subject
|
|
|
|
this.serviceLoading = true
|
|
|
|
getServiceItemListPage(this.serviceQuery).then((response) => {
|
|
|
|
if (response.success) {
|
|
|
|
this.serviceLoading = false
|
|
|
|
this.serviceData = response.data.records
|
|
|
|
this.serviceQuery.total = response.data.total
|
|
|
|
} else {
|
|
|
|
this.serviceLoading = false
|
|
|
|
this.serviceData = []
|
|
|
|
this.serviceQuery.total = 0
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
serviceDelete(index) {
|
|
|
|
this.formobj.sitemVos.splice(index, 1)
|
|
|
|
},
|
|
|
|
serviceCurrentChange(value, row) {
|
|
|
|
row.serviceItemSid = value.sid
|
|
|
|
row.serviceItem = value.sitemName
|
|
|
|
row.serviceTypeSid = value.serviceTypeSid
|
|
|
|
row.serviceType = value.serviceType
|
|
|
|
row.examineHourPrice = value.examineHourPrice
|
|
|
|
row.hourPrice = value.hourPrice
|
|
|
|
row.hours = value.hours
|
|
|
|
row.price = value.price
|
|
|
|
row.discount = '10'
|
|
|
|
row.discountAmount = '0'
|
|
|
|
row.amount = row.price
|
|
|
|
if (this.mainRepairersChange_list.length > 0) {
|
|
|
|
this.mainRepairersChange_list.forEach((e) => {
|
|
|
|
row.staffNameList.push(e.memberName)
|
|
|
|
row.staffList.push(e.memberSid)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
document.body.click()
|
|
|
|
},
|
|
|
|
userChange(row, list) {
|
|
|
|
const aa = []
|
|
|
|
list.forEach((e) => {
|
|
|
|
this.user_list.forEach((k) => {
|
|
|
|
if (e === k.sid) {
|
|
|
|
aa.push(k.name)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
row.staffNameList = aa
|
|
|
|
},
|
|
|
|
// 计算优惠、销售金额 -- 服务项目列表
|
|
|
|
computeYHAndXSJE(row) {
|
|
|
|
// 计算优惠(销售价 * (1 - (折扣 * 0.1)))
|
|
|
|
row.discountAmount = Math.round((parseFloat(row.price === '' ? '0' : row.price) * Math.round((parseFloat(1) - parseFloat(row.discount === '' ? '0' : row.discount) * parseFloat(0.1)) * 100) / 100) * 100) / 100
|
|
|
|
// 计算销售金额(销售价 - 优惠)
|
|
|
|
if (row.price == 0) {
|
|
|
|
row.amount = '0'
|
|
|
|
} else {
|
|
|
|
row.amount = Math.round((parseFloat(row.price === '' ? '0' : row.price) - parseFloat(row.discountAmount === '' ? '0' : row.discountAmount)) * 100) / 100
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// 计算优惠、销售金额 -- 上你列表
|
|
|
|
computeYHAndJE(row) {
|
|
|
|
// 计算优惠(销售价 * 数量 * (1 - (折扣 * 0.1)))
|
|
|
|
row.discountAmount = Math.round((parseFloat(row.price === '' ? '0' : row.price) * parseFloat(row.count !== '' ? row.count : '0') * Math.round((parseFloat(1) - parseFloat(row.discount === '' ? '0' : row.discount) * parseFloat(0.1)) * 100) / 100) * 100) / 100
|
|
|
|
// 计算销售金额(销售价 * 数量 - 优惠)
|
|
|
|
if (row.price == 0) {
|
|
|
|
row.amount = '0'
|
|
|
|
} else {
|
|
|
|
row.amount = Math.round((parseFloat(row.price === '' ? '0' : row.price) * parseFloat(row.count !== '' ? row.count : '0') - parseFloat(row.discountAmount === '' ? '0' : row.discountAmount)) * 100) / 100
|
|
|
|
}
|
|
|
|
},
|
|
|
|
subjoinAdd() {
|
|
|
|
this.formobj.aitemVos.push({
|
|
|
|
aitemSid: '',
|
|
|
|
aitemName: '',
|
|
|
|
price: ''
|
|
|
|
})
|
|
|
|
},
|
|
|
|
subjoinInput(value) {
|
|
|
|
this.subjoinQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
|
|
|
|
this.subjoinQuery.params.aitemName = value
|
|
|
|
this.subjoinLoading = true
|
|
|
|
additionitem.listPage(this.subjoinQuery).then((response) => {
|
|
|
|
if (response.success) {
|
|
|
|
this.subjoinLoading = false
|
|
|
|
this.subjoinData = response.data.records
|
|
|
|
this.subjoinQuery.total = response.data.total
|
|
|
|
} else {
|
|
|
|
this.subjoinLoading = false
|
|
|
|
this.subjoinData = []
|
|
|
|
this.subjoinQuery.total = 0
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
subjoinDelete(index) {
|
|
|
|
this.formobj.aitemVos.splice(index, 1)
|
|
|
|
},
|
|
|
|
subjoinCurrentChange(value, row) {
|
|
|
|
row.aitemSid = value.sid
|
|
|
|
row.aitemName = value.aitemName
|
|
|
|
row.price = value.price
|
|
|
|
document.body.click()
|
|
|
|
},
|
|
|
|
handleSuccess(resp, file, fileList) {
|
|
|
|
if (resp.success) {
|
|
|
|
this.formobj.fileName.push({
|
|
|
|
name: resp.data.sourceFileName,
|
|
|
|
url: resp.data.fullUrl
|
|
|
|
})
|
|
|
|
}
|
|
|
|
},
|
|
|
|
handleRemove(file, fileList) {
|
|
|
|
if (this.formobj.fileName.length > 0) {
|
|
|
|
this.formobj.fileName.forEach((e, index) => {
|
|
|
|
if (e.url === file.url) {
|
|
|
|
this.formobj.fileName.splice(index, 1)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
},
|
|
|
|
saveOrUpdate() {
|
|
|
|
this.formobj.operator = window.sessionStorage.getItem('name')
|
|
|
|
this.formobj.operatorSid = window.sessionStorage.getItem('userSid')
|
|
|
|
this.$refs['form_obj'].validate((valid) => {
|
|
|
|
if (valid) {
|
|
|
|
if (this.formobj.sitemVos.length === 0) {
|
|
|
|
this.$message({ showClose: true, type: 'error', message: '服务项目列表不能为空' })
|
|
|
|
return
|
|
|
|
}
|
|
|
|
this.formobj.hourAmount = this.gsfTotal // 工时费
|
|
|
|
this.formobj.goodsAmount = this.clfTotal // 材料费
|
|
|
|
this.formobj.addAmount = this.fjfTotal // 附加费
|
|
|
|
this.formobj.taxAmount = '0' // 税额费
|
|
|
|
this.formobj.receivableAmount = this.ysTotal // 应收合计
|
|
|
|
this.formobj.actualAmount = this.ssTotal // 实收合计
|
|
|
|
console.log(this.formobj, 88)
|
|
|
|
this.submitdisabled = true
|
|
|
|
req.saveOrUpdate(this.formobj).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.$message({ showClose: true, type: 'success', message: '保存成功' })
|
|
|
|
this.handleReturn('true')
|
|
|
|
} else {
|
|
|
|
this.submitdisabled = false
|
|
|
|
}
|
|
|
|
}).catch(() => {
|
|
|
|
this.submitdisabled = false
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
submit() {
|
|
|
|
this.formobj.operator = window.sessionStorage.getItem('name')
|
|
|
|
this.formobj.operatorSid = window.sessionStorage.getItem('userSid')
|
|
|
|
this.$refs['form_obj'].validate((valid) => {
|
|
|
|
if (valid) {
|
|
|
|
if (this.formobj.sitemVos.length === 0) {
|
|
|
|
this.$message({ showClose: true, type: 'error', message: '服务项目列表不能为空' })
|
|
|
|
return
|
|
|
|
}
|
|
|
|
this.submitdisabled = true
|
|
|
|
req.submit(this.formobj).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.$message({ showClose: true, type: 'success', message: '提交成功' })
|
|
|
|
this.handleReturn('true')
|
|
|
|
} else {
|
|
|
|
this.submitdisabled = false
|
|
|
|
}
|
|
|
|
}).catch(() => {
|
|
|
|
this.submitdisabled = false
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
toSendBack() {
|
|
|
|
this.formobj.operator = window.sessionStorage.getItem('name')
|
|
|
|
this.formobj.operatorSid = window.sessionStorage.getItem('userSid')
|
|
|
|
this.$refs['form_obj'].validate((valid) => {
|
|
|
|
if (valid) {
|
|
|
|
if (this.formobj.sitemVos.length === 0) {
|
|
|
|
this.$message({ showClose: true, type: 'error', message: '服务项目列表不能为空' })
|
|
|
|
return
|
|
|
|
}
|
|
|
|
this.submitdisabled = true
|
|
|
|
req.sendBack(this.formobj).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.$message({ showClose: true, type: 'success', message: '退回成功' })
|
|
|
|
this.handleReturn('true')
|
|
|
|
} else {
|
|
|
|
this.submitdisabled = false
|
|
|
|
}
|
|
|
|
}).catch(() => {
|
|
|
|
this.submitdisabled = false
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
settleAccounts() {
|
|
|
|
this.settleVisible = true
|
|
|
|
},
|
|
|
|
settleChange(value) {
|
|
|
|
const choose = this.settle_list.filter((item) => item.dictValue === value)
|
|
|
|
if (choose.length > 0 && choose !== null) {
|
|
|
|
this.formobj.settleVo.settleKey = choose[0].dictKey
|
|
|
|
} else {
|
|
|
|
this.formobj.settleVo.settleKey = ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
otherSettleChange(value) {
|
|
|
|
const choose = this.otherSettle_list.filter((item) => item.dictValue === value)
|
|
|
|
if (choose.length > 0 && choose !== null) {
|
|
|
|
this.formobj.settleVo.otherSettleKey = choose[0].dictKey
|
|
|
|
} else {
|
|
|
|
this.formobj.settleVo.otherSettleKey = ''
|
|
|
|
}
|
|
|
|
},
|
|
|
|
confirm() {
|
|
|
|
this.$refs['form_obj'].validate((valid) => {
|
|
|
|
if (valid) {
|
|
|
|
this.submitdisabled = true
|
|
|
|
req.settle(this.formobj).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.$message({ showClose: true, type: 'success', message: '结算成功' })
|
|
|
|
this.handleReturn('true')
|
|
|
|
} else {
|
|
|
|
this.submitdisabled = false
|
|
|
|
}
|
|
|
|
}).catch(() => {
|
|
|
|
this.submitdisabled = false
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
confirmCLF() {
|
|
|
|
this.$refs['form_obj'].validate((valid) => {
|
|
|
|
if (valid) {
|
|
|
|
this.submitdisabled = true
|
|
|
|
req.sureMaterialFee(this.formobj).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
this.$message({ showClose: true, type: 'success', message: ' 操作成功' })
|
|
|
|
this.handleReturn('true')
|
|
|
|
} else {
|
|
|
|
this.submitdisabled = false
|
|
|
|
}
|
|
|
|
}).catch(() => {
|
|
|
|
this.submitdisabled = false
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
toPrintSettle() {
|
|
|
|
req.printSettle({ sid: this.formobj.sid }).then((res) => {
|
|
|
|
if (res.success) {
|
|
|
|
var xhr = new XMLHttpRequest()
|
|
|
|
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + res.data + '&outFileName=' + '结算单', true)
|
|
|
|
xhr.setRequestHeader('token', getStorage())
|
|
|
|
xhr.responseType = 'blob'
|
|
|
|
xhr.onload = function(e) {
|
|
|
|
// 如果请求执行成功
|
|
|
|
var blob = this.response
|
|
|
|
var filename = '结算单.pdf'
|
|
|
|
var a = document.createElement('a')
|
|
|
|
// blob.type="application/octet-stream";
|
|
|
|
// 创键临时url对象
|
|
|
|
var url = URL.createObjectURL(blob)
|
|
|
|
a.href = url
|
|
|
|
a.download = filename
|
|
|
|
a.click()
|
|
|
|
// 释放之前创建的URL对象
|
|
|
|
window.URL.revokeObjectURL(url)
|
|
|
|
}
|
|
|
|
// 发送请求
|
|
|
|
xhr.send()
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
resetState() {
|
|
|
|
this.viewState = 1
|
|
|
|
},
|
|
|
|
handleReturn(isreload) {
|
|
|
|
if (isreload === 'true') this.$emit('reloadlist')
|
|
|
|
this.formobj = {
|
|
|
|
sid: '',
|
|
|
|
registerRemarks: '',
|
|
|
|
billNo: '',
|
|
|
|
createByName: '',
|
|
|
|
createBySid: '',
|
|
|
|
deptName: '',
|
|
|
|
deptSid: '',
|
|
|
|
createDate: '',
|
|
|
|
billTypeKey: '',
|
|
|
|
billType: '',
|
|
|
|
subjectSid: '',
|
|
|
|
subject: '',
|
|
|
|
claimManufacturerSid: '',
|
|
|
|
claimManufacturer: '',
|
|
|
|
isGoOut: '',
|
|
|
|
estimatedFinishTime: '',
|
|
|
|
entryTime: '',
|
|
|
|
nodeName: '',
|
|
|
|
waitorName: '',
|
|
|
|
waitorSid: '',
|
|
|
|
groupSid: '',
|
|
|
|
groupName: '',
|
|
|
|
mainRepairers: '',
|
|
|
|
printRemarks: '',
|
|
|
|
remarks: '',
|
|
|
|
isSpecialSign: '',
|
|
|
|
discountAmount: '',
|
|
|
|
coupon: '',
|
|
|
|
scoreDeduct: '',
|
|
|
|
nodeTime: '',
|
|
|
|
outDoorState: '',
|
|
|
|
outDoorTime: '',
|
|
|
|
customerSid: '',
|
|
|
|
customerName: '',
|
|
|
|
mobile: '',
|
|
|
|
customerOrg: '',
|
|
|
|
customerSource: '',
|
|
|
|
memberCardSid: '',
|
|
|
|
memberCarNumber: '',
|
|
|
|
vehMark: '',
|
|
|
|
vinNo: '',
|
|
|
|
vehModel: '',
|
|
|
|
mileage: '',
|
|
|
|
oil: '',
|
|
|
|
currentMileage: '',
|
|
|
|
dockingPeopleSid: '',
|
|
|
|
dockingPeople: '',
|
|
|
|
dockingPhone: '',
|
|
|
|
invoiceVo: {
|
|
|
|
isInvoicing: '',
|
|
|
|
invoiceType: '',
|
|
|
|
invoiceTypeKey: '',
|
|
|
|
invoiceCompanySid: '',
|
|
|
|
invoiceCompany: ''
|
|
|
|
},
|
|
|
|
insuranceVo: {
|
|
|
|
responsibility: '',
|
|
|
|
responsibilityKey: '',
|
|
|
|
isPersonInjuries: '',
|
|
|
|
responsibilityRatioKey: '',
|
|
|
|
responsibilityRatio: '',
|
|
|
|
insuranceList: []
|
|
|
|
},
|
|
|
|
sitemVos: [],
|
|
|
|
aitemVos: [],
|
|
|
|
goodsDetailsVos: [],
|
|
|
|
operatorSid: '',
|
|
|
|
nodeCode: '',
|
|
|
|
settleVo: {
|
|
|
|
payerNo: '',
|
|
|
|
payerName: '',
|
|
|
|
receivableAmount: '',
|
|
|
|
depositdeductAmount: '',
|
|
|
|
settleKey: '',
|
|
|
|
settleValue: '',
|
|
|
|
settleAmount: '',
|
|
|
|
otherSettleKey: '',
|
|
|
|
otherSettleValue: '',
|
|
|
|
debts: '',
|
|
|
|
settleTime: '',
|
|
|
|
otherSettleAmount: ''
|
|
|
|
},
|
|
|
|
showReSettleBtn: true,
|
|
|
|
hourAmount: '',
|
|
|
|
otherAmount: '',
|
|
|
|
goodsAmount: '',
|
|
|
|
addAmount: '',
|
|
|
|
taxAmount: '',
|
|
|
|
outAmount: '',
|
|
|
|
subsidyAmount: '',
|
|
|
|
rescueAmount: '',
|
|
|
|
actualAmount: '',
|
|
|
|
receivableAmount: '',
|
|
|
|
subsidyRemarks: '',
|
|
|
|
rescueRemarks: '',
|
|
|
|
outRemarks: '',
|
|
|
|
fileName: [],
|
|
|
|
operator: '',
|
|
|
|
useOrgSid: '',
|
|
|
|
createOrgSid: ''
|
|
|
|
}
|
|
|
|
this.serviceData = []
|
|
|
|
this.subjoinData = []
|
|
|
|
this.settleVisible = false
|
|
|
|
this.submitdisabled = false
|
|
|
|
this.$emit('doback')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
.span-sty {
|
|
|
|
width: 130px !important;
|
|
|
|
}
|
|
|
|
.addinputInfo {
|
|
|
|
margin-left: 120px !important;
|
|
|
|
}
|
|
|
|
.span-sty-one {
|
|
|
|
width: 180px !important;
|
|
|
|
}
|
|
|
|
.addinputInfo-one {
|
|
|
|
margin-left: 170px !important;
|
|
|
|
}
|
|
|
|
/deep/ .el-form-item__error {
|
|
|
|
margin-left: 120px !important;
|
|
|
|
}
|
|
|
|
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
|
|
|
|
margin-left: 120px !important;
|
|
|
|
width: calc(100% - 115px);
|
|
|
|
}
|
|
|
|
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .el-radio-group {
|
|
|
|
display: inline;
|
|
|
|
line-height: 1px;
|
|
|
|
vertical-align: middle;
|
|
|
|
}
|
|
|
|
</style>
|