|
|
@@ -1,18 +1,26 @@
|
|
|
<template>
|
|
|
- <div>
|
|
|
- <div style="text-align: center">
|
|
|
- <!--表头-->
|
|
|
- <div class="form-header">
|
|
|
- <div class="title ibps-tc">用户查阅文件授权</div>
|
|
|
- </div>
|
|
|
- <el-transfer style="text-align: left; display: inline-block" v-model="permissionFilesKey" filterable
|
|
|
- :render-content="renderFunc" :titles="['受限文件', '可查阅文件']" :button-texts="['受限', '可查阅']" :format="{
|
|
|
+ <div>
|
|
|
+ <div style="text-align: center">
|
|
|
+ <!--表头-->
|
|
|
+ <div class="form-header">
|
|
|
+ <div class="title ibps-tc">用户查阅文件授权</div>
|
|
|
+ </div>
|
|
|
+ <el-transfer style="text-align: left; display: inline-block"
|
|
|
+ v-model="permissionFilesKey"
|
|
|
+ filterable
|
|
|
+ :filter-method="filterMethod"
|
|
|
+ :render-content="renderFunc"
|
|
|
+ :titles="['受限文件', '可查阅文件']"
|
|
|
+ :button-texts="['受限', '可查阅']"
|
|
|
+ :format="{
|
|
|
noChecked: '${total}',
|
|
|
hasChecked: '${checked}/${total}'
|
|
|
- }" @change="handleChange" :data="allFiles">
|
|
|
- </el-transfer>
|
|
|
- </div>
|
|
|
+ }"
|
|
|
+ @change="handleChange"
|
|
|
+ :data="allFiles">
|
|
|
+ </el-transfer>
|
|
|
</div>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
|
|
|
@@ -20,140 +28,183 @@
|
|
|
|
|
|
<script>
|
|
|
import { getLmitedFile, getUserByFile, saveUserByFile } from '@/api/permission/file'
|
|
|
+import curdPost from '@/business/platform/form/utils/custom/joinCURD.js'
|
|
|
|
|
|
export default {
|
|
|
- props: {
|
|
|
- id: {
|
|
|
- type: [String, Number]
|
|
|
- },
|
|
|
+ props: {
|
|
|
+ id: {
|
|
|
+ type: [String, Number]
|
|
|
},
|
|
|
- data() {
|
|
|
- return {
|
|
|
- idT: '',
|
|
|
- allFilesDatas: [],// 所有受控文件,与个人无关
|
|
|
- allFiles: [],
|
|
|
- noPermissionFiles: [],
|
|
|
- permissionFiles: [],
|
|
|
- permissionFilesKey: [],
|
|
|
- renderFunc(h, option) {
|
|
|
- return <span>{option.label}</span>;
|
|
|
- }
|
|
|
- };
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ idT: '',
|
|
|
+ allFilesDatas: [],// 所有受控文件,与个人无关
|
|
|
+ allFiles: [],
|
|
|
+ noPermissionFiles: [],
|
|
|
+ permissionFiles: [],
|
|
|
+ permissionFilesKey: [],
|
|
|
+ renderFunc(h, option) {
|
|
|
+ return <span>{option.type}-{option.label}</span>;
|
|
|
+ },
|
|
|
+ filterMethod(query, item) {
|
|
|
+ let name = item.label + '-' + item.type
|
|
|
+ return name.includes(query);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ },
|
|
|
+
|
|
|
+ methods: {
|
|
|
+ handleChange(value, direction, movedKeys) {
|
|
|
+ let paramsDatas = []
|
|
|
+ for (let i of value) {
|
|
|
+ let paramsData = {}
|
|
|
+ let filterDatas = this.allFilesDatas.filter(item => item.wenJianId == i)
|
|
|
+ paramsData["yongHuId"] = this.idT
|
|
|
+ paramsData["wenJianId"] = filterDatas[0].wenJianId
|
|
|
+ paramsData["wenJianMingChe"] = filterDatas[0].wenJianMingChe
|
|
|
+ paramsDatas.push(paramsData)
|
|
|
+ }
|
|
|
+ saveUserByFile(paramsDatas).then(res => {
|
|
|
+ }).catch(res => {
|
|
|
+ })
|
|
|
},
|
|
|
-
|
|
|
- methods: {
|
|
|
- handleChange(value, direction, movedKeys) {
|
|
|
- let paramsDatas = []
|
|
|
- for (let i of value) {
|
|
|
- let paramsData = {}
|
|
|
- let filterDatas = this.allFilesDatas.filter(item => item.wenJianId == i)
|
|
|
- paramsData["yongHuId"] = this.idT
|
|
|
- paramsData["wenJianId"] = filterDatas[0].wenJianId
|
|
|
- paramsData["wenJianMingChe"] = filterDatas[0].wenJianMingChe
|
|
|
- paramsDatas.push(paramsData)
|
|
|
- }
|
|
|
- saveUserByFile(paramsDatas).then(res => {
|
|
|
- }).catch(res => {
|
|
|
- })
|
|
|
- },
|
|
|
- getFormData(id) {
|
|
|
- getLmitedFile(id).then(res => {
|
|
|
- for (let i of res.variables.data) {
|
|
|
- this.allFilesDatas.push(i)
|
|
|
- let fileData = {}
|
|
|
- fileData["key"] = i.wenJianId
|
|
|
- fileData["label"] = i.wenJianMingChe
|
|
|
- fileData["yongHuId"] = id
|
|
|
- this.noPermissionFiles.push(fileData)
|
|
|
- this.allFiles.push(fileData)
|
|
|
- }
|
|
|
- }).catch(res => {
|
|
|
- })
|
|
|
- getUserByFile(id).then(res => {
|
|
|
- for (let i of res.variables.data) {
|
|
|
- this.allFilesDatas.push(i)
|
|
|
- let filterFile = {}
|
|
|
- filterFile["key"] = i.wenJianId
|
|
|
- filterFile["label"] = i.wenJianMingChe
|
|
|
- filterFile["yongHuId"] = id
|
|
|
- this.permissionFiles.push(filterFile)
|
|
|
- this.permissionFilesKey.push(i.wenJianId)
|
|
|
- this.allFiles.push(filterFile)
|
|
|
-
|
|
|
- }
|
|
|
- }).catch(res => {
|
|
|
- })
|
|
|
- },
|
|
|
- },
|
|
|
- watch: {
|
|
|
- id: {
|
|
|
- immediate: true,
|
|
|
- handler: function (val, oldVal) {
|
|
|
- this.allFilesDatas = []
|
|
|
- this.permissionFiles = []
|
|
|
- this.noPermissionFiles = []
|
|
|
- this.allFiles = []
|
|
|
- this.permissionFilesKey = []
|
|
|
- this.idT = val
|
|
|
- this.getFormData(val)
|
|
|
- },
|
|
|
+ getFormData(id) {
|
|
|
+ // 还未授权的的文件
|
|
|
+ let noPerSql = `select id_ wenJianId,
|
|
|
+ wen_jian_ming_che wenJianMingChe,
|
|
|
+ wen_jian_lie_xing neiLeiXing,
|
|
|
+ wai_bu_wen_jian_l waiLeiXing
|
|
|
+ FROM t_wjgl
|
|
|
+ WHERE wen_jian_lie_xing IN(
|
|
|
+ '生物安全手册(SWAQ)','行政管理制度(ZD)','检测类(JC-SOP)','仪器设备类(YQ-SOP)','期间核查类(HC-SOP)','环境设施类(HJ-SOP)','质量或技术管理类(ZQ-SOP)'
|
|
|
+ )
|
|
|
+ AND id_ NOT IN ( SELECT wen_jian_id_ id_ FROM t_wjcysqb WHERE yong_hu_id_= '${id}' ) order by wai_bu_wen_jian_l,wen_jian_lie_xing asc`
|
|
|
+ curdPost('sql', noPerSql).then(res => {
|
|
|
+ for (let i of res.variables.data) {
|
|
|
+ this.allFilesDatas.push(i)
|
|
|
+ let fileData = {}
|
|
|
+ fileData["key"] = i.wenJianId
|
|
|
+ fileData["label"] = i.wenJianMingChe
|
|
|
+ fileData["type"] = i.neiLeiXing ? i.neiLeiXing : i.waiLeiXing
|
|
|
+ fileData["yongHuId"] = id
|
|
|
+ this.noPermissionFiles.push(fileData)
|
|
|
+ this.allFiles.push(fileData)
|
|
|
}
|
|
|
+ }).catch(res => {
|
|
|
+ })
|
|
|
+ let hadPer = `select qx.*,wj.wen_jian_lie_xing,wj.wai_bu_wen_jian_l FROM
|
|
|
+ t_wjcysqb qx LEFT JOIN t_wjgl wj ON qx.wen_jian_id_ = wj.id_ WHERE qx.yong_hu_id_= '${id}' order by wj.wai_bu_wen_jian_l,wj.wen_jian_lie_xing asc
|
|
|
+ `
|
|
|
+ curdPost('sql', hadPer).then(res => {
|
|
|
+ for (let i of res.variables.data) {
|
|
|
+ this.allFilesDatas.push(i)
|
|
|
+ let filterFile = {}
|
|
|
+ filterFile["key"] = i.wenJianId
|
|
|
+ filterFile["label"] = i.wenJianMingChe
|
|
|
+ filterFile["yongHuId"] = id
|
|
|
+ this.permissionFiles.push(filterFile)
|
|
|
+ this.permissionFilesKey.push(i.wenJianId)
|
|
|
+ this.allFiles.push(filterFile)
|
|
|
+ }
|
|
|
+ }).catch(res => {
|
|
|
+ })
|
|
|
+ // getLmitedFile(id).then(res => {
|
|
|
+ // for (let i of res.variables.data) {
|
|
|
+ // this.allFilesDatas.push(i)
|
|
|
+ // let fileData = {}
|
|
|
+ // fileData["key"] = i.wenJianId
|
|
|
+ // fileData["label"] = i.wenJianMingChe
|
|
|
+ // fileData["yongHuId"] = id
|
|
|
+ // this.noPermissionFiles.push(fileData)
|
|
|
+ // this.allFiles.push(fileData)
|
|
|
+ // }
|
|
|
+ // }).catch(res => {
|
|
|
+ // })
|
|
|
+ // getUserByFile(id).then(res => {
|
|
|
+ // for (let i of res.variables.data) {
|
|
|
+ // this.allFilesDatas.push(i)
|
|
|
+ // let filterFile = {}
|
|
|
+ // filterFile["key"] = i.wenJianId
|
|
|
+ // filterFile["label"] = i.wenJianMingChe
|
|
|
+ // filterFile["yongHuId"] = id
|
|
|
+ // this.permissionFiles.push(filterFile)
|
|
|
+ // this.permissionFilesKey.push(i.wenJianId)
|
|
|
+ // this.allFiles.push(filterFile)
|
|
|
+ // }
|
|
|
+ // }).catch(res => {
|
|
|
+ // })
|
|
|
+ },
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ id: {
|
|
|
+ immediate: true,
|
|
|
+ handler: function (val, oldVal) {
|
|
|
+ this.allFilesDatas = []
|
|
|
+ this.permissionFiles = []
|
|
|
+ this.noPermissionFiles = []
|
|
|
+ this.allFiles = []
|
|
|
+ this.permissionFilesKey = []
|
|
|
+ this.idT = val
|
|
|
+ this.getFormData(val)
|
|
|
+ },
|
|
|
}
|
|
|
+ }
|
|
|
};
|
|
|
</script>
|
|
|
|
|
|
|
|
|
<style scoped lang="less">
|
|
|
.form-header {
|
|
|
- border-bottom: 1px solid #2b34410d;
|
|
|
- margin-bottom: 5px;
|
|
|
-
|
|
|
- .title {
|
|
|
- font-size: 16px;
|
|
|
- font-weight: bold;
|
|
|
- color: #222;
|
|
|
- text-align: left;
|
|
|
- padding: 8px 10px 10px;
|
|
|
- margin: 0;
|
|
|
- }
|
|
|
-
|
|
|
- .desc {
|
|
|
- word-wrap: break-word;
|
|
|
- word-break: normal;
|
|
|
- text-indent: 0;
|
|
|
- line-height: 1.6;
|
|
|
- margin: 0 0 11px;
|
|
|
- padding: 3px 30px 8px;
|
|
|
- }
|
|
|
+ border-bottom: 1px solid #2b34410d;
|
|
|
+ margin-bottom: 5px;
|
|
|
+
|
|
|
+ .title {
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #222;
|
|
|
+ text-align: left;
|
|
|
+ padding: 8px 10px 10px;
|
|
|
+ margin: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .desc {
|
|
|
+ word-wrap: break-word;
|
|
|
+ word-break: normal;
|
|
|
+ text-indent: 0;
|
|
|
+ line-height: 1.6;
|
|
|
+ margin: 0 0 11px;
|
|
|
+ padding: 3px 30px 8px;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.transfer-footer {
|
|
|
- margin-left: 20px;
|
|
|
- padding: 6px 5px;
|
|
|
+ margin-left: 20px;
|
|
|
+ padding: 6px 5px;
|
|
|
}
|
|
|
|
|
|
/deep/.el-transfer {
|
|
|
- width: 100%;
|
|
|
+ width: 100%;
|
|
|
}
|
|
|
|
|
|
/deep/ .el-transfer-panel {
|
|
|
- width: 40%;
|
|
|
+ width: 40%;
|
|
|
}
|
|
|
|
|
|
/deep/ .el-transfer__buttons {
|
|
|
- width: 10%;
|
|
|
- padding: 0 10px;
|
|
|
+ width: 10%;
|
|
|
+ padding: 0 10px;
|
|
|
}
|
|
|
|
|
|
/deep/ .el-transfer-panel__body {
|
|
|
- height: auto;
|
|
|
+ height: auto;
|
|
|
}
|
|
|
|
|
|
/deep/.el-transfer-panel__list {
|
|
|
- height: 650px;
|
|
|
+ height: 650px;
|
|
|
}
|
|
|
|
|
|
/deep/ .el-button {
|
|
|
- width: 100%;
|
|
|
+ width: 100%;
|
|
|
}
|
|
|
</style>
|