Merge remote-tracking branch 'origin/master'
| | |
| | | <avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="Treedata" :defaultExpandAll="false" |
| | | :option="Treeoption" style="width: fit-content;" @node-click="nodeClick"> |
| | | <template slot-scope="{ node }"> |
| | | <span id="labelSize" v-html="node.label" ></span> |
| | | <el-tooltip class="item" effect="dark" open-delay="350" :content="$createElement('div', { domProps: { innerHTML: node.label } })" placement="right-start"> |
| | | <span id="labelSize" v-html="node.label" ></span> |
| | | </el-tooltip> |
| | | </template> |
| | | </avue-tree> |
| | | <div style="position: absolute; right: 3px; top: -1px;"> |
| | |
| | | :width="item.width" |
| | | align="center"> |
| | | </el-table-column> |
| | | <!-- 参照数据--> |
| | | <!-- <el-table-column v-for="(item,index) in referArray"--> |
| | | <!-- v-if="item.referConfig && Object.keys(item.referConfig).length > 0 && !item.hidden"--> |
| | | <!-- :key="index"--> |
| | | <!-- :label="item.title" :show-overflow-tooltip="true"--> |
| | | <!-- :sortable="item.sortable" :width="item.width" align="center"--> |
| | | <!-- :prop="item.prop">--> |
| | | <!-- <template slot-scope="scope">--> |
| | | <!-- <span>{{ scope.row[item.showField] }}</span>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | </el-table> |
| | | </div> |
| | | </el-row> |
| | |
| | | }, |
| | | // 主数据按钮 |
| | | masterVrBtnList: [], |
| | | fileOptions: { |
| | | ownbizOid: "0", |
| | | ownbizBtm: "0", |
| | | fileDocClassify: '!=processAuditSuggest', |
| | | fileDocClassifyName: '', |
| | | hasDownload: true, |
| | | hasUpload: true, |
| | | height: 110 |
| | | }, |
| | | fileOptions:{}, |
| | | result: '', |
| | | elapsedTime: '', |
| | | }; |
| | |
| | | this.tableData = newval; |
| | | this.searchResults = newval |
| | | this.doLayout(); |
| | | this.fileOptions= { |
| | | ownbizOid: "0", |
| | | ownbizBtm: "0", |
| | | fileDocClassify: '!=processAuditSuggest', |
| | | fileDocClassifyName: '', |
| | | hasDownload: true, |
| | | hasUpload: true, |
| | | height: 'auto' |
| | | } |
| | | }, |
| | | }, |
| | | tableHeadFindData: { |
| | |
| | | <style lang="scss" scoped> |
| | | //固定列高度 |
| | | /deep/ .el-table__fixed { |
| | | height: calc(100vh - 370px) !important; |
| | | height: calc(100vh - 365px) !important; |
| | | } |
| | | |
| | | // 滚动条样式修改 |
| | |
| | | |
| | | .top { |
| | | overflow-y: scroll; |
| | | min-height: 55%; |
| | | min-height: 40%; |
| | | } |
| | | |
| | | .bottom { |
| | |
| | | handler(newval, oldval) { |
| | | if (newval) { |
| | | const series = newval.map((data, index) => ({ |
| | | name: index === 0 ? "总量" : "新增", |
| | | type: "line", |
| | | name: index === 0 ? '总量' : '新增', |
| | | type: 'line', |
| | | smooth: true, |
| | | stack: "Total", |
| | | stack: index === 0 ? 'Total' : 'total2', // 根据 index 区分总量和新增的堆叠情况 |
| | | label: { |
| | | show: true, |
| | | position: "top", |
| | | textStyle: { |
| | | fontSize: 14 // 调整字体大小 |
| | | fontSize: 14 |
| | | } |
| | | }, |
| | | data: data.map(value => ({value})) |
| | |
| | | } |
| | | } |
| | | }, |
| | | chartName:{ |
| | | handler(newval,oldval){ |
| | | if(newval){ |
| | | chartName: { |
| | | handler(newval, oldval) { |
| | | if (newval) { |
| | | this.chartOptions.title.text = newval + "数据统计" |
| | | } |
| | | }, |
| | | immediate:true, |
| | | deep:true |
| | | immediate: true, |
| | | deep: true |
| | | } |
| | | }, |
| | | data() { |
| | |
| | | |
| | | <script> |
| | | import 'echarts' |
| | | import 'echarts/lib/chart/pie' |
| | | import 'echarts/lib/chart/bar' // 导入柱状图组件 |
| | | import 'echarts/lib/component/tooltip' |
| | | import 'echarts/lib/component/legend' |
| | | export default { |
| | | name: "pieChart", |
| | | name: "polarBarChart", |
| | | props:{ |
| | | pieData:{ |
| | | type:Array, |
| | |
| | | chartName:{ |
| | | type:String, |
| | | default: "" |
| | | }, |
| | | monthData:{ |
| | | type:Array, |
| | | default: () => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'] |
| | | } |
| | | }, |
| | | watch:{ |
| | | pieData:{ |
| | | immediate:true, |
| | | handler(newval,oldval){ |
| | | handler(newval, oldval){ |
| | | if (newval) { |
| | | // console.log(newval) |
| | | const series=[ |
| | | const series = [ |
| | | { |
| | | name: '', |
| | | type: 'pie', |
| | | radius: ['40%', '70%'], |
| | | avoidLabelOverlap:false, |
| | | label: { |
| | | formatter: '{b}\n{d}%', |
| | | fontSize:14 |
| | | type: 'bar', |
| | | name: '新增', |
| | | data: newval[1], |
| | | coordinateSystem: 'polar', |
| | | stack: 'a', |
| | | emphasis: { |
| | | focus: 'series' |
| | | }, |
| | | itemStyle: { |
| | | color: function(params) { |
| | | // 根据具体需求设置颜色 |
| | | const colorList = ['#5470C6', '#91CC75', '#fac858', '#EE6666', '#3BA272', '#FC8452', '#9A60B4', '#e34d4d', '#b3e9b9', '#eaaaed', '#1bc6e4', '#c6b3e9']; |
| | | return colorList[params.dataIndex % colorList.length]; |
| | | } |
| | | color: '#91cc75' // 新增的颜色 |
| | | } |
| | | }, |
| | | { |
| | | type: 'bar', |
| | | name: '总量', |
| | | data: newval[0], |
| | | coordinateSystem: 'polar', |
| | | stack: 'a', |
| | | emphasis: { |
| | | focus: 'series' |
| | | }, |
| | | data:newval[0].map((value, index) => { |
| | | return { |
| | | value: value, |
| | | name: this.getMonthName(index), |
| | | newValue: newval[1][index] |
| | | }; |
| | | }), |
| | | itemStyle: { |
| | | color: '#5470c6' // 总量的颜色 |
| | | } |
| | | } |
| | | ] |
| | | ]; |
| | | this.chartOptions.series = series; |
| | | } |
| | | } |
| | | }, |
| | | chartName:{ |
| | | handler(newval,oldval){ |
| | | handler(newval, oldval){ |
| | | if(newval){ |
| | | this.chartOptions.title.text = newval + "数据统计" |
| | | } |
| | | }, |
| | | immediate:true, |
| | | deep:true |
| | | immediate:true |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | chartOptions: { |
| | | title: { |
| | | text: '供应商主数据统计', |
| | | left: 'center' |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: function (params) { |
| | | let result = ''; |
| | | if (params.componentType === 'series') { |
| | | result += params.name + '<br/>'; |
| | | result += '新增:' + params.data.newValue + '<br/>'; |
| | | result += '总量:' + params.data.value + '<br/>'; |
| | | result += '百分比:' + params.percent + '%'; |
| | | } |
| | | return result; |
| | | } |
| | | text: '', |
| | | }, |
| | | legend: { |
| | | orient: 'vertical', |
| | | right: 10, |
| | | top: 'middle', |
| | | data: ['总量', '新增'], |
| | | }, |
| | | polar: {}, |
| | | angleAxis: { |
| | | type: 'category', |
| | | data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'] |
| | | }, |
| | | radiusAxis: {}, |
| | | tooltip: { |
| | | trigger: 'axis' |
| | | }, |
| | | series: [] |
| | | }, |
| | | } |
| | | } |
| | | }, |
| | | methods:{ |
| | | getMonthName(index){ |
| | | const monthNames = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']; |
| | | return monthNames[index]; |
| | | } |
| | | created(){ |
| | | this.chartOptions.color = ['#5470c6', '#91cc75', '#fac858', '#ca8622', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4']; |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | #chart { |
| | | width: 90%; |
| | | width: 97%; |
| | | height: 530px; |
| | | } |
| | | |
| | | </style> |
| | |
| | | const regex = new RegExp(this.rulesData.ruleRowBds); |
| | | if (regex.test(this.RulesForm.TestContent)) { |
| | | this.$message.success('校验成功') |
| | | }else { |
| | | this.$message.error('校验失败') |
| | | } |
| | | }, |
| | | //点击分类注入按钮 |
| | | injectBtn() { |
| | | if (this.attrSelectList.length > 1) { |
| | | this.$message.warning('只能选择一条模板数据') |
| | | } else if (this.attrSelectList.length < 1) { |
| | | return; |
| | | } |
| | | if (this.attrSelectList.length < 1) { |
| | | this.$message.warning('请选择一条模板数据') |
| | | } else if (this.attrSelectList.length === 1) { |
| | | return;; |
| | | } |
| | | if (this.attrSelectList.length === 1) { |
| | | this.injectVisible = true; |
| | | return; |
| | | } |
| | | }, |
| | | //分类注入保存 |
| | |
| | | hasDel:validatenull(this.options.hasDel) ? true :this.options.hasDel, |
| | | hasDownload:validatenull(this.options.hasDownload) ? true :this.options.hasDownload, |
| | | option: { |
| | | height:(this.options.tableHeight?this.options.tableHeight:'400'), |
| | | height:(this.options.tableHeight?this.options.tableHeight:'300'), |
| | | calcHeight: 30, |
| | | tip: false, |
| | | searchShow: false, |
| | |
| | | page: { |
| | | total: 0, |
| | | currentPage: 1, |
| | | pageSize: 100, |
| | | pageSize: 10, |
| | | pageSizes: [10, 30, 50, 100, 200], |
| | | }, |
| | | pageSize: "100", |
| | |
| | | <el-button type="text" |
| | | size="small" |
| | | icon="el-icon-refresh" |
| | | :style="{color: scope.row.suspensionState === 1 ? '#67C23A' : '#F56C6C'}" |
| | | v-if="permissionList.state" |
| | | @click.stop="handleState(scope.row,scope.index)">变更状态 |
| | | @click.stop="handleDoState(scope.row, scope.index)"> |
| | | {{ scope.row.suspensionState === 1 ? '激活' : '挂起' }} |
| | | </el-button> |
| | | <el-button type="text" |
| | | size="small" |
| | |
| | | this.stateBox = true; |
| | | this.selectionId = row.id; |
| | | }, |
| | | handleDoState() { |
| | | if (!this.flowState) { |
| | | this.$message({ |
| | | type: "warn", |
| | | message: "请先选择流程状态!" |
| | | }); |
| | | return; |
| | | } |
| | | changeState({processId: this.selectionId, state: this.flowState}).then(res => { |
| | | handleDoState(row) { |
| | | // if (!this.flowState) { |
| | | // this.$message({ |
| | | // type: "warn", |
| | | // message: "请先选择流程状态!" |
| | | // }); |
| | | // return; |
| | | // } |
| | | changeState({processId: row.id, state: (row.suspensionState === 1 ? 'suspend' : 'active')}).then(res => { |
| | | const data = res.data; |
| | | if (data.success) { |
| | | this.$message({ |
| | |
| | | } |
| | | conditionMap.put("t.lastr", "1"); |
| | | conditionMap.put("t.lastv", "1"); |
| | | return queryGrid(btmTypeId, templateVO, conditionMap, pageHelper); |
| | | DataGrid<Map<String, String>> mapDataGrid = queryGrid(btmTypeId, templateVO, conditionMap, pageHelper); |
| | | //处理返回数据与模板数据配置的字段不一样问题 |
| | | templateVO.getAttributes().stream().forEach(e->{ |
| | | for (Map<String, String> datum : mapDataGrid.getData()) { |
| | | if(datum.containsKey(e.getId().toLowerCase()) && !datum.containsKey(e.getId())){ |
| | | datum.put(e.getId(),datum.get(e.getId().toLowerCase())); |
| | | datum.remove(e.getId().toLowerCase()); |
| | | } |
| | | } |
| | | }); |
| | | return mapDataGrid; |
| | | // List<String> selectFieldList = templateVO.getAttributes().stream().map(CodeClassifyTemplateAttrVO::getId).collect(Collectors.toList()); |
| | | // //参照让平台直接查询就行 |
| | | // List<String> finalSelectFieldList = selectFieldList; |
| | |
| | | dataList.add(cbo); |
| | | wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), true); |
| | | R<List<Map<String, String>>> result = R.data(Collections.singletonList(cbo)); |
| | | //处理返回数据与模板数据配置的字段不一样问题 |
| | | templateVO.getAttributes().stream().forEach(e->{ |
| | | for (Map<String, String> datum : result.getData()) { |
| | | if(datum.containsKey(e.getId().toLowerCase()) && !datum.containsKey(e.getId())){ |
| | | datum.put(e.getId(),datum.get(e.getId().toLowerCase())); |
| | | datum.remove(e.getId().toLowerCase()); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | //我们要看是否不是升版的,升版的话,需要对比不相等的属性 |
| | | /* String copy = cbo.get("copyfromversion"); |
| | | // if (StringUtils.isBlank(copy)) { |