CreateFloder.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. <template>
  2. <div>
  3. <div>
  4. <el-dialog v-model="addBoser" title="新建文件夹" width="30%" @close="diClose">
  5. <el-form :model="boserForm" label-width="120px">
  6. <el-form-item label="目录名称">
  7. <el-input v-model="boserForm.dirName" />
  8. </el-form-item>
  9. <el-form-item label="目录分类" v-if="free || (!free && thisType.dirType != '2' )">
  10. <el-radio-group v-model="boserForm.dirType">
  11. <el-radio :label="1">公开目录</el-radio>
  12. <el-radio :label="2">组织目录</el-radio>
  13. </el-radio-group>
  14. </el-form-item>
  15. <template v-if="boserForm.dirType === 2 || thisType.dirType == '2'">
  16. <el-form-item label="是否加密" v-if="!FolderRole.levelCode || free">
  17. <el-switch v-model="boserForm.isEncrypt" active-value="Y" inactive-value="N" />
  18. </el-form-item>
  19. <el-form-item label="加密等级" v-if=" (!FolderRole.levelCode || free) && boserForm.isEncrypt === 'Y'">
  20. <el-radio-group v-model="boserForm.encryptLevel">
  21. <el-radio :label="item.levelCode" v-for="item in levelList" :key="item">{{item.levelName}}</el-radio>
  22. </el-radio-group>
  23. </el-form-item>
  24. <template v-if="thisRole.length<1 || free">
  25. <el-form-item label="成员权限">
  26. <el-checkbox-group v-model="boserForm.memberRoles">
  27. <el-checkbox v-for="item in dir_rules" :key="item.value" :label="item.value">{{item.label}}</el-checkbox>
  28. </el-checkbox-group>
  29. </el-form-item>
  30. <el-form-item label="选择成员" v-if="boserForm.dirType === 2">
  31. </el-form-item>
  32. <CreateTasnsfer v-if="boserForm.dirType === 2" @setUsers="setUsers" :openTrans="openTrans"></CreateTasnsfer>
  33. </template>
  34. </template>
  35. </el-form>
  36. <template #footer>
  37. <span class="dialog-footer">
  38. <el-button @click="addBack">取消</el-button>
  39. <el-button type="primary" @click="sureAddBoser">
  40. 确认
  41. </el-button>
  42. </span>
  43. </template>
  44. </el-dialog>
  45. </div>
  46. </div>
  47. </template>
  48. <script>
  49. import { ref, onMounted, toRef,toRaw } from 'vue';
  50. import documents from '../../../api/document/document';
  51. import {listUser} from '../../../api/biz/user';
  52. import { getLevel } from '@/api/level/level.js';
  53. import { ElMessage } from 'element-plus';
  54. import CreateTasnsfer from '../components/createTasnsfer.vue'
  55. export default {
  56. props: {
  57. folderCase: {
  58. type: Boolean,
  59. required: true
  60. },
  61. oneOrTwo: {
  62. type: Number,
  63. required: true
  64. },
  65. impDirId: {
  66. type: Number,
  67. required: true
  68. },
  69. impSpaceId: {
  70. type: Number,
  71. required: true
  72. },
  73. newDirId: {
  74. type: Number,
  75. required: true
  76. },
  77. newSpaceId: {
  78. type: Number,
  79. required: true
  80. },
  81. thisType: {
  82. type: String,
  83. required: true
  84. },
  85. thisFolderRole: {
  86. type: Object,
  87. required: true,
  88. default: ()=>{},
  89. },
  90. thisRole: {
  91. type: Object,
  92. required: true,
  93. default: ()=>{},
  94. },
  95. refreshFile: Function,
  96. },
  97. setup(props, { emit }) {
  98. const {
  99. proxy
  100. } = getCurrentInstance();
  101. const {
  102. dir_rules
  103. } = proxy.useDict('dir_rules');
  104. let { addBack, sureAddBoser, diClose } = toRef(props)
  105. let result = props.folderCase
  106. let free = props.oneOrTwo
  107. let spId = props.impSpaceId
  108. let drId = props.impDirId
  109. let newspid = props.newSpaceId
  110. let newdrid = props.newDirId
  111. const FolderRole =free?'': props.thisFolderRole
  112. const thisRole = free?'': props.thisRole
  113. const thisType = free?'': props.thisType
  114. const users = ref()
  115. const openTrans = ref(true)
  116. console.log("FolderRole",FolderRole);
  117. console.log("thisRole",thisRole);
  118. console.log("thisType",thisType);
  119. let addBoser = ref(false)
  120. let boserForm = ref({
  121. dirName: "",
  122. dirType:1,
  123. isEncrypt:"Y",
  124. encryptLevel:"L1",
  125. memberRoles:[],
  126. users:[]
  127. })
  128. const levelList = ref([])
  129. function inital() {
  130. console.log(free, 'free');
  131. addBoser.value = result
  132. }
  133. function backTo() {
  134. addBoser.value = false
  135. emit("getChildrenC", addBoser.value)
  136. }
  137. function addFloder() {
  138. console.log('boserForm',boserForm.value);
  139. if (boserForm.value.dirName === '') {
  140. ElMessage({
  141. type: "error",
  142. message: "目录名称不能为空"
  143. })
  144. } else {
  145. if (free === 1) {
  146. let query = {}
  147. if(boserForm.value.dirType === 2){
  148. query = {
  149. "dirName": boserForm.value.dirName,
  150. "parentId": drId - 0,
  151. "spaceId": spId - 0,
  152. "dirType":thisType.dirType=='2'?'2':boserForm.value.dirType,
  153. "dirRole":boserForm.value.memberRoles.join(','),
  154. "users":boserForm.value.users,
  155. "isEncrypt":boserForm.value.isEncrypt,
  156. "encryptLevel":boserForm.value.isEncrypt == "Y"?boserForm.value.encryptLevel:null
  157. }
  158. }else{
  159. query = {
  160. "dirName": boserForm.value.dirName,
  161. "parentId": drId - 0,
  162. "spaceId": spId - 0,
  163. "dirType":thisType.dirType=='2'?'2':boserForm.value.dirType,
  164. }
  165. }
  166. documents.addDocument(
  167. query
  168. ).then(res => {
  169. if (res.code === 200) {
  170. ElMessage({
  171. message: '添加一级目录成功',
  172. type: 'success',
  173. })
  174. }
  175. addBoser.value = false
  176. emit("getChildrenC", addBoser.value)
  177. props.refreshFile()
  178. })
  179. } else {
  180. let query = {}
  181. if(FolderRole.levelCode){
  182. //父级有权限自动继承 没有就用添加的值
  183. query={
  184. "dirName": boserForm.value.dirName,
  185. "parentId": newdrid - 0,
  186. "spaceId": newspid - 0,
  187. "dirType":boserForm.value.dirType,
  188. "isEncrypt":"Y",
  189. "encryptLevel":FolderRole.levelCode
  190. }
  191. console.log('query',query);
  192. console.log('FolderRole',FolderRole);
  193. }else{
  194. query={
  195. "dirName": boserForm.value.dirName,
  196. "parentId": newdrid - 0,
  197. "spaceId": newspid - 0,
  198. "dirType":boserForm.value.dirType,
  199. "isEncrypt":boserForm.value.isEncrypt,
  200. "encryptLevel":boserForm.value.isEncrypt == "Y"?boserForm.value.encryptLevel:null
  201. }
  202. }
  203. if(thisRole.length){
  204. query.dirRole = thisRole.join(',')
  205. }else{
  206. query.dirRole = boserForm.value.memberRoles.join(',')
  207. query.users = boserForm.value.users
  208. }
  209. console.log('free0query',query);
  210. documents.addDocument(
  211. query
  212. ).then(res => {
  213. if (res.code === 200) {
  214. ElMessage({
  215. message: '添加成功',
  216. type: 'success',
  217. })
  218. }
  219. addBoser.value = false
  220. emit("getChildrenC", addBoser.value)
  221. props.refreshFile()
  222. })
  223. }
  224. }
  225. }
  226. const getLevelList = async ()=>{
  227. const res = await getLevel()
  228. if(res.rows){
  229. levelList.value = res.rows
  230. }
  231. // console.log(res);
  232. }
  233. const setUsers = (arr)=>{
  234. const oldArr = toRaw(arr)
  235. // boserForm.value.users = oldArr.map(item=>toRaw(item))
  236. const newArr = oldArr.map(item=>toRaw(item))
  237. boserForm.value.users = newArr.map(item=>{
  238. delete item['disabled']
  239. return item
  240. })
  241. console.log('newArr',boserForm.value.users);
  242. }
  243. const getUser =async ()=>{
  244. const res = await listUser({dirId:thisType.dirId})
  245. console.log('getUser',res);
  246. users.value = res.rows
  247. }
  248. onMounted(() => {
  249. inital()
  250. getLevelList()
  251. if(thisRole.length){
  252. getUser()
  253. }
  254. })
  255. return {
  256. addBoser,
  257. boserForm,
  258. inital,
  259. addBack: backTo,
  260. sureAddBoser: addFloder,
  261. diClose: backTo,
  262. spId,
  263. drId,
  264. newdrid,
  265. newspid,
  266. levelList,
  267. getLevelList,
  268. FolderRole,
  269. free,
  270. openTrans,
  271. setUsers,
  272. dir_rules,
  273. proxy,
  274. thisRole,
  275. thisType,
  276. getUser,
  277. users
  278. }
  279. },
  280. components: {
  281. CreateTasnsfer,
  282. },
  283. }
  284. </script>
  285. <style lang="scss" scoped></style>