| | |
| | | {{ item.name }} |
| | | </el-button> |
| | | </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'" |
| | | plain |
| | | size="small" |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import func from "@/util/func"; |
| | | import {validatenull} from "@/util/validate"; |
| | | import {doAction} from '@/actions/base/BaseAction'; |
| | | |
| | | export default { |
| | | name: "dynamic-button", |
| | | props: { |
| | | componentVO: { |
| | | type: Object, |
| | | default: {} |
| | | }, |
| | | type: { |
| | | type: String |
| | | }, |
| | |
| | | butttonList: { |
| | | type: Array |
| | | }, |
| | | selectList: { |
| | | default:{ |
| | | type:String, |
| | | }, |
| | | sourceData: { |
| | | //按钮所属区域的上一区域选中数据 |
| | | type: Object, |
| | | default: {} |
| | | }, |
| | | dataStore: { |
| | | //按钮所属区域选中数据 |
| | | type: Array, |
| | | default: [] |
| | | }, |
| | | default:{ |
| | | type:String, |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | computed: { |
| | | basicButtonList() { |
| | | const basicColumn = this.butttonList; |
| | | if (!basicColumn || !Array.isArray(basicColumn)) { |
| | | return []; // 如果 basicColumn 未定义或者不是数组,返回空数组 |
| | | } |
| | | |
| | | if (this.type === 'form') { |
| | | if (this.type === 'form' || this.type === 'tree') { |
| | | return basicColumn; |
| | | } else if (this.type === 'table' || this.type === 'TreeTable') { |
| | | const top = basicColumn.filter(item => item.paramVOS.webUiButtonLocation === 'top' || func.isEmpty(item.paramVOS.webUiButtonLocation)); // 过滤出来表格上面区域展示的按钮 |
| | | const menu = basicColumn.filter(item => item.paramVOS.webUiButtonLocation === 'menu'); // 过滤出来操作栏展示的按钮 |
| | | const top = basicColumn.filter(item => { |
| | | return item.paramVOS && (item.paramVOS.webUiButtonLocation === 'top' || func.isEmpty(item.paramVOS.webUiButtonLocation)); |
| | | }); |
| | | const menu = basicColumn.filter(item => { |
| | | return item.paramVOS && item.paramVOS.webUiButtonLocation === 'menu'; |
| | | }); |
| | | return { |
| | | top: top, |
| | | menu: menu, |
| | |
| | | }, |
| | | methods: { |
| | | //表格树默认新增子项 |
| | | handleDefaultAddChildren(row){ |
| | | handleDefaultAddChildren(row) { |
| | | this.visible = true; |
| | | this.formName = '新增子级' |
| | | this.$refs.dynamicForm.form = row; |
| | | }, |
| | | buttonClick(item) { |
| | | // 根据 type 条件动态引入不同的JS文件,并传递 item this 参数 |
| | | if (this.type === 'table') { |
| | | import('@/views/base/buttonTable').then(module => { |
| | | const buttonClickTable = module.default; |
| | | buttonClickTable.buttonClick(item,this); |
| | | }) |
| | | } else if (this.type === 'form') { |
| | | import('@/views/base/buttonForm').then(module => { |
| | | const buttonClickForm = module.default; |
| | | buttonClickForm.buttonClick(item,this); |
| | | }) |
| | | const paramVOS=item.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 || ''); |
| | | } |
| | | |
| | | if (!paramVOS['type']) { |
| | | paramVOS['type'] = DefineVO.btmType; |
| | | } |
| | | /*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']; |
| | | } |
| | | |
| | | const that=this; |
| | | doAction(item, { |
| | | paramVOS: paramVOS, |
| | | dataStore: this.dataStore || [], |
| | | sourceData: this.sourceData || {}, |
| | | callback: function () { |
| | | if (that.$parent.handleRefresh) { |
| | | that.$parent.handleRefresh() |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | } |