CreateFloder.vue 13 KB

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