From 26c14f0c6defe02f2b6f15b498bcd454461ee7a8 Mon Sep 17 00:00:00 2001 From: yxh <172933527@qq.com> Date: 星期五, 05 一月 2024 14:01:43 +0800 Subject: [PATCH] yxh --- src/views/project/travelexpenseapply/travelexpensedetail/index.vue | 1611 +++++++++++++++++++++++++++++------------------------------ 1 files changed, 786 insertions(+), 825 deletions(-) diff --git a/src/views/project/travelexpenseapply/travelexpensedetail/index.vue b/src/views/project/travelexpenseapply/travelexpensedetail/index.vue index c9090c5..6926eea 100644 --- a/src/views/project/travelexpenseapply/travelexpensedetail/index.vue +++ b/src/views/project/travelexpenseapply/travelexpensedetail/index.vue @@ -3,36 +3,19 @@ <div class="boxdiv"> <div class="top-text">{{ title }}</div> <el-form ref="form" :model="form" :rules="rules" label-width="120px"> - <el-row - ><el-col :span="5"> - <el-form-item label="鐢宠鏃ユ湡" prop="createTime"> - <el-date-picker - style="width: 100%" - v-model="form.createTime" - type="date" - value-format="yyyy-MM-dd HH:mm:ss" - placeholder="鐢宠鏃ユ湡" - > + <el-row><el-col :span="5"> + <el-form-item label="鐢宠鏃ユ湡" prop="applyTime"> + <el-date-picker style="width: 100%" v-model="form.applyTime" type="date" value-format="yyyy-MM-dd HH:mm:ss" + placeholder="鐢宠鏃ユ湡" :disabled="true"> </el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="缁忓姙浜�" prop="username"> - <el-select - v-model="form.username" - clearable - filterable - allow-create - ref="getReportname" - default-first-option - placeholder="璇烽�夋嫨" - > - <el-option - v-for="item in personsList" - :key="item.reportNo" - :label="item.reportName" - :value="item.reportName" - > + <el-select v-model="form.username" clearable filterable allow-create ref="getReportname" + default-first-option placeholder="璇烽�夋嫨"> + <el-option v-for="item in personsList" :key="item.reportNo" :label="item.reportName" + :value="item.reportName"> </el-option> </el-select> </el-form-item> @@ -57,18 +40,8 @@ </el-col> <el-col :span="5"> <el-form-item label="鎹愮尞鑰�" prop="infoid"> - <el-select - v-model="form.infoid" - @change="selectbaseinfo" - filterable - placeholder="璇烽�夋嫨鎹愮尞鑰�" - > - <el-option - v-for="item in baselist" - :key="item.index" - :label="item.name" - :value="item.infoid" - > + <el-select v-model="form.infoid" @change="selectbaseinfo" filterable placeholder="璇烽�夋嫨鎹愮尞鑰�"> + <el-option v-for="item in baselist" :key="item.index" :label="item.name" :value="item.infoid"> </el-option> </el-select> </el-form-item> @@ -77,36 +50,17 @@ <el-row style="margin-top: 10px"> <el-col :span="5"> <el-form-item label="鎶ラ攢閲戦" prop="amountrequested"> - <el-input - :disabled="true" - v-model="form.amountrequested" - placeholder="鎶ラ攢鍚堣閲戦" - /> + <el-input :disabled="true" v-model="form.amountrequested" placeholder="鎶ラ攢鍚堣閲戦" /> </el-form-item> </el-col> - <el-col :span="10"> + <el-col :span="7"> <el-form-item label="澶у啓閲戦" prop="bigstrmoney"> - <el-input - :disabled="true" - v-model="form.bigstrmoney" - placeholder="鎶ラ攢澶у啓閲戦" - /> - </el-form-item> </el-col - ><el-col :span="5"> + <el-input :disabled="true" v-model="form.bigstrmoney" placeholder="鎶ラ攢澶у啓閲戦" /> + </el-form-item> </el-col><el-col :span="4"> <el-form-item label="瀹℃牳鐘舵��" prop="flowlevel"> - <el-select - v-model="form.recordstatus" - placeholder="璇烽�夋嫨瀹℃牳鐘舵��" - clearable - :disabled="true" - size="small" - > - <el-option - v-for="dict in dict.type.sys_recordstatus" - :key="dict.value" - :label="dict.label" - :value="dict.value" - /> + <el-select v-model="form.recordstatus" placeholder="璇烽�夋嫨瀹℃牳鐘舵��" clearable :disabled="true" size="small"> + <el-option v-for="dict in dict.type.sys_recordstatus" :key="dict.value" :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> </el-col> @@ -208,323 +162,156 @@ </el-col> </el-row> --> + <el-row v-if="jurisdiction"> + <!-- <el-alert title="褰撳墠涓烘煡鐪嬬姸鎬侊紝涓嶆敮鎸佷慨鏀瑰瓨鍌ㄣ��" type="warning"> + </el-alert> --> + <el-alert title="褰撳墠涓烘煡鐪嬬姸鎬侊紝涓嶆敮鎸佷慨鏀瑰瓨鍌ㄣ��" type="warning" show-icon> + </el-alert> + </el-row> <el-row style="margin-top: 25px; margin-bottom: 5px"> <el-col :span="20">鎶ラ攢鏄庣粏</el-col> </el-row> <el-row> - <el-table - :data="rbDetails" - ref="table" - border - highlight-current-row - :summary-method="getSummaries" - show-summary - > - <el-table-column - prop="orderno" - slot="" - label="搴忓彿" - align="center" - fixed - width="65" - > + <el-table :data="rbDetails" ref="table" border max-height="800" highlight-current-row + :summary-method="getSummaries" show-summary> + <el-table-column prop="orderno" slot="" label="搴忓彿" align="center" fixed width="88"> <template slot-scope="scope"> <el-input v-model="scope.row.orderno" placeholder="搴忓彿" /> </template> </el-table-column> <!--涓婚敭銆佸涓嶅睍绀�--> - <el-table-column - prop="id" - slot="" - label="涓婚敭" - align="center" - fixed - width="95" - v-if="false" - > + <el-table-column prop="id" slot="" label="涓婚敭" align="center" fixed width="95" v-if="false"> <template slot-scope="scope"> <el-input v-model="scope.row.id" placeholder="id" /> </template> </el-table-column> - <el-table-column - prop="rbid" - slot="" - label="澶栭敭" - align="center" - fixed - width="95" - v-if="false" - > + <el-table-column prop="rbid" slot="" label="澶栭敭" align="center" fixed width="95" v-if="false"> <template slot-scope="scope"> <el-input v-model="scope.row.rbid" placeholder="rbid" /> </template> </el-table-column> - <el-table-column - prop="persontype" - slot="" - label="浜哄憳绫诲埆" - align="center" - fixed - width="130" - > + <el-table-column prop="persontype" slot="" label="浜哄憳绫诲埆" align="center" fixed width="130"> <template slot-scope="scope"> - <el-select - v-model="scope.row.persontype" - value-key="value" - placeholder="浜哄憳绫诲埆" - @change="getPersons(scope.row)" - > - <el-option - v-for="dict in dict.type.sys_travelexpensebelong" - :key="dict.value" - :label="dict.label" - :value="dict.label" - ></el-option> + <el-select v-model="scope.row.persontype" value-key="value" placeholder="浜哄憳绫诲埆" + @change="getPersons(scope.row)"> + <el-option v-for="dict in dict.type.sys_travelexpensebelong" :key="dict.value" :label="dict.label" + :value="dict.label"></el-option> </el-select> </template> </el-table-column> - <el-table-column - prop="personname" - slot="" - label="璐圭敤浜哄憳" - align="center" - fixed - width="110" - > + <el-table-column prop="personname" slot="" label="璐圭敤浜哄憳" align="center" fixed width="110"> <template slot-scope="scope"> - <el-select - v-model="scope.row.personname" - clearable - filterable - allow-create - default-first-option - placeholder="璇烽�夋嫨" - @focus1="getPersons(scope.row)" - > - <el-option - v-for="item in personsSel" - :key="item.reportNo" - :label="item.reportName" - :value="item.reportName" - > + <el-select v-model="scope.row.personname" clearable filterable allow-create default-first-option + placeholder="璇烽�夋嫨" @focus1="getPersons(scope.row)"> + <el-option v-for="item in personsSel" :key="item.reportNo" :label="item.reportName" + :value="item.reportName"> </el-option> </el-select> </template> </el-table-column> - <el-table-column - prop="starttime" - slot="" - label="寮�濮嬫棩鏈�" - fixed - align="center" - width="150" - > + <el-table-column prop="starttime" slot="" label="寮�濮嬫棩鏈�" fixed align="center" width="150"> <template slot-scope="scope"> - <el-date-picker - :picker-options="{ - disabledDate: time => { - if (scope.row.endtime) { - return ( - time.getTime() > - new Date(scope.row.endtime.replace(/-/g, '/')) - ); - } + <el-date-picker :picker-options="{ + disabledDate: time => { + if (scope.row.endtime) { + return ( + time.getTime() > + new Date(scope.row.endtime.replace(/-/g, '/')) + ); } - }" - clearable - size="small" - style="width: 100%" - v-model="scope.row.starttime" - type="date" - value-format="yyyy-MM-dd HH:mm:ss" - placeholder="寮�濮嬫棩鏈�" - @blur="getdays(scope.row)" - > + } + }" clearable size="small" style="width: 100%" v-model="scope.row.starttime" type="date" + value-format="yyyy-MM-dd HH:mm:ss" placeholder="寮�濮嬫棩鏈�" @blur="getdays(scope.row)"> </el-date-picker> </template> </el-table-column> - <el-table-column - prop="endtime" - slot="" - label="缁撴潫鏃ユ湡" - align="center" - fixed - width="150" - > + <el-table-column prop="endtime" slot="" label="缁撴潫鏃ユ湡" align="center" fixed width="150"> <template slot-scope="scope"> - <el-date-picker - :picker-options="{ - disabledDate: time => { - if (scope.row.starttime) { - return ( - time.getTime() < - new Date(scope.row.starttime.replace(/-/g, '/')) - ); - } + <el-date-picker :picker-options="{ + disabledDate: time => { + if (scope.row.starttime) { + return ( + time.getTime() < + new Date(scope.row.starttime.replace(/-/g, '/')) + ); } - }" - clearable - size="small" - style="width: 100%" - v-model="scope.row.endtime" - type="date" - value-format="yyyy-MM-dd HH:mm:ss" - placeholder="缁撴潫鏃ユ湡" - @blur="getdays(scope.row)" - > + } + }" clearable size="small" style="width: 100%" v-model="scope.row.endtime" type="date" + value-format="yyyy-MM-dd HH:mm:ss" placeholder="缁撴潫鏃ユ湡" @blur="getdays(scope.row)"> </el-date-picker> </template> </el-table-column> - <el-table-column - prop="departure" - slot="" - label="鍑哄彂鍦�" - align="center" - width="100" - > + <el-table-column prop="departure" slot="" label="鍑哄彂鍦�" align="center" width="100"> <template slot-scope="scope"> <el-input v-model="scope.row.departure" placeholder="鍑哄彂鍦�" /> </template> </el-table-column> - <el-table-column - label="鍒拌揪鍦�" - prop="destination" - align="center" - width="140" - > + <el-table-column label="鍒拌揪鍦�" prop="destination" align="center" width="140"> <template slot-scope="scope"> <!-- <el-input v-model="scope.row.destination" placeholder="鍒拌揪鍦�" @blur="getallowance(scope.row)" /> --> - <el-select - filterable - allow-create - v-model="scope.row.destination" - value-key="value" - placeholder="鍒拌揪鍦�" - @change="getallowance(scope.row)" - > - <el-option - v-for="dict in dict.type.sys_area_name" - :key="dict.value" - :label="dict.label" - :value="dict.label" - ></el-option> + <el-select filterable allow-create v-model="scope.row.destination" value-key="value" placeholder="鍒拌揪鍦�" + @change="getallowance(scope.row)"> + <el-option v-for="dict in dict.type.sys_area_name" :key="dict.value" :label="dict.label" + :value="dict.label"></el-option> </el-select> </template> </el-table-column> - <el-table-column prop="days" label="澶╂暟" width="65" align="center"> + <el-table-column prop="days" label="澶╂暟" width="100" align="center"> <template slot-scope="scope"> - <el-input - v-model="scope.row.days" - @blur="getallowance(scope.row)" - placeholder="澶╂暟" - /> + <el-input v-model="scope.row.days" @blur="getallowance(scope.row)" placeholder="澶╂暟" /> </template> </el-table-column> - <el-table-column - prop="traffictype" - label="鍑哄彂浜ら�氬伐鍏�" - align="center" - width="100" - > + <el-table-column prop="traffictype" label="鍑哄彂浜ら�氬伐鍏�" align="center" width="100"> <template slot-scope="scope"> - <el-select - v-model="scope.row.traffictype" - placeholder="鍑哄彂浜ら�氬伐鍏�" - > - <el-option - v-for="dict in dict.type.sys_traffictype" - :key="dict.value" - :label="dict.label" - :value="dict.label" - ></el-option> + <el-select v-model="scope.row.traffictype" placeholder="鍑哄彂浜ら�氬伐鍏�"> + <el-option v-for="dict in dict.type.sys_traffictype" :key="dict.value" :label="dict.label" + :value="dict.label"></el-option> </el-select> </template> </el-table-column> - <el-table-column - prop="traffictype2" - label="杩斿洖浜ら�氬伐鍏�" - align="center" - width="100" - > + <el-table-column prop="traffictype2" label="杩斿洖浜ら�氬伐鍏�" align="center" width="100"> <template slot-scope="scope"> - <el-select - v-model="scope.row.traffictype2" - placeholder="杩斿洖浜ら�氬伐鍏�" - > - <el-option - v-for="dict in dict.type.sys_traffictype" - :key="dict.value" - :label="dict.label" - :value="dict.label" - ></el-option> + <el-select v-model="scope.row.traffictype2" placeholder="杩斿洖浜ら�氬伐鍏�"> + <el-option v-for="dict in dict.type.sys_traffictype" :key="dict.value" :label="dict.label" + :value="dict.label"></el-option> </el-select> </template> </el-table-column> - <el-table-column - prop="trafficexpense" - label="浜ら�氳垂" - align="center" - width="80" - > + <el-table-column prop="trafficexpense" label="浜ら�氳垂" align="center" width="120"> <template slot-scope="scope"> - <el-input - v-model="scope.row.trafficexpense" - placeholder="浜ら�氳垂" - @blur=" - val => { - sumRowFee(scope.row); - } - " - /> + <el-input v-model="scope.row.trafficexpense" placeholder="浜ら�氳垂" @blur="val => { + sumRowFee(scope.row); + } + " /> </template> </el-table-column> - <el-table-column - prop="cityfee" - label="甯傚唴浜ら�氳垂" - align="center" - width="100" - > + <el-table-column prop="cityfee" label="甯傚唴浜ら�氳垂" align="center" width="120"> <template slot-scope="scope"> - <el-input - v-model="scope.row.cityfee" - placeholder="甯傚唴浜ら�氳垂" - @blur=" - val => { - sumRowFee(scope.row); - } - " - >{{ Number(scope.row.cityfee).toFixed(2) }} + <el-input v-model="scope.row.cityfee" placeholder="甯傚唴浜ら�氳垂" @blur="val => { + sumRowFee(scope.row); + } + ">{{ Number(scope.row.cityfee).toFixed(2) }} </el-input> </template> </el-table-column> - <el-table-column - prop="hotelexpense" - label="浣忓璐�" - align="center" - width="80" - > + <el-table-column prop="hotelexpense" label="浣忓璐�" align="center" width="120"> <template slot-scope="scope"> - <el-input - v-model="scope.row.hotelexpense" - placeholder="浣忓璐�" - @blur=" - val => { - sumRowFee(scope.row); - } - " - /> + <el-input v-model="scope.row.hotelexpense" placeholder="浣忓璐�" @blur="val => { + sumRowFee(scope.row); + } + " /> </template> </el-table-column> - <el-table-column + <!-- <el-table-column prop="foodexpenses" label="椁愯垂鎶ラ攢" align="center" - width="80" + width="120" > <template slot-scope="scope"> - <el-input + <el-input v-model="scope.row.foodexpenses" placeholder="浼欓璐规姤閿�" @blur=" @@ -534,119 +321,53 @@ " /> </template> - </el-table-column> - <el-table-column - prop="foodallowance" - label="浼欓琛ュ姪" - align="center" - width="80" - > + </el-table-column> --> + <el-table-column prop="foodallowance" label="浼欓琛ュ姪" align="center" width="120"> <template slot-scope="scope"> - <el-input - v-model="scope.row.foodallowance" - placeholder="浼欓璐硅ˉ鍔�" - @blur=" - val => { - sumRowFee(scope.row); - } - " - /> + <el-input v-model="scope.row.foodallowance" placeholder="浼欓璐硅ˉ鍔�" @blur="val => { + sumRowFee(scope.row); + } + " /> </template> </el-table-column> - <el-table-column - prop="otherexpense" - label="鍏潅璐硅ˉ鍔�" - align="center" - width="80" - > + <el-table-column prop="otherexpense" label="鍏潅璐硅ˉ鍔�" align="center" width="120"> <template slot-scope="scope"> - <el-input - v-model="scope.row.otherexpense" - placeholder="鏉傝垂" - @blur=" - val => { - sumRowFee(scope.row); - } - " - /> + <el-input v-model="scope.row.otherexpense" placeholder="鏉傝垂" @blur="val => { + sumRowFee(scope.row); + } + " /> </template> </el-table-column> - <el-table-column - prop="otherfeeamount" - label="鍏朵粬璐圭敤" - align="center" - width="90" - > + <el-table-column prop="otherfeeamount" label="鍏朵粬璐圭敤" align="center" width="120"> <template slot-scope="scope"> - <el-input - v-model="scope.row.otherfeeamount" - placeholder="鍏朵粬璐圭敤" - @blur=" - val => { - sumRowFee(scope.row); - } - " - /> + <el-input v-model="scope.row.otherfeeamount" placeholder="鍏朵粬璐圭敤" @blur="val => { + sumRowFee(scope.row); + } + " /> </template> </el-table-column> - <el-table-column - prop="departure" - slot="" - label="鍏朵粬璐圭敤璇存槑" - align="center" - width="120" - > + <el-table-column prop="departure" slot="" label="鍏朵粬璐圭敤璇存槑" align="center" width="120"> <template slot-scope="scope"> - <el-input - v-model="scope.row.otherfeedesc" - placeholder="鍏朵粬璐圭敤璇存槑" - /> + <el-input v-model="scope.row.otherfeedesc" placeholder="鍏朵粬璐圭敤璇存槑" /> </template> </el-table-column> - <el-table-column - prop="total" - label="鍚堣" - align="center" - width="110" - fixed="right" - > + <el-table-column prop="total" label="鍚堣" align="center" width="110" fixed="right"> <template slot-scope="scope"> <el-input v-model="scope.row.total" placeholder="鍚堣" /> </template> </el-table-column> - <el-table-column - fixed="right" - label="鎿嶄綔" - align="center" - width="120" - > + <el-table-column fixed="right" label="鎿嶄綔" align="center" width="120"> <template slot-scope="scope"> - <el-button - type="text" - size="mini" - @click="addDetailRow(scope.$index)" - v-if="operationType == 'edit'" - >鏂板</el-button - > - <el-button - @click.native.prevent=" - deleteDetailRow(scope.$index, rbDetails, scope.row) - " - type="text" - size="small" - v-if="operationType == 'edit'" - >鍒犻櫎</el-button - > - <el-button - @click.native.prevent=" - Filepopup(scope.$index, rbDetails, scope.row) - " - type="text" - size="small" - >绁ㄦ嵁</el-button - > + <el-button type="text" size="mini" @click="addDetailRow(scope.$index)" + v-if="operationType == 'edit'">鏂板</el-button> + <el-button @click.native.prevent=" + deleteDetailRow(scope.$index, rbDetails, scope.row) + " type="text" size="small" v-if="operationType == 'edit'">鍒犻櫎</el-button> + <el-button @click.native.prevent=" + Filepopup(scope.$index, rbDetails, scope.row) + " type="text" size="small">绁ㄦ嵁</el-button> </template> </el-table-column> </el-table> @@ -655,153 +376,61 @@ <el-col :span="20">鎵撴鏄庣粏</el-col> </el-row> <el-row style="margin-top: 5px"> - <el-table - :data="rbPayees" - border - highlight-current-row - :summary-method="getSummaries" - show-summary - > - <el-table-column - prop="orderno" - slot="" - label="搴忓彿" - align="center" - fixed - width="65" - > + <el-table :data="rbPayees" border max-height="400" highlight-current-row :summary-method="getSummaries" + show-summary> + <el-table-column prop="orderno" slot="" label="搴忓彿" align="center" fixed width="65"> <template slot-scope="scope"> <el-input v-model="scope.row.orderno" placeholder="搴忓彿" /> </template> </el-table-column> <!--涓婚敭銆佸閿笉灞曠ず--> - <el-table-column - prop="id" - slot="" - label="涓婚敭" - align="center" - fixed - width="95" - v-if="false" - > + <el-table-column prop="id" slot="" label="涓婚敭" align="center" fixed width="95" v-if="false"> <template slot-scope="scope"> <el-input v-model="scope.row.id" placeholder="id" /> </template> </el-table-column> - <el-table-column - prop="rbid" - slot="" - label="澶栭敭" - align="center" - fixed - width="95" - v-if="false" - > + <el-table-column prop="rbid" slot="" label="澶栭敭" align="center" fixed width="95" v-if="false"> <template slot-scope="scope"> <el-input v-model="scope.row.rbid" placeholder="rbid" /> </template> </el-table-column> - <el-table-column - prop="persontype" - slot="" - label="浜哄憳绫诲埆" - align="center" - fixed - width="130" - > + <el-table-column prop="persontype" slot="" label="鏀舵浜虹被鍒�" align="center" fixed width="150"> <template slot-scope="scope"> - <el-select - v-model="scope.row.persontype" - value-key="value" - placeholder="浜哄憳绫诲埆" - @change="getPersons(scope.row)" - > - <el-option - v-for="dict in dict.type.sys_travelexpensebelong" - :key="dict.value" - :label="dict.label" - :value="dict.label" - ></el-option> + <el-select v-model="scope.row.persontype" value-key="value" placeholder="鏀舵浜虹被鍒�" + @change="getPersons(scope.row)"> + <el-option v-for="dict in dict.type.sys_travelexpensebelong" :key="dict.value" :label="dict.label" + :value="dict.label"></el-option> </el-select> </template> </el-table-column> - <el-table-column - prop="personname" - slot="" - label="鏀舵浜�" - align="center" - fixed - width="110" - > + <el-table-column prop="personname" slot="" label="鏀舵浜�" align="center" fixed width="200"> <template slot-scope="scope"> - <el-select - v-model="scope.row.personname" - clearable - filterable - allow-create - ref="getReportname" - default-first-option - placeholder="璇烽�夋嫨" - @change="getAccountinfo2(scope.row, scope.row.persontype)" - > - <el-option - v-for="item in personsSel" - :key="item.reportNo" - :label="item.reportName" - :value="item.reportName" - > + <el-select v-model="scope.row.personname" clearable filterable allow-create ref="getReportname" + default-first-option placeholder="璇烽�夋嫨" @change="getAccountinfo2(scope.row, scope.row.persontype)"> + <el-option v-for="item in personsSel" :key="item.reportNo" :label="item.reportName" + :value="item.reportName"> </el-option> </el-select> </template> </el-table-column> - <el-table-column - prop="bankname" - slot="" - label="閾惰鍚嶇О" - align="center" - fixed - width="200" - > + <el-table-column prop="bankname" slot="" label="鏀舵閾惰" align="center" fixed width="250"> <template slot-scope="scope"> - <el-input v-model="scope.row.bankname" placeholder="閾惰鍚嶇О" /> + <el-input v-model="scope.row.bankname" placeholder="鏀舵閾惰" /> </template> </el-table-column> - <el-table-column - prop="bankcardno" - slot="" - label="閾惰鍗″彿" - align="center" - fixed - width="200" - > + <el-table-column prop="bankcardno" slot="" label="閾惰璐﹀彿" align="center" fixed width="200"> <template slot-scope="scope"> - <el-input - v-model="scope.row.bankcardno" - placeholder="閾惰鍗″彿" - /> + <el-input v-model="scope.row.bankcardno" placeholder="閾惰璐﹀彿" /> </template> </el-table-column> - <el-table-column - prop="amount" - slot="" - label="鎵撴閲戦" - align="center" - fixed - width="130" - > + <el-table-column prop="amount" slot="" label="鎵撴閲戦" align="center" fixed width="130"> <template slot-scope="scope"> <el-input v-model="scope.row.amount" placeholder="鎵撴閲戦" /> </template> </el-table-column> - <el-table-column - prop="remark" - slot="" - label="璇锋璇存槑" - align="center" - fixed - > + <el-table-column prop="remark" slot="" label="璇锋璇存槑" align="center" fixed> <template slot-scope="scope"> <el-input v-model="scope.row.remark" placeholder="璇存槑" /> </template> @@ -814,74 +443,48 @@ </el-date-picker> </template> </el-table-column>--> - <el-table-column - label="鎿嶄綔" - align="center" - width="100" - v-if="operationType == 'edit'" - > + <el-table-column label="鎿嶄綔" align="center" width="100" v-if="operationType == 'edit'"> <template slot-scope="scope"> - <el-button - type="text" - size="mini" - @click="addPayeeRow(scope.$index)" - >鏂板</el-button - > - <el-button - @click.native.prevent=" - deletePayeeRow(scope.$index, rbPayees, scope.row) - " - type="text" - size="small" - > + <el-button type="text" size="mini" @click="addPayeeRow(scope.$index)">鏂板</el-button> + <el-button @click.native.prevent=" + deletePayeeRow(scope.$index, rbPayees, scope.row) + " type="text" size="small"> 鍒犻櫎 </el-button> </template> </el-table-column> </el-table> </el-row> - <el-row - style="margin-top: 25px; margin-bottom: 5px" - v-if="operationType != 'edit'" - > + <el-row style="margin-top: 25px; margin-bottom: 5px" v-if="operationType != 'edit'"> <el-col :span="20">瀹℃牳璁板綍</el-col> </el-row> <el-row v-if="operationType != 'add'"> <el-table :data="fundflowList" border> - <el-table-column - label="瀹℃牳鏃ユ湡" - align="center" - width="200" - prop="createTime" - /> - <el-table-column - label="瀹℃牳浜�" - align="center" - width="150" - prop="checkusername" - /> - <el-table-column - label="瀹℃牳缁撴灉" - align="center" - width="200" - prop="flowconclusion" - > + <el-table-column label="瀹℃牳鏃ユ湡" align="center" width="200" prop="createTime" /> + <el-table-column label="瀹℃牳浜�" align="center" width="150" prop="checkusername" /> + <el-table-column label="瀹℃牳缁撴灉" align="center" width="200" prop="flowconclusion"> <template slot-scope="scope"> <span v-if="scope.row.flowconclusion == 1">閫氳繃</span> <span v-if="scope.row.flowconclusion == 2">涓嶉�氳繃</span> </template> </el-table-column> - <el-table-column - label="瀹℃牳澶囨敞" - align="center" - prop="flowcontent" - /> + <el-table-column label="瀹℃牳澶囨敞" align="center" prop="flowcontent" /> </el-table> </el-row> - <el-row - style="margin-top: 25px; margin-bottom: 5px" - v-if="operationType == 'check'" - > + <el-row style="margin-top: 25px; margin-bottom: 5px" + v-if="operationType == 'check' && userprofile.nickName == '闄堟厱鍗�'"> + <el-col :span="12"> + <el-form-item label="棰勫鏉愭枡" prop="infoid"> + <el-radio-group v-model="form.checkstatus" align="left"> + <el-radio label="1">寰呯敵璇锋潗鏂�</el-radio> + <el-radio label="2">瀹℃牳閫氳繃绛夊緟閭瘎绾歌川鏉愭枡</el-radio> + <el-radio label="3">宸叉敹鍒版姤閿�鏉愭枡</el-radio> + </el-radio-group> + </el-form-item> + </el-col> + </el-row> + + <el-row style="margin-top: 25px; margin-bottom: 5px" v-if="operationType == 'check'"> <el-col :span="7"> <el-form-item label="瀹℃牳缁撴灉" align="left"> <el-radio-group v-model="checkObj.flowlevelone" align="left"> @@ -900,74 +503,151 @@ </el-row> </el-form> <div slot="footer" class="dialog-footer"> - <el-button - type="primary" - @click="submitForm" - v-if="operationType == 'edit'" - >淇� 瀛�</el-button - > - <el-button - type="primary" - @click="checksubmit" - v-if="operationType == 'check'" - >鎻� 浜�</el-button - > + <el-button type="primary" @click="submitForm" v-if="operationType == 'edit' || userprofile.nickName == '闄堟厱鍗�'">淇� + 瀛�</el-button> + <el-button type="primary" @click="checksubmit" v-if="operationType == 'check'">鎻愪氦瀹℃牳</el-button> <!--<el-button @click="cancel">閫� 鍑�</el-button>--> </div> </div> - <el-dialog :title="pdftitle" :visible.sync="pdfVisible" width="50%"> - <div class="pdfimg"> - <div class="box-pdf"> - <div> - <el-upload - size="mini" - class="upload-demo" - :action="uploadFileUrl" - :file-list="fileListto" - multiple - :limit="20" - :headers="headers" - :on-success=" - (response, file, fileList) => - uploadSccess(response, file, fileList) - " - :on-preview="downFile" - :disabled="operationType == 'detail'" - :on-error="handleUploadError" - :on-exceed="handleExceed" - :on-remove="remove" - accept="image/*,.pdf" - > - <el-button - :disabled="operationType == 'detail'" - size="small" - type="primary" - >涓婁紶</el-button - > - </el-upload> - </div> - <!-- <div - class="pdftit" - @click="pdffn(item)" - v-for="item in fileList" - :key="item.name" - > - {{ item.name }} - </div> --> - </div> - - <div v-if="this.previewpdf" class="pdfimgmin"> - <!-- <img :src="pdfimg" /> --> - <el-image - style="width: 100px; height: 100px" - :src="pdfimg" - :preview-src-list="pdfimgsrcList" - > - </el-image> - </div> - <div v-else class="pdfimgmins">{{ hintitle }}</div> + <el-dialog v-dialogDrags :modal="false" :close-on-click-modal="false" :title="pdftitle" :visible.sync="pdfVisible" + width="60%"> + <div> + <el-table :data="tableDatatop" style="width: 100%"> + <el-table-column prop="orderno" label="搴忓彿"> </el-table-column> + <el-table-column prop="personname" label="璐圭敤浜哄憳"> + </el-table-column> + <el-table-column prop="starttime" label="寮�濮嬫棩鏈�"> </el-table-column> + <el-table-column prop="endtime" label="缁撴潫鏃ユ湡"> </el-table-column> + <el-table-column prop="departure" label="鍑哄彂鍦�"> </el-table-column> + <el-table-column prop="destination" label="鍒拌揪鍦�"> </el-table-column> + <el-table-column prop="days" label="澶╂暟"> </el-table-column> + </el-table> + <el-table :data="tableDatatop" style="width: 100%"> + <el-table-column prop="traffictype" label="鍑哄彂浜ら�氬伐鍏�"> + </el-table-column> + <el-table-column prop="traffictype2" label="杩斿洖浜ら�氬伐鍏�"> + </el-table-column> + <el-table-column prop="trafficexpense" label="浜ら�氳垂"> + </el-table-column> + <el-table-column prop="cityfee" label="甯傚唴浜ら�氳垂"> </el-table-column> + <el-table-column prop="hotelexpense" label="浣忓璐�"> + </el-table-column> + <el-table-column prop="foodallowance" label="浼欓琛ュ姪"> + </el-table-column> + <el-table-column prop="otherexpense" label="鍏潅璐硅ˉ鍔�"> + </el-table-column> + <el-table-column prop="otherfeeamount" label="鍏朵粬璐圭敤"> + </el-table-column> + </el-table> </div> + <el-tabs style="margin-top: 20px;" v-model="activeName" type="border-card" @tab-click="handleClick"> + <el-tab-pane label="鏅�氶檮浠�" :name="1"> + <div class="pdfimg"> + <div class="box-pdf"> + <div> + <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="fileListto" + :show-file-list="false" multiple drag :headers="headers" :on-success="(response, file, fileList) => + uploadSccess(response, file, fileList) + " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError" + :on-remove="remove" accept="image/*,.pdf"> + <i class="el-icon-upload"></i> + <div class="el-upload__text"> + 灏嗙エ鎹嫋鍒版澶勶紝鎴� + <em><el-button :disabled="operationType == 'detail'" size="small" type="primary">鐐瑰嚮涓婁紶</el-button></em> + </div> + </el-upload> + <el-table :data="fileListto" @row-click="downFile" style="width: 100%" height="400"> + <el-table-column prop="name" :show-overflow-tooltip="true" label="鍚嶇О"> + <template slot-scope="scope"> + <i style="color:#409EFF" class=" el-icon-s-order" />{{ + scope.row.name + }} + </template> + </el-table-column> + + <el-table-column prop="name" width="180" :show-overflow-tooltip="true" label="鍔熻兘"> + <template slot-scope="scope"> + <el-button type="primary" size="mini" + @click.native.prevent.stop="deletedowfile(scope.row)">鍒犻櫎</el-button> + <el-button type="primary" size="mini" + @click.native.prevent.stop="moveupdowfile(scope.row)">涓婄Щ</el-button> + </template> + </el-table-column> + </el-table> + </div> + </div> + + <div v-if="this.previewpdf && pdfimgsrcList.length" class="pdfimgmin"> + <!-- <img :src="pdfimg" /> --> + <el-image style="width: 95%; height: 90%" :src="pdfimg" :preview-src-list="pdfimgsrcList"> + <!-- <div slot="error" class="image-slot"> + <i class="el-icon-picture-outline"></i> + </div> --> + </el-image> + </div> + <div v-else class="pdfimgmins">{{ hintitle }}</div> + </div> + </el-tab-pane> + <el-tab-pane label="鍙戠エ鏂囦欢" :name="2"> + <div class="pdfimg"> + <div class="box-pdf"> + <div> + <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="invoicefileList" + :show-file-list="false" multiple drag :headers="headers" :on-success="(response, file, fileList) => + uploadSccess(response, file, fileList) + " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError" + :on-remove="remove" accept="image/*,.pdf"> + <i class="el-icon-upload"></i> + <div class="el-upload__text"> + 灏嗗彂绁ㄦ枃浠舵嫋鍒版澶勶紝鎴� + <em><el-button :disabled="operationType == 'detail'" size="small" type="primary">鐐瑰嚮涓婁紶</el-button></em> + </div> + </el-upload> + <el-table :data="invoicefileListto" @row-click="downFile" style="width: 100%" height="400"> + <el-table-column prop="name" :show-overflow-tooltip="true" label="鍚嶇О"> + <template slot-scope="scope"> + <i style="color:#409EFF" class=" el-icon-s-order" />{{ + scope.row.name + }} + </template> + </el-table-column> + + <el-table-column prop="name" width="180" :show-overflow-tooltip="true" label="鍔熻兘"> + <template slot-scope="scope"> + <el-button type="primary" size="mini" + @click.native.prevent.stop="deletedowfile(scope.row)">鍒犻櫎</el-button> + <el-button type="primary" size="mini" + @click.native.prevent.stop="moveupdowfile(scope.row)">涓婄Щ</el-button> + </template> + </el-table-column> + </el-table> + </div> + </div> + + <div v-if="this.previewpdf && invoicepdfimgsrcList.length" class="pdfimgmin"> + <!-- <img :src="pdfimg" /> --> + <el-image style="width: 95%; height: 90%" :src="invoicepdfimg" :preview-src-list="invoicepdfimgsrcList"> + <!-- <div slot="error" class="image-slot"> + <i class="el-icon-picture-outline"></i> + </div> --> + </el-image> + </div> + <div v-else class="pdfimgmins">{{ hintitle }}</div> + </div> + </el-tab-pane> + </el-tabs> + </el-dialog> + <el-dialog title="鎻愮ず" :visible.sync="Savereminder" width="30%"> + <el-alert :title="'鎮ㄥ凡娣诲姞' + + totalquantity + + '鏉℃暟鎹紝涓洪槻姝㈡暟鎹涪澶辨槸鍚︽彁浜や繚瀛樺啀缁х画娣诲姞銆�' + " type="warning"> + </el-alert> + <span slot="footer" class="dialog-footer"> + <el-button @click="unsave">鍙� 娑�</el-button> + <el-button type="primary" @click="Savenow">纭� 瀹�</el-button> + </span> </el-dialog> </div> </template> @@ -980,7 +660,8 @@ import { listReimbursementpayee, addReimbursementpayee, - updateReimbursementpayee + updateReimbursementpayee, + delReimbursementpayee } from "@/api/project/reimbursementpayee"; import { listReimbursement, @@ -1011,6 +692,7 @@ import { getSubsidy } from "@/api/project/travelcity"; import { listReportname, listUser } from "@/api/project/organization"; import { getToken } from "@/utils/auth"; +import debounce from "lodash/debounce"; export default { components: { Treeselect, @@ -1042,6 +724,7 @@ personsList: [], //涓嬫媺鍙互閫夋嫨浜哄憳鍒楄〃 personsSel: [], + activeName: 1, //鏂囦欢绫诲瀷 // 閮ㄩ棬鏍戦�夐」 deptOptions: undefined, @@ -1054,6 +737,9 @@ label: "" }, pdfimgsrcList: [], + Savereminder: false, //鎻愰啋淇濆瓨寮规 + Reminderquantity: 0, //鎻愰啋鏁伴噺 + totalquantity: 0, //鎬绘暟閲� hintitle: "閫変腑宸︿晶宸蹭笂浼犳枃浠堕瑙堟煡鐪�", atpresent: "", @@ -1071,6 +757,8 @@ loading: true, // 瀵煎嚭閬僵灞� exportLoading: false, + // 缃戠粶璇锋眰澶� + Networkheader: null, // 褰撳墠鍗曟嵁ID curId: 0, @@ -1099,19 +787,25 @@ starttime: null, endtime: null }, + tableDatatop: [ + { + date: "2016-05-02", + name: "鐜嬪皬铏�", + address: "涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1518 寮�" + } + ], //鏌ヨ浠樻 queryParamsPayee: { rbid: null }, + // 褰撳墠鐢ㄦ埛淇℃伅 + userprofile: {}, // 琛ㄥ崟鍙傛暟 form: {}, reimbursementList: [], // 琛ㄥ崟鏍¢獙 rules: { - createTime: [ - { required: true, message: "璇疯緭鍏ュ~鎶ユ棩鏈�", trigger: "blur" } - ], reason: [ { required: true, message: "璇疯緭鍏ュ嚭宸簨鐢�", trigger: "blur" } ], @@ -1130,6 +824,20 @@ rbDetails: [], rbPayees: [], arrr2: [], + baselisttages: [ + { + id: 1, + name: "寰呯敵璇锋潗鏂�" + }, + { + id: 2, + name: "瀹℃牳閫氳繃绛夊緟閭瘎绾歌川鏉愭枡" + }, + { + id: 3, + name: "宸叉敹鍒版姤閿�鏉愭枡" + } + ], baselist: [], donatorList: [], standardlevel: 0, @@ -1143,11 +851,15 @@ //鏂囦欢鍒楄〃 fileList: [], fileListto: [], + invoicefileList: [], + invoicefileListto: [], + invoicepdfimg: "", + invoicepdfimgsrcList: [], + invoDatatop: [], //浜哄憳绫诲埆 persontype: null, //鍒拌揪鍦� arriveAddr: null, - headers: { Authorization: "Bearer " + getToken() }, @@ -1158,6 +870,7 @@ flowconclusion: null, fundid: null }, + jurisdiction: false, //淇濆瓨鎸夐挳鎺у埗 idisabled: false @@ -1165,6 +878,8 @@ }, created() { + this.Getnetworkheader(); + //鑾峰彇璁板綍鍒楄〃 // this.getList(); @@ -1173,6 +888,7 @@ //鑾峰彇鐧诲綍鑰呬俊鎭� getUserProfile().then(response => { + this.userprofile = response.data; this.defaultperson = response.data; this.standardlevel = response.data.standardlevel; console.log("this.defaultperson", this.defaultperson); @@ -1200,6 +916,8 @@ }, mounted() { + window.addEventListener("beforeunload", e => this.beforeunloadHandler(e)); + //閫夋嫨涓氬姟绫诲瀷:1銆佹柊澧烇紱2銆佷慨鏀癸紱3銆佹煡鐪� let curId = this.$route.query.id; let pos = this.$route.query.pos; @@ -1219,14 +937,61 @@ this.$refs["table"].doLayout(); }); }, + destroyed() { + window.removeEventListener("beforeunload", e => this.beforeunloadFn(e)); + }, //鐢熷懡鍛ㄦ湡 - 閿�姣佸畬鎴� methods: { - handleUploadError() {}, + // 娴忚鍣ㄩ〉闈㈠叧闂垨鍒锋柊鎻愮ず + beforeunloadHandler(e) { + if ( + (JSON.stringify(this.form) == sessionStorage.getItem("apiform") && + JSON.stringify(this.rbDetails) == + sessionStorage.getItem("apifunddetail")) || + !sessionStorage.getItem("apifunddetail") + ) { + } else { + this._beforeUnload_time = new Date().getTime(); + e = e || window.event; + if (e) { + e.returnValue = "鍏抽棴鎻愮ず"; + } + return "鍏抽棴鎻愮ず"; + } + }, + handleUploadError() { }, + // 鑾峰彇璇锋眰澶� + Getnetworkheader() { + console.log(window.location.href); + let string = window.location.href; + if (string.includes("9091")) { + const index = string.indexOf("9091"); + this.Networkheader = string.slice(0, index + 4); // 鎴彇9091鍙婂叾鍓嶉儴瀛楃 + console.log(this.Networkheader); + } else { + const index = string.indexOf("8032"); + this.Networkheader = string.slice(0, index + 4); // 鎴彇8032鍙婂叾鍓嶉儴瀛楃 + console.log(this.Networkheader); + } + }, + // 鍙戠エ鍒囨崲 + handleClick(tab, event) { + if (this.activeName == 1) { + this.pdftitle = "鍏�" + this.pdfimgsrcList.length + "椤�"; + } else { + this.pdftitle = "鍏�" + this.invoicepdfimgsrcList.length + "椤�"; + } + }, remove(file, fileList) { const rbDetails = [...this.rbDetails]; - this.fileListto.splice(this.fileListto.indexOf(file), 1); - rbDetails[this.atpresent].annexfilesList = this.fileListto; + if (this.activeName == 1) { + this.fileListto.splice(this.fileListto.indexOf(file), 1); + rbDetails[this.atpresent].annexfilesList = this.fileListto; + } else { + this.invoicefileListto.splice(this.invoicefileListto.indexOf(file), 1); + rbDetails[this.atpresent].invoicefilesList = this.invoicefileListto; + } }, handleExceed() { @@ -1236,53 +1001,182 @@ //鏂囦欢涓婁紶鎴愬姛鍥炶皟 uploadSccess(response, file, fileList) { this.rbDetails; - //鑾峰彇绁ㄦ嵁淇℃伅浣嶇疆 - if (response.code == 200) { - this.form.filename = file.raw.name; - - this.$modal.msgSuccess(response.msg); - this.fileListto.push({ name: file.name, url: response.url }); - this.rbDetails[this.atpresent].annexfilesList = this.fileListto; + if (this.activeName == 1) { + if (response.code == 200) { + // this.form.filename = file.raw.name; + this.previewpdf = true; + this.$modal.msgSuccess(response.msg); + this.fileListto.push({ + name: file.name, + url: response.fileName + }); + this.pdfimgsrcList.push( + this.Networkheader + "/prod-api" + response.fileName + ); + console.log(this.pdfimgsrcList); + this.pdftitle = "鍏�" + this.pdfimgsrcList.length + "椤�"; + this.pdfimg = this.Networkheader + "/prod-api" + response.fileName; + this.rbDetails[this.atpresent].annexfilesList = this.fileListto; + } else { + console.log(response.msg); + } } else { - console.log(response.msg); + if (response.code == 200) { + // this.form.filename = file.raw.name; + this.previewpdf = true; + this.$modal.msgSuccess(response.msg); + this.invoicefileListto.push({ + name: file.name, + url: response.fileName + }); + this.invoicepdfimgsrcList.push( + this.Networkheader + "/prod-api" + response.fileName + ); + console.log(this.invoicepdfimgsrcList); + this.pdftitle = "鍏�" + this.invoicepdfimgsrcList.length + "椤�"; + this.pdfimg = this.Networkheader + "/prod-api" + response.fileName; + this.rbDetails[ + this.atpresent + ].invoicefilesList = this.invoicefileListto; + } else { + console.log(response.msg); + } } }, // 鐐瑰嚮绁ㄦ嵁 Filepopup(index, rows, row) { + this.tableDatatop = []; + this.pdfimgsrcList = []; + this.invoDatatop = []; + this.invoicepdfimgsrcList = []; + this.invoDatatop.push(row); + this.tableDatatop.push(row); this.atpresent = index; this.pdfVisible = true; + console.log(this.rbDetails[index]); if (this.rbDetails[index].annexfilesList) { + this.previewpdf = true; this.fileListto = this.rbDetails[index].annexfilesList; + console.log(this.fileListto); + this.pdfimg = this.Networkheader + "/prod-api" + this.fileListto[0].url; + this.fileListto.forEach(item => { + this.pdfimgsrcList.push(this.Networkheader + "/prod-api" + item.url); + }); } else { this.fileListto = []; this.pdfimg = ""; this.pdftitle = ""; } + // -鍙戠エ鏂囦欢 + if (this.rbDetails[index].invoicefilesList) { + this.previewpdf = true; + this.invoicefileListto = this.rbDetails[index].invoicefilesList; + console.log(this.invoicefileListto); + this.invoicepdfimg = + this.Networkheader + "/prod-api" + this.invoicefileListto[0].url; + this.invoicefileListto.forEach(item => { + this.invoicepdfimgsrcList.push( + this.Networkheader + "/prod-api" + item.url + ); + }); + console.log(this.invoicepdfimgsrcList); + console.log(this.invoicepdfimg); + } else { + this.invoicefileListto = []; + this.invoicepdfimg = ""; + this.pdftitle = ""; + } + + if (this.activeName == 1) { + this.pdftitle = "鍏�" + this.pdfimgsrcList.length + "椤�"; + } else { + this.pdftitle = "鍏�" + this.invoicepdfimgsrcList.length + "椤�"; + } }, // 鐐瑰嚮宸蹭笂浼犳枃浠� downFile(item) { - console.log(item); - this.pdftitle = item.name; - let name = item.name.split("."); - if (name[1] == "pdf") { - this.$modal.msgWarning("褰撳墠鏂囦欢鏆備笉鏀寔棰勮"); - this.previewpdf = false; - this.hintitle = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮"; - } else if (name[1] == "jpg" || "png") { - this.previewpdf = true; - if (item.url) { - this.pdfimg = item.url; - this.pdfimgsrcList=[] - this.pdfimgsrcList.push(item.url); + if (this.activeName == 1) { + console.log(item, "鐐瑰嚮鏂囦欢鎷縤tem"); + this.pdftitle = + "鍏�" + this.pdfimgsrcList.length + "椤癸紝褰撳墠閫変腑" + item.name; + let name = item.name.split("."); + if (name[1] == "pdf") { + this.$modal.msgWarning("褰撳墠鏂囦欢鏆備笉鏀寔棰勮"); + this.previewpdf = false; + this.hintitle = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮"; + } else if (name[1] == "jpg" || "png") { + this.previewpdf = true; + if (item.url) { + this.pdfimg = this.Networkheader + "/prod-api" + item.url; + } else { + this.pdfimg = this.Networkheader + "/prod-api" + item.response.url; + } } else { - this.pdfimg = item.response.url; + this.hintitle = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮"; + this.$modal.msgWarning("褰撳墠鏂囦欢鏆備笉鏀寔棰勮"); + this.previewpdf = false; } } else { - this.hintitle = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮"; - this.$modal.msgWarning("褰撳墠鏂囦欢鏆備笉鏀寔棰勮"); - this.previewpdf = false; + console.log(item, "鐐瑰嚮鏂囦欢鎷縤tem"); + this.pdftitle = + "鍏�" + this.invoicepdfimgsrcList.length + "椤癸紝褰撳墠閫変腑" + item.name; + let name = item.name.split("."); + if (name[1] == "pdf") { + this.$modal.msgWarning("褰撳墠鏂囦欢鏆備笉鏀寔棰勮"); + this.previewpdf = false; + this.hintitle = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮"; + } else if (name[1] == "jpg" || "png") { + this.previewpdf = true; + if (item.url) { + this.invoicepdfimg = this.Networkheader + "/prod-api" + item.url; + console.log(this.invoicepdfimg, "pdfimg"); + console.log(this.invoicepdfimgsrcList, "imglist"); + } else { + this.invoicepdfimg = + this.Networkheader + "/prod-api" + item.response.url; + } + } else { + this.hintitle = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮"; + this.$modal.msgWarning("褰撳墠鏂囦欢鏆備笉鏀寔棰勮"); + this.previewpdf = false; + } + } + }, + getIndexInArray(arr, obj) { + return arr.indexOf(obj); + }, + // 鐐瑰嚮鍒犻櫎 + deletedowfile(row) { + if (this.activeName == 1) { + const indexlist = this.getIndexInArray( + this.pdfimgsrcList, + this.Networkheader + "/prod-api" + row.url + ); + this.pdfimgsrcList.splice(indexlist, 1); + const index = this.getIndexInArray(this.fileListto, row); + this.fileListto.splice(index, 1); + } else { + const indexlist = this.getIndexInArray( + this.invoicepdfimgsrcList, + this.Networkheader + "/prod-api" + row.url + ); + this.invoicepdfimgsrcList.splice(indexlist, 1); + const index = this.getIndexInArray(this.invoicefileListto, row); + this.invoicefileListto.splice(index, 1); + } + }, + // 鐐瑰嚮涓婄Щ + moveupdowfile(row) { + if (this.activeName == 1) { + const index = this.getIndexInArray(this.fileListto, row); + const item = this.fileListto.splice(index, 1)[0]; // 绉婚櫎鎸囧畾绱㈠紩澶勭殑鍏冪礌锛屽苟淇濆瓨鍒癷tem鍙橀噺涓� + this.fileListto.splice(index - 1, 0, item); // 灏唅tem鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣� + } else { + const index = this.getIndexInArray(this.invoicefileListto, row); + const item = this.invoicefileListto.splice(index, 1)[0]; // 绉婚櫎鎸囧畾绱㈠紩澶勭殑鍏冪礌锛屽苟淇濆瓨鍒癷tem鍙橀噺涓� + this.invoicefileListto.splice(index - 1, 0, item); // 灏唅tem鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣� } }, @@ -1386,7 +1280,7 @@ row.days = ( Math.floor( Math.abs(Date.parse(row.starttime) - Date.parse(row.endtime)) / - (1000 * 3600 * 24) + (1000 * 3600 * 24) ) + 1 ).toString(); } else { @@ -1578,6 +1472,7 @@ this.loading = true; listReimbursement(this.queryParams).then(response => { this.reimbursementList = response.rows; + console.log(this.reimbursementList); this.total = response.total; this.loading = false; }); @@ -1707,33 +1602,38 @@ //鑾峰彇鎶ラ攢涓讳俊鎭� getReimbursement(curId).then(response => { this.form = response.data; + this.fileListto = this.form.annexfiles ? this.form.annexfiles - .split(",") - .map(item => ({ url: item, name: item })) + .split(",") + .map(item => ({ url: item, name: item })) + : []; + this.invoicefileListto = this.form.invoicefilesList + ? this.form.invoicefilesList + .split(",") + .map(item => ({ url: item, name: item })) : []; this.form.recordstatus = response.data.recordstatus + ""; + sessionStorage.removeItem("apiform"); + sessionStorage.setItem("apiform", JSON.stringify(this.form)); //鑾峰彇鎶ラ攢鏄庣粏淇℃伅 getReimbursementdetaillist(curId).then(res => { this.rbDetails = res.data; + console.log(this.rbDetails); if (this.rbDetails.length == 0) { this.addDetailRow(0); } - //瀹炴椂鍚堣閲戦 //this.sumTotalFee(); for (let i = 0; i < this.rbDetails.length; i++) { this.sumRowFee(this.rbDetails[i]); - //瑙f瀽鍑哄樊鍦板潃 - /* - this.rbDetails[i].index = i; - this.rbDetails[i].searchAddress = { - sheng: this.rbDetails[i].travelprovincename, - shi: this.rbDetails[i].travelcityname, - qu: this.rbDetails[i].traveltownname, - }; */ } + sessionStorage.removeItem("apifunddetail"); + sessionStorage.setItem( + "apifunddetail", + JSON.stringify(this.rbDetails) + ); }); //鑾峰彇鎶ラ攢鎵撴淇℃伅 @@ -1761,20 +1661,23 @@ handleDetail(ids) { this.operationType = "detail"; this.title = "鎶ラ攢鐢宠璇︽儏"; - + this.jurisdiction = true; this.reset(); this.open = true; const id = ids || this.ids; - getReimbursement(id).then(response => { this.form = response.data; //绁ㄦ嵁 this.fileListto = this.form.annexfiles ? this.form.annexfiles - .split(",") - .map(item => ({ url: item, name: item })) + .split(",") + .map(item => ({ url: item, name: item })) : []; - + this.invoicefileListto = this.form.invoicefilesList + ? this.form.invoicefilesList + .split(",") + .map(item => ({ url: item, name: item })) + : []; //瀹℃牳鐘舵�� this.form.recordstatus = response.data.recordstatus + ""; let ids = response.data.id; @@ -1789,16 +1692,6 @@ //鎶ラ攢鏄庣粏 getReimbursementdetaillist(ids).then(res => { this.rbDetails = res.data; - /* - for (let i = 0; i < this.rbDetails.length; i++) { - this.rbDetails[i].index = i; - this.rbDetails[i].searchAddress = { - sheng: this.rbDetails[i].travelprovincename, - shi: this.rbDetails[i].travelcityname, - qu: this.rbDetails[i].traveltownname, - }; - } - */ //鍚堣璐圭敤 // if (this.rbDetails.length > 0) this.sumTotalFee(); for (let i = 0; i < this.rbDetails.length; i++) { @@ -1814,6 +1707,8 @@ this.addPayeeRow(0); } }); + sessionStorage.removeItem("apiform"); + sessionStorage.setItem("apiform", JSON.stringify(this.form)); }); }, @@ -1829,11 +1724,17 @@ getReimbursement(id).then(response => { this.form = response.data; + //绁ㄦ嵁 this.fileListto = this.form.annexfiles ? this.form.annexfiles - .split(",") - .map(item => ({ url: item, name: item })) + .split(",") + .map(item => ({ url: item, name: item })) + : []; + this.invoicefileListto = this.form.invoicefilesList + ? this.form.invoicefilesList + .split(",") + .map(item => ({ url: item, name: item })) : []; //瀹℃牳鐘舵�� @@ -1852,16 +1753,6 @@ getReimbursementdetaillist(ids).then(res => { this.rbDetails = res.data; console.log(this.rbDetails); - /* - for (let i = 0; i < this.rbDetails.length; i++) { - this.rbDetails[i].index = i; - this.rbDetails[i].searchAddress = { - sheng: this.rbDetails[i].travelprovincename, - shi: this.rbDetails[i].travelcityname, - qu: this.rbDetails[i].traveltownname, - }; - } - */ //鍚堣璐圭敤 // if (this.rbDetails.length > 0) this.sumTotalFee(); @@ -1878,11 +1769,21 @@ this.addPayeeRow(0); } }); + sessionStorage.removeItem("apiform"); + sessionStorage.setItem("apiform", JSON.stringify(this.form)); }); }, //鎻愪氦瀹℃牳鎰忚 checksubmit() { + if ( + this.form.checkstatus != 3 && + this.userprofile.nickName == "闄堟厱鍗�" && + this.checkObj.flowlevelone == 1 + ) { + this.$modal.msgError("璇烽�夌‘璁ゆ潗鏂欑姸鎬佸凡鏀跺埌锛�"); + return; + } let checkfundobj = { flowconclusion: this.checkObj.flowlevelone, flowcontent: this.checkObj.flowconclusion, @@ -1897,10 +1798,11 @@ this.$modal.msgError("璇烽�夋嫨瀹℃牳缁撹鍚庡啀鎻愪氦瀹℃壒缁撴灉!"); return; } - + if (this.userprofile.nickName == "闄堟厱鍗�") { + this.Savenow(); + console.log("淇濆瓨"); + } checkfund(checkfundobj).then(res => { - this.reset(); - this.open = false; this.$modal.msgSuccess("鎻愪氦瀹℃牳鎴愬姛!"); // 鍏抽棴绐楀彛 this.$store.dispatch("tagsView/delView", this.$route); @@ -1909,78 +1811,155 @@ }, /** 鎻愪氦淇濆瓨鎸夐挳 */ - submitForm() { + submitForm: debounce(function (data) { this.$refs["form"].validate(valid => { if (valid) { - // idisabled=true; - /** - let indexErrTime = this.rbDetails.findIndex((item) => { - if (item.endtime && item.starttime) { - let d = this.$moment(item.endtime).diff(this.$moment(item.starttime), "d"); - if (d < 0) { - return true; - } else { - return false; - } - } else { - false; - } - }); - - if (indexErrTime > -1) { - this.$message({ - message: "绗�" + (indexErrTime + 1) + "琛屽埌杈炬棩鏈熸棭浜庡嚭鍙戞棩鏈�", - type: "warning", - }); - return; - } - - let emptyStartTimeindex = this.rbDetails.findIndex( - (item) => item.starttime == null || item.starttime == undefined || item.starttime == "" - ); - - if (emptyStartTimeindex > -1) { - this.$message({ - message: "绗�" + (emptyStartTimeindex + 1) + "琛屽嚭鍙戞棩鏈熶负绌�", - type: "warning", - }); - return; - } - - let emptyEndTimeindex = this.rbDetails.findIndex( - (item) => item.endtime == null || item.endtime == undefined || item.endtime == "" - ); - - if (emptyEndTimeindex > -1) { - this.$message({ - message: "绗�" + (emptyEndTimeindex + 1) + "琛屽埌杈炬棩鏈熶负绌�", - type: "warning", - }); - return; - } - - //璐圭敤褰掑睘 - let belongArr = this.dict.type.sys_travelexpensebelong; - let costtypeindex = belongArr.findIndex( - (item) => this.form.costtype == item.value - ); - if (costtypeindex > -1) { - this.form.costtypename = belongArr[costtypeindex].label; - } - */ //绁ㄦ嵁鏂囦欢澶勭悊 - let list = this.fileListto; - console.log(list); + const addnumber = this.rbPayees.reduce( + (amount, item) => amount + Number(item.amount), + 0 + ); //鏍¢獙璇锋閲戦鍚堣鏄惁绛変簬鎶ラ攢鍗曢噾棰� - if ( - this.form.amountrequested != - this.rbPayees.reduce( - (amount, item) => amount + Number(item.amount), - 0.0 - ) - ) { + if (this.form.amountrequested != addnumber) { + this.$message({ + message: + "鎶ラ攢璇锋琛ㄤ腑鍚堣閲戦涓嶇瓑浜庢姤閿�鍗曠殑鎶ラ攢閲戦锛岃鏇存鍚庡啀淇濆瓨锛�", + type: "warning" + }); + return; + } + + const rbDetails = [...this.rbDetails]; + const rbPayees = [...this.rbPayees]; + if (this.form.id != null) { + console.log(this.form); + updateReimbursement(this.form); + // .then(res => { + //淇濆瓨鏄庣粏 + for (let i = 0; i < rbDetails.length; i++) { + if (rbDetails[i].rbid != null) { + updateReimbursementdetail(rbDetails[i]); + } else { + //rbid鍏宠仈涓昏〃Id + rbDetails[i].rbid = this.form.id; + addReimbursementdetail(rbDetails[i]); + } + } + + //淇濆瓨璐︽埛 + for (let i = 0; i < rbPayees.length; i++) { + if (rbPayees[i].rbid != null) { + updateReimbursementpayee(rbPayees[i]); + } else { + //rbid鍏宠仈涓昏〃Id + rbPayees[i].rbid = this.form.id; + addReimbursementpayee(rbPayees[i]); + } + } + if (this.userprofile.nickName != "闄堟厱鍗�") { + this.$modal.msgSuccess("淇敼鎶ラ攢鍗曚繚瀛樻垚鍔燂紒"); + } + this.open = false; + + // 鍏抽棴绐楀彛 + this.$store.dispatch("tagsView/delView", this.$route); + this.$router.go(-1); + } else { + this.form.recordstatus = -1; + // 鐢宠鏃堕棿 + var currenttime = new Date(); + this.form.applyTime = currenttime.getFullYear() + "-" + (currenttime.getMonth() + 1) + "-" + currenttime.getDate() + " " + currenttime.getHours() + ":" + currenttime.getMinutes() + ":" + currenttime.getSeconds(); + + addReimbursement(this.form) + .then(response => { + //淇濆瓨鏄庣粏 + for (let i = 0; i < rbDetails.length; i++) { + //rbid鍏宠仈涓昏〃Id + rbDetails[i].rbid = response.data; + addReimbursementdetail(rbDetails[i]); + } + + //淇濆瓨璐﹀彿 + for (let i = 0; i < rbPayees.length; i++) { + //rbid鍏宠仈涓昏〃Id + rbPayees[i].rbid = response.data; + addReimbursementpayee(rbPayees[i]); + } + sessionStorage.setItem( + "apifunddetail", + JSON.stringify(this.rbDetails) + ); + sessionStorage.setItem("apiform", JSON.stringify(this.form)); + + this.$modal.msgSuccess("鏂板鎶ラ攢鍗曚繚瀛樻垚鍔�!"); + this.open = false; + + // 鍏抽棴绐楀彛 + this.$store.dispatch("tagsView/delView", this.$route); + this.$router.go(-1); + }) + .catch(err => { + this.$modal.msgError("鏂板鎶ラ攢鍗曚繚瀛樺け璐ワ紒" + res); + }); + } + } + }); + }, 500), + + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + const ids = row.id || this.ids; + this.$modal + .confirm("鏄惁纭鍒犻櫎璇ユ潯璁板綍锛�") + .then(function () { + // 鍒犻櫎details鍐呯殑鏁版嵁 + return delReimbursement(ids); + }) + .then(() => { + delReimbursementdetail(ids); + this.getList(); + this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }) + .catch(() => { }); + }, + + /** 瀵煎嚭鎸夐挳鎿嶄綔 */ + handleExport() { + const queryParams = this.queryParams; + this.$modal + .confirm("鏄惁纭瀵煎嚭鎵�鏈夋姤閿�鐢宠鏁版嵁椤癸紵") + .then(() => { + this.exportLoading = true; + return exportReimbursement(queryParams); + }) + .then(response => { + this.$download.name(response.msg); + this.exportLoading = false; + }) + .catch(() => { }); + }, + // 鍙栨秷鎻愰啋 + unsave() { + this.Savereminder = false; + this.Reminderquantity = 0; + }, + // 鎺ュ彈鎻愰啋绔嬪埢淇濆瓨 + Savenow() { + this.Savereminder = false; + this.Reminderquantity = 0; + this.totalquantity = 0; + const addnumber = this.rbPayees.reduce( + (amount, item) => amount + Number(item.amount), + 0 + ); + console.log(addnumber, "addnumber"); + this.$refs["form"].validate(valid => { + if (valid) { + //绁ㄦ嵁鏂囦欢澶勭悊 + //鏍¢獙璇锋閲戦鍚堣鏄惁绛変簬鎶ラ攢鍗曢噾棰� + if (this.form.amountrequested != addnumber) { this.$message({ message: "鎶ラ攢璇锋琛ㄤ腑鍚堣閲戦涓嶇瓑浜庢姤閿�鍗曠殑鎶ラ攢閲戦锛岃鏇存鍚庡啀淇濆瓨锛�", @@ -2018,17 +1997,6 @@ } this.$modal.msgSuccess("淇敼鎶ラ攢鍗曚繚瀛樻垚鍔�!"); - this.open = false; - - // 鍏抽棴绐楀彛 - this.$store.dispatch("tagsView/delView", this.$route); - this.$router.go(-1); - - // this.getList(); - // }) - // .catch(err => { - // this.$modal.msgError("淇敼鎶ラ攢鍗曚繚瀛樺け璐ワ紒"); - // }); } else { this.form.recordstatus = -1; addReimbursement(this.form) @@ -2048,11 +2016,6 @@ } this.$modal.msgSuccess("鏂板鎶ラ攢鍗曚繚瀛樻垚鍔�!"); - this.open = false; - - // 鍏抽棴绐楀彛 - this.$store.dispatch("tagsView/delView", this.$route); - this.$router.go(-1); }) .catch(err => { this.$modal.msgError("鏂板鎶ラ攢鍗曚繚瀛樺け璐ワ紒"); @@ -2062,41 +2025,10 @@ }); }, - /** 鍒犻櫎鎸夐挳鎿嶄綔 */ - handleDelete(row) { - const ids = row.id || this.ids; - this.$modal - .confirm("鏄惁纭鍒犻櫎璇ユ潯璁板綍锛�") - .then(function() { - // 鍒犻櫎details鍐呯殑鏁版嵁 - return delReimbursement(ids); - }) - .then(() => { - delReimbursementdetail(ids); - this.getList(); - this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); - }) - .catch(() => {}); - }, - - /** 瀵煎嚭鎸夐挳鎿嶄綔 */ - handleExport() { - const queryParams = this.queryParams; - this.$modal - .confirm("鏄惁纭瀵煎嚭鎵�鏈夋姤閿�鐢宠鏁版嵁椤癸紵") - .then(() => { - this.exportLoading = true; - return exportReimbursement(queryParams); - }) - .then(response => { - this.$download.name(response.msg); - this.exportLoading = false; - }) - .catch(() => {}); - }, - //鏂板涓�琛� addDetailRow(rowIndex) { + console.log(rowIndex); + let rowData = { //index: this.rbDetails.length, searchAddress: { @@ -2111,6 +2043,8 @@ endtime: null, destination: null, days: null, + persontype: null, + personname: null, trafficexpense: 0, traffictype: null, traffictype2: null, @@ -2134,14 +2068,25 @@ total: 0, orderno: null, personname2: null, - personname: null, destination: null }; + if (this.rbDetails.length) { + console.log(this.rbDetails[rowIndex].persontype); + console.log(this.rbDetails[rowIndex].personname); + rowData.persontype = this.rbDetails[rowIndex].persontype; + rowData.personname = this.rbDetails[rowIndex].personname; + } + // if (this.Reminderquantity >= 5) { + // this.Savereminder = true; + // return; + // } if (rowIndex == undefined || rowIndex == null || rowIndex < 0) { this.rbDetails.push(rowData); } else { this.rbDetails.splice(rowIndex + 1, 0, rowData); } + this.Reminderquantity++; + this.totalquantity++; for (let i = 0; i < this.rbDetails.length; i++) { this.rbDetails[i].orderno = i + 1; } @@ -2160,11 +2105,17 @@ personname: null, amount: null }; + // if (this.Reminderquantity >= 5) { + // this.Savereminder = true; + // return; + // } if (rowIndex == undefined || rowIndex == null || rowIndex <= 0) { this.rbPayees.push(rowData); } else { this.rbPayees.splice(rowIndex + 1, 0, rowData); } + this.Reminderquantity++; + this.totalquantity++; for (let i = 0; i < this.rbPayees.length; i++) { this.rbPayees[i].orderno = i + 1; } @@ -2205,8 +2156,10 @@ }) .then(() => { console.log(row); + let arrow = []; + arrow.push(row.id); if (row.id !== null) { - delReimbursementdetail(row.id).then(res => { + delReimbursementpayee(arrow).then(res => { this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); rows.splice(index, 1); this.recountOrderNo2(); @@ -2297,7 +2250,7 @@ if (!isNaN(parseFloat(row.otherfeeamount))) { totalFee += parseFloat(row.otherfeeamount); } - row.total = totalFee; + row.total = totalFee.toFixed(2); /* if (!isNaN(parseFloat(this.rbDetails[rowIndex].trafficexpense))) { @@ -2375,7 +2328,7 @@ this.form.amountrequested = allSum.toFixed(2); this.form.bigstrmoney = this.convertCurrency(this.form.amountrequested); - } catch {} + } catch { } }, //閲戦鏁板瓧杞崲鎴愬ぇ鍐� @@ -2492,12 +2445,15 @@ "departure", "destination", "traffictype", - "traffictype2", - "departure" + "traffictype2" ]; columns.forEach((column, index) => { if (index === 0) { sums[index] = "鍚堣"; + return; + } + if (index === 18) { + sums[index] = this.form.amountrequested; return; } //鍘婚櫎閮ㄥ垎瀛楁璁$畻 @@ -2515,7 +2471,7 @@ return prev; } }, 0); - sums[index] += ""; + sums[index] = sums[index].toFixed(2); // 淇濈暀2浣嶅皬鏁帮紝瑙e喅灏忔暟鍚堣鍒�; } else { sums[index] = ""; } @@ -2561,7 +2517,7 @@ height: 600px; .box-pdf { - width: 200px; + width: 400px; padding-top: 20px; margin-right: 30px; border: 1px solid #dcdfe6; @@ -2600,4 +2556,9 @@ line-height: 36px; text-align: center; } + +::v-deep .el-alert__title { + font-size: 20px; + line-height: 20px; +} </style> -- Gitblit v1.9.3