|
@@ -9,31 +9,27 @@
|
|
<i class="iconfont firerock-icontianbao"></i>
|
|
<i class="iconfont firerock-icontianbao"></i>
|
|
<span slot="title">{{ $t('businesstriisallowed') }}</span>
|
|
<span slot="title">{{ $t('businesstriisallowed') }}</span>
|
|
</el-menu-item>
|
|
</el-menu-item>
|
|
- <el-submenu index="2" v-if="permissions.awayOfficeAll">
|
|
|
|
- <template slot="title">
|
|
|
|
- <i class="iconfont firerock-iconbaoxiaodan"></i>
|
|
|
|
- <span>{{ $t('businesstriplist') }}</span>
|
|
|
|
- </template>
|
|
|
|
- <!-- 导航切换 -->
|
|
|
|
- <el-menu-item index="2-1" v-if="permissions.awayOfficeAll"><p @click="bills(false, 2)">{{ $t('all') }}</p></el-menu-item>
|
|
|
|
- <el-menu-item index="2-2" v-if="permissions.awayOfficeAudit && !isSyncData"><p @click="bills(true, 1)">{{ $t('state.WaitingAudit') }}</p></el-menu-item>
|
|
|
|
- </el-submenu>
|
|
|
|
- <el-menu-item index="3" @click="bills(false, 2)" v-if="!permissions.awayOfficeAll">
|
|
|
|
- <i class="iconfont firerock-iconbaoxiaodan"></i>
|
|
|
|
- <span slot="title">{{ $t('mbusinesstrip') }}</span>
|
|
|
|
|
|
+ <el-menu-item index="2" @select="bills" @click="auditList()" v-if="permissions.awayOfficeAudit">
|
|
|
|
+ <i class="iconfont firerock-iconbaoxiaodan"></i>
|
|
|
|
+ <span slot="title">出差审核</span>
|
|
</el-menu-item>
|
|
</el-menu-item>
|
|
|
|
+ <el-menu-item index="3" @select="bills" @click="bills(false, 2)" >
|
|
|
|
+ <i class="iconfont firerock-iconbaoxiaodan"></i>
|
|
|
|
+ <span slot="title">{{ $t('businesstriplist') }}</span>
|
|
|
|
+ </el-menu-item>
|
|
|
|
+
|
|
<el-menu-item index="4" v-if="permissions.awayOfficeStatistical">
|
|
<el-menu-item index="4" v-if="permissions.awayOfficeStatistical">
|
|
<template slot="title">
|
|
<template slot="title">
|
|
<i class="iconfont firerock-icontianbao"></i>
|
|
<i class="iconfont firerock-icontianbao"></i>
|
|
<span slot="title">{{ $t('businessstatistics') }}</span>
|
|
<span slot="title">{{ $t('businessstatistics') }}</span>
|
|
</template>
|
|
</template>
|
|
</el-menu-item>
|
|
</el-menu-item>
|
|
- <!-- <el-menu-item index="5" v-if="permissions.awayOfficeProcess">
|
|
|
|
|
|
+ <el-menu-item index="5" v-if="permissions.awayOfficeProcess">
|
|
<template slot="title">
|
|
<template slot="title">
|
|
<i class="iconfont firerock-iconliucheng"></i>
|
|
<i class="iconfont firerock-iconliucheng"></i>
|
|
<span slot="title">{{ $t('businesstriApprovalProcess') }}</span>
|
|
<span slot="title">{{ $t('businesstriApprovalProcess') }}</span>
|
|
</template>
|
|
</template>
|
|
- </el-menu-item> -->
|
|
|
|
|
|
+ </el-menu-item>
|
|
</el-menu>
|
|
</el-menu>
|
|
</el-col>
|
|
</el-col>
|
|
</div>
|
|
</div>
|
|
@@ -144,6 +140,20 @@
|
|
<el-form-item :label="$t('travelnote')" style="width:635px">
|
|
<el-form-item :label="$t('travelnote')" style="width:635px">
|
|
<el-input type="textarea" v-model="addform.remark" :rows="3" style="width: 100%" maxlength="100" show-word-limit></el-input>
|
|
<el-input type="textarea" v-model="addform.remark" :rows="3" style="width: 100%" maxlength="100" show-word-limit></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
+ <!--流程显示-->
|
|
|
|
+ <el-form-item label="审批流程" style="width: 100%;color:#606266" >
|
|
|
|
+ <span v-for="(item, index) in curWorkflowList" :key="item.id" >
|
|
|
|
+ <span v-if="index>0"><i class="el-icon-right"></i></span>
|
|
|
|
+ <span><i class="el-icon-s-custom"></i></span>
|
|
|
|
+ <span v-if="user.userNameNeedTranslate == 1">
|
|
|
|
+ <span v-if="item.auditorType == 1"><ww-open-data type='departmentName' :openid='item.auditDeptName' ></ww-open-data>(主要负责人)</span>
|
|
|
|
+ <ww-open-data type='userName' :openid='item.userName' v-if="item.auditorType == 2"></ww-open-data>
|
|
|
|
+ </span>
|
|
|
|
+ <span v-if="user.userNameNeedTranslate == 0">
|
|
|
|
+ {{item.auditorType == 1?(item.auditDeptName+'(主要负责人)'):item.userName}}
|
|
|
|
+ </span>
|
|
|
|
+ </span>
|
|
|
|
+ </el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
<div>
|
|
<div>
|
|
<p style="width:635px;text-align:center;">
|
|
<p style="width:635px;text-align:center;">
|
|
@@ -219,7 +229,7 @@
|
|
<div><span :style="scope.row.dayCount >= 10 ? 'color:#e62412' : ''">{{scope.row.dayCount}}{{ $t('time.day') }}</span></div>
|
|
<div><span :style="scope.row.dayCount >= 10 ? 'color:#e62412' : ''">{{scope.row.dayCount}}{{ $t('time.day') }}</span></div>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column :label="$t('detailsbusinessrip')" width="600" align="center">
|
|
|
|
|
|
+ <el-table-column :label="$t('detailsbusinessrip')" width="600" align="center" v-if="isSyncData">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div v-for="item in scope.row.projectList" :key="item.projectId" class="detailsScope">
|
|
<div v-for="item in scope.row.projectList" :key="item.projectId" class="detailsScope">
|
|
<span>{{item.startDate + $t('other.to') + item.endDate}}</span><span>{{item.projectName}}</span><span>{{item.degreeName}}</span>
|
|
<span>{{item.startDate + $t('other.to') + item.endDate}}</span><span>{{item.projectName}}</span><span>{{item.degreeName}}</span>
|
|
@@ -258,13 +268,18 @@
|
|
<el-table-column prop="status" :label="$t('state.states')" width="100" fixed="right">
|
|
<el-table-column prop="status" :label="$t('state.states')" width="100" fixed="right">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<span v-if="scope.row.status == 0">{{ $t('state.approved') }}</span>
|
|
<span v-if="scope.row.status == 0">{{ $t('state.approved') }}</span>
|
|
- <span v-if="scope.row.status == 1" style="color: orange">{{ $t('state.WaitingAudit') }}</span>
|
|
|
|
|
|
+ <div v-if="scope.row.status == 1" style="color: orange"><span>{{ $t('state.WaitingAudit') }}-</span>
|
|
|
|
+ <span v-if="user.userNameNeedTranslate != 1">{{scope.row.auditorName}}</span>
|
|
|
|
+ <span v-if="user.userNameNeedTranslate == 1">
|
|
|
|
+ <ww-open-data type='userName' :openid='scope.row.auditorName'></ww-open-data>
|
|
|
|
+ </span>
|
|
|
|
+ </div>
|
|
<span v-if="scope.row.status == 2" style="color: red">{{ $t('btn.rejected') }}</span>
|
|
<span v-if="scope.row.status == 2" style="color: red">{{ $t('btn.rejected') }}</span>
|
|
<span v-if="scope.row.status == 3" style="color: #666666">{{ $t('btn.undo') }}</span>
|
|
<span v-if="scope.row.status == 3" style="color: #666666">{{ $t('btn.undo') }}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column v-if="!isSyncData" :label="isAuditList ? $t('other.audit') : $t('operation')" width="180" fixed="right" >
|
|
<el-table-column v-if="!isSyncData" :label="isAuditList ? $t('other.audit') : $t('operation')" width="180" fixed="right" >
|
|
- <template slot-scope="scope">
|
|
|
|
|
|
+ <!-- <template slot-scope="scope">
|
|
<div v-if="isAuditList">
|
|
<div v-if="isAuditList">
|
|
<el-button icon="el-icon-check" circle size="mini" @click="approve(scope.row)"></el-button>
|
|
<el-button icon="el-icon-check" circle size="mini" @click="approve(scope.row)"></el-button>
|
|
<el-button icon="el-icon-close" circle size="mini" @click="deny(scope.row)"></el-button>
|
|
<el-button icon="el-icon-close" circle size="mini" @click="deny(scope.row)"></el-button>
|
|
@@ -273,6 +288,17 @@
|
|
<el-button v-if="permissions.awayOfficeDelete && ((scope.row.status != 0 && scope.row.ownerId == user.id) || permissions.awayOfficeAll)" icon="el-icon-delete" circle size="mini" @click="deletes(scope.row)"></el-button>
|
|
<el-button v-if="permissions.awayOfficeDelete && ((scope.row.status != 0 && scope.row.ownerId == user.id) || permissions.awayOfficeAll)" icon="el-icon-delete" circle size="mini" @click="deletes(scope.row)"></el-button>
|
|
<el-button v-if="((scope.row.status != 0 && scope.row.ownerId == user.id) || permissions.awayOfficeAll) || scope.row.status == 1" icon="el-icon-edit" circle size="mini" @click="editor(scope.row)"></el-button>
|
|
<el-button v-if="((scope.row.status != 0 && scope.row.ownerId == user.id) || permissions.awayOfficeAll) || scope.row.status == 1" icon="el-icon-edit" circle size="mini" @click="editor(scope.row)"></el-button>
|
|
</div>
|
|
</div>
|
|
|
|
+ </template> -->
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <div v-if="isAuditList" >
|
|
|
|
+ <el-button icon="el-icon-check" circle size="mini" @click.stop.native="approve(scope.row)"></el-button>
|
|
|
|
+ <el-button icon="el-icon-close" circle size="mini" @click.stop.native="deny(scope.row)"></el-button>
|
|
|
|
+ </div>
|
|
|
|
+ <div v-if="!isAuditList && ((scope.row.status != 0 && scope.row.ownerId == user.id) || permissions.awayOfficeAll)">
|
|
|
|
+ <el-button size="mini" v-if="scope.row.status == 3 ||scope.row.status == 2" @click.stop.native="deletes(scope.row)" >删除</el-button>
|
|
|
|
+ <el-button size="mini" v-if="scope.row.status == 1" @click.stop.native="cancel(scope.row)">撤回</el-button>
|
|
|
|
+ <el-button size="mini" v-if="scope.row.status == 3 ||scope.row.status == 2 " type="primary" @click.stop.native="editor(scope.row)">重新提交</el-button>
|
|
|
|
+ </div>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column v-if="isSyncData" :label="$t('operation')" width="150" fixed="right">
|
|
<el-table-column v-if="isSyncData" :label="$t('operation')" width="150" fixed="right">
|
|
@@ -281,6 +307,9 @@
|
|
<el-button v-if="permissions.awayOfficeDelete" icon="el-icon-delete" circle size="mini" @click="deleteOfDingding(scope.row)"></el-button>
|
|
<el-button v-if="permissions.awayOfficeDelete" icon="el-icon-delete" circle size="mini" @click="deleteOfDingding(scope.row)"></el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
</el-table>
|
|
</el-table>
|
|
<!-- 页码 -->
|
|
<!-- 页码 -->
|
|
<div class="poss">
|
|
<div class="poss">
|
|
@@ -362,7 +391,19 @@
|
|
<el-col :span="6" >
|
|
<el-col :span="6" >
|
|
<el-scrollbar style="height:100%;border:1px solid #dddddd;margin-left:15px;" >
|
|
<el-scrollbar style="height:100%;border:1px solid #dddddd;margin-left:15px;" >
|
|
<div class="tree" :style="'height:'+ (tableHeight-120) + 'px'">
|
|
<div class="tree" :style="'height:'+ (tableHeight-120) + 'px'">
|
|
- <el-tree :data="sdata" :props="sdefaultProps" @node-click="handleNodeClick" accordion></el-tree>
|
|
|
|
|
|
+ <el-tree :data="sdata" :props="sdefaultProps" @node-click="handleNodeClick" accordion>
|
|
|
|
+ <!-- 添加试试看 -->
|
|
|
|
+ <span class="custom-tree-node" slot-scope="{ node, data }">
|
|
|
|
+ <!-- <span>{{ node.label }}</span> -->
|
|
|
|
+ <span v-if="user.userNameNeedTranslate == '1'">
|
|
|
|
+ <ww-open-data type='departmentName' :openid='node.label'></ww-open-data>
|
|
|
|
+ </span>
|
|
|
|
+ <span v-else>
|
|
|
|
+ {{ node.label }}
|
|
|
|
+ <span v-if="false">{{data}}</span>
|
|
|
|
+ </span>
|
|
|
|
+ </span>
|
|
|
|
+ </el-tree>
|
|
</div>
|
|
</div>
|
|
</el-scrollbar>
|
|
</el-scrollbar>
|
|
</el-col>
|
|
</el-col>
|
|
@@ -394,7 +435,7 @@
|
|
<div style="width:100%;margin:0 auto;margin-bottom:30px;position: absolute;bottom: 0px;text-align: center; ">
|
|
<div style="width:100%;margin:0 auto;margin-bottom:30px;position: absolute;bottom: 0px;text-align: center; ">
|
|
<el-button type="primary" @click="submitInsert">{{ $t('save') }}</el-button>
|
|
<el-button type="primary" @click="submitInsert">{{ $t('save') }}</el-button>
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
|
|
+ </div>
|
|
</el-scrollbar>
|
|
</el-scrollbar>
|
|
</el-col>
|
|
</el-col>
|
|
</div>
|
|
</div>
|
|
@@ -402,7 +443,8 @@
|
|
<el-form label-width="140px">
|
|
<el-form label-width="140px">
|
|
<el-form-item :label="$t('selectdepartmentsdesignatepersonnel')" >
|
|
<el-form-item :label="$t('selectdepartmentsdesignatepersonnel')" >
|
|
<el-cascader filterable ref="deptCascader" v-model="curDeptId" :placeholder="$t('defaultText.pleaseChoose')" style="width: 100%" @change="chooseDept" v-if="user.userNameNeedTranslate != 1" :options="soption" :props="{ checkStrictly: true,expandTrigger: 'hover' }" :show-all-levels="false" clearable></el-cascader>
|
|
<el-cascader filterable ref="deptCascader" v-model="curDeptId" :placeholder="$t('defaultText.pleaseChoose')" style="width: 100%" @change="chooseDept" v-if="user.userNameNeedTranslate != 1" :options="soption" :props="{ checkStrictly: true,expandTrigger: 'hover' }" :show-all-levels="false" clearable></el-cascader>
|
|
- <vueCascader :size="'small'" :widthStr="'200'" :clearable="true" :subject="soption" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
|
|
|
|
|
|
+ <!-- <vueCascader :size="'small'" :widthStr="'200'" :clearable="true" :subjectId="this.selectedAuuid" :subject="soption" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader> -->
|
|
|
|
+ <vueCascader :size="'small'" :widthStr="'200'" :clearable="true" :userName="true" :subjectId="this.selectedAuuid" :subject="soption" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
<div slot="footer" class="dialog-footer">
|
|
<div slot="footer" class="dialog-footer">
|
|
@@ -529,7 +571,7 @@
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column prop="reason" :label="$t('travelreason')" width="150" header-align="center"></el-table-column>
|
|
<el-table-column prop="reason" :label="$t('travelreason')" width="150" header-align="center"></el-table-column>
|
|
- <el-table-column prop="projectName" :label="$t('screening.inputProject')" width="150" align="center"></el-table-column>
|
|
|
|
|
|
+ <el-table-column prop="projectName" :label="$t('screening.inputProject')" width="150" align="center" v-if="isSyncData"></el-table-column>
|
|
<el-table-column :label="$t('traffictools')" width="120" align="center">
|
|
<el-table-column :label="$t('traffictools')" width="120" align="center">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<span v-if="scope.row.way == 0">{{ $t('plane') }}</span>
|
|
<span v-if="scope.row.way == 0">{{ $t('plane') }}</span>
|
|
@@ -550,7 +592,7 @@
|
|
<el-table-column prop="endDate" :label="$t('endtimeofbusinesstrip')" width="150" align="center"></el-table-column>
|
|
<el-table-column prop="endDate" :label="$t('endtimeofbusinesstrip')" width="150" align="center"></el-table-column>
|
|
<el-table-column prop="remark" :label="$t('bei-zhu')" width="200">
|
|
<el-table-column prop="remark" :label="$t('bei-zhu')" width="200">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-popover placement="top-start" title="$t('biao-ti')" width="200" trigger="hover" :content="scope.row.remark">
|
|
|
|
|
|
+ <el-popover placement="top-start" width="200" trigger="hover" :content="scope.row.remark">
|
|
<div slot="reference" class="apls">{{scope.row.remark}}</div>
|
|
<div slot="reference" class="apls">{{scope.row.remark}}</div>
|
|
</el-popover>
|
|
</el-popover>
|
|
</template>
|
|
</template>
|
|
@@ -659,6 +701,28 @@
|
|
<el-button type="primary" @click="listSynchronize()" :loading="synchronizeLoading">{{ $t('synchronous') }}</el-button>
|
|
<el-button type="primary" @click="listSynchronize()" :loading="synchronizeLoading">{{ $t('synchronous') }}</el-button>
|
|
</span>
|
|
</span>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
+
|
|
|
|
+ <el-dialog :title="$t('defaultText.pleaseEnterTheReason')" v-if="denyDialogV" :visible.sync="denyDialogV" :close-on-click-modal="false" customClass="customWidth" width="500px">
|
|
|
|
+ <div>
|
|
|
|
+ <el-input type="textarea" v-model="denyInfo.reason" rows="2" :placeholder="$t('reasonforyourdecisiontoreject')" />
|
|
|
|
+ </div>
|
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
|
+ <el-button @click="denyDialogV = false" >{{ $t('btn.cancel') }}</el-button>
|
|
|
|
+ <el-button type="primary" @click="submitDeny()" >{{ $t('btn.determine') }}</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </el-dialog>
|
|
|
|
+ <el-dialog :title="$t('title.reviewProcess')" v-if="denyReasonVisible" :visible.sync="denyReasonVisible" customClass="customWidth" width="400px">
|
|
|
|
+ <div style="padding:20px 40px 20px 0">
|
|
|
|
+ <el-timeline :reverse="false">
|
|
|
|
+ <el-timeline-item v-for="item in auditLogList" :key="item.id" :timestamp="item.indate">
|
|
|
|
+ <span v-if="user.userNameNeedTranslate == 1"><ww-open-data type='userName' :openid='item.auditorName'></ww-open-data> </span>
|
|
|
|
+ <span v-if="user.userNameNeedTranslate == 0">{{item.auditorName}}</span>
|
|
|
|
+ <span> {{item.isPass==0?"驳回了请假申请。":"审核通过。"}}</span>
|
|
|
|
+ <span v-if="item.isPass == 0">原因:{{item.denyReason}}</span>
|
|
|
|
+ </el-timeline-item>
|
|
|
|
+ </el-timeline>
|
|
|
|
+ </div>
|
|
|
|
+ </el-dialog>
|
|
</section>
|
|
</section>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -691,6 +755,8 @@ export default {
|
|
// }
|
|
// }
|
|
// };
|
|
// };
|
|
return {
|
|
return {
|
|
|
|
+ denyDialogV: false,
|
|
|
|
+ denyInfo: {},
|
|
summaryLoading: false,
|
|
summaryLoading: false,
|
|
displayTable: false,
|
|
displayTable: false,
|
|
formloading: false,
|
|
formloading: false,
|
|
@@ -807,7 +873,10 @@ export default {
|
|
|
|
|
|
isOverTendays: false,
|
|
isOverTendays: false,
|
|
tableListLoading: false,
|
|
tableListLoading: false,
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ curWorkflowList:{},
|
|
|
|
+ denyReasonVisible : false,
|
|
|
|
+ auditLogList:[],
|
|
}
|
|
}
|
|
},
|
|
},
|
|
created(){
|
|
created(){
|
|
@@ -828,9 +897,8 @@ export default {
|
|
this.getTableList()
|
|
this.getTableList()
|
|
this.getProjectList()
|
|
this.getProjectList()
|
|
this.getDepartment()
|
|
this.getDepartment()
|
|
-
|
|
|
|
-
|
|
|
|
- // console.log("session",this.wuduData);
|
|
|
|
|
|
+ this.getAuditWorkflow();
|
|
|
|
+ this.getUsers()
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
// 自定义事件
|
|
// 自定义事件
|
|
@@ -842,6 +910,25 @@ export default {
|
|
this.ownerIdsId = obj.id
|
|
this.ownerIdsId = obj.id
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ //获取添加出差单时的审批流
|
|
|
|
+ getAuditWorkflow() {
|
|
|
|
+ this.http.post('/audit-workflow-setting/get',{userId: this.user.id, type: 2},
|
|
|
|
+ res => {
|
|
|
|
+ if(res.code == 'ok'){
|
|
|
|
+ this.curWorkflowList = res.data;
|
|
|
|
+ }else{
|
|
|
|
+ this.$message({
|
|
|
|
+ message: res.msg,
|
|
|
|
+ type: 'error'
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ },err => {
|
|
|
|
+ this.$message({
|
|
|
|
+ message: err,
|
|
|
|
+ type: 'error'
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ },
|
|
dingdingListExport(){
|
|
dingdingListExport(){
|
|
let parameter = {
|
|
let parameter = {
|
|
keyword: ''
|
|
keyword: ''
|
|
@@ -1097,7 +1184,8 @@ export default {
|
|
// console.log("keypath",keyPath)
|
|
// console.log("keypath",keyPath)
|
|
if (keyPath[0] == '1') {
|
|
if (keyPath[0] == '1') {
|
|
this.displayTable = false;
|
|
this.displayTable = false;
|
|
- this.apk = 0
|
|
|
|
|
|
+ this.apk = 0;
|
|
|
|
+ this.getAuditWorkflow();
|
|
} else if(keyPath[0] == '2' || keyPath[0] == '3') {
|
|
} else if(keyPath[0] == '2' || keyPath[0] == '3') {
|
|
this.displayTable = true;
|
|
this.displayTable = true;
|
|
this.apk = 0
|
|
this.apk = 0
|
|
@@ -1116,6 +1204,46 @@ export default {
|
|
this.apk = 2
|
|
this.apk = 2
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ auditList() {
|
|
|
|
+ this.falg = 1
|
|
|
|
+ this.code = 1
|
|
|
|
+ this.tableList = []
|
|
|
|
+ this.displayTable = true;
|
|
|
|
+ this.isAuditList = true;
|
|
|
|
+ this.loading = true
|
|
|
|
+ this.page = '1'
|
|
|
|
+ var param = { pageIndex: this.page,
|
|
|
|
+ pageSize: this.size,
|
|
|
|
+ // createDate: this.createDate,
|
|
|
|
+ startDate: this.createDate == null ? '' : this.createDate[0],
|
|
|
|
+ endDate: this.createDate == null ? '' : this.createDate[1],
|
|
|
|
+ ownerId: this.ownerIds,
|
|
|
|
+ way: this.type,
|
|
|
|
+ };
|
|
|
|
+ this.tableList = [];
|
|
|
|
+ this.total = 0;
|
|
|
|
+ this.http.post('/business-trip/auditList', param,
|
|
|
|
+ res => {
|
|
|
|
+ if (res.code == "ok") {
|
|
|
|
+ this.tableList = res.data.records
|
|
|
|
+ this.total = res.data.total
|
|
|
|
+ this.loading = false
|
|
|
|
+ } else {
|
|
|
|
+ this.loading = false
|
|
|
|
+ this.$message({
|
|
|
|
+ message: res.msg,
|
|
|
|
+ type: "error"
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ error => {
|
|
|
|
+ this.loading = false
|
|
|
|
+ this.$message({
|
|
|
|
+ message: error,
|
|
|
|
+ type: "error"
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ },
|
|
// 导航切换
|
|
// 导航切换
|
|
bills(audit, tr){
|
|
bills(audit, tr){
|
|
if(tr) {
|
|
if(tr) {
|
|
@@ -1347,7 +1475,11 @@ export default {
|
|
},
|
|
},
|
|
res => {
|
|
res => {
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
- this.billss(true);
|
|
|
|
|
|
+ this.auditList();
|
|
|
|
+ this.$message({
|
|
|
|
+ message: '操作成功',
|
|
|
|
+ type: "success"
|
|
|
|
+ });
|
|
} else {
|
|
} else {
|
|
this.$message({
|
|
this.$message({
|
|
message: res.msg,
|
|
message: res.msg,
|
|
@@ -1363,12 +1495,21 @@ export default {
|
|
});
|
|
});
|
|
},
|
|
},
|
|
deny(item) {
|
|
deny(item) {
|
|
- //审核驳回
|
|
|
|
- this.http.post('/business-trip/deny', {id:item.id
|
|
|
|
- },
|
|
|
|
|
|
+ this.denyDialogV = true;
|
|
|
|
+ this.denyInfo = {id:item.id, reason:null};
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ submitDeny(id) {
|
|
|
|
+ //审核驳回
|
|
|
|
+ this.http.post('/business-trip/deny', this.denyInfo,
|
|
res => {
|
|
res => {
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
- this.billss(true);
|
|
|
|
|
|
+ this.auditList();
|
|
|
|
+ this.denyDialogV = false;
|
|
|
|
+ this.$message({
|
|
|
|
+ message: '操作成功',
|
|
|
|
+ type: "success"
|
|
|
|
+ });
|
|
} else {
|
|
} else {
|
|
this.$message({
|
|
this.$message({
|
|
message: res.msg,
|
|
message: res.msg,
|
|
@@ -1383,6 +1524,33 @@ export default {
|
|
});
|
|
});
|
|
});
|
|
});
|
|
},
|
|
},
|
|
|
|
+ cancel(e) {
|
|
|
|
+ this.$confirm('确定要撤回该出差申请吗', this.$t('other.prompts'), {
|
|
|
|
+ //type: 'warning'
|
|
|
|
+ }).then(() => {
|
|
|
|
+ this.http.post('/business-trip/cancel', {id:e.id},
|
|
|
|
+ res => {
|
|
|
|
+ if (res.code == "ok") {
|
|
|
|
+ this.bills();
|
|
|
|
+ this.$message({
|
|
|
|
+ message: '操作成功',
|
|
|
|
+ type: "success"
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ this.$message({
|
|
|
|
+ message: res.msg,
|
|
|
|
+ type: "error"
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ error => {
|
|
|
|
+ this.$message({
|
|
|
|
+ message: error,
|
|
|
|
+ type: "error"
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ },
|
|
// 操作 - 删除
|
|
// 操作 - 删除
|
|
deletes(e) {
|
|
deletes(e) {
|
|
this.$confirm(this.$t('deleteit'), this.$t('other.prompts'), {}).then(() => {
|
|
this.$confirm(this.$t('deleteit'), this.$t('other.prompts'), {}).then(() => {
|
|
@@ -1516,8 +1684,8 @@ export default {
|
|
pageIndex: this.detailspage,
|
|
pageIndex: this.detailspage,
|
|
pageSize: this.detailssize,
|
|
pageSize: this.detailssize,
|
|
status: 0,
|
|
status: 0,
|
|
- startDate: '',
|
|
|
|
- endDate: '',
|
|
|
|
|
|
+ startDate: this.searchDates[0],
|
|
|
|
+ endDate: this.searchDates[1],
|
|
ownerId: this.detailsuserid,
|
|
ownerId: this.detailsuserid,
|
|
way: '',
|
|
way: '',
|
|
};
|
|
};
|
|
@@ -1570,8 +1738,8 @@ export default {
|
|
var list = res.data , list1 = JSON.parse(JSON.stringify(res.data));
|
|
var list = res.data , list1 = JSON.parse(JSON.stringify(res.data));
|
|
this.sdata = list;
|
|
this.sdata = list;
|
|
this.soption = [
|
|
this.soption = [
|
|
- {value: 1 , label : this.$t('lable.department') , children : this.changeArr(list1)},
|
|
|
|
- {value: 2 , label : this.$t('designatedpersonnel'),children : this.susers}
|
|
|
|
|
|
+ {value: 1 , label : this.$t('lable.department') , children : this.changeArr(list1), type: 'dep'},
|
|
|
|
+ {value: 2 , label : this.$t('designatedpersonnel'),children : this.susers, type: 'user'}
|
|
]
|
|
]
|
|
} else {
|
|
} else {
|
|
this.$message({
|
|
this.$message({
|
|
@@ -1698,7 +1866,14 @@ export default {
|
|
this.dialogVisible = false;
|
|
this.dialogVisible = false;
|
|
if (this.curDeptId == null) return;
|
|
if (this.curDeptId == null) return;
|
|
|
|
|
|
- var node = this.user.userNameNeedTranslate != '1' ? this.vueCasaderItem : this.$refs.deptCascader.getCheckedNodes()[0];
|
|
|
|
|
|
+ // var node = this.user.userNameNeedTranslate != '1' ? this.vueCasaderItem : this.$refs.deptCascader.getCheckedNodes()[0];
|
|
|
|
+ var node = ''
|
|
|
|
+ if(this.user.userNameNeedTranslate != 1) {
|
|
|
|
+ // node = this.user.userNameNeedTranslate != '1' ? this.vueCasaderItem : this.$refs.deptCascader.getCheckedNodes()[0];
|
|
|
|
+ node = this.$refs.deptCascader.getCheckedNodes()[0];
|
|
|
|
+ } else {
|
|
|
|
+ node = this.addNodeObj
|
|
|
|
+ }
|
|
|
|
|
|
// var node = this.$refs.deptCascader.getCheckedNodes()[0];
|
|
// var node = this.$refs.deptCascader.getCheckedNodes()[0];
|
|
if (this.isAdd) {
|
|
if (this.isAdd) {
|
|
@@ -1726,19 +1901,24 @@ export default {
|
|
this.dataArray.splice(this.sindex, 0, nodes);
|
|
this.dataArray.splice(this.sindex, 0, nodes);
|
|
} else {
|
|
} else {
|
|
//编辑
|
|
//编辑
|
|
- this.dataArray[this.sindex].auditDeptId = node.value;
|
|
|
|
- this.dataArray[this.sindex].auditDeptName = node.label;
|
|
|
|
|
|
+ if(node.type == 'dep') {
|
|
|
|
+ this.dataArray[this.sindex].auditDeptId = node.value;
|
|
|
|
+ this.dataArray[this.sindex].auditDeptName = node.label;
|
|
|
|
+ this.dataArray[this.sindex].auditorType = 1
|
|
|
|
+ this.dataArray[this.sindex].userId = ''
|
|
|
|
+ this.dataArray[this.sindex].userName = ''
|
|
|
|
+ } else {
|
|
|
|
+ this.dataArray[this.sindex].userId = node.value;
|
|
|
|
+ this.dataArray[this.sindex].userName = node.label;
|
|
|
|
+ this.dataArray[this.sindex].auditDeptId = ''
|
|
|
|
+ this.dataArray[this.sindex].auditDeptName = ''
|
|
|
|
+ this.dataArray[this.sindex].auditorType = 2
|
|
|
|
+ }
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
|
|
|
|
|
|
getUsers() {
|
|
getUsers() {
|
|
- // this.http.post(this.port.manage.list, {
|
|
|
|
- // departmentId: -1,
|
|
|
|
- // pageIndex: 1,
|
|
|
|
- // // pageSize: 99999
|
|
|
|
- // pageSize: -1
|
|
|
|
- // },
|
|
|
|
this.http.post('/user/getSimpleActiveUserList', {},
|
|
this.http.post('/user/getSimpleActiveUserList', {},
|
|
res => {
|
|
res => {
|
|
if (res.code == "ok") {
|
|
if (res.code == "ok") {
|
|
@@ -1746,7 +1926,8 @@ export default {
|
|
// this.users = res.data.records;
|
|
// this.users = res.data.records;
|
|
this.users = res.data;
|
|
this.users = res.data;
|
|
for (let i = 0; i < this.users.length; i++) {
|
|
for (let i = 0; i < this.users.length; i++) {
|
|
- this.susers.push({value:this.users[i].id,label:this.users[i].name})
|
|
|
|
|
|
+ // this.susers.push({value:this.users[i].id,label:this.users[i].name})
|
|
|
|
+ this.susers.push({value:this.users[i].id,label:this.users[i].name,type: 'user'})
|
|
}
|
|
}
|
|
// if (this.user.role == 0) {
|
|
// if (this.user.role == 0) {
|
|
// this.editItemForm.ownerId = this.user.id;
|
|
// this.editItemForm.ownerId = this.user.id;
|
|
@@ -1837,6 +2018,16 @@ export default {
|
|
}
|
|
}
|
|
);
|
|
);
|
|
},
|
|
},
|
|
|
|
+ vueCasader(obj) {
|
|
|
|
+ if(obj.distinction == 1) {
|
|
|
|
+ let arr = []
|
|
|
|
+ arr.push(obj.id)
|
|
|
|
+ this.curDeptId = arr
|
|
|
|
+ this.vueCasaderItem = obj.item
|
|
|
|
+ this.addNodeObj = obj.item
|
|
|
|
+ console.log(obj, '选中的')
|
|
|
|
+ }
|
|
|
|
+ }
|
|
//获取项目列表
|
|
//获取项目列表
|
|
// getProjectList() {
|
|
// getProjectList() {
|
|
// this.listLoading = true;
|
|
// this.listLoading = true;
|