123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- <template>
- <div class="tool">
- <div class="tool-left">
- <el-button
- v-for="(item,index) of showTools"
- :icon="item.icon"
- :key="index"
- size="small"
- v-hasPermi="[item.audit]"
- @click="clickHandle(item)">
- {{ item.name }}
- </el-button>
- <slot name="tool-left" />
- </div>
-
- <div class="tool-right">
- <el-tooltip class="item" effect="dark" :content="openSearch ? '隐藏搜索' : '显示搜索'" placement="top">
- <el-button :icon="openSearch?'el-icon-search':'el-icon-minus'" size="small" circle v-if="propTools.search" @click="toggleSearch"></el-button>
- </el-tooltip>
- <el-tooltip class="item" effect="dark" content="刷新" placement="top">
- <el-button icon="el-icon-refresh" size="small" circle v-if="propTools.refresh" @click="refresh"></el-button>
- </el-tooltip>
- <slot name="tool-right" />
- </div>
- </div>
- </template>
- <script lang="ts">
- import { Component, Prop, Vue, Mixins } from 'vue-property-decorator'
- @Component({
- // components: { logDrawer }
- })
- export default class GmTools extends Vue {
- openSearch:boolean = true
- @Prop()
- propConfig:any
- @Prop()
- customTools:any;
- get audit(){
- return this.propConfig?.audit ? this.propConfig.audit : {}
- }
- get propTools(){
- return this.propConfig?.tools ? this.propConfig.tools : {}
- }
- tools:Array<any>=[
- { name: '返回', icon: 'el-icon-arrow-left', clickName: 'onReturn', _class: 'return' },
- { name: '新增', icon: 'el-icon-plus', clickName: 'onAdd', _class: 'add' },
- { name: '保存', icon: 'el-icon-plus', clickName: 'onSave', _class: 'save' },
- { name: '提交', icon: 'el-icon-finished', clickName: 'onSmt', _class: 'smt' },
- { name: '反提交', icon: 'el-icon-finished', clickName: 'onReturnSmt', _class: 'returnSmt' },
- { name: '接单', icon: 'el-icon-sold-out', clickName: 'onOrder', _class: 'order' },
- { name: '派单', icon: 'el-icon-sell', clickName: 'onDispatch', _class: 'dispatch' },
- { name: '修改', icon: 'el-icon-edit', clickName: 'onUpdate', _class: 'edit' },
- { name: '取消提交', icon: 'el-icon-refresh-left', clickName: 'onReSmt', _class: 'reSmt' },
- { name: '删除', icon: 'el-icon-delete', clickName: 'onDelete', _class: 'delete' },
- { name: '导出', icon: 'el-icon-download', clickName: 'onExport', _class: 'export' },
- ]
- showTools:Array<any>=[]
- created(){
- this.initTools()
- }
- initTools(){
- this.showTools = [];
- if(this.propConfig?.tools){
- this.setTool(this.propConfig?.tools)
- }
- if(this.propConfig?.customTools && this.propConfig?.customTools.length > 0){
- this.setCustomTools(this.propConfig?.customTools)
- }
- if(this.customTools){
- this.setCustomTools(this.customTools)
- }
- }
- setTool(data:any){
- this.showTools = [];
- for(const item of this.tools){
- if(data[item._class]){
- let obj:any = (this as any).$lodash.cloneDeep(item);
- if(this.audit){
- obj.audit = this.audit[item._class]
- }
- this.showTools.push(obj)
- }
- }
- }
- //自定义工具栏按钮设置
- setCustomTools(tools:Array<any>){
- for(const item of tools){
- this.showTools.push(item)
- }
- }
- //点击刷新按钮
- refresh(){
- this.$emit('clickHandle','onRefresh')
- }
- //点击搜索
- toggleSearch(){
- this.openSearch = !this.openSearch;
- this.$emit('clickHandle','toggleSearch')
- }
- clickHandle(item:any){
- if(item?.event?.click){
- item.event.click()
- }else{
- this.$emit('clickHandle',item.clickName)
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .tool{
- width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
- .tool-left{
- width: 100%;
- }
- .tool-right{
- flex-shrink: 0;
- display: flex;
- align-items: center;
- }
- }
- </style>
|