<template> <div id="contract_info"> <!-- 合同基本信息开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <el-card class="box-card"> <div slot="header" class="clearfix"> <span style="font-size:24px;color:#eff0dc" @click="contract_show =!contract_show">合同基本信息</span> <el-button style="float: right; padding: 8px 0;color:#c9cabb" type="text" @click="form_submit('form')" v-show="disabled_list[0]!=1 || disabled_list[1] != 1">提交</el-button> </div> <transition name="el-fade-in-linear"> <el-form id="form" :inline="true" :model="form" class="demo-form-inline" label-width="100px" :rules="add_rules" v-show="contract_show" ref="contract_form"> <el-row style="text-align:left"> <el-col :span="8"> <el-form-item label="合同编号" prop="contract_unid"> <el-select id="ccc" class="width-220" v-model="form.contract_unid" filterable placeholder="合同编号" @change="change_unid(form.contract_unid)" :disabled="contract_unid_disabled"> <el-option v-for="(item,index) in contract_unid_selected_data" :key="index" :label="item" :value="item"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="销售员" prop="salesperson_unid"> <el-select class="width-220" v-model="form.salesperson_unid" clearable filterable placeholder="销售人员" :disabled="disabled_list[0]==1"> <el-option v-for="(item,index) in salesperson_unid_selected_data" :key="index" :label="item.name" :value="item.user_unid"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="项目名称" prop="project_unid"> <el-select :disabled="disabled_list[0]==1" class="width-220" v-model="form.project_unid" clearable filterable placeholder="项目名称"> <el-option v-for="(item,index) in project_unid_selected_data" :key="index" :label="item.project_name" :value="item.project_unid"> </el-option> </el-select> </el-form-item> </el-col> </el-row> <el-row style="text-align:left"> <el-col :span="8"> <el-form-item label="客户名称" prop="customer_unid"> <el-select :disabled="disabled_list[0]==1" class="width-220" v-model="form.customer_unid" clearable filterable placeholder="客户名称"> <el-option v-for="(item) in customer_unid_selected_data" :key="item.customer_unid" :label="item.customer_name" :value="item.customer_unid"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="8"> <el-form-item id="province" label="项目所在地" prop="province_value"> <el-select :disabled="disabled_list[0]==1" style="width:108px" v-model="form.province_value" filterable clearable placeholder="省" @change="get_cities()"> <el-option v-for="(item,index) in provinces" :key="index" :label="item.name" :value="item.province_unid + '#' + item.name"> </el-option> </el-select> </el-form-item> <el-form-item prop="city_value"> <el-select :disabled="disabled_list[0]==1" style="width:108px" v-model="form.city_value" filterable clearable placeholder="市"> <el-option v-for="(item,index) in cities" :key="index" :label="item.name" :value="item.city_unid + '#' + item.name"> </el-option> </el-select> <!-- <el-select :disabled="disabled_list[0]==1" style="width:100px" v-model="form.county_value" clearable placeholder="区县"> <el-option v-for="(item,index) in counties" :key="index" :label="item.name" :value="item.county_unid + '#' + item.name"> </el-option> </el-select> --> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="质保周期(月)" prop="guarantee_period"> <el-input-number :disabled="disabled_list[0]==1" class="width-220" v-model="form.guarantee_period" :step="6" :min="6" :max="60" size="medium"></el-input-number> </el-form-item> </el-col> </el-row> <el-row style="text-align:left"> <el-col :span="8"> <el-form-item label="签订日期" prop="sign_date"> <el-date-picker :disabled="disabled_list[0]==1" class="width-220" v-model="form.sign_date" type="date" placeholder="日期" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="所属年份"> <el-input class="width-220" v-model="get_year" :disabled="true"></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="所属月份"> <el-input class="width-220" v-model="get_month" :disabled="true"></el-input> </el-form-item> </el-col> </el-row> <el-row style="text-align:left"> <el-col :span="8"> <el-form-item label="产品线类型" prop="product_line_type"> <el-select :disabled="disabled_list[0]==1" class="width-220" v-model="form.product_line_type" clearable placeholder="产品线类型"> <el-option v-for="item in product_line_type_data" :key="item.unid" :label="item.name" :value="item.code"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="合同金额" prop="contract_amount"> <el-input :disabled="disabled_list[0]==1" class="width-220" v-model="form.contract_amount" clearable></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="合同性质" prop="contract_type"> <el-select :disabled="disabled_list[0]==1" class="width-220" v-model="form.contract_type" clearable placeholder="合同性质"> <el-option v-for="item in contract_type_data" :key="item.unid" :label="item.name" :value="item.code"> </el-option> </el-select> </el-form-item> </el-col> </el-row> <el-row style="text-align:left"> <el-col :span="8"> <el-form-item label="维保服务期" prop="guarantee_date"> <el-date-picker :disabled="disabled_list[0]==1" style="width:220px;padding:0 0 0 10px" v-model="guarantee_date" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" :unlink-panels="true"> </el-date-picker> </el-form-item> </el-col> <el-col :span="15" style="text-align:left"> <el-form-item label="质保期"> <!-- <el-select :disabled="disabled_list[0]==1" v-model="form.mainten_start_point" clearable placeholder="开始节点"> <el-option v-for="item in mainten_start_point_data" :key="item.unid" :label="item.name" :value="item.code"> </el-option> </el-select> --> <el-date-picker v-model="this.mainten_start_date" type="date" placeholder="开始日期" value-format="yyyy-MM-dd" :disabled="true"> </el-date-picker> <el-date-picker v-model="this.mainten_end_date" type="date" placeholder="结束日期" value-format="yyyy-MM-dd" :disabled="true"> </el-date-picker> </el-form-item> </el-col> </el-row> <el-row style="text-align:left"> <el-col :span="8"> <el-form-item label="备注" prop="contract_note"> <el-input :disabled="disabled_list[0]==1" v-model="form.contract_note" type="textarea" :rows="5" style="width:220px"></el-input> </el-form-item> </el-col> <el-col :span="9"> <el-form-item label="上传文件" prop="contract_appendix_list"> <el-upload :disabled="disabled_list[0]==1" class="upload-demo" :action="upload_url" multiple :file-list="contract_appendix_list" :http-request="contract_upload" :on-preview="download_file" :on-remove="on_remove"> <el-tooltip class="item" effect="dark" content="上传后点击提交按钮生效" placement="top"> <el-button :disabled="disabled_list[0]==1" type="primary" style="width:200px">点击上传</el-button> </el-tooltip> </el-upload> </el-form-item> </el-col> </el-row> <el-row id="hide_wrapper" style="margin-bottom:10px"> <span id="hide_icon_text" @click="show_more">------- <i :class="hide_icon">{{hide_text}}</i> -------</span> </el-row> <el-collapse-transition> <div id="contract_hide" v-show="!hide_contract_info"> <el-row style="text-align:left"> <el-col :span="8"> <el-form-item label="合同状态" prop="contract_state"> <el-select :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.contract_state" clearable placeholder="合同状态"> <el-option v-for="item in contract_state_data" :key="item.unid" :label="item.name" :value="item.code"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="抵扣金额" prop="deduct_amount"> <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.deduct_amount" clearable></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="备注" prop="contract_amount_note"> <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.contract_amount_note" clearable></el-input> </el-form-item> </el-col> </el-row> <el-row style="text-align:left"> <el-col :span="8"> <el-form-item label="累计回款额"> <el-input class="width-220" v-model="total_reback_amount" :disabled="true" clearable></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="暂停金额" prop="stop_amount"> <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.stop_amount" clearable></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="备注" prop="reback_note"> <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.reback_note" clearable></el-input> </el-form-item> </el-col> </el-row> <el-row style="text-align:left"> <el-col :span="8"> <el-form-item label="合同余额"> <el-input class="width-220" v-model="contract_remaining" :disabled="true"></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="豁免金额" prop="exemptions_amount"> <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.exemptions_amount" clearable></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="备注" prop="contract_remain_note"> <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.contract_remain_note" clearable></el-input> </el-form-item> </el-col> </el-row> <el-row style="text-align:left"> <el-col :span="8"> <el-form-item label="合同是否归档" prop="is_archive"> <el-select :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.is_archive" clearable placeholder="请选择"> <el-option label="是" :value="true"></el-option> <el-option label="否" :value="false"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="坏账金额" prop="bad_amount"> <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.bad_amount" clearable></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="备注" prop="bad_amount_note"> <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.bad_amount_note" clearable></el-input> </el-form-item> </el-col> </el-row> <el-row style="text-align:left"> <el-col :span="8"> <el-form-item label="累计应收款"> <el-input id="total_receive_amount" class="width-220" v-model="total_receive_amount" :disabled="true"></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="应收账款余额"> <el-input class="width-220" v-model="total_leave_amount" :disabled="true"></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="逾期天数"> <el-input class="width-220" id="over_days" v-model="over_days_unid" :disabled="true"></el-input> </el-form-item> </el-col> </el-row> <el-row style="text-align:left"> <el-col :span="8"> <el-form-item label="确认收入金额" prop="confirm_income_amount"> <el-input :disabled="disabled_list[0]==1 && disabled_list[1] == 1" class="width-220" v-model="form.confirm_income_amount" clearable></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="账款状态" prop="amount_state_unid"> <el-select :disabled="true" class="width-220" v-model="get_amount_state" clearable placeholder="账款状态"> <el-option v-for="item in amount_state_unid_data" :key="item.unid" :label="item.name" :value="item.code"> </el-option> </el-select> </el-form-item> </el-col> </el-row> </div> </el-collapse-transition> </el-form> </transition> </el-card> <!-- 基本信息结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <!-- 付款约定开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <el-card class="box-card"> <div slot="header" class="clearfix"> <span style="font-size:24px;color:#eff0dc" @click="payments_show = !payments_show">付款约定</span> <el-button style="float: right; padding: 8px 0;color:#c9cabb" type="text" @click="form_submit('payment')" v-show="false">提交</el-button> </div> <transition name="el-fade-in-linear"> <div id="payments_data_table" v-show="payments_show"> <el-table :data="payments_data" style="width: 100%"> <el-table-column prop="payment_progress" label="付款进度" min-width="80" align="center"> <!-- <template slot-scope="scope"> {{scope.$index + 1}} </template> --> </el-table-column> <el-table-column label="付款类型" min-width="120" align="center"> <template slot-scope="scope"> {{get_payment_type(scope.$index)}} </template> </el-table-column> <el-table-column prop="days" label="天数" min-width="80" align="center"> </el-table-column> <el-table-column label="付款比例(%)" min-width="100" align="center"> <template slot-scope="scope"> {{payments_data[scope.$index].payment_propority * 100}} </template> </el-table-column> <el-table-column label="本期应付款日期" min-width="120" align="center"> <template slot-scope="scope"> {{get_pay_date(scope.$index)}} </template> </el-table-column> <el-table-column prop="amount" label="本期应付款金额" min-width="120" align="center"> <template slot-scope="scope"> {{get_pay_amount(scope.$index).toFixed(2)}} </template> </el-table-column> <el-table-column prop="payment_requirement" label="本期付款条件" min-width="300" align="center"> </el-table-column> <el-table-column label="操作" width="140" align="center"> <template slot-scope="scope"> <el-button-group> <el-button @click.native.prevent="payment_data_modify(scope.$index, payments_data)" type="primary" size="mini" round :disabled="disabled_list[0]==1"> 修改 </el-button> <el-button @click.native.prevent="data_delete(scope.$index, payments_data,'payments')" type="danger" size="mini" round :disabled="disabled_list[0]==1"> 移除 </el-button> </el-button-group> </template> </el-table-column> </el-table> <el-row> <el-button class="add_button" type="text" @click="payments_dialog_show = true" :disabled="disabled_list[0]==1">添加付款约定</el-button> </el-row> </div> </transition> </el-card> <!-- 付款约定弹出框 --> <el-dialog id="payments_dialog" title="付款约定" :visible.sync="payments_dialog_show" width="30%" :show-close="false"> <el-form :model="payments_form" label-width="150px" label-position="left" :rules="add_rules" ref="payments_form"> <el-form-item label="付款类型" prop="payment_type"> <el-select v-model="payments_form.payment_type" clearable placeholder="付款类型" style="width:100%"> <el-option v-for="item in payment_type_data" :key="item.unid" :label="item.name" :value="item.code"> </el-option> </el-select> </el-form-item> <el-form-item label="天数" prop="days"> <el-input v-model="payments_form.days" placeholder="请输入天数" style="width:100%" clearable></el-input> </el-form-item> <el-form-item label="付款比例" prop="payment_propority"> <el-input-number v-model="payments_form.payment_propority" :step="5" :min="0" :max="100" style="width:100%"></el-input-number> </el-form-item> <el-form-item label="条件" prop="payment_requirement"> <el-input v-model="payments_form.payment_requirement" type="textarea" :rows="2" style="width:100%"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="payments_dialog_cancel()">取 消</el-button> <el-button type="primary" @click="payments_dialog_confirm()">确 定</el-button> </div> </el-dialog> <!-- 付款约定结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <!-- 工程验收信息开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <el-card class="box-card"> <div slot="header" class="clearfix"> <span style="font-size:24px;color:#eff0dc" @click="acceptanc_show = !acceptanc_show">工程验收信息(工程部)</span> <el-button style="float: right; padding: 8px 0;color:#c9cabb" type="text" @click="form_submit('project')" v-show="disabled_list[3]!=1">提交</el-button> </div> <transition name="el-fade-in-linear"> <div id="acceptanc_form" v-show="acceptanc_show"> <el-form :inline="true" :model="first_acceptancs_form" class="demo-form-inline" label-width="100px" :rules="acceptanc_form_rules" ref="first_acceptancs_form" :disabled="disabled_list[3]==1"> <el-row> <el-col :span="8"> <el-tooltip class="item" effect="dark" content="填写初验必须填写终验" placement="top"> <el-form-item label="是否初验" prop="acceptanc_type"> <el-select class="width-220" v-model="first_acceptancs_form.acceptanc_type" clearable> <el-option label="是" value="1"> </el-option> <el-option label="否" value=""> </el-option> </el-select> </el-form-item> </el-tooltip> </el-col> <el-col :span="8"> <el-form-item label="项目验收日期" prop="acceptanc_date"> <el-date-picker class="width-220" v-model="first_acceptancs_form.acceptanc_date" type="date" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="备注"> <el-input class="width-220" type="textarea" :rows="2" v-model="first_acceptancs_form.acceptanc_note" placeholder="备注" clearable></el-input> </el-form-item> </el-col> </el-row> <el-row> <el-form-item lalel="上传附件"> <el-upload class="upload-demo" :action="upload_url" multiple :file-list="first_acceptancs_appendix_list" :http-request="first_acceptances_upload" :on-preview="download_file" :on-remove="on_remove"> <el-tooltip class="item" effect="dark" content="上传后点击提交按钮生效" placement="top"> <el-button type="primary">点击上传</el-button> </el-tooltip> </el-upload> </el-form-item> </el-row> </el-form> <el-form :inline="true" :model="final_acceptancs_form" class="demo-form-inline" label-width="100px" :rules="acceptanc_form_rules2" ref="final_acceptancs_form" :disabled="disabled_list[3]==1"> <el-row> <el-col :span="8"> <el-tooltip class="item" effect="dark" content="填写初验必须填写终验" placement="top"> <el-form-item label="是否终验" prop="acceptanc_type"> <el-select class="width-220" v-model="final_acceptancs_form.acceptanc_type" clearable> <el-option label="是" value="2"> </el-option> <el-option label="否" value=""> </el-option> </el-select> </el-form-item> </el-tooltip> </el-col> <el-col :span="8"> <el-form-item label="项目验收日期" prop="acceptanc_date"> <el-date-picker class="width-220" v-model="final_acceptancs_form.acceptanc_date" type="date" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="备注"> <el-input class="width-220" type="textarea" :rows="2" v-model="final_acceptancs_form.acceptanc_note" placeholder="备注" clearable></el-input> </el-form-item> </el-col> </el-row> <el-row> <el-form-item lalel="上传附件"> <el-upload class="upload-demo" :action="upload_url" multiple :file-list="acceptancs_appendix_list" :http-request="acceptances_upload" :on-preview="download_file" :on-remove="on_remove"> <el-tooltip class="item" effect="dark" content="上传后点击提交按钮生效" placement="top"> <el-button type="primary">点击上传</el-button> </el-tooltip> </el-upload> </el-form-item> </el-row> </el-form> </div> </transition> </el-card> <!-- 工程验收信息结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <!-- 合同回款信息开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <el-card class="box-card"> <div slot="header" class="clearfix"> <span style="font-size:24px;color:#eff0dc" @click="rebacks_show = !rebacks_show">合同回款信息(财务部)</span> <el-button style="float: right; padding: 8px 0;color:#c9cabb" type="text" @click="form_submit('reback')" v-show="disabled_list[1]!=1">提交</el-button> </div> <transition name="el-fade-in-linear"> <div id="rebacks_data_table" v-show="rebacks_show"> <el-table :data="rebacks_data" style="width:100%"> <el-table-column label="回款进度" prop="reback_progress" min-width="100" align="center"> <!-- <template slot-scope="scope"> {{scope.$index + 1}} </template> --> </el-table-column> <el-table-column prop="actual_reback_amount" label="实际回款金额" min-width="200" align="center"> </el-table-column> <el-table-column label="回款比例(%)" min-width="100" align="center"> <template slot-scope="scope"> {{reback_propority_cal(scope.$index)}} </template> </el-table-column> <el-table-column prop="reback_date" label="回款日期" min-width="200" align="center"> </el-table-column> <el-table-column prop="reback_note" label="回款备注" min-width="300" align="center"> </el-table-column> <el-table-column label="操作" width="140" align="center"> <template slot-scope="scope"> <el-button-group> <el-button @click.native.prevent="reback_data_modify(scope.$index, rebacks_data)" type="primary" size="mini" round :disabled="disabled_list[1]==1"> 修改 </el-button> <el-button @click.native.prevent="data_delete(scope.$index, rebacks_data,'rebacks')" type="danger" size="mini" round :disabled="disabled_list[1]==1"> 移除 </el-button> </el-button-group> </template> </el-table-column> </el-table> <el-row> <el-button class="add_button" type="text" @click="rebacks_dialog_show = true" :disabled="disabled_list[1]==1">添加合同回款信息</el-button> </el-row> </div> </transition> </el-card> <!-- 合同回款信息弹出框 --> <el-dialog id="rebacks_dialog" title="回款信息" :visible.sync="rebacks_dialog_show" width="30%" :show-close="false"> <el-form :model="rebacks_form" label-width="150px" label-position="left" :rules="rebacks_form_rules" ref="rebacks_form"> <el-form-item label="实际回款金额" prop="actual_reback_amount"> <el-input v-model="rebacks_form.actual_reback_amount" placeholder="请输入金额" style="width:100%" clearable></el-input> </el-form-item> <el-form-item label="回款日期" prop="reback_date"> <el-date-picker style="width:100%" v-model="rebacks_form.reback_date" type="date" value-format="yyyy-MM-dd" clearable> </el-date-picker> </el-form-item> <el-form-item label="备注" prop="reback_note"> <el-input v-model="rebacks_form.reback_note" placeholder="备注" style="width:100%" type="textarea" :rows="2"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="rebacks_dialog_cancel()">取 消</el-button> <el-button type="primary" @click="rebacks_dialog_confirm()">确 定</el-button> </div> </el-dialog> <!-- 合同回款信息结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <!-- 合同开票信息开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <el-card class="box-card"> <div slot="header" class="clearfix"> <span style="font-size:24px;color:#eff0dc" @click="receipts_show = !receipts_show">合同开票信息(财务部)</span> <el-button style="float: right; padding: 8px 0;color:#c9cabb" type="text" @click="form_submit('receipt')" v-show="disabled_list[1]!=1">提交</el-button> </div> <transition name="el-fade-in-linear"> <div id="receipts_data_table" v-show="receipts_show"> <el-table :data="receipts_data" style="width: 100%"> <el-table-column prop="receipt_progress" label="开票进度" min-width="100" align="center"> </el-table-column> <el-table-column prop="receipt_amount" label="开票金额" min-width="150" align="center"> </el-table-column> <el-table-column prop="oa_flow_id" label="OA流水号" min-width="150" align="center"> </el-table-column> <el-table-column label="开票比例(%)" min-width="100" align="center"> <template slot-scope="scope"> {{receipt_propority_cal(scope.$index)}} </template> </el-table-column> <el-table-column label="累计开票金额" min-width="200" align="center"> <template slot-scope="scope"> {{total_receipt_amount_cal(scope.$index)}} </template> </el-table-column> <el-table-column label="是否回款" min-width="100" align="center"> <template slot-scope="scope"> {{is_reback_cal(scope.$index)}} </template> </el-table-column> <el-table-column prop="receipt_note" label="备注" min-width="300" align="center"> </el-table-column> <el-table-column label="操作" width="140" align="center"> <template slot-scope="scope"> <el-button-group> <el-button @click.native.prevent="receipt_data_modify(scope.$index, receipts_data)" type="primary" size="mini" round :disabled="disabled_list[1]==1"> 修改 </el-button> <el-button @click.native.prevent="data_delete(scope.$index, receipts_data,'receipts')" type="danger" size="mini" round :disabled="disabled_list[1]==1"> 移除 </el-button> </el-button-group> </template> </el-table-column> </el-table> <el-row> <el-button class="add_button" type="text" @click="receipts_dialog_show = true" :disabled="disabled_list[1]==1">添加开票信息</el-button> </el-row> </div> </transition> </el-card> <!-- 开票信息弹出框 --> <el-dialog id="receipts_dialog" title="开票合同" :visible.sync="receipts_dialog_show" width="30%" :show-close="false"> <el-form :model="receipts_form" label-width="150px" label-position="left" :rules="receipts_form_rules" ref="receipts_form"> <el-form-item label="开票金额" prop="receipt_amount"> <el-input v-model="receipts_form.receipt_amount" placeholder="请输入金额" style="width:100%"></el-input> </el-form-item> <el-form-item label="OA流水号" prop="oa_flow_id"> <el-input v-model="receipts_form.oa_flow_id" placeholder="请输入流水号" style="width:100%"></el-input> </el-form-item> <el-form-item label="备注" prop="receipt_note"> <el-input v-model="receipts_form.receipt_note" placeholder="备注" style="width:100%" type="textarea" :rows="2"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="receipts_dialog_cancel()">取 消</el-button> <el-button type="primary" @click="receipts_dialog_confirm()">确 定</el-button> </div> </el-dialog> <!-- 合同开票信息结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <!-- 发货信息开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <el-card class="box-card" id="tail"> <div slot="header" class="clearfix"> <span style="font-size:24px;color:#eff0dc" @click="delivers_show = !delivers_show">发货信息(生产部)</span> <el-button style="float: right; padding: 8px 0;color:#c9cabb" type="text" @click="form_submit('deliver')" v-show="disabled_list[2]!=1">提交</el-button> </div> <transition name="el-fade-in-linear"> <div id="delivers_data_table" v-show="delivers_show"> <el-table :data="delivers_data" style="width: 100%"> <el-table-column prop="deliver_goods_date" label="发货日期" width="300" align="center"> </el-table-column> <el-table-column prop="goods_acceptanc_date" label="到货验收日期" width="300" align="center"> </el-table-column> <el-table-column min-width="10" align="center"> </el-table-column> <el-table-column label="操作" width="140" align="center"> <template slot-scope="scope"> <el-button-group> <el-button :disabled="disabled_list[2]==1" @click.native.prevent="deliver_data_modify(scope.$index, delivers_data)" type="primary" size="mini" round> 修改 </el-button> <el-button :disabled="disabled_list[2]==1" @click.native.prevent="data_delete(scope.$index, delivers_data,'delivers')" type="danger" size="mini" round> 移除 </el-button> </el-button-group> </template> </el-table-column> </el-table> <el-row> <el-button class="add_button" type="text" @click="delivers_dialog_show = true" :disabled="disabled_list[2]==1">添加发货信息</el-button> </el-row> </div> </transition> </el-card> <!-- 发货信息信息弹出框 --> <el-dialog id="delivers_dialog" title="发货信息" :visible.sync="delivers_dialog_show" width="30%" :show-close="false"> <el-form :model="delivers_form" label-width="150px" label-position="left" :rules="add_rules" ref="delivers_form"> <el-form-item label="发货日期" prop="deliver_goods_date"> <el-date-picker style="width:100%" v-model="delivers_form.deliver_goods_date" type="date" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> <el-form-item label="到货验收日期" prop="goods_acceptanc_date"> <el-date-picker style="width:100%" v-model="delivers_form.goods_acceptanc_date" type="date" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> <el-form-item label="上传文件"> <el-upload class="upload-demo" :action="upload_url" multiple :file-list="delivers_form.delivers_appendix_list" :http-request="delivers_upload" :on-preview="download_file" :on-remove="on_remove"> <el-tooltip class="item" effect="dark" content="上传后点击提交按钮生效" placement="top"> <el-button type="primary">点击上传</el-button> </el-tooltip> </el-upload> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="delivers_dialog_cancel()">取 消</el-button> <el-button type="primary" @click="delivers_dialog_confirm()">确 定</el-button> </div> </el-dialog> <!-- 发货信息结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> </div> </template> <script> const twodecimalrule = { pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, message: "请填写正确金额", trigger: "blur" }; export default { name: "contract_information", data() { return { hide_icon: "icon i-arrowdown-copy", hide_text: "显示更多", hide_contract_info: true, contract_unid_disabled: false, disabled_list: [1, 1, 1, 1], contract_appendix_list: [], acceptancs_appendix_list: [], first_acceptancs_appendix_list: [], operate_type: [0, 0, 0, 0, 0, 0], //整个页面的操作类型,一共6个表单,0表示新增,1表示修改 code_base_url: this.$disparch_data.code_base_url, contract_base_url: this.$disparch_data.contract_base_url, auth_base_url: this.$disparch_data.auth_base_url, contract_unid_selected_data: [], //合同编号数据数组 salesperson_unid_selected_data: [], //销售人员数据数组 project_unid_selected_data: [], //项目名称数据数组 customer_unid_selected_data: [], //客户名称数据数组 provinces: [], cities: [], // counties: [], modify_data: false, //用来标志dialog用来修改数据 modify_index: -1, //用来标志修改数据的索引 payment_type_data: [], product_line_type_data: [], contract_state_data: [], contract_type_data: [], amount_state_unid_data: [], // mainten_start_point_data: [], guarantee_date: [,], //维保服务期,数组形式的日期,0开始,1结束。 // show and display~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ payments_dialog_show: false, receipts_dialog_show: false, rebacks_dialog_show: false, delivers_dialog_show: false, payments_show: true, contract_show: true, rebacks_show: true, receipts_show: true, delivers_show: true, acceptanc_show: true, // show and display~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ form: { // 合同编号 contract_unid: null, //销售员 salesperson_unid: null, // 项目名称 project_unid: null, // 客户名称 customer_unid: null, // 项目所在省 province_value: "", // // 项目所在市 city_value: "", // // 项目所在区 // county_value: "", // 质保周期 guarantee_period: 6, // 签订时间 sign_date: "", // 产品线类型 product_line_type: null, // 合同状态 contract_state: "30003", // 合同类型 contract_type: null, // 合同金额 contract_amount: null, // 抵扣金额 deduct_amount: null, // 合同金额备注 contract_amount_note: "", // 暂停金额 stop_amount: null, // 累计回款额备注 reback_note: "", // 豁免金额 exemptions_amount: null, // 合同余额备注 contract_remain_note: "", // 是否归档 is_archive: "", // 坏账金额 bad_amount: null, // 坏账金额备注 bad_amount_note: "", // 确定收入金额 confirm_income_amount: "", // 账款状态 amount_state_unid: "", // 质保期开始 // mainten_start_point: null, // 合同备注 contract_note: "", // 合同附件 appendix_unids: [], start_guarantee_date: "", end_guarantee_date: "" }, // 工程验收表单 first_acceptancs_form: { acceptanc_unid: "", acceptanc_type: "", acceptanc_date: "", acceptanc_note: "", appendix_unids: [] }, final_acceptancs_form: { acceptanc_unid: "", acceptanc_type: "", acceptanc_date: "", acceptanc_note: "", appendix_unids: [] }, // 发货信息表单和数据,提交时提交data里的数据 delivers_data: [], delivers_form: { deliver_unid: null, deliver_goods_date: "", goods_acceptanc_date: "", appendix_unids: [], delivers_appendix_list: [] }, // 付款约定表单和数据,提交时提交data里的数据 payments_data: [], payments_form: { payment_unid: null, payment_type: "", days: "", payment_propority: "", payment_requirement: "" }, // 回款信息表单和数据,提交时提交data里的数据 rebacks_data: [], rebacks_form: { reback_unid: null, actual_reback_amount: null, reback_date: "", reback_note: "" }, // 开票信息表单和数据,提交时提交data里的数据 receipts_data: [], receipts_form: { receipt_unid: null, receipt_amount: null, oa_flow_id: "", receipt_note: "" }, // 表单验证~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ add_rules: { project_unid: { required: true, message: "不能为空", trigger: "blur" }, customer_unid: { required: true, message: "不能为空", trigger: "blur" }, contract_unid: { required: true, message: "不能为空", trigger: "blur" }, contract_amount: twodecimalrule, deduct_amount: twodecimalrule, stop_amount: twodecimalrule, exemptions_amount: twodecimalrule, bad_amount: twodecimalrule, confirm_income_amount: twodecimalrule, payment_type: { required: true, message: "类型不能为空", trigger: "blur" }, days: { required: true, pattern: /(^[1-9](\d*)$)|(^0$)/, message: "请输入正确天数", trigger: "blur" }, deliver_goods_date: { validator: (rule, value, callback) => { if (value == "") { callback(new Error("时间不能为空")); } else callback(); }, trigger: "blur" }, goods_acceptanc_date: { validator: (rule, value, callback) => { if (value == "") { callback(new Error("时间不能为空")); } else if ( this.delivers_form.deliver_goods_date && value < this.delivers_form.deliver_goods_date ) { callback(new Error("到货验收时间不能小于发货时间")); } else callback(); }, trigger: "blur" } }, rebacks_form_rules: { actual_reback_amount: { required: true, validator: (rule, value, callback) => { if (parseFloat(this.form.contract_amount) < parseFloat(value)) { callback(new Error("实际回款金额不能大于合同金额")); } else if ( !/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test( value ) ) { callback(new Error("请填写正确金额")); } else callback(); }, trigger: "blur" }, reback_date: { required: true, message: "不能为空", trigger: "blur" } }, receipts_form_rules: { receipt_amount: { required: true, validator: (rule, value, callback) => { if (parseFloat(this.form.contract_amount) < parseFloat(value)) { callback(new Error("开票金额不能大于合同金额")); } else if ( !/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test( value ) ) { callback(new Error("请填写正确金额")); } else callback(); }, trigger: "blur" }, oa_flow_id: { required: true, message: "请输入流水号", trigger: "blur" } }, acceptanc_form_rules: { acceptanc_date: { validator: (rule, value, callback) => { if ( this.first_acceptancs_form.acceptanc_type == "1" && value == null ) { callback(new Error("请填写时间")); } else callback(); }, trigger: "blur" } }, acceptanc_form_rules2: { acceptanc_date: { validator: (rule, value, callback) => { var a = this.final_acceptancs_form.acceptanc_type; if (a == "2" && value == null) { callback(new Error("请填写时间")); } else callback(); }, trigger: "blur" }, //callback必须返回 acceptanc_type: { validator: (rule, value, callback) => { if ( this.first_acceptancs_form.acceptanc_type == "1" && value != "2" ) { callback(new Error("初验必须终验")); } else { callback(); } } } } // 表单验证~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ }; }, computed: { get_amount_state() { var now_date = new Date().getFullYear() + "-" + (new Date().getMonth() + 1) + "-" + new Date().getDate(); var over = { amount_state: null, weight: -1 }; var normal = { amount_state: null }; var amount = 0; var contract_amount = this.form.contract_amount; var total_reback_amount = this.total_reback_amount; this.payments_data.forEach(e => { var _this = this; switch (e.payment_type) { //预付款和维保款的判断 case "100001": if (_this.form.sign_date) { amount += e.payment_propority * parseFloat(contract_amount); //小于说明逾期了,然后再判断钱 if ( _this.date_diff( now_date, _this.date_add_days(_this.form.sign_date, e.days) ) > 0 && amount > total_reback_amount ) { over.weight = 8; if (_this.form.contract_type != "40003") { over.amount_state = "50006"; //逾期预付款 } else { over.amount_state = "50012"; //逾期维保款 } } else { if (_this.form.contract_type != "40003") { normal.amount_state = "50003"; //正常预付款 } else { normal.amount_state = "50002"; //正常维保款 } } } break; //到货款 case "100002": case "100004": if ( _this.delivers_data[0] && _this.delivers_data[0].goods_acceptanc_date ) { amount += e.payment_propority * parseFloat(contract_amount); if ( _this.date_diff( now_date, _this.date_add_days( _this.delivers_data[_this.delivers_data.length - 1] .goods_acceptanc_date, e.days ) ) > 0 && amount > total_reback_amount ) { if (e.payment_type == "100002" && over.weight < 8) { over.weight = 7; over.amount_state = "50007"; //逾期到货款 } else if (over.weight < 6) { over.weight = 5; over.amount_state = "50009"; //逾期质保款 } } else { if (e.payment_type == "100002") { normal.amount_state = "50004"; //正常到货款 } else { normal.amount_state = "50005"; //正常质保款 } } } break; case "100003": case "100005": if (_this.final_acceptancs_form.acceptanc_date) { amount += e.payment_propority * parseFloat(contract_amount); if ( _this.date_diff( now_date, _this.date_add_days( _this.final_acceptancs_form.acceptanc_date, e.days ) ) > 0 && amount > total_reback_amount ) { if (e.payment_type == "100003" && over.weight < 7) { over.weight = 6; over.amount_state = "50008"; //逾期验收款 } else if (over.weight < 6) { over.weight = 5; over.amount_state = "50009"; //逾期质保款 } } else { if (e.payment_type == "100003") { normal.amount_state = "50001"; //正常验收款 } else { normal.amount_state = "50005"; //正常质保款 } } } break; default: break; } }); if (over.weight > 0) { return over.amount_state; } else { return normal.amount_state; } }, get_province_unid() { if (this.form.province_value) { return this.form.province_value.split("#")[0]; } }, get_province_name() { if (this.form.province_value) { return this.form.province_value.split("#")[1]; } }, get_city_unid() { if (this.form.city_value) { return this.form.city_value.split("#")[0]; } }, get_city_name() { if (this.form.city_value) { return this.form.city_value.split("#")[1]; } }, // get_county_unid() { // if (this.form.county_value) { // return this.form.county_value.split("#")[0]; // } // }, // get_county_name() { // if (this.form.county_value) { // return this.form.county_value.split("#")[1]; // } // }, get_year() { if (this.form.sign_date) { var date = this.form.sign_date; return date.slice(0, 4); } }, get_month() { if (this.form.sign_date) { var date = this.form.sign_date; return date.slice(5, 7); } }, // 上传附件地址 upload_url: function() { return ( this.contract_base_url + this.form.contract_unid + "/upload/appendixes" ); }, // 合同余额 contract_remaining: function() { var a = this.form.contract_amount - this.form.deduct_amount - this.total_reback_amount - this.form.stop_amount - this.form.exemptions_amount - this.form.bad_amount; if (isNaN(a)) { return null; } else { return a.toFixed(2); } }, // 累计回款额 total_reback_amount: function() { var total = 0; for (let i = 0; i < this.rebacks_data.length; i++) { const e = this.rebacks_data[i]; if (e.actual_reback_amount) { total += parseFloat(e.actual_reback_amount); } } return total.toFixed(2); }, //累计应收款 total_receive_amount: function() { var total = 0; var now = new Date(); var now_date = now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + now.getDate(); for (let i = 0; i < this.payments_data.length; i++) { const e = this.payments_data[i]; if (this.date_diff(now_date, this.get_pay_date(i)) >= 0) { total += parseFloat(this.get_pay_amount(i)); } } return total.toFixed(2); }, // 应收账款余额 total_leave_amount: function() { var a = this.total_receive_amount - this.total_reback_amount - this.form.deduct_amount - this.form.stop_amount - this.form.exemptions_amount - this.form.bad_amount; if (isNaN(a)) { return null; } else { return a.toFixed(2); } }, // 逾期天数 over_days_unid: function() { var pay_date = ""; var now = new Date(); var now_date = now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + now.getDate(); var amount = 0; var days = 0; for (let i = 0; i < this.payments_data.length; i++) { const element = this.payments_data[i]; pay_date = this.get_pay_date(i); var pay_amount = this.get_pay_amount(i); amount += pay_amount; var a = this.date_diff(now_date, pay_date); if (a > 0 && (amount > this.total_reback_amount && a > days)) { days = a; } } return days; }, // 维保服务期开始时间 start_guarantee_date: function() { if (this.guarantee_date && this.guarantee_date[0]) { return this.guarantee_date[0]; } }, // 维保服务期结束时间 end_guarantee_date: function() { if (this.guarantee_date && this.guarantee_date[1]) { return this.guarantee_date[1]; } }, mainten_start_date: function() { // if ( // this.form.mainten_start_point == "60001" && // this.form.sign_date && // this.form.guarantee_period // ) { // return this.form.sign_date; // } else if ( // this.form.mainten_start_point == "60002" && // this.delivers_data[0] // ) { // var index = this.delivers_data.length - 1; // return this.delivers_data[index].goods_acceptanc_date; // } else if ( // this.form.mainten_start_point == "60003" && this.final_acceptancs_form.acceptanc_type == "2" && this.final_acceptancs_form.acceptanc_date != null ) { return this.final_acceptancs_form.acceptanc_date; } }, mainten_end_date: function() { // if ( // this.form.mainten_start_point == "60001" && // this.form.sign_date && // this.form.guarantee_period // ) { // return this.date_add_month( // this.form.sign_date, // this.form.guarantee_period // ); // } else if ( // this.form.mainten_start_point == "60002" && // this.delivers_data[0] // ) { // var index = this.delivers_data.length - 1; // return this.date_add_month( // this.delivers_data[index].goods_acceptanc_date, // this.form.guarantee_period // ); // } else if ( // this.form.mainten_start_point == "60003" && this.final_acceptancs_form.acceptanc_type == "2" && this.final_acceptancs_form.acceptanc_date != null ) { return this.date_add_month( this.final_acceptancs_form.acceptanc_date, this.form.guarantee_period ); } } }, // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // methods++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ methods: { show_more() { this.hide_contract_info = !this.hide_contract_info; this.hide_contract_info == true ? (this.hide_text = "显示更多") : (this.hide_text = "收起"); this.hide_contract_info == true ? (this.hide_icon = "icon i-arrowdown-copy") : (this.hide_icon = "icon i-arrowup"); }, download_file(f) { window.open(f.url); }, // upload+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ contract_upload(f) { let param = new FormData(); //创建form对象 param.append("appendix_files", f.file); //通过append向form对象添加数据 param.append("business_table", "contracts"); //添加form表单中其他数据 var xhr = new XMLHttpRequest(); xhr.open("post", f.action, true); var _this = this; xhr.onerror = function() { _this.$message.err("上传失败"); }; xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200 && !xhr.response.encode) { var a = JSON.parse(xhr.response); var b = {}; b.name = a[0].appendix_name; b.url = a[0].appendix_url; b.appendix_unid = a[0].appendix_unid; _this.contract_appendix_list.push(b); _this.form.appendix_unids.push(b.appendix_unid); _this.$message({ message: "成功", type: "success" }); } else { _this.$message({ message: "失败", type: "error" }); } }; xhr.send(param); }, delivers_upload(f) { let param = new FormData(); //创建form对象 param.append("appendix_files", f.file); //通过append向form对象添加数据 param.append("business_table", "delivers"); //添加form表单中其他数据 var xhr = new XMLHttpRequest(); xhr.open("post", f.action, true); var _this = this; xhr.onerror = function() { _this.$message.err("上传失败"); }; xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200 && !xhr.response.encode) { var a = JSON.parse(xhr.response); var b = {}; b.name = a[0].appendix_name; b.url = a[0].appendix_url; b.appendix_unid = a[0].appendix_unid; _this.delivers_form.appendix_unids.push(b.appendix_unid); _this.delivers_form.delivers_appendix_list.push(b); _this.$message({ message: "成功", type: "success" }); } else { _this.$message({ message: "失败", type: "error" }); } }; xhr.send(param); }, acceptances_upload(f) { let param = new FormData(); //创建form对象 param.append("appendix_files", f.file); //通过append向form对象添加数据 param.append("business_table", "acceptance"); //添加form表单中其他数据 var xhr = new XMLHttpRequest(); xhr.open("post", f.action, true); var _this = this; xhr.onerror = function() { _this.$message.err("上传失败"); }; xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200 && !xhr.response.encode) { var a = JSON.parse(xhr.response); var b = {}; b.name = a[0].appendix_name; b.url = a[0].appendix_url; b.appendix_unid = a[0].appendix_unid; _this.final_acceptancs_form.appendix_unids.push(b.appendix_unid); _this.acceptancs_appendix_list.push(b); _this.$message({ message: "成功", type: "success" }); } else { _this.$message({ message: "失败", type: "error" }); } }; xhr.send(param); }, first_acceptances_upload(f) { let param = new FormData(); //创建form对象 param.append("appendix_files", f.file); //通过append向form对象添加数据 param.append("business_table", "acceptance"); //添加form表单中其他数据 var xhr = new XMLHttpRequest(); xhr.open("post", f.action, true); var _this = this; xhr.onerror = function() { _this.$message.err("上传失败"); }; xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200 && !xhr.response.encode) { var a = JSON.parse(xhr.response); var b = {}; b.name = a[0].appendix_name; b.url = a[0].appendix_url; b.appendix_unid = a[0].appendix_unid; _this.first_acceptancs_form.appendix_unids.push(b.appendix_unid); _this.first_acceptancs_appendix_list.push(b); _this.$message({ message: "成功", type: "success" }); } else { _this.$message({ message: "失败", type: "error" }); } }; xhr.send(param); }, on_remove(file, fileList) { this.$alert("暂时不能删除"); }, // upload+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ total_receipt_amount_cal(index) { var total_receipt_amount = 0; for (let i = index; i >= 0; i--) { total_receipt_amount += parseFloat( this.receipts_data[i].receipt_amount ); } return parseFloat(total_receipt_amount).toFixed(2); }, is_reback_cal(index) { var total_receipt_amount = 0; for (let i = index; i >= 0; i--) { total_receipt_amount += parseFloat( this.receipts_data[i].receipt_amount ); } if (this.total_reback_amount >= total_receipt_amount) { return "是"; } else { return "否"; } }, receipt_propority_cal(index) { var receipt_propority = 0; if (this.form.contract_amount) { receipt_propority = ( this.receipts_data[index].receipt_amount * 100 / this.form.contract_amount ).toFixed(2); } return receipt_propority; }, reback_propority_cal(index) { var reback_propority = 0; if (this.form.contract_amount) { reback_propority = this.rebacks_data[index].actual_reback_amount / this.form.contract_amount * 100; } return parseFloat(reback_propority).toFixed(2); }, // dialog_cancel~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ payments_dialog_cancel() { this.modify_data = false; this.payments_form = {}; this.payments_dialog_show = false; }, rebacks_dialog_cancel() { this.modify_data = false; this.rebacks_form = {}; this.rebacks_dialog_show = false; }, receipts_dialog_cancel() { this.modify_data = false; this.receipts_form = {}; this.receipts_dialog_show = false; }, delivers_dialog_cancel() { this.modify_data = false; this.delivers_form = { appendix_unids: [], delivers_appendix_list: [] }; this.delivers_dialog_show = false; }, // dialog_cancel~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // date_methods~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ date_diff(date1, date2) { if (date1 && date2) { var date1s = date1.split("-"); var date2s = date2.split("-"); var days = parseInt( (new Date(date1s[0], date1s[1] - 1, date1s[2]).getTime() - new Date(date2s[0], date2s[1] - 1, date2s[2]).getTime()) / 1000 / 60 / 60 / 24 ); return days; } }, date_add_days(datestr, daynum) { if (datestr && daynum != null) { var date_str = datestr; var date = new Date(date_str.replace(/-/g, "/")); date = new Date((date / 1000 + 86400 * daynum) * 1000); var result_date = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(); return result_date; } }, date_add_month(datestr, month) { if (datestr && month) { var dates = datestr.split("-"); var date = new Date(dates[0], dates[1] - 1 + month, dates[2]); return date .toLocaleDateString() .match(/\d+/g) .join("-"); } }, // date_methods~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // remoteMethod~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ get_contract_unid() { this.$Axios({ method: "get", url: this.contract_base_url + "codes" }) .then(response => { this.contract_unid_selected_data = response.data; }) .catch(err => { console.log(err.message); }); }, get_salesperson() { this.$Axios({ method: "get", url: this.auth_base_url + "users", params: { norm_type: "employee" } }) .then(response => { this.salesperson_unid_selected_data = response.data.list_data; }) .catch(err => { console.log(err.message); }); }, // remoteMethod~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // dialog_confirm_start~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ payments_dialog_confirm() { this.$refs["payments_form"].validate(valid => { if (valid) { var payment_unid = this.payments_form.payment_unid; var days = this.payments_form.days; var propority = parseFloat(this.payments_form.payment_propority) / 100; var requirement = this.payments_form.payment_requirement; var type_value = this.payments_form.payment_type; // 总比例为1,用1减去每个已存的比例,剩下的如果小于本次比例,那么添加不成功 var total_propority = 1; for (let i = 0; i < this.payments_data.length; i++) { const e = this.payments_data[i]; if (! this.modify_data) { total_propority -= e.payment_propority; }else if (i != this.modify_index) { total_propority -= e.payment_propority; }{ } if ( ((type_value == "100004" || type_value == "100005") && (e.payment_type == "100004" || e.payment_type == "100005")) || type_value == e.payment_type ) { if (!(this.modify_data && this.modify_index == i)) { this.payments_form = {}; this.modify_data = false; this.payments_dialog_show = false; this.$message.error("只能出现一次"); return; } } } if (total_propority < propority) { this.$message.error("请检查付款比例是否正确"); return; } var a = { payment_unid: payment_unid, payment_type: type_value, days: days, payment_propority: propority, payment_requirement: requirement }; if (!this.modify_data) { if (this.payments_data.length > 0) { a.payment_progress = this.payments_data[this.payments_data.length - 1] .payment_progress + 1; } else { a.payment_progress = 1; } this.payments_data.push(a); } else { a.payment_progress = this.payments_data[ this.modify_index ].payment_progress; this.$set(this.payments_data, this.modify_index, a); } this.payments_form = {}; this.modify_data = false; this.payments_dialog_show = false; } }); }, receipts_dialog_confirm() { this.$refs["receipts_form"].validate(valid => { if (valid) { var receipt_unid = this.receipts_form.receipt_unid; var receipt_amount = parseFloat(this.receipts_form.receipt_amount); var oa_flow_id = this.receipts_form.oa_flow_id; var receipt_note = this.receipts_form.receipt_note; var a = { receipt_unid: receipt_unid, receipt_amount: parseFloat(receipt_amount).toFixed(2), oa_flow_id: oa_flow_id, receipt_note: receipt_note }; if (!this.modify_data) { if (this.receipts_data.length > 0) { a.receipt_progress = this.receipts_data[this.receipts_data.length - 1] .receipt_progress + 1; } else { a.receipt_progress = 1; } this.receipts_data.push(a); } else { a.receipt_progress = this.receipts_data[ this.modify_index ].receipt_progress; this.$set(this.receipts_data, this.modify_index, a); } this.modify_data = false; this.receipts_form = {}; this.receipts_dialog_show = false; } }); }, rebacks_dialog_confirm() { this.$refs["rebacks_form"].validate(valid => { if (valid) { var actual_reback_amount = this.rebacks_form.actual_reback_amount; var reback_unid = this.rebacks_form.reback_unid; var reback_date = this.rebacks_form.reback_date; var reback_note = this.rebacks_form.reback_note; var a = { reback_unid: reback_unid, actual_reback_amount: actual_reback_amount, reback_date: reback_date, reback_note: reback_note }; if (!this.modify_data) { if (this.rebacks_data.length > 0) { a.reback_progress = this.rebacks_data[this.rebacks_data.length - 1] .reback_progress + 1; } else { a.reback_progress = 1; } this.rebacks_data.push(a); } else { a.reback_progress = this.rebacks_data[ this.modify_index ].reback_progress; this.$set(this.rebacks_data, this.modify_index, a); } this.modify_data = false; this.rebacks_form = {}; this.rebacks_dialog_show = false; } }); }, delivers_dialog_confirm() { this.$refs["delivers_form"].validate(valid => { if (valid) { var deliver_unid = this.delivers_form.deliver_unid; var deliver_goods_date = this.delivers_form.deliver_goods_date; var goods_acceptanc_date = this.delivers_form.goods_acceptanc_date; var appendix_unids = this.delivers_form.appendix_unids; var delivers_appendix_list = this.delivers_form .delivers_appendix_list; var a = { deliver_unid: deliver_unid, deliver_goods_date: deliver_goods_date, goods_acceptanc_date: goods_acceptanc_date, appendix_unids: appendix_unids, delivers_appendix_list: delivers_appendix_list }; if (!this.modify_data) { this.delivers_data.push(a); } else { this.$set(this.delivers_data, this.modify_index, a); } this.modify_data = false; this.delivers_form = {}; this.delivers_dialog_show = false; } }); }, // dialog_confirm_end~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ data_delete(index, data, appendUrl) { var a; var id; if (appendUrl == "payments") { a = { payment_unids: [data[index].payment_unid] }; id = data[index].payment_unid; } else if (appendUrl == "rebacks") { a = { reback_unids: [data[index].reback_unid] }; id = data[index].reback_unid; } else if (appendUrl == "receipts") { a = { receipt_unids: [data[index].receipt_unid] }; id = data[index].receipt_unid; } else if (appendUrl == "delivers") { a = { deliver_unids: [data[index].deliver_unid] }; id = data[index].deliver_unid; } this.$confirm("确认删除数据?", "确认信息", { confirmButtonText: "确认", cancelButtonText: "取消" }) .then(() => { if (id != null) { this.$Axios({ method: "delete", url: this.contract_base_url + this.form.contract_unid + "/" + appendUrl, data: a }).then(res => { if (res.data.ecode == "200") { this.$message({ duration: 1000, type: "success", message: "删除成功" }); data.splice(index, 1); if (appendUrl == "delivers") { this.delivers_form = { deliver_unid: null, deliver_goods_date: "", goods_acceptanc_date: "", appendix_unids: [], delivers_appendix_list: [] }; } } else { this.$message.error("删除失败"); } }); } else { data.splice(index, 1); if (appendUrl == "delivers") { this.delivers_form = { deliver_unid: null, deliver_goods_date: "", goods_acceptanc_date: "", appendix_unids: [], delivers_appendix_list: [] }; } } }) .catch(action => { this.$message({ duration: 1000, type: "info", message: "没有删除数据" }); }); }, // modif ystart~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ payment_data_modify(index, data) { this.$set(this.payments_form, "payment_unid", data[index].payment_unid); this.$set(this.payments_form, "payment_type", data[index].payment_type); this.$set(this.payments_form, "days", data[index].days); this.$set( this.payments_form, "payment_propority", data[index].payment_propority * 100 ); this.$set( this.payments_form, "payment_requirement", data[index].payment_requirement ); this.modify_data = true; this.modify_index = index; this.payments_dialog_show = true; }, reback_data_modify(index, data) { this.$set(this.rebacks_form, "reback_unid", data[index].reback_unid); this.$set( this.rebacks_form, "actual_reback_amount", data[index].actual_reback_amount ); this.$set(this.rebacks_form, "reback_date", data[index].reback_date); this.$set(this.rebacks_form, "reback_note", data[index].reback_note); this.modify_data = true; this.modify_index = index; this.rebacks_dialog_show = true; }, receipt_data_modify(index, data) { this.$set(this.receipts_form, "receipt_unid", data[index].receipt_unid); this.$set( this.receipts_form, "receipt_amount", parseFloat(data[index].receipt_amount).toFixed(2) ); this.$set(this.receipts_form, "oa_flow_id", data[index].oa_flow_id); this.$set(this.receipts_form, "receipt_note", data[index].receipt_note); this.$set(this.receipts_form, "receipt_unid", data[index].receipt_unid); this.modify_data = true; this.modify_index = index; this.receipts_dialog_show = true; }, deliver_data_modify(index, data) { this.delivers_form.deliver_unid = data[index].deliver_unid; this.$set( this.delivers_form, "deliver_goods_date", data[index].deliver_goods_date ); this.$set( this.delivers_form, "goods_acceptanc_date", data[index].goods_acceptanc_date ); this.$set( this.delivers_form, "delivers_appendix_list", data[index].delivers_appendix_list ); this.$set( this.delivers_form, "appendix_unids", data[index].appendix_unids ); this.modify_data = true; this.modify_index = index; this.delivers_dialog_show = true; }, // modifyend~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // getlocation start~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ get_payment_type(index) { for (let i = 0; i < this.payment_type_data.length; i++) { const e = this.payment_type_data[i]; if (this.payments_data[index].payment_type === e.code) { return e.name; } } return "无"; }, get_payment_type_data() { this.$Axios({ method: "get", url: this.code_base_url + "custom/cates/215649FB93/codes" }) .then(res => { this.payment_type_data = res.data.list_data; }) .catch(err => {}); }, get_product_line_type_data() { this.$Axios({ method: "get", url: this.code_base_url + "custom/cates/4FC51AD3C9/codes" }) .then(res => { this.product_line_type_data = res.data.list_data; }) .catch(err => {}); }, get_contract_state_data() { this.$Axios({ method: "get", url: this.code_base_url + "custom/cates/13BEFACBCF/codes" }) .then(res => { this.contract_state_data = res.data.list_data; }) .catch(err => {}); }, get_contract_type_data() { this.$Axios({ method: "get", url: this.code_base_url + "custom/cates/8EC31D08A0/codes" }) .then(res => { this.contract_type_data = res.data.list_data; }) .catch(err => {}); }, get_amount_state_unid_data() { this.$Axios({ method: "get", url: this.code_base_url + "custom/cates/42407C5EF2/codes" }) .then(res => { this.amount_state_unid_data = res.data.list_data; }) .catch(err => {}); }, get_provinces() { this.$Axios({ method: "get", url: this.code_base_url + "countries/0E229CD043/provinces" }) .then(response => { this.provinces = response.data.list_data; }) .catch(err => { console.log(err.message); }); }, get_cities() { this.form.city_value = ""; // this.form.county_value = ""; if (this.form.province_value) { this.$Axios({ method: "get", url: this.code_base_url + "countries/0E229CD043/provinces/" + this.get_province_unid + "/cities" }) .then(response => { this.cities = response.data.list_data; }) .catch(err => { console.log(err.message); }); } }, // get_counties() { // this.form.county_value = ""; // if (this.form.province_value && this.form.city_value) { // this.$Axios({ // method: "get", // url: // this.code_base_url + // "countries/0E229CD043/provinces/" + // this.get_province_unid + // "/cities/" + // this.get_city_unid + // "/counties" // }) // .then(response => { // this.counties = response.data.list_data; // }) // .catch(err => { // console.log(err.message); // }); // } // }, get_pay_date(index) { var date = ""; var type = this.payments_data[index].payment_type; var days = this.payments_data[index].days; if (type == "100001" && this.form.sign_date) { date = this.date_add_days(this.form.sign_date, days); } else if ( (type == "100002" || type == "100004") && this.delivers_data[0] ) { var i = this.delivers_data.length - 1; date = this.date_add_days( this.delivers_data[i].goods_acceptanc_date, days ); } else if ( (type == "100003" || type == "100005") && this.final_acceptancs_form.acceptanc_date != null ) { date = this.date_add_days( this.final_acceptancs_form.acceptanc_date, days ); } return date; }, get_pay_amount(index) { var amount = 0; if (this.form.contract_amount > 0) { amount = this.form.contract_amount * this.payments_data[index].payment_propority; } return amount; }, get_customers() { this.$Axios({ method: "get", url: this.contract_base_url + "customers", headers: { "Content-Type": "application/json" } }) .then(response => { this.customer_unid_selected_data = response.data; }) .catch(err => { console.log(err.message); }); }, get_projects() { this.$Axios({ method: "get", url: this.contract_base_url + "projects", headers: { "Content-Type": "application/json" } }) .then(response => { this.project_unid_selected_data = response.data; }) .catch(err => { console.log(err.message); }); }, get_project_info(id) { if (id != "0") { this.$Axios({ method: "get", url: this.contract_base_url + id + "/project/acceptancs", headers: { "Content-Type": "application/json" } }) .then(response => { if (!response.data.ecode && response.data != []) { for (let i = 0; i < response.data.list_check_data.length; i++) { var e = response.data.list_check_data[i]; if (e.acceptanc_type == "1") { this.$set( this.first_acceptancs_form, "acceptanc_unid", e.acceptanc_unid ); this.$set(this.first_acceptancs_form, "acceptanc_type", "1"); this.$set( this.first_acceptancs_form, "acceptanc_date", e.acceptanc_date ); this.$set( this.first_acceptancs_form, "acceptanc_note", e.acceptanc_note ); this.first_acceptancs_appendix_list = []; if (e.appendix_list) { for (let i = 0; i < e.appendix_list.length; i++) { const b = e.appendix_list[i]; var a = {}; a.name = b.appendix_name; a.url = b.appendix_url; this.first_acceptancs_appendix_list.push(a); } } } else if (e.acceptanc_type == "2") { this.$set( this.final_acceptancs_form, "acceptanc_unid", e.acceptanc_unid ); this.$set(this.final_acceptancs_form, "acceptanc_type", "2"); this.$set( this.final_acceptancs_form, "acceptanc_date", e.acceptanc_date ); this.$set( this.final_acceptancs_form, "acceptanc_note", e.acceptanc_note ); this.final_acceptancs_form; this.acceptancs_appendix_list = []; if (e.appendix_list) { for (let i = 0; i < e.appendix_list.length; i++) { const b = e.appendix_list[i]; var a = {}; a.name = b.appendix_name; a.url = b.appendix_url; this.acceptancs_appendix_list.push(a); } } } } } }) .catch(err => { console.log(err.message); }); } }, get_payment_info(id) { if (id != "0") { this.$Axios({ method: "get", url: this.contract_base_url + id + "/payments", headers: { "Content-Type": "application/json" } }) .then(response => { if (!response.data.ecode || response.data != []) { for (let i = 0; i < response.data.length; i++) { var item = {}; const e = response.data[i]; item.payment_unid = e.payment_unid; item.payment_type = e.payment_type ? e.payment_type : ""; // if ( // item.payment_type == "100004" || // item.payment_type == "100005" // ) { // this.payment_type_tag = 1; // } item.payment_progress = e.payment_progress; item.days = e.days ? e.days : 0; item.payment_propority = e.payment_propority ? e.payment_propority : 0; item.payment_requirement = e.payment_requirement ? e.payment_requirement : ""; item.amount = this.form.contract_amount * item.payment_propority; this.payments_data.push(item); } } }) .catch(err => { console.log(err.message); }); } }, get_deliver_info(id) { if (id != "0") { this.$Axios({ method: "get", url: this.contract_base_url + id + "/delivers", headers: { "Content-Type": "application/json" } }) .then(response => { if (response.data.ecode != "500" && response.data != []) { for (let i = 0; i < response.data.list_deliver_data.length; i++) { var e = response.data.list_deliver_data[i]; var item = {}; item.deliver_unid = e.deliver_unid; item.deliver_goods_date = e.deliver_goods_date ? e.deliver_goods_date : ""; item.goods_acceptanc_date = e.goods_acceptanc_date ? e.goods_acceptanc_date : ""; item.delivers_appendix_list = []; item.appendix_unids = []; for (let i = 0; i < e.list_deliver_data.length; i++) { const b = e.list_deliver_data[i]; var a = {}; a.name = b.appendix_name; a.url = b.appendix_url; a.id = b.appendix_unid; item.delivers_appendix_list.push(a); } this.delivers_data.push(item); } } }) .catch(err => { console.log(err.message); }); } }, get_reback_info(id) { if (id != "0") { this.$Axios({ method: "get", url: this.contract_base_url + id + "/rebacks", headers: { "Content-Type": "application/json" } }) .then(response => { if (!response.data.ecode || response.data != []) { for (let i = 0; i < response.data.length; i++) { var e = response.data[i]; var item = {}; item.reback_unid = e.reback_unid; item.reback_progress = e.reback_progress; item.reback_date = e.reback_date ? e.reback_date : ""; item.actual_reback_amount = e.actual_reback_amount ? parseFloat(e.actual_reback_amount).toFixed(2) : null; item.reback_note = e.reback_note ? e.reback_note : ""; this.rebacks_data.push(item); } } }) .catch(err => { console.log(err.message); }); } }, get_receipt_info(id) { if (id != "0") { this.$Axios({ method: "get", url: this.contract_base_url + id + "/receipts", headers: { "Content-Type": "application/json" } }) .then(response => { if (!response.data.ecode || response.data != []) { for (let i = 0; i < response.data.length; i++) { var e = response.data[i]; var item = {}; item.receipt_unid = e.receipt_unid; item.oa_flow_id = e.oa_flow_id ? e.oa_flow_id : null; item.receipt_amount = e.receipt_amount ? parseFloat(e.receipt_amount).toFixed(2) : 0.0; item.receipt_note = e.receipt_note ? e.receipt_note : ""; item.receipt_progress = e.receipt_progress; this.receipts_data.push(item); } } }) .catch(err => { console.log(err.message); }); } }, get_contract_info(id) { this.$Axios({ method: "get", url: this.contract_base_url + id, headers: { "Content-Type": "application/json" } }) .then(response => { if (response.data.ecode == "100") { this.$alert("合同已删除"); this.$router.push({ path: "0" }); } else { this.$set(this.form, "contract_unid", response.data.contract_unid); if (response.data.province) { this.$set( this.form, "province_value", response.data.province + "#" + response.data.province_name ); } else if (response.data.province_name) { this.provinces.forEach(e => { if (e.name === response.data.province_name) { this.$set( this.form, "province_value", e.province_unid + "#" + response.data.province_name ); } }); } if (response.data.city) { this.get_cities(); this.$set( this.form, "city_value", response.data.city + "#" + response.data.city_name ); } else if (response.data.city_name && this.form.province_value) { this.$Axios({ method: "get", url: this.code_base_url + "countries/0E229CD043/provinces/" + this.get_province_unid + "/cities" }) .then(r => { this.cities = r.data.list_data; this.cities.forEach(e => { if (e.name === response.data.city_name) { this.$set( this.form, "city_value", e.city_unid + "#" + response.data.city_name ); } }); }) .catch(err => { console.log(err.message); }); } // if (response.data.county) { // this.get_counties(); // this.$set( // this.form, // "county_value", // response.data.county + "#" + response.data.county_name // ); // } if (response.data.contract_state) { this.$set( this.form, "contract_state", response.data.contract_state ); } if (response.data.contract_type) { this.$set( this.form, "contract_type", response.data.contract_type ); } if (response.data.is_archive) { this.$set(this.form, "is_archive", response.data.is_archive); } if (response.data.amount_state_unid) { this.$set( this.form, "amount_state_unid", response.data.amount_state_unid ); } if (response.data.salesperson_unid) { this.$set( this.form, "salesperson_unid", response.data.salesperson_unid ); } if (response.data.project_unid) { this.$set(this.form, "project_unid", response.data.project_unid); } if (response.data.customer_unid) { this.$set( this.form, "customer_unid", response.data.customer_unid ); } if (response.data.deduct_amount) { this.$set( this.form, "deduct_amount", response.data.deduct_amount.toFixed(2) ); } if (response.data.contract_amount_note) { this.$set( this.form, "contract_amount_note", response.data.contract_amount_note ); } if (response.data.stop_amount) { this.$set( this.form, "stop_amount", response.data.stop_amount.toFixed(2) ); } if (response.data.reback_note) { this.$set(this.form, "reback_note", response.data.reback_note); } if (response.data.exemptions_amount) { this.$set( this.form, "exemptions_amount", response.data.exemptions_amount.toFixed(2) ); } if (response.data.contract_remain_note) { this.$set( this.form, "contract_remain_note", response.data.contract_remain_note ); } if (response.data.bad_amount_note) { this.$set( this.form, "bad_amount_note", response.data.bad_amount_note ); } if (response.data.contract_note) { this.$set( this.form, "contract_note", response.data.contract_note ); } if (response.data.contract_amount) { this.$set( this.form, "contract_amount", response.data.contract_amount.toFixed(2) ); } if (response.data.guarantee_period) { this.$set( this.form, "guarantee_period", response.data.guarantee_period ); } if (response.data.product_line_type) { this.$set( this.form, "product_line_type", response.data.product_line_type ); } if (response.data.confirm_income_amount) { this.$set( this.form, "confirm_income_amount", response.data.confirm_income_amount.toFixed(2) ); } if (response.data.sign_date) { this.$set(this.form, "sign_date", response.data.sign_date); } if (response.data.bad_amount) { this.$set( this.form, "bad_amount", response.data.bad_amount.toFixed(2) ); } this.contract_appendix_list = []; if (response.data.appendix_list) { for (let i = 0; i < response.data.appendix_list.length; i++) { const e = response.data.appendix_list[i]; var b = {}; b.name = e.appendix_name; b.url = e.appendix_url; b.id = e.appendix_unid; this.contract_appendix_list.push(b); } } if (this.form.start_guarantee_date) { this.$delete(this.form, "start_guarantee_date"); } if (this.form.end_guarantee_date) { this.$delete(this.form, "end_guarantee_date"); } this.guarantee_date = []; if (response.data.start_guarantee_date) { this.guarantee_date.push(response.data.start_guarantee_date); } else { this.guarantee_date.push(""); } if (response.data.end_guarantee_date) { this.guarantee_date.push(response.data.end_guarantee_date); } else { this.guarantee_date.push(""); } } }) .catch(err => { console.log(err.message); }); // } }, get_all(id) { this.get_contract_info(id); this.get_deliver_info(id); this.get_reback_info(id); this.get_receipt_info(id); this.get_payment_info(id); this.get_project_info(id); }, // getlocation end~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // !!!!!!~~~~~~~~~~~~~submittttttt~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ form_submit(name) { var a = this.form; Object.keys(a).forEach(key => { if (a[key] && typeof a[key] == "string") { a[key] = a[key].trim(); } }); var unid = this.$route.params.contract_unid; switch (name) { case "form": this.$refs["contract_form"].validate(valid => { if (valid) { this.form.start_guarantee_date = this.start_guarantee_date; this.form.end_guarantee_date = this.end_guarantee_date; this.form.province = this.get_province_unid; this.form.province_name = this.get_province_name; this.form.city = this.get_city_unid; this.form.city_name = this.get_city_name; // this.form.county = this.get_county_unid; // this.form.county_name = this.get_county_name; this.$Axios({ method: "put", url: this.contract_base_url + this.form.contract_unid, data: this.form, headers: { "Content-Type": "application/json" } }) .then(response => { if (response.data.ecode == 200) { this.$message({ type: "success", message: "提交成功" }); } else { this.$message.error("提交失败"); } this.$refs["contract_form"].resetFields(); this.get_contract_info(unid); }) .catch(err => { this.$message.error("提交失败"); }); } }); this.form_submit("payment"); break; // --------- case "payment": for (let i = 0; i < this.payments_data.length; i++) { const e = this.payments_data[i]; if (e.payment_unid != null) { this.$Axios({ method: "put", url: this.contract_base_url + this.form.contract_unid + "/payments", data: { list_payment_data: [e] } }) .then(res => { if (res.data.ecode == "500") { this.$message.error("提交失败"); } else { this.$message({ type: "success", message: "提交成功" }); } if (i == this.payments_data.length - 1) { this.payments_data = []; this.get_payment_info(unid); } }) .catch(err => { console.log(err.message); this.$message.error("提交失败"); }); } else { this.$Axios({ method: "post", url: this.contract_base_url + this.form.contract_unid + "/payments", data: { list_payment_data: [e] } }) .then(res => { if (res.data.ecode == "500") { this.$message.error("提交失败"); } else { this.$message({ type: "success", message: "提交成功" }); } if (i == this.payments_data.length - 1) { this.payments_data = []; this.get_payment_info(unid); } }) .catch(err => { this.$message.error("提交失败"); console.log(err.message); }); } } break; // ------- case "reback": var a = 0; for (let i = 0; i < this.rebacks_data.length; i++) { const e = this.rebacks_data[i]; if (e.reback_unid != null) { this.$Axios({ method: "put", url: this.contract_base_url + this.form.contract_unid + "/rebacks", data: { list_reback_data: [e] }, headers: { "Content-Type": "application/json" } }) .then(res => { if (res.data.ecode == "500") { this.$message.error("提交失败"); } else { this.$message({ type: "success", message: "提交成功" }); } if (i == this.rebacks_data.length - 1) { this.rebacks_data = []; this.get_reback_info(unid); } }) .catch(err => { console.log(err.message); this.$message.error("提交失败"); }); } else { this.$Axios({ method: "post", url: this.contract_base_url + this.form.contract_unid + "/rebacks", data: { list_reback_data: [e] }, headers: { "Content-Type": "application/json" } }) .then(res => { if (res.data.ecode == "500") { this.$message.error("提交失败"); } else { this.$message({ type: "success", message: "提交成功" }); } if (i == this.rebacks_data.length - 1) { this.rebacks_data = []; this.get_reback_info(unid); } }) .catch(err => { console.log(err.message); this.$message.error("提交失败"); }); } } break; case "receipt": var a = 0; for (let i = 0; i < this.receipts_data.length; i++) { const e = this.receipts_data[i]; if (e.receipt_unid != null) { this.$Axios({ method: "put", url: this.contract_base_url + this.form.contract_unid + "/receipts", data: { list_receipt_data: [e] }, headers: { "Content-Type": "application/json" } }) .then(res => { if (res.data.ecode == "500") { this.$message.error("提交失败"); } else { this.$message({ type: "success", message: "提交成功" }); } if (i == this.receipts_data.length - 1) { this.receipts_data = []; this.get_receipt_info(unid); } }) .catch(err => { console.log(err.message); this.$message.error("提交失败"); }); } else { this.$Axios({ method: "post", url: this.contract_base_url + this.form.contract_unid + "/receipts", data: { list_receipt_data: [e] }, headers: { "Content-Type": "application/json" } }) .then(res => { if (res.data.ecode == "500") { this.$message.error("提交失败"); } else { this.$message({ type: "success", message: "提交成功" }); } if (i == this.receipts_data.length - 1) { this.receipts_data = []; this.get_receipt_info(unid); } }) .catch(err => { console.log(err.message); this.$message.error("提交失败"); }); } } break; case "deliver": var a = 0; for (let i = 0; i < this.delivers_data.length; i++) { const e = this.delivers_data[i]; if (e.deliver_unid) { this.$Axios({ method: "put", url: this.contract_base_url + this.form.contract_unid + "/delivers", data: { list_deliver_data: [e] }, headers: { "Content-Type": "application/json" } }) .then(res => { if (res.data.ecode == "500") { this.$message.error("提交失败"); } else { this.$message({ type: "success", message: "提交成功" }); } if (i == this.delivers_data.length - 1) { this.delivers_data = []; this.get_deliver_info(unid); } }) .catch(err => { this.$message.error("提交失败"); }); } else { this.$Axios({ method: "post", url: this.contract_base_url + this.form.contract_unid + "/delivers", data: { list_deliver_data: [e] }, headers: { "Content-Type": "application/json" } }) .then(res => { if (res.data.ecode == "500") { this.$message.error("提交失败"); } else { this.$message({ type: "success", message: "提交成功" }); } if (i == this.delivers_data.length - 1) { this.delivers_data = []; this.get_deliver_info(unid); } }) .catch(err => { console.log(err.message); this.$message.error("提交失败"); }); } } break; case "project": var a = 0; this.$refs.first_acceptancs_form.validate(valid => { if (valid) { this.$refs.final_acceptancs_form.validate(valid2 => { if (valid2) { var first_method, final_method; if (this.first_acceptancs_form.acceptanc_unid != "") { first_method = "put"; } else { first_method = "post"; } if (this.first_acceptancs_form.acceptanc_type == "") { if (this.first_acceptancs_form.acceptanc_unid != "") { this.$Axios({ method: "DELETE", url: this.contract_base_url + this.form.contract_unid + "/project/acceptancs", data: { acceptanc_unids: [ this.first_acceptancs_form.acceptanc_unid ] } }) .then(res => { console.log(res.data); }) .catch(); } } else { this.$Axios({ method: first_method, url: this.contract_base_url + this.form.contract_unid + "/project/acceptancs", data: { list_check_data: [this.first_acceptancs_form] }, headers: { "Content-Type": "application/json" } }) .then(res => { if (res.data.ecode == "500") { this.$message.error("提交失败"); this.$refs["first_acceptancs_form"].resetFields(); this.$refs["final_acceptancs_form"].resetFields(); this.get_project_info(unid); return; } }) .catch(err => { this.$message.error("提交失败"); }); } if (this.final_acceptancs_form.acceptanc_unid != "") { final_method = "put"; } else { final_method = "post"; } if (this.final_acceptancs_form.acceptanc_type == "") { if (this.final_acceptancs_form.acceptanc_unid != "") { this.$Axios({ method: "DELETE", url: this.contract_base_url + this.form.contract_unid + "/project/acceptancs", data: { acceptanc_unids: [ this.final_acceptancs_form.acceptanc_unid ] } }) .then(res => { console.log(res.data); this.$refs["first_acceptancs_form"].resetFields(); this.$refs["final_acceptancs_form"].resetFields(); this.get_project_info(unid); }) .catch(); } } else { this.$Axios({ method: final_method, url: this.contract_base_url + this.form.contract_unid + "/project/acceptancs", data: { list_check_data: [this.final_acceptancs_form] }, headers: { "Content-Type": "application/json" } }) .then(res => { if (res.data.ecode == "500") { this.$message.error("提交失败"); } else { this.$message({ type: "success", message: "提交成功" }); this.$refs["first_acceptancs_form"].resetFields(); this.$refs["final_acceptancs_form"].resetFields(); this.get_project_info(unid); } }) .catch(err => { this.$message.error("提交失败"); }); } } }); } }); break; default: break; } }, change_unid(id) { this.$router.push("" + id); }, change_dialog() { if (localStorage.getItem("style")) { var style = JSON.parse(localStorage.getItem("style")); var dialogs = document.getElementsByClassName("el-dialog"); for (let i = 0; i < dialogs.length; i++) { const e = dialogs[i]; e.style.backgroundColor = style.color; e.style.backgroundImage = style.image; } } } }, created() { if ( sessionStorage.getItem("user_roles") != "null" && sessionStorage.getItem("user_roles") ) { var roles = JSON.parse(sessionStorage.getItem("user_roles")); for (let i = 0; i < roles.length; i++) { const e = roles[i]; if (e.role_unid == "ec480894ee85f1fa282ee7fa27be9cbc") { this.disabled_list[2] = 0; } else if (e.role_unid == "91d5185d47e3bad099e17570b0dd0ed2") { this.disabled_list = [0, 0, 0, 0]; } else if (e.role_unid == "65f881ffa510eb9ec0c0dc76d625515f") { this.disabled_list[3] = 0; } else if (e.role_unid == "b126ebb9fbc87f4997cb0498a88b5f4c") { this.disabled_list[1] = 0; this.hide_contract_info = false; } } } if (sessionStorage.getItem("manager")) { this.disabled_list = [0, 0, 0, 0]; } if (sessionStorage.getItem("provinces")) { this.provinces = JSON.parse(sessionStorage.getItem("provinces")); } else { this.get_provinces(); } if (sessionStorage.getItem("contract_state_data")) { this.contract_state_data = JSON.parse( sessionStorage.getItem("contract_state_data") ); } else { this.get_contract_state_data(); } if (sessionStorage.getItem("contract_type_data")) { this.contract_type_data = JSON.parse( sessionStorage.getItem("contract_type_data") ); } else { this.get_contract_type_data(); } if (sessionStorage.getItem("amount_state_unid_data")) { this.amount_state_unid_data = JSON.parse( sessionStorage.getItem("amount_state_unid_data") ); } else { this.get_amount_state_unid_data(); } if (sessionStorage.getItem("product_line_type_data")) { this.product_line_type_data = JSON.parse( sessionStorage.getItem("product_line_type_data") ); } else { this.get_product_line_type_data(); } if (sessionStorage.getItem("payment_type_data")) { this.payment_type_data = JSON.parse( sessionStorage.getItem("payment_type_data") ); } else { this.get_payment_type_data(); } if (sessionStorage.getItem("salesperson_unid_selected_data")) { this.salesperson_unid_selected_data = JSON.parse( sessionStorage.getItem("salesperson_unid_selected_data") ); } else { this.get_salesperson(); } if (sessionStorage.getItem("contract_unid_selected_data")) { this.contract_unid_selected_data = JSON.parse( sessionStorage.getItem("contract_unid_selected_data") ); } else { this.get_contract_unid(); } if (sessionStorage.getItem("project_unid_selected_data")) { this.project_unid_selected_data = JSON.parse( sessionStorage.getItem("project_unid_selected_data") ); } else { this.get_projects(); } if (sessionStorage.getItem("customer_unid_selected_data")) { this.customer_unid_selected_data = JSON.parse( sessionStorage.getItem("customer_unid_selected_data") ); } else { this.get_customers(); } var id = this.$route.params.contract_unid; if (id != 0) { this.get_all(id); } if (sessionStorage.getItem("modify")) { this.contract_unid_disabled = true; } else { this.contract_unid_disabled = false; this.$message({ type: "warning", message: "请选择合同编号,再进行下一步操作", duration: 5000 }); } }, mounted() { this.change_dialog(); }, watch: { //点击合同编号后对路由进行push,但不会刷新当前页面,需要通过watch 路由变化进行刷新 $route(to, from) { this.payments_data = []; this.rebacks_data = []; this.receipts_data = []; this.delivers_data = []; this.$refs["first_acceptancs_form"].resetFields(); this.$refs["final_acceptancs_form"].resetFields(); this.$refs["contract_form"].resetFields(); if (to.params.contract_unid != 0) { this.get_all(to.params.contract_unid); } else { this.contract_unid_disabled = false; } } } }; </script> <style scoped> .add_button { font-size: 20px; padding-top: 20px; color: black; } .width-220 { width: 220px; } span:hover { cursor: pointer; } .box-card >>> .el-card__header { background-color: #34352c; } #contract_info >>> label { color: black; } #contract_info >>> .el-dialog { border-radius: 20px; background-color: lightblue; } #contract_info >>> input { background-color: rgba(0, 0, 0, 0.3); border-color: black; color: black; } #contract_info >>> .el-range-editor.is-disabled, #contract_info >>> .el-textarea__inner:disabled, #contract_info >>> .el-input.is-disabled { background-color: rgba(224, 19, 19, 0.719); } #contract_info >>> input:disabled { background-color: rgba(0, 0, 0, 0); } #contract_info >>> .el-date-editor input:disabled { background-color: none; } #contract_info >>> .el-textarea__inner { border-color: black; background-color: rgba(0, 0, 0, 0.3); color: black; } #contract_info >>> .el-date-editor input, #contract_info >>> .el-range-input { color: black; background-color: rgba(0, 0, 0, 0); } #contract_info >>> .el-date-editor { background-color: rgba(0, 0, 0, 0.3); border-color: black; } #contract_info >>> .el-input-number__decrease, #contract_info >>> .el-input-number__increase { background-color: rgba(0, 0, 0, 0); border: 0px !important; } #contract_info >>> thead > tr > th > .cell { color: black; } #province { margin-right: 0; } #contract_info >>> tr, #contract_info >>> .el-table { background-color: rgba(0, 0, 0, 0); } #contract_info >>> th { background-color: rgba(0, 0, 0, 0.2); } #contract_info >>> .el-card { background-color: rgba(0, 0, 0, 0); } #contract_info >>> .el-card__body { background-color: rgba(0, 0, 0, 0); } #hide_icon_text:hover { cursor: pointer; color: orangered; transition: all ease 0.5s; } </style>