| | |
| | | <!--表格基础按钮--> |
| | | <div v-if="type === 'table' || type === 'TreeTable'"> |
| | | <!--top展示表格上方区域 menu展示表格操作栏区域 无就是默认 --> |
| | | <el-button v-for="item in basicButtonList.top" |
| | | v-if="LocationType === 'top'" |
| | | :key="item.oid" :icon="item.paramVOS.webUiButtonIcon" |
| | | :type="item.paramVOS.webUiButtonType || 'primary'" plain |
| | | size="small" |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | <el-tooltip v-if="LocationType === 'top'" v-for="item in basicButtonList.top" :content="item.description || item.name" placement="top"> |
| | | <el-button :key="item.oid" :icon="item.paramVOS.icon" |
| | | :type="item.paramVOS.btnType || 'primary'" plain |
| | | size="small" |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | </el-tooltip> |
| | | |
| | | <el-button type="text" @click="handleDefaultAddChildren(scope.row)" v-if="(LocationType === 'menu' && this.default === 'default')">新增子级</el-button> |
| | | <el-button v-for="item in basicButtonList.menu" |
| | | v-if="LocationType === 'menu'" |
| | | :key="item.oid" |
| | | :icon="item.paramVOS.webUiButtonIcon ? item.paramVOS.webUiButtonIcon : (item.paramVOS.webUiButtonMethods === 'edit' ? 'el-icon-edit' : (item.paramVOS.webUiButtonMethods === 'delete' ? 'el-icon-delete' : ''))" |
| | | :type="item.paramVOS.webUiButtonType || 'text'" plain |
| | | size="small" |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | <el-button type="text" @click="handleDefaultAddChildren(scope.row)" v-if="(LocationType === 'menu' && type === 'TreeTable')">新增子级</el-button> |
| | | <el-button type="text" icon="el-icon-view" size="small" plain @click="$emit('rowView',scope.row,scope.index)" v-if="LocationType === 'menu'">查看</el-button> |
| | | |
| | | <el-tooltip v-if="LocationType === 'menu'" v-for="item in basicButtonList.menu" :content="item.description || item.name" placement="top"> |
| | | <el-button :key="item.oid" |
| | | :icon="item.paramVOS.icon ? item.paramVOS.icon : (item.id === 'edit' ? 'el-icon-edit' : (item.id === 'delete' ||item.id === 'del' ? 'el-icon-delete' : ''))" |
| | | :type="item.paramVOS.btnType || 'text'" plain |
| | | size="small" |
| | | @click="buttonClick(item,scope.row)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | </el-tooltip> |
| | | |
| | | <!-- 表格内按钮操作对话框表单 --> |
| | | <dynamic-table-form ref="dynamicForm" :formList="formList" :title="formName" :visible.sync="visible" |
| | | style="display: none"></dynamic-table-form> |
| | | </div> |
| | | <div v-else-if="type === 'form'"> |
| | | <el-button v-for="item in basicButtonList" |
| | | :key="item.oid" |
| | | :icon="item.paramVOS.webUiButtonIcon" |
| | | :type="(item.paramVOS.webUiButtonType !== 'text' ? item.paramVOS.webUiButtonType : 'primary') || 'primary'" |
| | | plain |
| | | size="small" |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | <el-tooltip v-for="item in basicButtonList" :content="item.description || item.name" placement="top"> |
| | | <el-button :key="item.oid" |
| | | :icon="item.paramVOS.icon" |
| | | :type="item.paramVOS.btnType || 'primary'" |
| | | plain |
| | | size="small" |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | </el-tooltip> |
| | | </div> |
| | | <div v-else-if="type === 'tree'" class="tree-buttons"> |
| | | <el-button v-for="item in basicButtonList" |
| | | :key="item.oid" |
| | | :icon="item.paramVOS.webUiButtonIcon" |
| | | :type="(item.paramVOS.webUiButtonType !== 'text' ? item.paramVOS.webUiButtonType : 'primary') || 'primary'" |
| | | <el-tooltip v-for="item in basicButtonList" :content="item.description || item.name" placement="top"> |
| | | <el-button :key="item.oid" |
| | | :icon="item.paramVOS.icon" |
| | | :type="item.paramVOS.btnType || 'primary'" |
| | | plain |
| | | size="small" |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | </el-tooltip> |
| | | <el-button type="primary" |
| | | plain |
| | | size="small" |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | @click="$emit('refresh')"> |
| | | 刷新 |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | |
| | | <script> |
| | | import func from "@/util/func"; |
| | | import {validatenull} from "@/util/validate"; |
| | | import {doAction} from '@/actions/base/BaseAction'; |
| | | import {doAction} from '@/components/actions/base/BaseAction'; |
| | | import Vue from "vue"; |
| | | |
| | | export default { |
| | |
| | | butttonList: { |
| | | type: Array |
| | | }, |
| | | default:{ |
| | | type:String, |
| | | }, |
| | | sourceData: { |
| | | //按钮所属区域的上一区域选中数据 |
| | | type: Object, |
| | |
| | | visible: false, |
| | | formName: '', |
| | | // 表单数据 |
| | | formList: [ |
| | | { |
| | | comboxKey: null, |
| | | customClass: null, |
| | | data: null, |
| | | dateFormate: null, |
| | | defaultValue: "", |
| | | displayExtension: "", |
| | | extendAttrMap: null, |
| | | extendAttrString: null, |
| | | field: "name", |
| | | hidden: false, |
| | | keyAttr: true, |
| | | prefix: null, |
| | | readOnly: false, |
| | | referConfig: null, |
| | | required: true, |
| | | selectLibFlag: null, |
| | | showField: null, |
| | | suffix: '$', |
| | | text: "名称", |
| | | tooltips: '名称', |
| | | type: "text", |
| | | unique: false, |
| | | verify: "" |
| | | }, |
| | | { |
| | | comboxKey: null, |
| | | customClass: null, |
| | | data: null, |
| | | dateFormate: null, |
| | | defaultValue: "", |
| | | displayExtension: "", |
| | | extendAttrMap: null, |
| | | extendAttrString: null, |
| | | field: "code", |
| | | hidden: false, |
| | | keyAttr: false, |
| | | prefix: null, |
| | | readOnly: false, |
| | | referConfig: null, |
| | | required: false, |
| | | selectLibFlag: null, |
| | | showField: null, |
| | | suffix: null, |
| | | disabled: true, |
| | | text: "编码", |
| | | tooltips: null, |
| | | type: "text", |
| | | unique: false, |
| | | verify: "" |
| | | }, |
| | | { |
| | | comboxKey: "EnumReviewType", |
| | | customClass: null, |
| | | data: null, |
| | | dateFormate: null, |
| | | defaultValue: "department", |
| | | displayExtension: "", |
| | | extendAttrMap: null, |
| | | extendAttrString: null, |
| | | field: "reviewtype", |
| | | hidden: false, |
| | | keyAttr: false, |
| | | prefix: null, |
| | | readOnly: false, |
| | | referConfig: null, |
| | | required: false, |
| | | selectLibFlag: null, |
| | | showField: null, |
| | | suffix: null, |
| | | text: "类型", |
| | | tooltips: null, |
| | | type: "combox", |
| | | unique: false, |
| | | verify: "", |
| | | dicData: [{ |
| | | label: '测试1', |
| | | value: 'department' |
| | | }, { |
| | | label: '测试2', |
| | | value: 'departments' |
| | | }] |
| | | }, |
| | | { |
| | | comboxKey: null, |
| | | customClass: null, |
| | | data: null, |
| | | dateFormate: null, |
| | | defaultValue: "", |
| | | displayExtension: "", |
| | | extendAttrMap: null, |
| | | extendAttrString: null, |
| | | field: "creator", |
| | | hidden: true, |
| | | keyAttr: false, |
| | | prefix: null, |
| | | readOnly: true, |
| | | referConfig: null, |
| | | required: false, |
| | | selectLibFlag: null, |
| | | showField: null, |
| | | suffix: null, |
| | | text: "创建人", |
| | | tooltips: null, |
| | | type: "text", |
| | | unique: false, |
| | | verify: "" |
| | | }, |
| | | { |
| | | comboxKey: null, |
| | | customClass: null, |
| | | data: null, |
| | | dateFormate: "yyyy-MM-dd HH:mm:ss", |
| | | defaultValue: "", |
| | | displayExtension: "", |
| | | extendAttrMap: null, |
| | | extendAttrString: null, |
| | | field: "createtime", |
| | | hidden: true, |
| | | keyAttr: false, |
| | | prefix: null, |
| | | readOnly: false, |
| | | referConfig: null, |
| | | required: false, |
| | | selectLibFlag: null, |
| | | showField: null, |
| | | suffix: null, |
| | | text: "创建时间", |
| | | tooltips: null, |
| | | type: "datetime", |
| | | unique: false, |
| | | verify: "" |
| | | }, |
| | | { |
| | | comboxKey: null, |
| | | customClass: null, |
| | | data: null, |
| | | dateFormate: null, |
| | | defaultValue: "", |
| | | displayExtension: "", |
| | | extendAttrMap: null, |
| | | extendAttrString: null, |
| | | field: "content", |
| | | hidden: false, |
| | | keyAttr: false, |
| | | prefix: null, |
| | | readOnly: false, |
| | | referConfig: null, |
| | | required: false, |
| | | selectLibFlag: null, |
| | | showField: null, |
| | | suffix: null, |
| | | text: "备注", |
| | | tooltips: null, |
| | | type: "textarea", |
| | | unique: false, |
| | | verify: "" |
| | | }, |
| | | ], |
| | | formList: [], |
| | | } |
| | | }, |
| | | computed: { |
| | |
| | | return []; // 如果 basicColumn 未定义或者不是数组,返回空数组 |
| | | } |
| | | |
| | | if (this.type === 'form' || this.type === 'tree') { |
| | | if (this.type === 'form') { |
| | | return basicColumn; |
| | | }else if (this.type === 'tree') { |
| | | const treeBtn = basicColumn.filter(item => { |
| | | if (item.id != "refresh") { |
| | | return true; |
| | | } |
| | | return false |
| | | }); |
| | | return treeBtn; |
| | | } else if (this.type === 'table' || this.type === 'TreeTable') { |
| | | const top = basicColumn.filter(item => { |
| | | return item.paramVOS && (item.paramVOS.webUiButtonLocation === 'top' || func.isEmpty(item.paramVOS.webUiButtonLocation)); |
| | | if (item.paramVOS && item.paramVOS.showLocation && item.paramVOS.showLocation !== 'menu') { |
| | | return true; |
| | | } else if (item.id != "edit" && item.id != "del" && item.id != "delete" && item.id != "refresh") { |
| | | return true; |
| | | } |
| | | return false |
| | | }); |
| | | const menu = basicColumn.filter(item => { |
| | | return item.paramVOS && item.paramVOS.webUiButtonLocation === 'menu'; |
| | | if (item.paramVOS && item.paramVOS.showLocation && item.paramVOS.showLocation === 'menu') { |
| | | return true |
| | | } else if (item.id == "edit" || item.id == "del" || item.id == "delete"){ |
| | | return true; |
| | | } |
| | | return false; |
| | | }); |
| | | return { |
| | | top: top, |
| | |
| | | this.formName = '新增子级' |
| | | this.$refs.dynamicForm.form = row; |
| | | }, |
| | | buttonClick(item) { |
| | | const paramVOS=item.paramVOS; |
| | | buttonClick(buttonitem,rowData) { |
| | | const paramVOS = buttonitem.paramVOS; |
| | | const DefineVO = this.componentVO.treeDefineVO || this.componentVO.tableDefineVO || this.componentVO.treeTableDefineVO || this.componentVO.formDefineVO; |
| | | if (!paramVOS['title']) { |
| | | paramVOS['title'] = item.name + (DefineVO.title || DefineVO.componentTitle || ''); |
| | | paramVOS['title'] = buttonitem.name + (DefineVO.title || ''); |
| | | } |
| | | |
| | | if (!paramVOS['type']) { |
| | | paramVOS['type'] = DefineVO.btmType; |
| | | } |
| | | for(let item in paramVOS) { |
| | | if (item.includes('.${') && item.includes('}')) { |
| | | //替换成源数据中的值 |
| | | if (Object.keys(this.sourceData).length === 0) { |
| | | this.$message.error("请先选择一条来源数据"); |
| | | return false; |
| | | } |
| | | item=item.replace(/:/g,'='); |
| | | let values = item.split(';'); |
| | | let initValues = [] |
| | | } else if (item.includes('${') && item.includes('}')) { |
| | | //替换成选中数据的值 |
| | | if (this.dataStore.length < 1) { |
| | | this.$message.error("请先选择一条数据"); |
| | | return false; |
| | | } |
| | | item=item.replace(/:/g,'='); |
| | | } |
| | | } |
| | | /*if (paramVOS['initvalue']) { |
| | | var values = paramVOS['initvalue'].split(';'); |
| | | var initValues = [] |
| | | layui.each(values, function (i, item) { |
| | | item=item.replace(':','='); |
| | | if (item.indexOf('${') > -1) { |
| | | if (item.split('=')[1].indexOf('.') > -1) { |
| | | if (sourceData.length<1 || !sourceData[0].oid) { |
| | | isShow = false; |
| | | $webUtil.showErrorMsg("请先选择一条来源数据"); |
| | | return false; |
| | | } |
| | | var name = item.split('=')[1].split('.')[1].replace('${', '').replace('}', ''); |
| | | if (name == 'oid') { |
| | | item = item.split('=')[0] + '=' + sourceData[0]['oid'] |
| | | } else { |
| | | item = item.split('=')[0] + '=' + sourceData[0][name] |
| | | } |
| | | } else { |
| | | if (dataStore.length < 1) { |
| | | isShow = false; |
| | | $webUtil.showErrorMsg("请先选择一条数据"); |
| | | return false; |
| | | } |
| | | var name = item.split('=')[1].replace('${', '').replace('}', ''); |
| | | item = item.split('=')[0] + '=' + dataStore[0][name]; |
| | | |
| | | } |
| | | } |
| | | initValues.push(item) |
| | | }) |
| | | paramVOS['initvalue'] = initValues.join(';') |
| | | }*/ |
| | | if(paramVOS['BSContent'] || paramVOS['BSContext']){ |
| | | paramVOS['context']=paramVOS['BSContext'] || paramVOS['BSContent'] |
| | | paramVOS['content']=paramVOS['BSContext'] || paramVOS['BSContent']; |
| | | if (paramVOS['BSContent'] || paramVOS['BSContext']) { |
| | | paramVOS['context'] = paramVOS['BSContext'] || paramVOS['BSContent'] |
| | | paramVOS['content'] = paramVOS['BSContext'] || paramVOS['BSContent']; |
| | | } |
| | | |
| | | const that=this; |
| | | doAction(item, { |
| | | const that = this; |
| | | //paramVOS.customBtn //弹窗默认有保存按钮,customBtn为true时内容展示自定义按钮 |
| | | doAction(buttonitem, { |
| | | paramVOS: paramVOS, |
| | | dataStore: this.dataStore || [], |
| | | sourceData: this.sourceData || {}, |
| | | callback: function () { |
| | | if (that.$parent.handleRefresh) { |
| | | that.$parent.handleRefresh() |
| | | } |
| | | } |
| | | dataStore: rowData?[rowData] :(this.dataStore || []), |
| | | sourceData: this.sourceData || {} |
| | | }, function (actionType,data) { |
| | | that.$emit("afterMethod",actionType,data); |
| | | }); |
| | | } |
| | | }, |