parent
d05df2d778
commit
f6e8fb3d09
|
@ -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:
|
||||||
|
|
|
@ -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">提示:仅允许导入“xls”或“xlsx”格式文件!</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">提示:仅允许导入“xls”或“xlsx”格式文件!</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>
|
||||||
|
|
|
@ -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
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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: {}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
@ -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 () {
|
||||||
// 目前被选中的菜单节点
|
// 目前被选中的菜单节点
|
||||||
|
|
|
@ -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)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue