¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-container style="height: 100%; border: 1px solid #fff"> |
| | | <el-card :style="{ marginRight: '10px' }"> |
| | | <el-aside width="300px" style="background-color: #fff"> |
| | | <el-input placeholder="è¾å
¥å
³é®åè¿è¡è¿æ»¤" v-model="filterText"> |
| | | </el-input> |
| | | <el-menu :default-openeds="['1', '3']"> |
| | | <el-tree class="filter-tree" :data="treeData" accordion :props="defaultProps" |
| | | :filter-node-method="filterNode" empty-text="ææ æ°æ®" ref="tree" @node-click="handelTreeCell"> |
| | | </el-tree> |
| | | </el-menu> |
| | | </el-aside> |
| | | </el-card> |
| | | <el-main> |
| | | <el-card> |
| | | <el-form :model="form"> |
| | | <el-form-item label="éå¢åç±»" label-width="70px" size="small"> |
| | | <el-select clearable ref="selectTree" v-model="form.groupValue" placeholder="è¯·éæ©" |
| | | popper-class="popperTreeSelect"> |
| | | <el-option :value="groupVal" :label="groupVal"> |
| | | <el-tree ref="groupTree" :data="groupTreeData" empty-text="ææ æ°æ®" :props="defaultProps" |
| | | @node-click="handleNodeClick"> |
| | | </el-tree> |
| | | </el-option> |
| | | </el-select> |
| | | |
| | | </el-form-item> |
| | | </el-form> |
| | | <avue-crud :table-loading="loading" :data="tableData" :option="option" ref="crud" @cell-class-name="handelCellRow" |
| | | @cell-click="handleCellClick"> |
| | | <template slot="menuLeft"> |
| | | <el-button icon="el-icon-plus" size="small" type="primary" @click="dialogPush = true">æ° å¢ |
| | | </el-button> |
| | | <el-button icon="el-icon-check" size="small" type="primary" @click="handleSave">ä¿ å |
| | | </el-button> |
| | | <el-button icon="el-icon-connection" size="small" type="primary" @click="handleSync">åæ¥æ¨¡å |
| | | </el-button> |
| | | </template> |
| | | <template slot="defaultValue" slot-scope="{scope}"> |
| | | <!-- <el-input v-model="scope.row.defaultValue" v-if="scope.row.index === tableRowIndex && scope.column.index === tableColumnIndex" @blur="inputBlur"> </el-input> --> |
| | | <span>{{ scope }}</span> |
| | | </template> |
| | | </avue-crud> |
| | | <el-card :style="{ marginTop: '20px' }"> |
| | | <avue-crud :data="tablesData" :option="optinos" ref="crud" |
| | | @cell-click="handleCellClick"> |
| | | </avue-crud> |
| | | </el-card> |
| | | </el-card> |
| | | </el-main> |
| | | </el-container> |
| | | <el-dialog title="ç¼ç 屿§" :visible.sync="dialogPush" append-to-body="true" destroy-on-close width="30%" |
| | | :before-close="handleClose"> |
| | | <el-form :model="form"> |
| | | <el-form-item label="æ¥è¯¢æ¡ä»¶" label-width="70px" size="small"> |
| | | <el-input v-model="form.name" autocomplete="off" @change="handleQuery"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <p class="text_tip">*éæ©åç±»è¿è¡å±æ§è¿æ»¤, æè
è¾å
¥å±æ§çå
¨æ¼æè
ç®æ¼è¿è¡æ¥è¯¢! å¦: å§å (å¯è¾å
¥xmæxinming )</p> |
| | | <transfer v-model="transferValue" :data="transferData" :filter-method="filterMethod" |
| | | filter-placeholder="请è¾å
¥å±æ§æ¼é³å
¨æ¼æè
æ¼é³ç¼©å" @left-check-change="handelLeftCheck"></transfer> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogPush = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="dialogPush = false">ä¿ å</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import transfer from '@/components/transfer/index' |
| | | import pinyin from 'js-pinyin' |
| | | import { referCodeClassifyTree, referTree, gridAttrMapping } from '@/api/integration/integration.js' |
| | | export default { |
| | | components: { |
| | | transfer |
| | | }, |
| | | data() { |
| | | const generateData = () => { |
| | | pinyin.setOptions({ checkPolyphone: false, charCase: 1 }); |
| | | const data = []; |
| | | const cities = ['䏿µ·', 'å京', '广å·', 'æ·±å³', 'å京', '西å®', 'æé½']; |
| | | cities.forEach((city, index) => { |
| | | data.push({ |
| | | label: city, |
| | | key: index, |
| | | pinyin: pinyin.getFullChars(city), |
| | | pinyins: pinyin.getCamelChars(city), |
| | | }); |
| | | }); |
| | | return data; |
| | | }; |
| | | return { |
| | | form: { |
| | | name: '', |
| | | groupValue: '' |
| | | }, |
| | | loading: false, |
| | | ishowTree: false, |
| | | search: '', |
| | | transferData: generateData(), |
| | | transferValue: [], |
| | | dialogPush: false, |
| | | tableData: [], |
| | | tablesData: [ |
| | | { |
| | | id:'01', |
| | | groupTypeName:'æå', |
| | | codeView:'å¼ ä¸', |
| | | sex:'', |
| | | typeName:'' |
| | | } |
| | | ], |
| | | filterText: '', |
| | | tableRowIndex:null, |
| | | tableColumnIndex:null, |
| | | optinos: { |
| | | title: 'éå¢å±æ§', |
| | | maxHeight: '300px', |
| | | menu: true, |
| | | delBtn: false, |
| | | addBtn: false, |
| | | index: true, |
| | | header: false, |
| | | columnBtn: false, |
| | | searchShow: true, |
| | | emptyBtn: false, |
| | | searchBtn: false, |
| | | searchShowBtn: false, |
| | | cellBtn: true, |
| | | border: true, |
| | | searchMenuSpan: 8, |
| | | column: [ |
| | | { label: '屿§é墿䏾å¼', prop: 'groupTypeName', minWidth: 80, }, |
| | | { label: 'éå¢å±æ§æä¸¾æ¾ç¤ºåç§°', prop: 'codeView', minWidth: 80 }, |
| | | { label: 'MDMæä¸¾å¼', prop: 'sex', minWidth: 80, cell: true }, |
| | | { label: 'MDMæä¸¾æ¾ç¤ºåç§°', prop: 'typeName', minWidth: 80, cell: true }, |
| | | ] |
| | | }, |
| | | option: { |
| | | maxHeight: '500px', |
| | | menu: true, |
| | | delBtn: false, |
| | | addBtn: false, |
| | | index: true, |
| | | header: true, |
| | | columnBtn: false, |
| | | searchShow: true, |
| | | emptyBtn: false, |
| | | searchBtn: false, |
| | | searchShowBtn: false, |
| | | cellBtn: false, |
| | | border: true, |
| | | searchMenuSpan: 8, |
| | | column: [ |
| | | { label: 'éå¢åç±»', prop: 'sourceClassifyName', minWidth: 80, }, |
| | | { label: 'æå±è§å¾', prop: 'viewName', minWidth: 80 }, |
| | | { label: 'éå¢å±æ§', prop: 'sourceAttrName', minWidth: 80 }, |
| | | { label: 'åç±»åç§°', prop: 'targetClassifyName', minWidth: 80, overHidden: true }, |
| | | { label: '屿§åç§°', prop: 'targetAttrName', minWidth: 80}, |
| | | { label: 'é»è®¤å¼', prop: 'defaultValue', minWidth: 140, cell: true }, |
| | | ] |
| | | }, |
| | | treeData: [], |
| | | groupTreeData: [], |
| | | defaultProps: { |
| | | children: 'children', |
| | | label: 'name', |
| | | id: 'oid', |
| | | isLeaf: '' |
| | | }, |
| | | groupVal: '', |
| | | treeParam: {} |
| | | } |
| | | }, |
| | | watch: { |
| | | filterText(val) { |
| | | console.log(this.$refs.tree) |
| | | this.$refs.tree.filter(val); |
| | | } |
| | | }, |
| | | created() { |
| | | this.getReferCodeClassifyTree() |
| | | pinyin.setOptions({ checkPolyphone: false, charCase: 1 }); |
| | | console.log(pinyin.getFullChars('管çå')) |
| | | console.log(pinyin.getCamelChars('管çå')) |
| | | }, |
| | | methods: { |
| | | async getReferCodeClassifyTree() { |
| | | const param = { |
| | | parentBtmName: "jclass", |
| | | valueField: "oid", |
| | | textField: "name", |
| | | parentFieldName: "id" |
| | | } |
| | | const response = await referCodeClassifyTree(param) |
| | | console.log(response) |
| | | if (response.status === 200) { |
| | | let data = response.data; |
| | | this.treeData = data.map(item => item.children ? { ...item, ...{ isLeaf: false } } : { ...item, ...{ isLeaf: true } }) |
| | | } |
| | | }, |
| | | async getlistCodeAttributeByClassId(oid) { |
| | | this.loading = true |
| | | console.log(this.treeParam) |
| | | const response = await gridAttrMapping({ sourceClassifyId: oid, ...this.treeParam }) |
| | | console.log(response) |
| | | if (response.status === 200) { |
| | | this.loading = false |
| | | this.tableData = response.data.data |
| | | } |
| | | }, |
| | | async referTree(oid, checked) { |
| | | this.groupTreeData = [] |
| | | const response = await referTree({ 'conditionMap[codeclsfid]': oid, parentOid: null }) |
| | | console.log(response) |
| | | if (response.status === 200) { |
| | | if (checked) { |
| | | let items = response.data.map(item => { |
| | | let obj = {} |
| | | if (item.checked) obj = { ...item } |
| | | else obj = null |
| | | return obj |
| | | }) |
| | | var r = items.filter(s => { return s && s.trim() }); |
| | | this.groupTreeData = r |
| | | } else { |
| | | this.groupTreeData = response.data |
| | | } |
| | | } |
| | | }, |
| | | filterNode(value, data) { |
| | | console.log(value) |
| | | console.log(data) |
| | | if (!value) return true; |
| | | return data.name.indexOf(value) !== -1; |
| | | }, |
| | | handleSave() { |
| | | |
| | | }, |
| | | handlePush() { |
| | | |
| | | }, |
| | | handelLeftCheck(event) { |
| | | console.log(event) |
| | | }, |
| | | handelCellRow( {row, column, rowIndex, columnIndex }) { |
| | | row.index = rowIndex |
| | | column.index = columnIndex |
| | | }, |
| | | handleQuery(event) { |
| | | console.log(event) |
| | | this.form.name = event |
| | | }, |
| | | filterMethod(item) { |
| | | return item.pinyins.indexOf(this.form.name) > -1; |
| | | }, |
| | | handelTreeCell(event) { |
| | | console.log(event) |
| | | if (event.leaf) { |
| | | this.treeParam.codeClassifyId = event.oid |
| | | this.form.groupValue = '' |
| | | this.groupVal = '' |
| | | this.tableData = [] |
| | | this.referTree(event.oid, event.checked) |
| | | } |
| | | }, |
| | | handleNodeClick(data) { |
| | | console.log(data) |
| | | this.form.groupValue = data.name |
| | | this.groupVal = data.name |
| | | this.$refs.selectTree.blur() |
| | | this.getlistCodeAttributeByClassId(data.oid) |
| | | }, |
| | | handleCellClick(row, column,cell, event) { |
| | | console.log(row) |
| | | console.log(column) |
| | | console.log(cell) |
| | | console.log(event) |
| | | this.tableRowIndex = row.index |
| | | this.tableColumnIndex = column.index |
| | | }, |
| | | inputBlur() { |
| | | this.tableColumnIndex = '' |
| | | this.tableRowIndex = null |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .text_tip { |
| | | padding: 10px 0; |
| | | color: #F56C6C; |
| | | } |
| | | |
| | | .setstyle { |
| | | min-height: 200px; |
| | | padding: 0 !important; |
| | | margin: 0; |
| | | overflow: auto; |
| | | cursor: default !important; |
| | | } |
| | | |
| | | /deep/ .el-transfer-panel__list { |
| | | width: 100%; |
| | | } |
| | | |
| | | /deep/ .el-input { |
| | | width: auto; |
| | | } |
| | | |
| | | /deep/ .el-transfer-panel { |
| | | width: 270px; |
| | | } |
| | | |
| | | /deep/ .el-transfer-panel__list { |
| | | height: 370px; |
| | | } |
| | | |
| | | /deep/ .el-transfer-panel__body { |
| | | height: 370px; |
| | | } |
| | | </style> |