功能变化:

1.权限优化;2.导入更新
pull/84/head
猿小天 2022-12-28 15:59:38 +08:00
parent d05df2d778
commit f6e8fb3d09
7 changed files with 108 additions and 35 deletions

View File

@ -180,9 +180,7 @@ class MenuViewSet(CustomModelViewSet):
return SuccessResponse(data=data, total=len(data), msg="获取成功") return SuccessResponse(data=data, total=len(data), msg="获取成功")
def list(self,request): def list(self,request):
""" """懒加载"""
懒加载
"""
params = request.query_params params = request.query_params
parent = params.get('parent', None) parent = params.get('parent', None)
if params: if params:

View File

@ -3,36 +3,47 @@
<el-button size="small" type="success" icon="el-icon-upload" @click="handleImport"> <el-button size="small" type="success" icon="el-icon-upload" @click="handleImport">
<slot>导入</slot> <slot>导入</slot>
</el-button> </el-button>
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body> <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload <el-upload
ref="upload" ref="upload"
:limit="1" :limit="1"
accept=".xlsx, .xls" accept=".xlsx, .xls"
:headers="upload.headers" :headers="upload.headers"
:action="upload.url" :action="upload.url"
:disabled="upload.isUploading" :disabled="upload.isUploading"
:on-progress="handleFileUploadProgress" :on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess" :on-success="handleFileSuccess"
:auto-upload="false" :auto-upload="false"
drag drag
> >
<i class="el-icon-upload" /> <i class="el-icon-upload"/>
<div class="el-upload__text"> <div class="el-upload__text">
将文件拖到此处 将文件拖到此处
<em>点击上传</em> <em>点击上传</em>
</div>
<div slot="tip" class="el-upload__tip">
<el-checkbox size="medium" label="是否更新已经存在的数据" border v-model="upload.updateSupport"/>
<el-select v-if="upload.updateSupport" size="medium" v-model="upload.updateField" style="width: 130px"
placeholder="请选择更新字段依据">
<el-option
v-for="item in fieldOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<div style="color: #b1b1b1;margin: 10px" v-if="upload.updateSupport">,</div>
</div>
<div slot="tip" class="el-upload__tip" style="color:red">提示仅允许导入xlsxlsx格式文件</div>
</el-upload>
<div>
<el-button type="warning" style="font-size:14px;margin-top: 20px" @click="importTemplate"></el-button>
</div> </div>
<div slot="tip" class="el-upload__tip"> <div slot="footer" class="dialog-footer">
<el-checkbox size="medium" label="是否更新已经存在的数据" border v-model="upload.updateSupport" /> <el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div> </div>
<div slot="tip" class="el-upload__tip" style="color:red">提示仅允许导入xlsxlsx格式文件</div> </el-dialog>
</el-upload>
<div><el-link type="primary" style="font-size:14px;margin-top: 20px" @click="importTemplate"></el-link></div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -68,6 +79,18 @@ export default {
default () { default () {
return undefined return undefined
} }
},
updateFieldApi: {
type: String,
default () {
return undefined
}
},
fieldOptions: {
type: Array,
default () {
return []
}
} }
}, },
methods: { methods: {
@ -99,7 +122,8 @@ export default {
method: 'post', method: 'post',
data: { data: {
url: response.data.url, url: response.data.url,
updateSupport: that.upload.updateSupport updateSupport: that.upload.updateSupport,
updateField: that.upload.updateField
} }
}).then(response => { }).then(response => {
// this.$alert("", "", { dangerouslyUseHTMLString: true }); // this.$alert("", "", { dangerouslyUseHTMLString: true });
@ -114,7 +138,21 @@ export default {
// //
submitFileForm () { submitFileForm () {
this.$refs.upload.submit() this.$refs.upload.submit()
},
getUpdateField () {
const that = this
if (that.updateFieldApi) {
return request({
url: that.updateFieldApi,
method: 'get'
}).then(res => {
that.fieldOptions = res.data
})
}
} }
},
mounted () {
this.getUpdateField()
} }
} }
</script> </script>

View File

@ -1,10 +1,10 @@
import * as api from './api' import * as api from './api'
export const crudOptions = (vm) => { export const crudOptions = (vm) => {
return { return {
// pagination: false,
pageOptions: { pageOptions: {
compact: true compact: true
}, },
pagination: false,
options: { options: {
tableType: 'vxe-table', tableType: 'vxe-table',
stripe: false, stripe: false,
@ -14,10 +14,13 @@ export const crudOptions = (vm) => {
highlightCurrentRow: false, highlightCurrentRow: false,
defaultExpandAll: true, defaultExpandAll: true,
treeConfig: { treeConfig: {
transform: true,
rowField: 'id',
parentField: 'parent',
hasChild: 'hasChild',
lazy: true, lazy: true,
hasChild: 'has_children',
loadMethod: ({ row }) => { loadMethod: ({ row }) => {
return api.GetList({ parent: row.id, lazy: true }).then(ret => { return api.GetList({ parent: row.id }).then(ret => {
return ret.data.data return ret.data.data
}) })
}, },

View File

@ -18,6 +18,7 @@
> >
<importExcel <importExcel
importApi="api/system/dept/import_data/" importApi="api/system/dept/import_data/"
updateFieldApi = "api/system/dept/update_field/"
v-permission="'Import'" v-permission="'Import'"
>导入 >导入
</importExcel> </importExcel>

View File

@ -55,3 +55,17 @@ export function GetMenuData (obj) {
return res.data.data return res.data.data
}) })
} }
/**
* 获取数据权限
* @param obj
* @returns {*}
* @constructor
*/
export function GetDataScope () {
return request({
url: '/api/system/role/data_scope/',
method: 'get',
params: {}
})
}

View File

@ -202,6 +202,7 @@ export default {
this.menuCheckedKeys = this.roleObj.menu // this.menuCheckedKeys = this.roleObj.menu //
this.menuCheckStrictly = true // this.menuCheckStrictly = true //
this.deptCheckedKeys = this.roleObj.dept this.deptCheckedKeys = this.roleObj.dept
this.GetDataScope()
}, },
addRequest (row) { addRequest (row) {
return api.createObj(row) return api.createObj(row)
@ -238,6 +239,12 @@ export default {
}) })
}) })
}, },
//
GetDataScope(){
api.GetDataScope().then(res=>{
this.dataScopeOptions = res.data
})
},
// //
getMenuAllCheckedKeys () { getMenuAllCheckedKeys () {
// //

View File

@ -198,6 +198,18 @@ export default {
that.$message.error('表单校验失败,请检查') that.$message.error('表单校验失败,请检查')
} }
}) })
},
//
loadChildrenMethod({ row} ){
return new Promise(resolve => {
setTimeout(() => {
const childs = [
{ id: row.id + 100000, parent: row.id, name: row.name + 'Test45', type: 'mp4', size: null, date: '2021-10-03', hasChild: true },
{ id: row.id + 150000, parent: row.id, name: row.name + 'Test56', type: 'mp3', size: null, date: '2021-07-09', hasChild: false }
]
resolve(childs)
}, 500)
})
} }
} }
} }